// SPDX-FileCopyrightText: 2021 RizinOrg <info@rizin.re>
// SPDX-License-Identifier: LGPL-3.0-only
//
// WARNING: This file was auto-generated by cmd_descs_generate.py script. Do not
// modify it manually. Look at cmd_descs.yaml if you want to update commands.
//

#include <cmd_descs.h>

static const RzCmdDescDetail system_details[2];
static const RzCmdDescDetail system_to_cons_details[2];
static const RzCmdDescDetail hash_bang_details[2];
static const RzCmdDescDetail alias_details[2];
static const RzCmdDescDetail oparen__details[2];
static const RzCmdDescDetail pointer_details[2];
static const RzCmdDescDetail interpret_macro_multiple_details[2];
static const RzCmdDescDetail cmd_search_collision_details[2];
static const RzCmdDescDetail cmd_search_hash_block_details[3];
static const RzCmdDescDetail cmd_search_hash_entropy_details[2];
static const RzCmdDescDetail cmd_search_hash_entropy_fractional_details[2];
static const RzCmdDescDetail cmd_search_cryptographic_material_details[2];
static const RzCmdDescDetail cmd_search_file_details[2];
static const RzCmdDescDetail cmd_search_value_details[3];
static const RzCmdDescDetail cmd_search_hex_details[2];
static const RzCmdDescDetail cmd_search_hex_regex_details[2];
static const RzCmdDescDetail slash_z_details[4];
static const RzCmdDescDetail base64_encode_details[2];
static const RzCmdDescDetail base64_decode_details[2];
static const RzCmdDescDetail print_boundaries_prot_details[2];
static const RzCmdDescDetail print_djb2_hash_details[2];
static const RzCmdDescDetail print_bitstring_details[2];
static const RzCmdDescDetail eval_expr_print_octal_details[2];
static const RzCmdDescDetail set_last_eval_expr_details[2];
static const RzCmdDescDetail compare_and_set_core_num_value_details[2];
static const RzCmdDescDetail exec_cmd_if_core_num_value_positive_details[2];
static const RzCmdDescDetail exec_cmd_if_core_num_value_negative_details[2];
static const RzCmdDescDetail push_escaped_details[3];
static const RzCmdDescDetail analysis_all_esil_details[2];
static const RzCmdDescDetail analyze_all_preludes_details[2];
static const RzCmdDescDetail analysis_functions_merge_details[2];
static const RzCmdDescDetail analysis_appcall_details[2];
static const RzCmdDescDetail analysis_graph_write_details[2];
static const RzCmdDescDetail ag_details[2];
static const RzCmdDescDetail analysis_reg_cond_details[4];
static const RzCmdDescDetail ar_details[2];
static const RzCmdDescDetail analysis_hint_set_arch_details[2];
static const RzCmdDescDetail analysis_hint_set_bits_details[2];
static const RzCmdDescDetail analysis_hint_set_high_details[2];
static const RzCmdDescDetail analysis_hint_set_jump_details[2];
static const RzCmdDescDetail analysis_hint_set_esil_details[2];
static const RzCmdDescDetail analysis_hint_set_opcode_details[2];
static const RzCmdDescDetail analysis_hint_set_size_details[2];
static const RzCmdDescDetail analysis_hint_set_fail_details[2];
static const RzCmdDescDetail analysis_hint_set_stackframe_details[2];
static const RzCmdDescDetail analysis_hint_set_syntax_details[2];
static const RzCmdDescDetail analysis_hint_set_val_details[2];
static const RzCmdDescDetail analysis_hint_set_optype_details[2];
static const RzCmdDescDetail analysis_hint_set_immbase_details[3];
static const RzCmdDescDetail analysis_hint_set_offset_details[2];
static const RzCmdDescDetail analyze_esil_insn_access_details[4];
static const RzCmdDescDetail basefind_compute_details[2];
static const RzCmdDescDetail cmd_cmp_unified_details[2];
static const RzCmdDescDetail cw_details[2];
static const RzCmdDescDetail cmd_debug_list_bp_details[2];
static const RzCmdDescDetail cmd_debug_add_cond_bp_details[2];
static const RzCmdDescDetail cmd_debug_add_watchpoint_details[3];
static const RzCmdDescDetail cmd_debug_esil_add_details[2];
static const RzCmdDescDetail cmd_debug_signal_option_details[2];
static const RzCmdDescDetail debug_reg_cond_details[4];
static const RzCmdDescDetail dr_details[2];
static const RzCmdDescDetail cmd_debug_inject_opcode_details[2];
static const RzCmdDescDetail cmd_debug_inject_assembly_details[2];
static const RzCmdDescDetail cmd_debug_inject_syscall_details[2];
static const RzCmdDescDetail eval_getset_details[2];
static const RzCmdDescDetail egg_config_details[2];
static const RzCmdDescDetail history_list_or_exec_details[2];
static const RzCmdDescDetail cmd_info_query_details[2];
static const RzCmdDescDetail query_sdb_get_set_details[2];
static const RzCmdDescDetail plugins_asm_print_details[2];
static const RzCmdDescDetail cmd_print_byte_array_details[3];
static const RzCmdDescDetail pf_details[3];
static const RzCmdDescDetail print_string_details[2];
static const RzCmdDescDetail print_hexdump_format_details[4];
static const RzCmdDescDetail print_rising_and_falling_entropy_details[2];
static const RzCmdDescDetail interactive_visual_details[2];
static const RzCmdDescDetail write_details[3];
static const RzCmdDescDetail write_bits_details[2];
static const RzCmdDescDetail wv_details[2];
static const RzCmdDescDetail w1_details[2];
static const RzCmdDescDetail w2_details[2];
static const RzCmdDescDetail w4_details[2];
static const RzCmdDescDetail w8_details[2];
static const RzCmdDescDetail w6_details[2];
static const RzCmdDescDetail write_extend_hexbytes_details[2];
static const RzCmdDescDetail write_assembly_opcode_details[2];
static const RzCmdDescDetail write_op_sequence_details[2];
static const RzCmdDescDetail wo_details[2];
static const RzCmdDescDetail tmp_modifiers_details[2];
static const RzCmdDescDetail iterators_details[2];
static const RzCmdDescDetail redirection_details[2];
static const RzCmdDescDetail pipe_details[2];
static const RzCmdDescDetail grep_details[5];
static const RzCmdDescDetail specifiers_details[4];
static const RzCmdDescDetail cmd_shell_env_details[3];
static const RzCmdDescArg system_args[3];
static const RzCmdDescArg system_to_cons_args[3];
static const RzCmdDescArg hash_bang_args[3];
static const RzCmdDescArg alias_args[2];
static const RzCmdDescArg tasks_args[2];
static const RzCmdDescArg tasks_transient_args[2];
static const RzCmdDescArg tasks_output_args[2];
static const RzCmdDescArg tasks_break_args[2];
static const RzCmdDescArg tasks_delete_args[2];
static const RzCmdDescArg tasks_wait_args[2];
static const RzCmdDescArg macros_remove_args[2];
static const RzCmdDescArg pointer_args[3];
static const RzCmdDescArg interpret_args[2];
static const RzCmdDescArg interpret_script_args[2];
static const RzCmdDescArg interpret_output_args[2];
static const RzCmdDescArg interpret_pipe_args[2];
static const RzCmdDescArg interpret_macro_args[4];
static const RzCmdDescArg interpret_macro_multiple_args[4];
static const RzCmdDescArg cmd_search_str_chunk_args[2];
static const RzCmdDescArg cmd_search_assemble_args[2];
static const RzCmdDescArg cmd_search_assemble_1_args[2];
static const RzCmdDescArg cmd_search_assemble_a_args[2];
static const RzCmdDescArg cmd_search_assemble_c_args[2];
static const RzCmdDescArg cmd_search_assemble_d_args[2];
static const RzCmdDescArg cmd_search_assemble_d_slash_args[2];
static const RzCmdDescArg cmd_search_assemble_d_slasha_args[2];
static const RzCmdDescArg cmd_search_assemble_e_args[2];
static const RzCmdDescArg cmd_search_assemble_f_args[2];
static const RzCmdDescArg cmd_search_assemble_fl_args[2];
static const RzCmdDescArg cmd_search_assemble_i_args[3];
static const RzCmdDescArg cmd_search_assemble_m_args[2];
static const RzCmdDescArg cmd_search_assemble_o_args[2];
static const RzCmdDescArg cmd_search_assemble_s_args[2];
static const RzCmdDescArg cmd_search_assemble_sl_args[2];
static const RzCmdDescArg cmd_search_assemble_t_args[2];
static const RzCmdDescArg cmd_search_assemble_tl_args[2];
static const RzCmdDescArg cmd_search_collision_args[4];
static const RzCmdDescArg cmd_search_hash_block_args[4];
static const RzCmdDescArg cmd_search_hash_entropy_args[4];
static const RzCmdDescArg cmd_search_hash_entropy_fractional_args[4];
static const RzCmdDescArg cmd_search_cryptographic_material_args[2];
static const RzCmdDescArg cmd_search_deltified_args[2];
static const RzCmdDescArg cmd_search_file_args[4];
static const RzCmdDescArg cmd_search_insn_offset_backwards_args[2];
static const RzCmdDescArg cmd_search_insn_offset_backwards_fallback_args[2];
static const RzCmdDescArg cmd_search_pattern_args[2];
static const RzCmdDescArg cmd_search_blocks_args[2];
static const RzCmdDescArg cmd_search_graph_path_args[3];
static const RzCmdDescArg cmd_search_graph_path_follow_calls_args[3];
static const RzCmdDescArg cmd_search_magic_const_args[2];
static const RzCmdDescArg cmd_search_esil_args[2];
static const RzCmdDescArg cmd_search_reference_args[2];
static const RzCmdDescArg cmd_info_gadget_args[2];
static const RzCmdDescArg cmd_search_gadget_args[2];
static const RzCmdDescArg cmd_query_gadget_args[2];
static const RzCmdDescArg cmd_detail_gadget_args[2];
static const RzCmdDescArg cmd_search_value_args[3];
static const RzCmdDescArg cmd_search_value_alias_v1_args[2];
static const RzCmdDescArg cmd_search_value_alias_v2_args[2];
static const RzCmdDescArg cmd_search_value_alias_v4_args[2];
static const RzCmdDescArg cmd_search_value_alias_v8_args[2];
static const RzCmdDescArg cmd_search_value_alias_v1_range_args[3];
static const RzCmdDescArg cmd_search_value_alias_v2_range_args[3];
static const RzCmdDescArg cmd_search_value_alias_v4_range_args[3];
static const RzCmdDescArg cmd_search_value_alias_v8_range_args[3];
static const RzCmdDescArg cmd_search_hex_args[2];
static const RzCmdDescArg cmd_search_hex_regex_args[2];
static const RzCmdDescArg cmd_search_string_sensitive_args[4];
static const RzCmdDescArg remote_args[3];
static const RzCmdDescArg remote_send_args[3];
static const RzCmdDescArg remote_io_system_run_cmd_args[2];
static const RzCmdDescArg remote_add_args[2];
static const RzCmdDescArg remote_del_args[2];
static const RzCmdDescArg remote_open_args[2];
static const RzCmdDescArg remote_mode_enable_args[2];
static const RzCmdDescArg remote_gdb_args[4];
static const RzCmdDescArg remote_gdb_debug_args[4];
static const RzCmdDescArg remote_webserver_start_fg_args[2];
static const RzCmdDescArg remote_tcp_args[3];
static const RzCmdDescArg cmd_help_search_args[2];
static const RzCmdDescArg calculate_expr_args[2];
static const RzCmdDescArg list_rizin_vars_args[2];
static const RzCmdDescArg generate_random_number_args[3];
static const RzCmdDescArg print_binary_args[2];
static const RzCmdDescArg base64_encode_args[2];
static const RzCmdDescArg base64_decode_args[2];
static const RzCmdDescArg check_between_args[4];
static const RzCmdDescArg print_djb2_hash_args[2];
static const RzCmdDescArg print_bitstring_args[3];
static const RzCmdDescArg eval_expr_print_octal_args[2];
static const RzCmdDescArg num_to_units_args[2];
static const RzCmdDescArg show_value_args[2];
static const RzCmdDescArg show_value_hex_args[2];
static const RzCmdDescArg show_value_i1_args[2];
static const RzCmdDescArg show_value_i2_args[2];
static const RzCmdDescArg show_value_i4_args[2];
static const RzCmdDescArg show_value_i8_args[2];
static const RzCmdDescArg show_value_int_args[2];
static const RzCmdDescArg set_last_eval_expr_args[2];
static const RzCmdDescArg compare_and_set_core_num_value_args[3];
static const RzCmdDescArg exec_cmd_if_core_num_value_positive_args[2];
static const RzCmdDescArg exec_cmd_if_core_num_value_negative_args[2];
static const RzCmdDescArg exec_cmd_if_core_num_value_zero_args[2];
static const RzCmdDescArg exec_cmd_if_core_num_value_nonzero_args[2];
static const RzCmdDescArg calculate_string_length_args[2];
static const RzCmdDescArg calc_expr_show_hex_args[2];
static const RzCmdDescArg ascii_to_hex_args[2];
static const RzCmdDescArg numeric_expr_to_hex_args[2];
static const RzCmdDescArg hex_to_ascii_args[2];
static const RzCmdDescArg generate_sequence_args[4];
static const RzCmdDescArg phys2virt_args[2];
static const RzCmdDescArg virt2phys_args[2];
static const RzCmdDescArg yank_hud_file_args[2];
static const RzCmdDescArg input_prompt_args[2];
static const RzCmdDescArg input_prompt_echo_args[2];
static const RzCmdDescArg input_yesno_no_args[2];
static const RzCmdDescArg input_yesno_yes_args[2];
static const RzCmdDescArg input_yank_hud_args[2];
static const RzCmdDescArg input_msg_args[2];
static const RzCmdDescArg input_conditional_args[2];
static const RzCmdDescArg get_addr_references_args[2];
static const RzCmdDescArg push_escaped_args[2];
static const RzCmdDescArg analysis_all_esil_args[2];
static const RzCmdDescArg analyze_all_consecutive_functions_in_section_args[2];
static const RzCmdDescArg analyze_xrefs_section_bytes_args[2];
static const RzCmdDescArg analyze_function_linked_offsets_args[2];
static const RzCmdDescArg print_commands_after_traps_args[2];
static const RzCmdDescArg print_areas_no_functions_args[2];
static const RzCmdDescArg analysis_data_args[4];
static const RzCmdDescArg analysis_data_trampoline_args[3];
static const RzCmdDescArg analysis_function_add_recu_args[2];
static const RzCmdDescArg analysis_function_add_recu_force_args[2];
static const RzCmdDescArg analysis_function_create_args[3];
static const RzCmdDescArg analysis_function_analyze_jmptable_args[3];
static const RzCmdDescArg analysis_function_blocks_add_args[6];
static const RzCmdDescArg analysis_function_blocks_edge_args[3];
static const RzCmdDescArg analysis_function_blocks_switch_type_args[3];
static const RzCmdDescArg analysis_function_blocks_color_args[3];
static const RzCmdDescArg analysis_function_setbits_args[2];
static const RzCmdDescArg analysis_function_signature_args[2];
static const RzCmdDescArg analysis_function_signature_type_args[2];
static const RzCmdDescArg analysis_function_until_args[2];
static const RzCmdDescArg analysis_function_stacksz_args[2];
static const RzCmdDescArg analysis_function_vars_del_args[2];
static const RzCmdDescArg analysis_function_vars_display_args[2];
static const RzCmdDescArg analysis_function_vars_rename_args[3];
static const RzCmdDescArg analysis_function_vars_reads_args[2];
static const RzCmdDescArg analysis_function_vars_writes_args[2];
static const RzCmdDescArg analysis_function_vars_type_args[3];
static const RzCmdDescArg analysis_function_vars_xrefs_args[2];
static const RzCmdDescArg analysis_function_vars_xrefs_args_args[2];
static const RzCmdDescArg analysis_function_vars_xrefs_vars_args[2];
static const RzCmdDescArg analysis_function_vars_stack_args[4];
static const RzCmdDescArg analysis_function_vars_stack_del_args[2];
static const RzCmdDescArg analysis_function_vars_stack_getref_args[3];
static const RzCmdDescArg analysis_function_vars_stack_setref_args[3];
static const RzCmdDescArg analysis_function_vars_regs_args[4];
static const RzCmdDescArg analysis_function_vars_regs_del_args[2];
static const RzCmdDescArg analysis_function_vars_regs_getref_args[3];
static const RzCmdDescArg analysis_function_vars_regs_setref_args[3];
static const RzCmdDescArg analysis_function_import_list_args[2];
static const RzCmdDescArg analysis_function_opcode_stat_args[2];
static const RzCmdDescArg analysis_function_all_opcode_stat_args[2];
static const RzCmdDescArg analysis_function_rename_args[2];
static const RzCmdDescArg analysis_functions_merge_args[2];
static const RzCmdDescArg analysis_function_cc_set_get_args[2];
static const RzCmdDescArg analysis_function_cc_load_args[2];
static const RzCmdDescArg analysis_appcall_args[2];
static const RzCmdDescArg analysis_continue_until_addr_args[2];
static const RzCmdDescArg analysis_continue_until_esil_args[2];
static const RzCmdDescArg analysis_esil_init_mem_args[4];
static const RzCmdDescArg analysis_esil_init_mem_remove_args[4];
static const RzCmdDescArg il_step_args[2];
static const RzCmdDescArg il_step_evaluate_args[2];
static const RzCmdDescArg il_step_over_until_addr_args[2];
static const RzCmdDescArg il_step_until_addr_args[2];
static const RzCmdDescArg il_step_until_expr_args[2];
static const RzCmdDescArg il_step_until_opt_args[2];
static const RzCmdDescArg il_vm_step_args[2];
static const RzCmdDescArg il_vm_step_with_events_args[2];
static const RzCmdDescArg il_vm_step_until_addr_args[2];
static const RzCmdDescArg il_vm_step_until_addr_with_events_args[2];
static const RzCmdDescArg il_vm_status_args[3];
static const RzCmdDescArg analysis_graph_dataref_args[2];
static const RzCmdDescArg analysis_graph_dataref_global_args[2];
static const RzCmdDescArg analysis_graph_callgraph_function_args[2];
static const RzCmdDescArg analysis_graph_callgraph_global_args[2];
static const RzCmdDescArg analysis_graph_icfg_args[2];
static const RzCmdDescArg analysis_graph_cfg_args[2];
static const RzCmdDescArg analysis_graph_bb_function_args[2];
static const RzCmdDescArg analysis_graph_imports_args[2];
static const RzCmdDescArg analysis_graph_refs_args[2];
static const RzCmdDescArg analysis_graph_refs_global_args[2];
static const RzCmdDescArg analysis_graph_normal_args[2];
static const RzCmdDescArg analysis_graph_line_args[2];
static const RzCmdDescArg analysis_graph_xrefs_args[2];
static const RzCmdDescArg analysis_graph_il_args[2];
static const RzCmdDescArg analysis_graph_custom_args[2];
static const RzCmdDescArg analysis_graph_custom_node_add_args[3];
static const RzCmdDescArg analysis_graph_custom_node_remove_args[2];
static const RzCmdDescArg analysis_graph_custom_edge_add_args[3];
static const RzCmdDescArg analysis_graph_custom_edge_remove_args[3];
static const RzCmdDescArg analysis_graph_write_args[4];
static const RzCmdDescArg analysis_regs_args[2];
static const RzCmdDescArg analysis_regs_columns_args[2];
static const RzCmdDescArg analysis_regs_references_args[2];
static const RzCmdDescArg analysis_regs_valgroup_args[2];
static const RzCmdDescArg analysis_regs_prev_args[2];
static const RzCmdDescArg analysis_regs_fpu_args[2];
static const RzCmdDescArg analysis_reg_flags_args[2];
static const RzCmdDescArg analysis_reg_flags_unset_args[2];
static const RzCmdDescArg analysis_reg_arenas_zero_args[2];
static const RzCmdDescArg analysis_reg_arenas_hexdump_args[2];
static const RzCmdDescArg analysis_reg_arenas_write_hex_args[3];
static const RzCmdDescArg analysis_reg_profile_open_args[2];
static const RzCmdDescArg analysis_reg_profile_gdb_args[2];
static const RzCmdDescArg global_imports_args[2];
static const RzCmdDescArg analysis_print_global_variable_args[2];
static const RzCmdDescArg analysis_global_variable_add_args[3];
static const RzCmdDescArg analysis_global_variable_delete_byaddr_args[2];
static const RzCmdDescArg analysis_global_variable_delete_byname_args[2];
static const RzCmdDescArg analysis_global_variable_rename_args[3];
static const RzCmdDescArg analysis_global_variable_print_args[2];
static const RzCmdDescArg analysis_global_variable_retype_args[3];
static const RzCmdDescArg analysis_global_variable_xrefs_args[2];
static const RzCmdDescArg analysis_rtti_demangle_class_name_args[2];
static const RzCmdDescArg analysis_xrefs_set_0_args[2];
static const RzCmdDescArg analysis_xrefs_set_c_args[2];
static const RzCmdDescArg analysis_xrefs_set_C_args[2];
static const RzCmdDescArg analysis_xrefs_set_d_args[2];
static const RzCmdDescArg analysis_xrefs_set_s_args[2];
static const RzCmdDescArg analysis_xrefs_del_args[3];
static const RzCmdDescArg analysis_xrefs_copy_args[2];
static const RzCmdDescArg analysis_hint_del_args[2];
static const RzCmdDescArg analysis_hint_set_arch_args[2];
static const RzCmdDescArg analysis_hint_set_bits_args[2];
static const RzCmdDescArg analysis_hint_set_jump_args[2];
static const RzCmdDescArg analysis_hint_set_esil_args[2];
static const RzCmdDescArg analysis_hint_set_opcode_args[2];
static const RzCmdDescArg analysis_hint_set_size_args[2];
static const RzCmdDescArg analysis_hint_set_fail_args[2];
static const RzCmdDescArg analysis_hint_set_stackframe_args[2];
static const RzCmdDescArg analysis_hint_set_syntax_args[2];
static const RzCmdDescArg analysis_hint_set_ptr_args[2];
static const RzCmdDescArg analysis_hint_set_ret_args[2];
static const RzCmdDescArg analysis_hint_set_val_args[2];
static const RzCmdDescArg analysis_hint_set_optype_args[2];
static const RzCmdDescArg analysis_hint_set_immbase_args[3];
static const RzCmdDescArg analysis_hint_set_offset_args[2];
static const RzCmdDescArg analysis_list_struct_offsets_args[2];
static const RzCmdDescArg analysis_class_add_args[2];
static const RzCmdDescArg analysis_class_del_args[2];
static const RzCmdDescArg analysis_class_rename_args[3];
static const RzCmdDescArg analysis_class_info_args[2];
static const RzCmdDescArg analysis_class_graph_args[2];
static const RzCmdDescArg analysis_class_method_add_args[5];
static const RzCmdDescArg analysis_class_method_del_args[3];
static const RzCmdDescArg analysis_class_method_rename_args[4];
static const RzCmdDescArg analysis_class_base_add_args[4];
static const RzCmdDescArg analysis_class_base_del_args[3];
static const RzCmdDescArg analysis_class_base_list_args[2];
static const RzCmdDescArg analysis_class_vtable_add_args[5];
static const RzCmdDescArg analysis_class_vtable_del_args[3];
static const RzCmdDescArg analysis_class_vtable_list_args[2];
static const RzCmdDescArg analysis_class_vtable_lookup_args[3];
static const RzCmdDescArg analyze_bytes_args[2];
static const RzCmdDescArg analyze_n_ins_args[2];
static const RzCmdDescArg analyze_n_ins_size_args[2];
static const RzCmdDescArg analyze_n_ins_esil_args[2];
static const RzCmdDescArg analyze_n_ins_il_args[2];
static const RzCmdDescArg analyze_n_ins_il_pretty_args[2];
static const RzCmdDescArg analyze_opcode_args[2];
static const RzCmdDescArg analyze_cycles_args[2];
static const RzCmdDescArg convert_mne_args[2];
static const RzCmdDescArg analyse_name_args[2];
static const RzCmdDescArg analysis_basic_block_find_paths_args[2];
static const RzCmdDescArg analysis_syscall_show_args[2];
static const RzCmdDescArg analysis_syscall_dump_assembly_args[2];
static const RzCmdDescArg analysis_syscall_dump_c_args[2];
static const RzCmdDescArg analysis_syscall_name_args[2];
static const RzCmdDescArg analysis_syscall_number_args[2];
static const RzCmdDescArg list_cpu_details_args[2];
static const RzCmdDescArg analyze_esil_eval_expr_args[2];
static const RzCmdDescArg analyze_esil_set_pc_args[2];
static const RzCmdDescArg analyze_esil_sdb_query_args[2];
static const RzCmdDescArg analyze_esil_eval_opcode_expr_args[2];
static const RzCmdDescArg analyze_esil_emu_fcn_args[2];
static const RzCmdDescArg analyze_esil_emu_fcn_find_args_args[2];
static const RzCmdDescArg analyze_esil_int_list_load_args[2];
static const RzCmdDescArg analyze_esil_int_remove_args[2];
static const RzCmdDescArg analyze_esil_insn_access_args[4];
static const RzCmdDescArg block_args[2];
static const RzCmdDescArg block_decrease_args[2];
static const RzCmdDescArg block_increase_args[2];
static const RzCmdDescArg block_flag_args[2];
static const RzCmdDescArg block_max_args[2];
static const RzCmdDescArg basefind_compute_args[2];
static const RzCmdDescArg cmd_cmp_string_args[2];
static const RzCmdDescArg cmd_cmp_bits_args[2];
static const RzCmdDescArg cmd_cmp_addr_args[3];
static const RzCmdDescArg cmd_cmp_bytes_args[3];
static const RzCmdDescArg cmd_cmp_hex_block_args[2];
static const RzCmdDescArg cmd_cmp_hex_diff_lines_args[2];
static const RzCmdDescArg cmd_cmp_disasm_args[2];
static const RzCmdDescArg cmd_cmp_file_args[2];
static const RzCmdDescArg cmd_cmp_unified_args[2];
static const RzCmdDescArg cmd_cmp_unified1_args[2];
static const RzCmdDescArg cmd_cmp_unified2_args[2];
static const RzCmdDescArg cmd_cmp_unified4_args[2];
static const RzCmdDescArg cmd_cmp_unified8_args[2];
static const RzCmdDescArg cmd_cmp_unified_disasm_args[2];
static const RzCmdDescArg cmd_cmp_add_memory_watcher_args[3];
static const RzCmdDescArg cmd_cmp_hexpair_string_args[2];
static const RzCmdDescArg cmd_cmp_hex_block_hexdiff_args[2];
static const RzCmdDescArg comment_args[2];
static const RzCmdDescArg comment_append_args[2];
static const RzCmdDescArg comment_filelink_args[2];
static const RzCmdDescArg comment_unique_args[2];
static const RzCmdDescArg meta_space_args[2];
static const RzCmdDescArg meta_space_remove_args[2];
static const RzCmdDescArg meta_space_rename_args[3];
static const RzCmdDescArg meta_format_args[3];
static const RzCmdDescArg meta_data_args[3];
static const RzCmdDescArg meta_data_remove_args[3];
static const RzCmdDescArg meta_hidden_args[2];
static const RzCmdDescArg meta_magic_args[3];
static const RzCmdDescArg meta_string_args[2];
static const RzCmdDescArg meta_string_utf8_args[2];
static const RzCmdDescArg meta_string_8bit_args[2];
static const RzCmdDescArg meta_string_wide16_args[2];
static const RzCmdDescArg meta_string_wide32_args[2];
static const RzCmdDescArg meta_type_args[2];
static const RzCmdDescArg meta_var_comment_append_args[3];
static const RzCmdDescArg meta_var_comment_remove_args[2];
static const RzCmdDescArg meta_var_comment_editor_args[2];
static const RzCmdDescArg cmd_debug_command_bp_args[2];
static const RzCmdDescArg cmd_debug_add_cond_bp_args[2];
static const RzCmdDescArg cmd_debug_add_bp_module_args[3];
static const RzCmdDescArg cmd_debug_name_bp_args[2];
static const RzCmdDescArg cmd_debug_remove_bp_index_args[2];
static const RzCmdDescArg cmd_debug_set_expr_bp_index_args[3];
static const RzCmdDescArg cmd_debug_run_command_bp_index_args[3];
static const RzCmdDescArg cmd_debug_enable_bp_index_args[2];
static const RzCmdDescArg cmd_debug_disable_bp_index_args[2];
static const RzCmdDescArg cmd_debug_toggle_bp_index_args[2];
static const RzCmdDescArg cmd_debug_enable_bp_trace_index_args[2];
static const RzCmdDescArg cmd_debug_disable_bp_trace_index_args[2];
static const RzCmdDescArg cmd_debug_toggle_bp_trace_index_args[2];
static const RzCmdDescArg cmd_debug_bp_plugin_args[2];
static const RzCmdDescArg cmd_debug_remove_bp_plugin_args[2];
static const RzCmdDescArg cmd_debug_display_bt_oneline_args[2];
static const RzCmdDescArg cmd_debug_bp_set_expr_cur_offset_args[2];
static const RzCmdDescArg cmd_debug_add_watchpoint_args[3];
static const RzCmdDescArg cmd_debug_set_cond_bp_win_args[3];
static const RzCmdDescArg cmd_debug_continue_execution_args[2];
static const RzCmdDescArg cmd_debug_continue_send_signal_args[3];
static const RzCmdDescArg cmd_debug_continue_syscall_args[2];
static const RzCmdDescArg cmd_debug_continue_traptrace_args[2];
static const RzCmdDescArg cmd_debug_continue_until_args[2];
static const RzCmdDescArg cmd_debug_descriptor_open_args[2];
static const RzCmdDescArg cmd_debug_descriptor_close_args[2];
static const RzCmdDescArg cmd_debug_descriptor_seek_args[3];
static const RzCmdDescArg cmd_debug_descriptor_dup_args[3];
static const RzCmdDescArg cmd_debug_descriptor_read_args[4];
static const RzCmdDescArg cmd_debug_descriptor_write_args[4];
static const RzCmdDescArg cmd_debug_esil_add_args[4];
static const RzCmdDescArg cmd_debug_esil_step_args[2];
static const RzCmdDescArg cmd_debug_esil_step_until_args[2];
static const RzCmdDescArg cmd_debug_core_dump_generate_args[2];
static const RzCmdDescArg cmd_debug_process_profile_args[2];
static const RzCmdDescArg cmd_debug_step_args[2];
static const RzCmdDescArg cmd_debug_step_back_args[2];
static const RzCmdDescArg cmd_debug_step_cond_args[2];
static const RzCmdDescArg cmd_debug_step_line_args[2];
static const RzCmdDescArg cmd_debug_step_over_args[2];
static const RzCmdDescArg cmd_debug_step_skip_args[2];
static const RzCmdDescArg cmd_debug_step_until_args[2];
static const RzCmdDescArg cmd_debug_step_until_instr_args[2];
static const RzCmdDescArg cmd_debug_step_until_instr_regex_args[2];
static const RzCmdDescArg cmd_debug_step_until_optype_args[2];
static const RzCmdDescArg cmd_debug_step_until_esil_args[2];
static const RzCmdDescArg cmd_debug_step_until_flag_args[2];
static const RzCmdDescArg cmd_debug_trace_add_args[2];
static const RzCmdDescArg cmd_debug_trace_add_addrs_args[2];
static const RzCmdDescArg cmd_debug_trace_calls_args[4];
static const RzCmdDescArg cmd_debug_trace_esil_args[2];
static const RzCmdDescArg cmd_debug_save_trace_session_args[2];
static const RzCmdDescArg cmd_debug_load_trace_session_args[2];
static const RzCmdDescArg cmd_debug_trace_tag_args[2];
static const RzCmdDescArg cmd_debug_signal_args[2];
static const RzCmdDescArg cmd_debug_signal_name_args[2];
static const RzCmdDescArg cmd_debug_signal_number_args[2];
static const RzCmdDescArg cmd_debug_signal_option_args[3];
static const RzCmdDescArg cmd_debug_handler_set_args[2];
static const RzCmdDescArg cmd_debug_allocate_maps_args[2];
static const RzCmdDescArg cmd_debug_dump_maps_args[2];
static const RzCmdDescArg cmd_heap_chunks_print_args[2];
static const RzCmdDescArg cmd_heap_bins_list_print_args[2];
static const RzCmdDescArg cmd_heap_arena_bins_print_args[2];
static const RzCmdDescArg cmd_heap_fastbins_print_args[2];
static const RzCmdDescArg cmd_heap_chunks_graph_args[2];
static const RzCmdDescArg cmd_heap_info_print_args[2];
static const RzCmdDescArg cmd_main_arena_print_args[2];
static const RzCmdDescArg cmd_debug_dmi_args[3];
static const RzCmdDescArg cmd_debug_dmi_all_args[2];
static const RzCmdDescArg cmd_debug_dml_args[2];
static const RzCmdDescArg debug_memory_permission_args[3];
static const RzCmdDescArg cmd_debug_dmL_args[2];
static const RzCmdDescArg cmd_debug_dmS_args[3];
static const RzCmdDescArg cmd_debug_process_heap_block_args[2];
static const RzCmdDescArg cmd_debug_heap_jemalloc_a_args[2];
static const RzCmdDescArg cmd_debug_heap_jemalloc_b_args[2];
static const RzCmdDescArg cmd_debug_heap_jemalloc_c_args[2];
static const RzCmdDescArg cmd_debug_pid_list_args[2];
static const RzCmdDescArg cmd_debug_pid_attach_args[2];
static const RzCmdDescArg cmd_debug_pid_detach_args[2];
static const RzCmdDescArg cmd_debug_pid_select_args[2];
static const RzCmdDescArg cmd_debug_executable_path_args[2];
static const RzCmdDescArg cmd_debug_pid_signal_args[3];
static const RzCmdDescArg cmd_debug_thread_list_args[2];
static const RzCmdDescArg cmd_debug_pid_thread_select_args[2];
static const RzCmdDescArg debug_regs_args[2];
static const RzCmdDescArg debug_regs_columns_args[2];
static const RzCmdDescArg debug_regs_references_args[2];
static const RzCmdDescArg debug_regs_valgroup_args[2];
static const RzCmdDescArg debug_regs_prev_args[2];
static const RzCmdDescArg debug_regs_fpu_args[2];
static const RzCmdDescArg debug_reg_flags_args[2];
static const RzCmdDescArg debug_reg_flags_unset_args[2];
static const RzCmdDescArg debug_reg_arenas_zero_args[2];
static const RzCmdDescArg debug_reg_arenas_hexdump_args[2];
static const RzCmdDescArg debug_reg_arenas_write_hex_args[3];
static const RzCmdDescArg debug_reg_profile_open_args[2];
static const RzCmdDescArg debug_reg_profile_gdb_args[2];
static const RzCmdDescArg debug_drx_args[5];
static const RzCmdDescArg debug_drx_unset_args[2];
static const RzCmdDescArg cmd_debug_wait_args[2];
static const RzCmdDescArg cmd_debug_inject_opcode_args[2];
static const RzCmdDescArg cmd_debug_inject_assembly_args[2];
static const RzCmdDescArg cmd_debug_inject_egg_args[2];
static const RzCmdDescArg cmd_debug_inject_opcode_restore_args[2];
static const RzCmdDescArg cmd_debug_inject_syscall_args[2];
static const RzCmdDescArg eval_getset_args[2];
static const RzCmdDescArg eval_list_args[2];
static const RzCmdDescArg eval_bool_invert_args[2];
static const RzCmdDescArg cmd_eval_color_list_args[3];
static const RzCmdDescArg cmd_eval_color_display_palette_css_args[2];
static const RzCmdDescArg cmd_eval_color_highlight_current_instruction_args[2];
static const RzCmdDescArg cmd_eval_color_highlight_instruction_word_args[3];
static const RzCmdDescArg cmd_eval_color_load_theme_args[2];
static const RzCmdDescArg eval_editor_args[2];
static const RzCmdDescArg eval_readonly_args[2];
static const RzCmdDescArg eval_spaces_args[2];
static const RzCmdDescArg eval_type_args[2];
static const RzCmdDescArg flag_add_args[4];
static const RzCmdDescArg flag_append_args[4];
static const RzCmdDescArg flag_local_add_args[2];
static const RzCmdDescArg flag_local_remove_args[2];
static const RzCmdDescArg flag_remove_args[2];
static const RzCmdDescArg flag_alias_args[3];
static const RzCmdDescArg flag_exists_args[2];
static const RzCmdDescArg flag_distance_args[2];
static const RzCmdDescArg flag_graph_args[2];
static const RzCmdDescArg flag_range_args[2];
static const RzCmdDescArg flag_length_args[2];
static const RzCmdDescArg flag_realname_args[3];
static const RzCmdDescArg flag_list_ascii_args[2];
static const RzCmdDescArg flag_color_args[3];
static const RzCmdDescArg flag_comment_args[3];
static const RzCmdDescArg flag_describe_closest_args[2];
static const RzCmdDescArg flag_move_args[2];
static const RzCmdDescArg flag_ordinals_args[2];
static const RzCmdDescArg flag_rename_args[3];
static const RzCmdDescArg flag_relocate_args[4];
static const RzCmdDescArg flag_space_add_args[2];
static const RzCmdDescArg flag_space_remove_args[2];
static const RzCmdDescArg flag_space_rename_args[2];
static const RzCmdDescArg flag_space_stack_push_args[2];
static const RzCmdDescArg flag_tag_add_args[3];
static const RzCmdDescArg flag_tag_search_args[2];
static const RzCmdDescArg flag_zone_add_args[2];
static const RzCmdDescArg flag_zone_remove_args[2];
static const RzCmdDescArg flag_hexdump_args[2];
static const RzCmdDescArg flirt_create_args[2];
static const RzCmdDescArg flirt_dump_args[2];
static const RzCmdDescArg flirt_scan_args[2];
static const RzCmdDescArg apply_signatures_from_sigdb_args[2];
static const RzCmdDescArg egg_compile_args[2];
static const RzCmdDescArg egg_config_args[2];
static const RzCmdDescArg egg_syscall_args[3];
static const RzCmdDescArg egg_type_args[2];
static const RzCmdDescArg egg_padding_args[2];
static const RzCmdDescArg egg_encoder_args[3];
static const RzCmdDescArg history_list_or_exec_args[2];
static const RzCmdDescArg cmd_info_class_as_source_args[2];
static const RzCmdDescArg cmd_info_class_fields_args[2];
static const RzCmdDescArg cmd_info_class_methods_args[2];
static const RzCmdDescArg cmd_info_pdb_load_args[2];
static const RzCmdDescArg cmd_info_pdb_show_args[2];
static const RzCmdDescArg cmd_pdb_extract_args[3];
static const RzCmdDescArg cmd_info_demangle_args[3];
static const RzCmdDescArg cmd_info_query_args[2];
static const RzCmdDescArg cmd_info_plugins_args[2];
static const RzCmdDescArg cmd_info_resources_args[2];
static const RzCmdDescArg cmd_info_sections_args[2];
static const RzCmdDescArg cmd_info_segments_args[2];
static const RzCmdDescArg query_sdb_get_set_args[2];
static const RzCmdDescArg query_shell_sdb_args[2];
static const RzCmdDescArg sdb_namespace_dump_args[3];
static const RzCmdDescArg sdb_namespace_load_args[3];
static const RzCmdDescArg plugins_load_args[2];
static const RzCmdDescArg plugins_unload_args[2];
static const RzCmdDescArg plugins_asm_print_args[2];
static const RzCmdDescArg plugins_asm_cpu_print_args[2];
static const RzCmdDescArg plugins_debug_print_args[2];
static const RzCmdDescArg plugins_io_print_args[2];
static const RzCmdDescArg open_args[4];
static const RzCmdDescArg open_write_args[4];
static const RzCmdDescArg open_close_args[2];
static const RzCmdDescArg open_core_file_args[2];
static const RzCmdDescArg open_malloc_args[2];
static const RzCmdDescArg open_nobin_args[4];
static const RzCmdDescArg open_nobin_write_args[4];
static const RzCmdDescArg reopen_args[2];
static const RzCmdDescArg reopen_write_args[2];
static const RzCmdDescArg reopen_binary_args[2];
static const RzCmdDescArg reopen_debug_args[2];
static const RzCmdDescArg reopen_debug_file_args[3];
static const RzCmdDescArg reopen_debug_rzrun_args[2];
static const RzCmdDescArg open_plugins_args[2];
static const RzCmdDescArg open_arch_bits_args[4];
static const RzCmdDescArg open_binary_select_id_args[2];
static const RzCmdDescArg open_binary_select_fd_args[2];
static const RzCmdDescArg open_binary_del_args[2];
static const RzCmdDescArg open_binary_add_args[2];
static const RzCmdDescArg open_binary_file_args[2];
static const RzCmdDescArg open_binary_reload_args[2];
static const RzCmdDescArg open_use_args[2];
static const RzCmdDescArg open_prioritize_args[2];
static const RzCmdDescArg open_maps_map_args[7];
static const RzCmdDescArg open_maps_list_args[2];
static const RzCmdDescArg open_maps_remove_args[2];
static const RzCmdDescArg open_maps_all_fd_args[2];
static const RzCmdDescArg open_maps_relocate_args[3];
static const RzCmdDescArg open_maps_relocate_current_args[2];
static const RzCmdDescArg open_maps_flags_args[3];
static const RzCmdDescArg open_maps_flags_global_args[2];
static const RzCmdDescArg open_maps_map_fd_args[2];
static const RzCmdDescArg open_maps_name_args[2];
static const RzCmdDescArg open_maps_name_id_args[3];
static const RzCmdDescArg open_maps_name_id_del_args[2];
static const RzCmdDescArg open_maps_resize_args[3];
static const RzCmdDescArg open_maps_prioritize_args[2];
static const RzCmdDescArg open_maps_prioritize_binid_args[2];
static const RzCmdDescArg open_maps_deprioritize_args[2];
static const RzCmdDescArg open_maps_prioritize_fd_args[2];
static const RzCmdDescArg open_exchange_args[3];
static const RzCmdDescArg cmd_print_2bpp_tiles_args[2];
static const RzCmdDescArg cmd_print_8bit_hexpair_args[2];
static const RzCmdDescArg print_bitstream_args[3];
static const RzCmdDescArg print_byte_bitstream_args[2];
static const RzCmdDescArg hex_of_assembly_args[2];
static const RzCmdDescArg esil_of_assembly_args[2];
static const RzCmdDescArg assembly_of_hex_args[2];
static const RzCmdDescArg esil_of_hex_args[2];
static const RzCmdDescArg cmd_print_byte_array_c_cpp_bytes_args[2];
static const RzCmdDescArg cmd_print_byte_array_asm_args[2];
static const RzCmdDescArg cmd_print_byte_array_with_inst_args[2];
static const RzCmdDescArg cmd_print_byte_array_bash_args[2];
static const RzCmdDescArg cmd_print_byte_array_golang_args[2];
static const RzCmdDescArg cmd_print_byte_array_java_args[2];
static const RzCmdDescArg cmd_print_byte_array_json_args[2];
static const RzCmdDescArg cmd_print_byte_array_kotlin_args[2];
static const RzCmdDescArg cmd_print_byte_array_nodejs_args[2];
static const RzCmdDescArg cmd_print_byte_array_objc_args[2];
static const RzCmdDescArg cmd_print_byte_array_python_args[2];
static const RzCmdDescArg cmd_print_byte_array_rust_args[2];
static const RzCmdDescArg cmd_print_byte_array_swift_args[2];
static const RzCmdDescArg cmd_print_byte_array_yara_args[2];
static const RzCmdDescArg cmd_print_byte_array_rizin_args[2];
static const RzCmdDescArg cmd_disassembly_n_bytes_args[2];
static const RzCmdDescArg print_columns_disassembly_args[2];
static const RzCmdDescArg print_columns_debug_args[2];
static const RzCmdDescArg print_columns_hex_annotated_args[2];
static const RzCmdDescArg print_columns_hex_op_colored_args[2];
static const RzCmdDescArg print_columns_hex_args[2];
static const RzCmdDescArg print_columns_hex_words_args[2];
static const RzCmdDescArg cmd_disassembly_n_instructions_args[2];
static const RzCmdDescArg cmd_disassembly_all_possible_opcodes_args[2];
static const RzCmdDescArg cmd_disassembly_all_possible_opcodes_treeview_args[2];
static const RzCmdDescArg cmd_comments_in_n_instructions_args[2];
static const RzCmdDescArg cmd_disassembly_n_instructions_with_flow_args[2];
static const RzCmdDescArg cmd_disassembly_n_instrs_as_text_json_args[2];
static const RzCmdDescArg cmd_sizes_of_n_instructions_args[2];
static const RzCmdDescArg cmd_disassemble_ropchain_args[2];
static const RzCmdDescArg cmd_disassemble_summarize_n_bytes_args[2];
static const RzCmdDescArg cmd_print_format_args[2];
static const RzCmdDescArg cmd_print_format_delete_args[2];
static const RzCmdDescArg cmd_print_format_c_args[2];
static const RzCmdDescArg cmd_print_format_dot_args[2];
static const RzCmdDescArg cmd_print_format_named_dot_args[2];
static const RzCmdDescArg cmd_print_format_named_args[3];
static const RzCmdDescArg cmd_print_format_file_args[2];
static const RzCmdDescArg cmd_print_format_size_args[2];
static const RzCmdDescArg cmd_print_format_value_args[2];
static const RzCmdDescArg cmd_print_format_write_args[3];
static const RzCmdDescArg cmd_print_gadget_add_args[6];
static const RzCmdDescArg cmd_print_gadget_move_args[6];
static const RzCmdDescArg cmd_print_hash_cfg_args[2];
static const RzCmdDescArg print_instr_args[2];
static const RzCmdDescArg print_instr_opcodes_args[2];
static const RzCmdDescArg print_instr_esil_args[2];
static const RzCmdDescArg print_instr_until_args[2];
static const RzCmdDescArg assembly_of_hex_alias_args[2];
static const RzCmdDescArg print_instructions_args[2];
static const RzCmdDescArg print_pattern0_args[2];
static const RzCmdDescArg print_pattern1_args[2];
static const RzCmdDescArg print_pattern2_args[2];
static const RzCmdDescArg print_pattern4_args[2];
static const RzCmdDescArg print_pattern8_args[2];
static const RzCmdDescArg print_pattern_latin_alphabet_args[2];
static const RzCmdDescArg print_pattern_debrujin_args[2];
static const RzCmdDescArg print_pattern_oxff_args[2];
static const RzCmdDescArg print_pattern_num_args[2];
static const RzCmdDescArg print_key_randomart_args[2];
static const RzCmdDescArg print_key_mosaic_args[2];
static const RzCmdDescArg cmd_print_magic_args[2];
static const RzCmdDescArg print_operation_add_args[2];
static const RzCmdDescArg print_operation_and_args[2];
static const RzCmdDescArg print_operation_div_args[2];
static const RzCmdDescArg print_operation_shl_args[2];
static const RzCmdDescArg print_operation_mul_args[2];
static const RzCmdDescArg print_operation_or_args[2];
static const RzCmdDescArg print_operation_shr_args[2];
static const RzCmdDescArg print_operation_sub_args[2];
static const RzCmdDescArg print_operation_xor_args[2];
static const RzCmdDescArg cmd_print_raw_args[2];
static const RzCmdDescArg cmd_print_raw_colors_args[2];
static const RzCmdDescArg cmd_print_raw_string_args[2];
static const RzCmdDescArg print_string_args[3];
static const RzCmdDescArg print_pascal_string_args[2];
static const RzCmdDescArg print_value_args[2];
static const RzCmdDescArg print_value1_args[2];
static const RzCmdDescArg print_value2_args[2];
static const RzCmdDescArg print_value4_args[2];
static const RzCmdDescArg print_value8_args[2];
static const RzCmdDescArg print_hexdump_args[2];
static const RzCmdDescArg print_hexdump_format_args[4];
static const RzCmdDescArg print_hexdump_annotated_args[2];
static const RzCmdDescArg print_op_analysis_color_map_args[2];
static const RzCmdDescArg print_hexdump_bits_args[2];
static const RzCmdDescArg print_hexdump_comments_args[2];
static const RzCmdDescArg print_hexdump_signed_integer_args[2];
static const RzCmdDescArg print_hexdump_signed_integer2_args[2];
static const RzCmdDescArg print_hexdump_signed_integer4_args[2];
static const RzCmdDescArg print_hexdump_signed_integer8_args[2];
static const RzCmdDescArg print_hexdump_emoji_args[2];
static const RzCmdDescArg print_hexdump_function_args[2];
static const RzCmdDescArg print_hexdump_hexii_args[2];
static const RzCmdDescArg print_hexword_references_args[2];
static const RzCmdDescArg print_hexword_references_1_args[2];
static const RzCmdDescArg print_hexword_references_2_args[2];
static const RzCmdDescArg print_hexword_references_4_args[2];
static const RzCmdDescArg print_hexword_references_8_args[2];
static const RzCmdDescArg print_hexdump_sparse_args[2];
static const RzCmdDescArg print_hexdump_hexless_words_args[2];
static const RzCmdDescArg print_hexdump_hexpair_bytes_args[2];
static const RzCmdDescArg print_hexdump_hex2_args[2];
static const RzCmdDescArg print_hexdump_hex2l_args[2];
static const RzCmdDescArg print_hexdump_hex4_args[2];
static const RzCmdDescArg print_hexdump_hex4l_args[2];
static const RzCmdDescArg print_hexdump_hex8_args[2];
static const RzCmdDescArg print_hexdump_hex8l_args[2];
static const RzCmdDescArg print_hexdump_oct_args[2];
static const RzCmdDescArg print_hexdump_n_lines_args[2];
static const RzCmdDescArg print_url_encode_args[2];
static const RzCmdDescArg print_url_encode_wide_args[2];
static const RzCmdDescArg print_url_encode_zero_args[2];
static const RzCmdDescArg print_minus_args[2];
static const RzCmdDescArg print_minus_entropy_args[2];
static const RzCmdDescArg print_minus_table_args[2];
static const RzCmdDescArg print_equal_args[4];
static const RzCmdDescArg print_equal_two_args[2];
static const RzCmdDescArg print_equal_0x00_args[4];
static const RzCmdDescArg print_equal_0xff_args[4];
static const RzCmdDescArg print_equal_bbs_args[4];
static const RzCmdDescArg print_equal_stats_args[4];
static const RzCmdDescArg print_equal_call_args[4];
static const RzCmdDescArg print_equal_entropy_args[4];
static const RzCmdDescArg print_rising_and_falling_entropy_args[3];
static const RzCmdDescArg print_equal_invalid_args[4];
static const RzCmdDescArg print_equal_jump_args[4];
static const RzCmdDescArg print_equal_m_args[2];
static const RzCmdDescArg print_equal_printable_args[4];
static const RzCmdDescArg print_equal_priv_args[4];
static const RzCmdDescArg print_equal_z_args[4];
static const RzCmdDescArg print_equal_equal_args[4];
static const RzCmdDescArg print_equal_equal_0x00_args[4];
static const RzCmdDescArg print_equal_equal_0xff_args[4];
static const RzCmdDescArg print_equal_equal_bbs_args[4];
static const RzCmdDescArg print_equal_equal_stats_args[4];
static const RzCmdDescArg print_equal_equal_call_args[4];
static const RzCmdDescArg print_equal_equal_entropy_args[4];
static const RzCmdDescArg print_equal_equal_invalid_args[4];
static const RzCmdDescArg print_equal_equal_jump_args[4];
static const RzCmdDescArg print_equal_equal_m_args[4];
static const RzCmdDescArg print_equal_equal_printable_args[4];
static const RzCmdDescArg print_equal_equal_priv_args[4];
static const RzCmdDescArg print_equal_equal_z_args[4];
static const RzCmdDescArg project_save_args[2];
static const RzCmdDescArg project_open_args[2];
static const RzCmdDescArg project_open_no_bin_io_args[2];
static const RzCmdDescArg resize_args[2];
static const RzCmdDescArg resize_remove_args[2];
static const RzCmdDescArg resize_insert_args[2];
static const RzCmdDescArg rebase_args[2];
static const RzCmdDescArg seek_args[2];
static const RzCmdDescArg seek_padded_args[2];
static const RzCmdDescArg seek_base_args[2];
static const RzCmdDescArg seek_delta_args[2];
static const RzCmdDescArg seek_blocksize_backward_args[2];
static const RzCmdDescArg seek_blocksize_forward_args[2];
static const RzCmdDescArg seek_asz_args[3];
static const RzCmdDescArg seek_function_args[2];
static const RzCmdDescArg seek_next_args[2];
static const RzCmdDescArg seek_prev_args[2];
static const RzCmdDescArg seek_opcode_args[2];
static const RzCmdDescArg seek_register_args[2];
static const RzCmdDescArg type_args[2];
static const RzCmdDescArg type_del_args[2];
static const RzCmdDescArg type_list_c_args[2];
static const RzCmdDescArg type_list_c_nl_args[2];
static const RzCmdDescArg type_cc_list_args[2];
static const RzCmdDescArg type_cc_del_args[2];
static const RzCmdDescArg type_define_args[2];
static const RzCmdDescArg type_list_enum_args[3];
static const RzCmdDescArg type_enum_bitfield_args[3];
static const RzCmdDescArg type_enum_c_args[2];
static const RzCmdDescArg type_enum_c_nl_args[2];
static const RzCmdDescArg type_enum_find_args[2];
static const RzCmdDescArg type_list_function_args[2];
static const RzCmdDescArg type_function_del_args[2];
static const RzCmdDescArg type_function_cc_args[3];
static const RzCmdDescArg type_list_noreturn_args[2];
static const RzCmdDescArg type_noreturn_del_args[2];
static const RzCmdDescArg type_open_file_args[2];
static const RzCmdDescArg type_open_editor_args[2];
static const RzCmdDescArg type_open_sdb_args[2];
static const RzCmdDescArg type_print_args[3];
static const RzCmdDescArg type_print_value_args[3];
static const RzCmdDescArg type_print_hexstring_args[3];
static const RzCmdDescArg type_list_structure_args[2];
static const RzCmdDescArg type_structure_c_args[2];
static const RzCmdDescArg type_structure_c_nl_args[2];
static const RzCmdDescArg type_list_typedef_args[2];
static const RzCmdDescArg type_typedef_c_args[2];
static const RzCmdDescArg type_list_union_args[2];
static const RzCmdDescArg type_union_c_args[2];
static const RzCmdDescArg type_union_c_nl_args[2];
static const RzCmdDescArg type_xrefs_list_args[2];
static const RzCmdDescArg type_xrefs_function_args[2];
static const RzCmdDescArg interactive_visual_args[2];
static const RzCmdDescArg interactive_panel_load_args[2];
static const RzCmdDescArg interactive_panel_store_args[2];
static const RzCmdDescArg write_args[2];
static const RzCmdDescArg write_bits_args[2];
static const RzCmdDescArg write_unset_bits_args[2];
static const RzCmdDescArg write_value_args[2];
static const RzCmdDescArg write_value1_args[2];
static const RzCmdDescArg write_value2_args[2];
static const RzCmdDescArg write_value4_args[2];
static const RzCmdDescArg write_value8_args[2];
static const RzCmdDescArg write_zero_args[2];
static const RzCmdDescArg write_1_inc_args[2];
static const RzCmdDescArg write_1_dec_args[2];
static const RzCmdDescArg write_2_inc_args[2];
static const RzCmdDescArg write_2_dec_args[2];
static const RzCmdDescArg write_4_inc_args[2];
static const RzCmdDescArg write_4_dec_args[2];
static const RzCmdDescArg write_8_inc_args[2];
static const RzCmdDescArg write_8_dec_args[2];
static const RzCmdDescArg write_base64_decode_args[2];
static const RzCmdDescArg write_base64_encode_args[2];
static const RzCmdDescArg write_extend_zero_args[3];
static const RzCmdDescArg write_extend_shift_args[3];
static const RzCmdDescArg write_extend_hexbytes_args[3];
static const RzCmdDescArg write_unified_patch_args[2];
static const RzCmdDescArg write_random_args[2];
static const RzCmdDescArg write_cache_remove_args[3];
static const RzCmdDescArg write_cache_commit_args[3];
static const RzCmdDescArg write_pcache_list_args[2];
static const RzCmdDescArg write_pcache_commit_args[2];
static const RzCmdDescArg write_zero_string_args[2];
static const RzCmdDescArg write_from_io_args[3];
static const RzCmdDescArg write_from_io_xchg_args[3];
static const RzCmdDescArg write_from_file_args[4];
static const RzCmdDescArg write_from_socket_args[3];
static const RzCmdDescArg write_wide_string_args[2];
static const RzCmdDescArg write_hex_args[2];
static const RzCmdDescArg write_hex_from_file_args[2];
static const RzCmdDescArg write_assembly_args[2];
static const RzCmdDescArg write_assembly_inside_args[2];
static const RzCmdDescArg write_assembly_file_args[2];
static const RzCmdDescArg write_assembly_opcode_args[2];
static const RzCmdDescArg write_block_args[2];
static const RzCmdDescArg write_mask_set_args[2];
static const RzCmdDescArg write_op_add_args[2];
static const RzCmdDescArg write_op_and_args[2];
static const RzCmdDescArg write_op_div_args[2];
static const RzCmdDescArg write_op_shl_args[2];
static const RzCmdDescArg write_op_mul_args[2];
static const RzCmdDescArg write_op_or_args[2];
static const RzCmdDescArg write_op_shr_args[2];
static const RzCmdDescArg write_op_sub_args[2];
static const RzCmdDescArg write_op_xor_args[2];
static const RzCmdDescArg write_op_sequence_args[5];
static const RzCmdDescArg write_op_decrypt_args[4];
static const RzCmdDescArg write_op_encrypt_args[4];
static const RzCmdDescArg write_debruijn_args[2];
static const RzCmdDescArg write_debruijn_find_args[2];
static const RzCmdDescArg write_duplicate_args[3];
static const RzCmdDescArg write_length_string_args[2];
static const RzCmdDescArg print_hexdump_alias_args[2];
static const RzCmdDescArg print_hexdump_comments_alias_args[2];
static const RzCmdDescArg yank_args[2];
static const RzCmdDescArg yank_file_args[3];
static const RzCmdDescArg yank_whole_file_args[2];
static const RzCmdDescArg yank_print_args[2];
static const RzCmdDescArg yank_string_print_args[2];
static const RzCmdDescArg yank_to_args[3];
static const RzCmdDescArg yank_hexpairs_args[2];
static const RzCmdDescArg yank_hex_print_args[2];
static const RzCmdDescArg yank_paste_args[2];
static const RzCmdDescArg yank_string_args[2];
static const RzCmdDescArg cmd_shell_diff_args[3];
static const RzCmdDescArg cmd_shell_env_args[3];
static const RzCmdDescArg cmd_shell_ls_args[6];
static const RzCmdDescArg cmd_shell_rm_args[2];
static const RzCmdDescArg cmd_shell_sleep_args[2];
static const RzCmdDescArg cmd_shell_uniq_args[2];
static const RzCmdDescArg cmd_shell_uname_args[2];
static const RzCmdDescArg cmd_shell_echo_args[2];
static const RzCmdDescArg cmd_shell_clippy_args[2];
static const RzCmdDescArg cmd_shell_cp_args[3];
static const RzCmdDescArg cmd_shell_cd_args[2];
static const RzCmdDescArg cmd_shell_cat_args[2];
static const RzCmdDescArg cmd_shell_mv_args[3];
static const RzCmdDescArg cmd_shell_mkdir_args[3];
static const RzCmdDescArg cmd_shell_sort_args[2];
static const RzCmdDescArg cmd_shell_which_args[2];
static const RzCmdDescArg cmd_shell_pkill_args[2];
static const RzCmdDescArg calculate_command_time_args[2];

static const RzCmdDescHelp escl__help = {
	.summary = "Run given commands as in system(3) or shows command history",
};
static const RzCmdDescDetailEntry system_Examples_detail_entries[] = {
	{ .text = "!", .arg_str = "ls", .comment = "executes the 'ls' command via system(3)" },
	{ .text = "!", .arg_str = "echo $RZ_SIZE", .comment = "executes the 'echo' command via system(3) and shows the display file size" },
	{ 0 },
};
static const RzCmdDescDetail system_details[] = {
	{ .name = "Examples", .entries = system_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg system_args[] = {
	{
		.name = "command",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.no_space = true,

	},
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp system_help = {
	.summary = "Runs given commands in system(3)",
	.details = system_details,
	.args = system_args,
};

static const RzCmdDescDetailEntry system_to_cons_Examples_detail_entries[] = {
	{ .text = "!!", .arg_str = "ls~txt", .comment = "executes the 'ls' command via system(3) and grep for 'txt'" },
	{ 0 },
};
static const RzCmdDescDetail system_to_cons_details[] = {
	{ .name = "Examples", .entries = system_to_cons_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg system_to_cons_args[] = {
	{
		.name = "command",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.no_space = true,

	},
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp system_to_cons_help = {
	.summary = "Runs a given commands in system(3) and pipes stdout to rizin",
	.details = system_to_cons_details,
	.args = system_to_cons_args,
};

static const RzCmdDescArg last_output_args[] = {
	{ 0 },
};
static const RzCmdDescHelp last_output_help = {
	.summary = "Print last output",
	.args = last_output_args,
};

static const RzCmdDescDetailEntry hash_bang_Examples_detail_entries[] = {
	{ .text = "#!", .arg_str = "python", .comment = "Run python commandline" },
	{ .text = "#!", .arg_str = "python foo.py", .comment = "Run foo.py python script" },
	{ .text = "#!", .arg_str = "python foo.py arg1", .comment = "Run foo.py python script and pass it arg1 as argument" },
	{ 0 },
};
static const RzCmdDescDetail hash_bang_details[] = {
	{ .name = "Examples", .entries = hash_bang_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg hash_bang_args[] = {
	{
		.name = "interpreter-name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.no_space = true,

	},
	{
		.name = "arg",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp hash_bang_help = {
	.summary = "Run interpreter",
	.details = hash_bang_details,
	.details_cb = rz_hash_bang_details_cb,
	.args = hash_bang_args,
};

static const RzCmdDescHelp dollar__help = {
	.summary = "Alias commands and strings",
};
static const RzCmdDescDetailEntry alias_Examples_detail_entries[] = {
	{ .text = "$", .arg_str = NULL, .comment = "List all defined aliases" },
	{ .text = "$", .arg_str = "foo:=123", .comment = "Alias for 'f foo @ 123'" },
	{ .text = "$", .arg_str = "foo-=4", .comment = "Alias for 'fm $$-4 @ foo'" },
	{ .text = "$", .arg_str = "foo+=4", .comment = "Alias for 'fm $$+4 @ foo'" },
	{ .text = "$", .arg_str = "foo", .comment = "Alias for 's foo' (note that command aliases can override flag resolution)" },
	{ .text = "$", .arg_str = "dis=base64:cGRm", .comment = "Alias this base64 encoded text to be executed when $dis is called" },
	{ .text = "$", .arg_str = "dis=$hello world", .comment = "Alias this text to be printed when $dis is called" },
	{ .text = "$", .arg_str = "dis=-", .comment = "Open cfg.editor to set the new value for dis alias" },
	{ .text = "$", .arg_str = "dis=\"af;pdf\"", .comment = "Create command - analyze to show function" },
	{ .text = "$", .arg_str = "test=\\#!pipe node /tmp/test.js", .comment = "Create command - rlangpipe script" },
	{ .text = "$", .arg_str = "dis=", .comment = "Undefine alias" },
	{ .text = "$", .arg_str = "dis", .comment = "Execute the previously defined alias" },
	{ .text = "$", .arg_str = "dis?", .comment = "Show commands aliased by $dis" },
	{ .text = "$", .arg_str = "dis?n", .comment = "Show commands aliased by $dis, without a new line" },
	{ 0 },
};
static const RzCmdDescDetail alias_details[] = {
	{ .name = "Examples", .entries = alias_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg alias_args[] = {
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,
		.no_space = true,

	},
	{ 0 },
};
static const RzCmdDescHelp alias_help = {
	.summary = "List all defined aliases / Define alias (see %$? for help on $variables)",
	.args_str = "[alias[=cmd] [args...]]",
	.details = alias_details,
	.args = alias_args,
};

static const RzCmdDescArg alias_list_cmd_base64_args[] = {
	{ 0 },
};
static const RzCmdDescHelp alias_list_cmd_base64_help = {
	.summary = "List all the aliases as rizin commands in base64",
	.args = alias_list_cmd_base64_args,
};

static const RzCmdDescArg alias_list_cmd_plain_args[] = {
	{ 0 },
};
static const RzCmdDescHelp alias_list_cmd_plain_help = {
	.summary = "Same as above, but using plain text",
	.args = alias_list_cmd_plain_args,
};

static const RzCmdDescHelp and__help = {
	.summary = "Manage tasks",
};
static const RzCmdDescArg tasks_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp tasks_help = {
	.summary = "List all tasks / Run <cmd> in a new background task",
	.args = tasks_args,
};

static const RzCmdDescArg tasks_transient_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp tasks_transient_help = {
	.summary = "Run <cmd> in a new transient background task (auto-delete when it is finished)",
	.args = tasks_transient_args,
};

static const RzCmdDescArg tasks_output_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp tasks_output_help = {
	.summary = "Show output of task <n>",
	.args = tasks_output_args,
};

static const RzCmdDescArg tasks_break_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp tasks_break_help = {
	.summary = "Break task <n>",
	.args = tasks_break_args,
};

static const RzCmdDescArg tasks_delete_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp tasks_delete_help = {
	.summary = "Delete task <n> or schedule for deletion when it is finished",
	.args = tasks_delete_args,
};

static const RzCmdDescArg tasks_delete_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp tasks_delete_all_help = {
	.summary = "Delete all done tasks",
	.args = tasks_delete_all_args,
};

static const RzCmdDescArg tasks_wait_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp tasks_wait_help = {
	.summary = "Wait until task <n> is finished / all tasks are finished",
	.args = tasks_wait_args,
};

static const RzCmdDescDetailEntry oparen__Examples_detail_entries[] = {
	{ .text = "(", .arg_str = "", .comment = "List defined macros" },
	{ .text = "(", .arg_str = "foo; echo Disassemble 10 bytes at 0x10000; pd 10 @ 0x10000)", .comment = "Define a new macro 'foo', which executes `?` followed by `pd` when called." },
	{ .text = "(", .arg_str = "foo a b; echo Disassemble ${a} bytes at ${b}; pd ${a} @ ${b})", .comment = "Define a new macro 'foo' with two arguments. ${a}/${b} are replaced before execution." },
	{ .text = "(-", .arg_str = "foo", .comment = "Remove previously defined macro named 'foo'" },
	{ 0 },
};
static const RzCmdDescDetail oparen__details[] = {
	{ .name = "Examples", .entries = oparen__Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp oparen__help = {
	.summary = "Manage scripting macros",
	.details = oparen__details,
};
static const RzCmdDescArg macros_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp macros_list_help = {
	.summary = "List all defined macros",
	.description = "Without any arguments, ( lists defined macros. Macros can be used to execute multiple commands under one name, by replacing some arguments. The argument replacement is done before executing the command, by simply replacing ${<arg-name>} in the body of the macro with the value passed when calling the macro.",
	.args = macros_list_args,
};

static const RzCmdDescArg macros_remove_args[] = {
	{
		.name = "macro-name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.no_space = true,

	},
	{ 0 },
};
static const RzCmdDescHelp macros_remove_help = {
	.summary = "Remove a defined macro named <macro-name>",
	.args = macros_remove_args,
};

static const RzCmdDescHelp macros_add_help = {
	.summary = "Add a new macro <macro-name>",
	.args_str = "<macro-name> [<macro-arg0> <macro-arg1> ...][; <cmds>])[([<macro-call-arg0> <macro-call-arg1> ...])]",
};

static const RzCmdDescHelp macros_add_call_help = {
	.summary = "Define a macro <macro-name> and call it with the arguments <macro-call-args>",
	.args_str = "<macro-name> [<macro-arg0> <macro-arg1> ...][; <cmds>])[([<macro-call-arg0> <macro-call-arg1> ...])]",
};

static const RzCmdDescHelp macros_call_help = {
	.summary = "Call macro <macro-name> with the arguments <macro-call-args>",
	.args_str = "<macro-name> [<macro-call-arg0> <macro-call-arg1> ...])",
};

static const RzCmdDescHelp macros_call_multiple_help = {
	.summary = "Call macro <macro-name> multiple times with the arguments <macro-call-args>",
	.description = "Call the same macro multiple time, based on the number of arguments provided. If a macro accepts N arguments, the first N arguments are passed to the first invocation of the macro, the second N arguments to the second invocation, and so on. An error is returned when the wrong number of arguments is passed.",
	.args_str = "<macro-name> [<macro-call-arg0> <macro-call-arg1> ...])",
};

static const RzCmdDescDetailEntry pointer_Examples_detail_entries[] = {
	{ .text = "*", .arg_str = "entry0=cc", .comment = "write trap in entrypoint" },
	{ .text = "*", .arg_str = "entry0+10=0x804800", .comment = "write 0x804800 with the current bitness, 10 bytes from the entrypoint" },
	{ .text = "*", .arg_str = "$$=[entry0] @e:asm.bits=32", .comment = "write the 32-bits value read at the entrypoint to the current offset" },
	{ .text = "*", .arg_str = "entry0", .comment = "read the value contained at the entrypoint" },
	{ 0 },
};
static const RzCmdDescDetail pointer_details[] = {
	{ .name = "Examples", .entries = pointer_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg pointer_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp pointer_help = {
	.summary = "Pointer read/write data/values",
	.description = "Read or write values at a given address. When the value is a hexstring, it is decoded and written as raw bytes. Otherwise, it is evaluated as an expression and written using the current endianness and bitness settings.",
	.args_str = "<addr>[=<expr>|<hexstring>]",
	.details = pointer_details,
	.args = pointer_args,
};

static const RzCmdDescHelp dot__help = {
	.summary = "Interpret commands",
};
static const RzCmdDescArg interpret_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,
		.no_space = true,

	},
	{ 0 },
};
static const RzCmdDescHelp interpret_help = {
	.summary = "Repeat last executed command backward / Interpret the output of the command as rizin commands",
	.args = interpret_args,
};

static const RzCmdDescArg interpret_script_args[] = {
	{
		.name = "file.rz",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.no_space = true,

	},
	{ 0 },
};
static const RzCmdDescHelp interpret_script_help = {
	.summary = "Interpret script",
	.args = interpret_script_args,
};

static const RzCmdDescArg repeat_forward_args[] = {
	{ 0 },
};
static const RzCmdDescHelp repeat_forward_help = {
	.summary = "Repeat last executed command forward (same as \\\\n)",
	.args = repeat_forward_args,
};

static const RzCmdDescArg interpret_output_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp interpret_output_help = {
	.summary = "Run the output of the execution of a script as rizin commands",
	.args = interpret_output_args,
};

static const RzCmdDescArg interpret_editor_2_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interpret_editor_2_help = {
	.summary = "Open cfg.editor and interpret tmp file",
	.args = interpret_editor_2_args,
};

static const RzCmdDescArg interpret_pipe_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp interpret_pipe_help = {
	.summary = "Same as #!pipe open cfg.editor and interpret tmp file",
	.args = interpret_pipe_args,
};

static const RzCmdDescArg interpret_macro_args[] = {
	{
		.name = "macro-name",
		.type = RZ_CMD_ARG_TYPE_MACRO,
		.no_space = true,

	},
	{
		.name = "macro-arg",
		.type = RZ_CMD_ARG_TYPE_RAW,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{
		.name = ")",
		.type = RZ_CMD_ARG_TYPE_FAKE,

	},
	{ 0 },
};
static const RzCmdDescHelp interpret_macro_help = {
	.summary = "Call macro",
	.args = interpret_macro_args,
};

static const RzCmdDescDetailEntry interpret_macro_multiple_Example_detail_entries[] = {
	{ .text = "(", .arg_str = "wv2 word addr; wv2 $0 @ $1)", .comment = "Define wv2 macro with word($0) and addr($1) args" },
	{ .text = "..(", .arg_str = "wv2 128 0x804800 256 0x804900)", .comment = "Write 2 words at 2 different addresses" },
	{ 0 },
};
static const RzCmdDescDetail interpret_macro_multiple_details[] = {
	{ .name = "Example", .entries = interpret_macro_multiple_Example_detail_entries },
	{ 0 },
};
static const RzCmdDescArg interpret_macro_multiple_args[] = {
	{
		.name = "macro-name",
		.type = RZ_CMD_ARG_TYPE_MACRO,
		.no_space = true,

	},
	{
		.name = "macro-arg-set",
		.type = RZ_CMD_ARG_TYPE_RAW,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{
		.name = ")",
		.type = RZ_CMD_ARG_TYPE_FAKE,

	},
	{ 0 },
};
static const RzCmdDescHelp interpret_macro_multiple_help = {
	.summary = "Call macro multiple times",
	.description = "Call a macro multiple times with arguments taken n at a time, where n is the number of macro arguments",
	.args_str = "<macro-name> [<set1-arg1> <set1-arg2> ...] [<set2-arg1> <set2-arg2> ...] ...)",
	.details = interpret_macro_multiple_details,
	.args = interpret_macro_multiple_args,
};

static const RzCmdDescHelp slash__help = {
	.summary = "Search for bytes, regexps, patterns, ..",
};
static const RzCmdDescArg cmd_search_str_chunk_args[] = {
	{
		.name = "/bin/sh",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_str_chunk_help = {
	.summary = "Construct the string with chunks.",
	.args = cmd_search_str_chunk_args,
};

static const RzCmdDescHelp slash_a_help = {
	.summary = "Assemble the instruction and search its bytes.",
};
static const RzCmdDescArg cmd_search_assemble_args[] = {
	{
		.name = "asm-text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_help = {
	.summary = "Assemble the instruction and search its bytes.",
	.args = cmd_search_assemble_args,
};

static const RzCmdDescArg cmd_search_assemble_1_args[] = {
	{
		.name = "number",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_1_help = {
	.summary = "Find valid assembly generated by changing only the nth byte",
	.args = cmd_search_assemble_1_args,
};

static const RzCmdDescArg cmd_search_assemble_I_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_I_help = {
	.summary = "Search for infinite loop instructions (jmp $$)",
	.args = cmd_search_assemble_I_args,
};

static const RzCmdDescArg cmd_search_assemble_a_args[] = {
	{
		.name = "asm-text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_a_help = {
	.summary = "Linearly find aproximated assembly (case insensitive strstr)",
	.args = cmd_search_assemble_a_args,
};

static const RzCmdDescArg cmd_search_assemble_c_args[] = {
	{
		.name = "asm-text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_c_help = {
	.summary = "Same as /aa, but case-sensitive",
	.args = cmd_search_assemble_c_args,
};

static const RzCmdDescArg cmd_search_assemble_d_args[] = {
	{
		.name = "mnem;mov",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_d_help = {
	.summary = "Match ins1 followed by ins2 in linear disasm",
	.args = cmd_search_assemble_d_args,
};

static const RzCmdDescArg cmd_search_assemble_d_slash_args[] = {
	{
		.name = "ins1;ins2",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_d_slash_help = {
	.summary = "Search for regex instruction 'ins1' followed by regex 'ins2'",
	.args = cmd_search_assemble_d_slash_args,
};

static const RzCmdDescArg cmd_search_assemble_d_slasha_args[] = {
	{
		.name = "instr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_d_slasha_help = {
	.summary = "Search for every byte instruction that matches regexp 'instr'",
	.args = cmd_search_assemble_d_slasha_args,
};

static const RzCmdDescArg cmd_search_assemble_e_args[] = {
	{
		.name = "esil",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_e_help = {
	.summary = "Search for esil expressions matching substring",
	.args = cmd_search_assemble_e_args,
};

static const RzCmdDescHelp slash_af_help = {
	.summary = "Search for instruction of specific family (afl=list",
};
static const RzCmdDescArg cmd_search_assemble_f_args[] = {
	{
		.name = "family",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_f_help = {
	.summary = "Search for instruction of specific family (afl=list",
	.args = cmd_search_assemble_f_args,
};

static const RzCmdDescArg cmd_search_assemble_fl_args[] = {
	{
		.name = "family",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_fl_help = {
	.summary = "Search for instruction of specific family. List mode.",
	.args = cmd_search_assemble_fl_args,
};

static const RzCmdDescArg cmd_search_assemble_i_args[] = {
	{
		.name = "0x300",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "0x500",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_i_help = {
	.summary = "Find all the instructions using that immediate (in range)",
	.args = cmd_search_assemble_i_args,
};

static const RzCmdDescArg cmd_search_assemble_l_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_l_help = {
	.summary = "Same as aoml, list all opcodes",
	.args = cmd_search_assemble_l_args,
};

static const RzCmdDescArg cmd_search_assemble_m_args[] = {
	{
		.name = "opcode",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_m_help = {
	.summary = "Search for specific instructions of specific mnemonic",
	.args = cmd_search_assemble_m_args,
};

static const RzCmdDescArg cmd_search_assemble_o_args[] = {
	{
		.name = "instr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_o_help = {
	.summary = "Search for instruction 'instr' (in all offsets)",
	.args = cmd_search_assemble_o_args,
};

static const RzCmdDescHelp slash_as_help = {
	.summary = "Search for syscalls (See /at swi and /af priv)",
};
static const RzCmdDescArg cmd_search_assemble_s_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_s_help = {
	.summary = "Search for syscalls (See /at swi and /af priv)",
	.args = cmd_search_assemble_s_args,
};

static const RzCmdDescArg cmd_search_assemble_sl_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_sl_help = {
	.summary = "Search for syscalls (See /at swi and /af priv). List mode.",
	.args = cmd_search_assemble_sl_args,
};

static const RzCmdDescHelp slash_at_help = {
	.summary = "Search for instructions of given type",
};
static const RzCmdDescArg cmd_search_assemble_t_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_t_help = {
	.summary = "Search for instructions of given type",
	.args = cmd_search_assemble_t_args,
};

static const RzCmdDescArg cmd_search_assemble_tl_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_assemble_tl_help = {
	.summary = "Search for instructions of given type. List mode.",
	.args = cmd_search_assemble_tl_args,
};

static const RzCmdDescHelp slash_c_help = {
	.summary = "Cryptographic material search.",
};
static const RzCmdDescDetailEntry cmd_search_collision_Modes_detail_entries[] = {
	{ .text = "a", .arg_str = NULL, .comment = "lowercase alphabet chars only" },
	{ .text = "A", .arg_str = NULL, .comment = "uppercase alphabet chars only" },
	{ .text = "l", .arg_str = NULL, .comment = "letters (lower + upper alphabet chars)" },
	{ .text = "d", .arg_str = NULL, .comment = "digits (only numbers)" },
	{ .text = "p", .arg_str = NULL, .comment = "printable (alpha + digit)" },
	{ .text = "b", .arg_str = NULL, .comment = "binary (any number is valid)" },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_collision_details[] = {
	{ .name = "Modes", .entries = cmd_search_collision_Modes_detail_entries },
	{ 0 },
};
static const char *cmd_search_collision_mode_choices[] = { "p", "a", "A", "l", "d", "b", NULL };
static const RzCmdDescArg cmd_search_collision_args[] = {
	{
		.name = "mode",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.choices.choices = cmd_search_collision_mode_choices,

	},
	{
		.name = "algo",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "digest",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_collision_help = {
	.summary = "Find collisions (bruteforce block length values until given checksum is found).",
	.details = cmd_search_collision_details,
	.args = cmd_search_collision_args,
};

static const RzCmdDescDetailEntry cmd_search_hash_block_Usage_space_example_detail_entries[] = {
	{ .text = "/ch md5 0bc8f8c426b74ffaedac8330a7464014 512", .arg_str = NULL, .comment = "MD5 hash search within blocks of 512 bytes." },
	{ 0 },
};

static const RzCmdDescDetailEntry cmd_search_hash_block_Tip_detail_entries[] = {
	{ .text = "", .arg_str = NULL, .comment = "The command 'Lh' gives you a list of supported hash plugins." },
	{ .text = "", .arg_str = NULL, .comment = "Use /ce and /cef for entropy search." },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_hash_block_details[] = {
	{ .name = "Usage example", .entries = cmd_search_hash_block_Usage_space_example_detail_entries },
	{ .name = "Tip", .entries = cmd_search_hash_block_Tip_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_search_hash_block_args[] = {
	{
		.name = "algo",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "hash",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "block_size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "256",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_hash_block_help = {
	.summary = "Search for blocks that have the same hash.",
	.details = cmd_search_hash_block_details,
	.args = cmd_search_hash_block_args,
};

static const RzCmdDescDetailEntry cmd_search_hash_entropy_Usage_space_example_detail_entries[] = {
	{ .text = "/ce 2.5 7.4 512", .arg_str = NULL, .comment = "Find 512 byte long blocks with an entropy between 2.5 and 7.4 (inclusive min & max)." },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_hash_entropy_details[] = {
	{ .name = "Usage example", .entries = cmd_search_hash_entropy_Usage_space_example_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_search_hash_entropy_args[] = {
	{
		.name = "min_entropy",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "max_entropy",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "8.0",

	},
	{
		.name = "block_size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "256",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_hash_entropy_help = {
	.summary = "Search for blocks above an entropy level.",
	.details = cmd_search_hash_entropy_details,
	.args = cmd_search_hash_entropy_args,
};

static const RzCmdDescDetailEntry cmd_search_hash_entropy_fractional_Usage_space_example_detail_entries[] = {
	{ .text = "/cef 0.3 0.8 512", .arg_str = NULL, .comment = "Find 512 byte long blocks with a fractional entropy between 0.3 and 0.8 (inclusive min & max)." },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_hash_entropy_fractional_details[] = {
	{ .name = "Usage example", .entries = cmd_search_hash_entropy_fractional_Usage_space_example_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_search_hash_entropy_fractional_args[] = {
	{
		.name = "min_entropy",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "max_entropy",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "1.0",

	},
	{
		.name = "block_size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "256",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_hash_entropy_fractional_help = {
	.summary = "Search for blocks above an fractional entropy level.",
	.details = cmd_search_hash_entropy_fractional_details,
	.args = cmd_search_hash_entropy_fractional_args,
};

static const RzCmdDescDetailEntry cmd_search_cryptographic_material_Types_detail_entries[] = {
	{ .text = "aes128", .arg_str = NULL, .comment = "Searches for expanded AES 128 keys." },
	{ .text = "aes192", .arg_str = NULL, .comment = "Searches for expanded AES 192 keys." },
	{ .text = "aes256", .arg_str = NULL, .comment = "Searches for expanded AES 256 keys." },
	{ .text = "sm4be", .arg_str = NULL, .comment = "Searches for expanded SM4 keys (big-endian)." },
	{ .text = "sm4le", .arg_str = NULL, .comment = "Searches for expanded SM4 keys (little-endian)." },
	{ .text = "rsa", .arg_str = NULL, .comment = "Searches for DER/BER encoded RSA keys (see RFC 3447)." },
	{ .text = "ecc", .arg_str = NULL, .comment = "Searches for DER/BER encoded ECC keys (see RFC 5915)." },
	{ .text = "safecurves", .arg_str = NULL, .comment = "Searches for DER/BER encoded SafeCurves keys (see RFC 8410)." },
	{ .text = "x509", .arg_str = NULL, .comment = "Searches for DER/BER encoded X.509 certificates." },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_cryptographic_material_details[] = {
	{ .name = "Types", .entries = cmd_search_cryptographic_material_Types_detail_entries },
	{ 0 },
};
static const char *cmd_search_cryptographic_material_type_choices[] = { "all", "aes128", "aes192", "aes256", "sm4be", "sm4le", "rsa", "ecc", "safecurves", "x509", NULL };
static const RzCmdDescArg cmd_search_cryptographic_material_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "all",
		.choices.choices = cmd_search_cryptographic_material_type_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_cryptographic_material_help = {
	.summary = "Search cryptographic material.",
	.details = cmd_search_cryptographic_material_details,
	.args = cmd_search_cryptographic_material_args,
};

static const RzCmdDescArg cmd_search_deltified_args[] = {
	{
		.name = "101112",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_deltified_help = {
	.summary = "Search for a deltified sequence of bytes.",
	.args = cmd_search_deltified_args,
};

static const RzCmdDescDetailEntry cmd_search_file_Arguments_detail_entries[] = {
	{ .text = "<file>", .arg_str = NULL, .comment = "The file containing the data to search." },
	{ .text = "<offset>", .arg_str = NULL, .comment = "Offset into <file> to read the search data from." },
	{ .text = "<size>", .arg_str = NULL, .comment = "Number of bytes to read from the <file>." },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_file_details[] = {
	{ .name = "Arguments", .entries = cmd_search_file_Arguments_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_search_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_file_help = {
	.summary = "Search the content of a file.",
	.details = cmd_search_file_details,
	.args = cmd_search_file_args,
};

static const RzCmdDescArg cmd_search_insn_offset_backwards_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_insn_offset_backwards_help = {
	.summary = "Show offset of n instructions backward.",
	.args = cmd_search_insn_offset_backwards_args,
};

static const RzCmdDescArg cmd_search_insn_offset_backwards_fallback_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_insn_offset_backwards_fallback_help = {
	.summary = "Same as /o, but with a different fallback if analysis cannot be used.",
	.args = cmd_search_insn_offset_backwards_fallback_args,
};

static const RzCmdDescArg cmd_search_pattern_args[] = {
	{
		.name = "patternsize",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_pattern_help = {
	.summary = "Search for pattern of given size.",
	.args = cmd_search_pattern_args,
};

static const RzCmdDescArg cmd_search_blocks_args[] = {
	{
		.name = "patternsize",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_blocks_help = {
	.summary = "Search similar blocks.",
	.args = cmd_search_blocks_args,
};

static const RzCmdDescHelp slash_g_help = {
	.summary = "Search for all graph paths A to B.",
};
static const RzCmdDescArg cmd_search_graph_path_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_graph_path_help = {
	.summary = "Search for all graph paths A to B (does not follow calls).",
	.args = cmd_search_graph_path_args,
};

static const RzCmdDescArg cmd_search_graph_path_follow_calls_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_graph_path_follow_calls_help = {
	.summary = "Search for all graph paths A to B (follows calls, see `search.count` and `analysis.depth`).",
	.args = cmd_search_graph_path_follow_calls_args,
};

static const RzCmdDescHelp slash_m_help = {
	.summary = "Magic constants search.",
};
static const RzCmdDescArg cmd_search_magic_const_args[] = {
	{
		.name = "magic-file",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_magic_const_help = {
	.summary = "Magic constants search.",
	.args = cmd_search_magic_const_args,
};

static const RzCmdDescArg cmd_search_magic_bin_headers_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_magic_bin_headers_help = {
	.summary = "Search recognized RzBin headers.",
	.args = cmd_search_magic_bin_headers_args,
};

static const RzCmdDescArg cmd_search_esil_args[] = {
	{
		.name = "esil-expr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_esil_help = {
	.summary = "offset matching given esil expressions $$ = here.",
	.args = cmd_search_esil_args,
};

static const RzCmdDescHelp slash_r_help = {
	.summary = "Reference search.",
};
static const RzCmdDescArg cmd_search_reference_args[] = {
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_reference_help = {
	.summary = "Reference search.",
	.args = cmd_search_reference_args,
};

static const RzCmdDescArg cmd_search_reference_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_reference_all_help = {
	.summary = "Search all references.",
	.args = cmd_search_reference_all_args,
};

static const RzCmdDescArg cmd_search_reference_call_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_reference_call_help = {
	.summary = "Search call references.",
	.args = cmd_search_reference_call_args,
};

static const RzCmdDescArg cmd_search_reference_read_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_reference_read_help = {
	.summary = "Search read references.",
	.args = cmd_search_reference_read_args,
};

static const RzCmdDescArg cmd_search_reference_write_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_reference_write_help = {
	.summary = "Search write references.",
	.args = cmd_search_reference_write_args,
};

static const RzCmdDescArg cmd_search_reference_execute_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_search_reference_execute_help = {
	.summary = "Search execute references.",
	.args = cmd_search_reference_execute_args,
};

static const RzCmdDescHelp slash_R_help = {
	.summary = "Search, List, Query for ROP Gadgets",
};
static const RzCmdDescArg cmd_info_gadget_args[] = {
	{
		.name = "filter-by-string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_gadget_help = {
	.summary = "List ROP Gadgets",
	.args = cmd_info_gadget_args,
};

static const RzCmdDescArg cmd_search_gadget_args[] = {
	{
		.name = "filter-by-regex",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_gadget_help = {
	.summary = "List ROP Gadgets [regular expression]",
	.args = cmd_search_gadget_args,
};

static const RzCmdDescArg cmd_query_gadget_args[] = {
	{
		.name = "key=value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_query_gadget_help = {
	.summary = "Query ROP Gadgets by providing constraints",
	.args_str = " <key>[=<val>] [<key>[=<val>] ...]]",
	.args = cmd_query_gadget_args,
};

static const RzCmdDescArg cmd_detail_gadget_args[] = {
	{
		.name = "Gadget address",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_detail_gadget_help = {
	.summary = "Gadget detail info",
	.args = cmd_detail_gadget_args,
};

static const RzCmdDescHelp slash_v_help = {
	.summary = "Value search.",
};
static const RzCmdDescDetailEntry cmd_search_value_Arguments_detail_entries[] = {
	{ .text = "bytes", .arg_str = NULL, .comment = "Value byte width and endianess." },
	{ .text = "range", .arg_str = NULL, .comment = "One or multiple ranges of values. Can be single values or range descriptions. Must be wrapped in '\"'." },
	{ 0 },
};

static const RzCmdDescDetailEntry cmd_search_value_Usage_space_example_detail_entries[] = {
	{ .text = "/v 4be 512", .arg_str = NULL, .comment = "Search 512 represented in 4 bytes big endian order." },
	{ .text = "/v 8le \"[0x80000000,0x80001000]\"", .arg_str = NULL, .comment = "Search values in the closed range '[0x80000000,0x80001000]' represented in 8 bytes little endian order." },
	{ .text = "/v 2a \"(0x1000,0xff0)\"", .arg_str = NULL, .comment = "Search values in the open range '(0x1000,0xff0)' represented in 2 bytes order of cfg.bigendian." },
	{ .text = "/v 1 \"[0x20,0x10)\", 0xff, \"[0xf0,0xff]\"", .arg_str = NULL, .comment = "Search values in the right open range '[0x20,0x10)', value '0x55' and closed range values '[0xf0,0xff]' represented in 1 byte." },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_value_details[] = {
	{ .name = "Arguments", .entries = cmd_search_value_Arguments_detail_entries },
	{ .name = "Usage example", .entries = cmd_search_value_Usage_space_example_detail_entries },
	{ 0 },
};
static const char *cmd_search_value_bytes_choices[] = { "1", "2le", "4le", "8le", "2be", "4be", "8be", "2a", "4a", "8a", NULL };
static const RzCmdDescArg cmd_search_value_args[] = {
	{
		.name = "bytes",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.choices.choices = cmd_search_value_bytes_choices,

	},
	{
		.name = "range",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_help = {
	.summary = "Value search.",
	.details = cmd_search_value_details,
	.args = cmd_search_value_args,
};

static const RzCmdDescArg cmd_search_value_alias_v1_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v1_help = {
	.summary = "Value search - Alias for /v 1 <value>.",
	.args = cmd_search_value_alias_v1_args,
};

static const RzCmdDescArg cmd_search_value_alias_v2_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v2_help = {
	.summary = "Value search - Alias for /v 2a <value>.",
	.args = cmd_search_value_alias_v2_args,
};

static const RzCmdDescArg cmd_search_value_alias_v4_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v4_help = {
	.summary = "Value search - Alias for /v 4a <value>.",
	.args = cmd_search_value_alias_v4_args,
};

static const RzCmdDescArg cmd_search_value_alias_v8_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v8_help = {
	.summary = "Value search - Alias for /v 8a <value>.",
	.args = cmd_search_value_alias_v8_args,
};

static const RzCmdDescArg cmd_search_value_alias_v1_range_args[] = {
	{
		.name = "min_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "max_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v1_range_help = {
	.summary = "Value search - Alias for /v 1 [<min_value>,<max_value>].",
	.args = cmd_search_value_alias_v1_range_args,
};

static const RzCmdDescArg cmd_search_value_alias_v2_range_args[] = {
	{
		.name = "min_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "max_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v2_range_help = {
	.summary = "Value search - Alias for /v 2a [<min_value>,<max_value>].",
	.args = cmd_search_value_alias_v2_range_args,
};

static const RzCmdDescArg cmd_search_value_alias_v4_range_args[] = {
	{
		.name = "min_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "max_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v4_range_help = {
	.summary = "Value search - Alias for /v 4a [<min_value>,<max_value>].",
	.args = cmd_search_value_alias_v4_range_args,
};

static const RzCmdDescArg cmd_search_value_alias_v8_range_args[] = {
	{
		.name = "min_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "max_value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_value_alias_v8_range_help = {
	.summary = "Value search - Alias for /v 8a [<min_value>,<max_value>].",
	.args = cmd_search_value_alias_v8_range_args,
};

static const RzCmdDescHelp slash_x_help = {
	.summary = "Raw hexadecimal search.",
};
static const RzCmdDescDetailEntry cmd_search_hex_Usage_space_example_detail_entries[] = {
	{ .text = "Hexadecimal search for the exact bytes 'ffcc33'.", .arg_str = NULL, .comment = "/x ffcc33" },
	{ .text = "Hexadecimal search for the byte pattern 'ff..33.0.'. The '.' is a wildcard for 4bits.", .arg_str = NULL, .comment = "/x ff..33.0" },
	{ .text = "Hexadecimal search of the bytes with mask. Pattern: '<resulting bytes>:<mask>'", .arg_str = NULL, .comment = "/x ffd0:ff43" },
	{ .text = "Hexadecimal search with an odd number of nibbles.", .arg_str = NULL, .comment = "'aabbc' is equivalent to '.aabbc'" },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_hex_details[] = {
	{ .name = "Usage example", .entries = cmd_search_hex_Usage_space_example_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_search_hex_args[] = {
	{
		.name = "pattern",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_hex_help = {
	.summary = "Raw hexadecimal search.",
	.details = cmd_search_hex_details,
	.args = cmd_search_hex_args,
};

static const RzCmdDescDetailEntry cmd_search_hex_regex_Usage_space_examples_detail_entries[] = {
	{ .text = " Bytes are prefixed with a 'x'. Search exact match '\\x99\\x0a'.", .arg_str = NULL, .comment = "/xr x99x0a" },
	{ .text = "Search 2-8 NUL bytes, then '\\x99' and '\\x0a'", .arg_str = NULL, .comment = "/xr x00{2,8}x99x0a" },
	{ .text = "A '.' matches one byte. Search matches: '\\x72\\xNN\\x00'. '\\xNN' can appear 0-1 times.", .arg_str = NULL, .comment = "/xr x72.?x00" },
	{ .text = "Using simple ASCII is allowed. Search matches: '\\x61\\x41'", .arg_str = NULL, .comment = "/xr aA" },
	{ 0 },
};
static const RzCmdDescDetail cmd_search_hex_regex_details[] = {
	{ .name = "Usage examples", .entries = cmd_search_hex_regex_Usage_space_examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_search_hex_regex_args[] = {
	{
		.name = "regex_pattern",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_hex_regex_help = {
	.summary = "Regex bytes search.",
	.details = cmd_search_hex_regex_details,
	.args = cmd_search_hex_regex_args,
};

static const RzCmdDescDetailEntry slash_z_Encodings_detail_entries[] = {
	{ .text = "ascii", .arg_str = NULL, .comment = "ASCII encoding" },
	{ .text = "8bit", .arg_str = NULL, .comment = "8bit encoding. Alias: ASCII" },
	{ .text = "mutf8", .arg_str = NULL, .comment = "mutf8 encoding" },
	{ .text = "utf8", .arg_str = NULL, .comment = "UTF-8 encoding" },
	{ .text = "utf16le", .arg_str = NULL, .comment = "UTF-16 little endian encoding" },
	{ .text = "utf32le", .arg_str = NULL, .comment = "UTF-32 little endian encoding" },
	{ .text = "utf16be", .arg_str = NULL, .comment = "UTF-16 big endian encoding" },
	{ .text = "utf32be", .arg_str = NULL, .comment = "UTF-32 big endian encoding" },
	{ .text = "ibm037", .arg_str = NULL, .comment = "ibm037 encoding. Alias: cp037, ebcdic-cp-us, ebcdic-cp-ca, ebcdic-cp-wt, ebcdic-cp-nl, csIBM037" },
	{ .text = "ibm290", .arg_str = NULL, .comment = "ibm290 encoding. Alias: cp290, EBCDIC-JP-kana, csIBM290" },
	{ .text = "ebcdices", .arg_str = NULL, .comment = "EBCDIC-ES encoding. Alias: csEBCDICES" },
	{ .text = "ebcdicuk", .arg_str = NULL, .comment = "EBCDIC-UK encoding. Alias: csEBCDICUK" },
	{ .text = "ebcdicus", .arg_str = NULL, .comment = "EBCDIC-US encoding. Alias: csEBCDICUS" },
	{ 0 },
};

static const RzCmdDescDetailEntry slash_z_Regex_space_Flags_detail_entries[] = {
	{ .text = "l", .arg_str = NULL, .comment = "Default. Literal string comparison. Ignores all meta-characters." },
	{ .text = "i", .arg_str = NULL, .comment = "Caseless (equivalent: PCRE2_CASELESS)" },
	{ .text = "r", .arg_str = NULL, .comment = "Regular expression." },
	{ .text = "e", .arg_str = NULL, .comment = "Extended regular expression." },
	{ .text = "m", .arg_str = NULL, .comment = "Multiline regular expression (equivalent flag: PCRE2_MULTILINE)" },
	{ 0 },
};

static const RzCmdDescDetailEntry slash_z_Examples_detail_entries[] = {
	{ .text = "/z (ABC*)", .arg_str = NULL, .comment = "Search the exact string \"(ABC*)\"." },
	{ .text = "/z (ABC*)D li", .arg_str = NULL, .comment = "Search the exact string \"(ABC*)D\" but case insensitive." },
	{ .text = "/z \\\\d\\\\sC*\\\\w ri", .arg_str = NULL, .comment = "Search the regular expression \"\\d\\sC*\\w\" but case insensitive." },
	{ .text = "/z \"и.{3}м\" ei", .arg_str = NULL, .comment = "Search the extended regular expression \"и.{3}м\" but case insensitive." },
	{ 0 },
};
static const RzCmdDescDetail slash_z_details[] = {
	{ .name = "Encodings", .entries = slash_z_Encodings_detail_entries },
	{ .name = "Regex Flags", .entries = slash_z_Regex_space_Flags_detail_entries },
	{ .name = "Examples", .entries = slash_z_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp slash_z_help = {
	.summary = "String search.",
	.details = slash_z_details,
};
static const char *cmd_search_string_sensitive_encoding_choices[] = { "ascii", "8bit", "mutf8", "utf8", "utf16le", "utf32le", "utf16be", "utf32be", "ibm037", "ibm290", "ebcdices", "ebcdicuk", "ebcdicus", "guess", NULL };
static const RzCmdDescArg cmd_search_string_sensitive_args[] = {
	{
		.name = "pattern",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "regex_flags",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.default_value = "l",

	},
	{
		.name = "encoding",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "settings",
		.choices.choices = cmd_search_string_sensitive_encoding_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_search_string_sensitive_help = {
	.summary = "String search.",
	.args = cmd_search_string_sensitive_args,
};

static const RzCmdDescHelp R_help = {
	.summary = "Connect with other instances of rizin",
};
static const RzCmdDescArg remote_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_help = {
	.summary = "List all open connections / Exec <cmd> at remote <fd>",
	.args_str = " [[<fd>] <cmd>]",
	.args = remote_args,
};

static const RzCmdDescArg remote_send_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_send_help = {
	.summary = "Send output of local <cmd> to remote <fd>",
	.args = remote_send_args,
};

static const RzCmdDescArg remote_io_system_run_cmd_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_io_system_run_cmd_help = {
	.summary = "Run command via rz_io_system",
	.options = "",
	.args = remote_io_system_run_cmd_args,
};

static const RzCmdDescArg remote_add_args[] = {
	{
		.name = "[proto://]host:port",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_add_help = {
	.summary = "Connect to remote host:port",
	.args = remote_add_args,
};

static const RzCmdDescArg remote_del_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_del_help = {
	.summary = "remove all hosts or host 'fd'",
	.args = remote_del_args,
};

static const RzCmdDescArg remote_open_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_open_help = {
	.summary = "Open remote session with host 'fd', 'q' to quit",
	.args = remote_open_args,
};

static const RzCmdDescArg remote_mode_enable_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "0",

	},
	{ 0 },
};
static const RzCmdDescHelp remote_mode_enable_help = {
	.summary = "Enable remote cmd mode, sending commands to remote <fd> server",
	.args = remote_mode_enable_args,
};

static const RzCmdDescArg remote_mode_disable_args[] = {
	{ 0 },
};
static const RzCmdDescHelp remote_mode_disable_help = {
	.summary = "Disable remote cmd mode",
	.args = remote_mode_disable_args,
};

static const RzCmdDescHelp Rg_help = {
	.summary = "Start the gdbserver",
};
static const RzCmdDescArg remote_gdb_args[] = {
	{
		.name = "port",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_gdb_help = {
	.summary = "Start the gdbserver.",
	.args = remote_gdb_args,
};

static const RzCmdDescArg remote_gdb_debug_args[] = {
	{
		.name = "port",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_gdb_debug_help = {
	.summary = "Start the gdbserver with debug protocol messages (like gdbserver --remote-debug).",
	.args = remote_gdb_debug_args,
};

static const RzCmdDescHelp Rh_help = {
	.summary = "HTTP webserver commands.",
};
static const char *remote_webserver_start_fg_launch_browser_choices[] = { "yes", "no", NULL };
static const RzCmdDescArg remote_webserver_start_fg_args[] = {
	{
		.name = "launch_browser",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "no",
		.choices.choices = remote_webserver_start_fg_launch_browser_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_webserver_start_fg_help = {
	.summary = "Start the HTTP webserver in foreground.",
	.args = remote_webserver_start_fg_args,
};

static const RzCmdDescArg remote_webserver_restart_fg_args[] = {
	{ 0 },
};
static const RzCmdDescHelp remote_webserver_restart_fg_help = {
	.summary = "Restart the HTTP webserver in foreground.",
	.args = remote_webserver_restart_fg_args,
};

static const RzCmdDescArg remote_webserver_stop_fg_args[] = {
	{ 0 },
};
static const RzCmdDescHelp remote_webserver_stop_fg_help = {
	.summary = "Stop the HTTP webserver in foreground.",
	.args = remote_webserver_stop_fg_args,
};

static const RzCmdDescArg remote_tcp_args[] = {
	{
		.name = "[host:]port",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp remote_tcp_help = {
	.summary = "Start the tcp server",
	.args = remote_tcp_args,
};

static const RzCmdDescArg cmd_help_search_args[] = {
	{
		.name = "search_cmd",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_help_search_help = {
	.summary = "Search help",
	.args = cmd_help_search_args,
};

static const RzCmdDescHelp cmd_math_help = {
	.summary = "Math commands",
};
static const RzCmdDescArg calculate_expr_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp calculate_expr_help = {
	.summary = "Evaluate numerical expression <expr>",
	.args = calculate_expr_args,
};

static const RzCmdDescArg list_rizin_vars_args[] = {
	{
		.name = "var",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp list_rizin_vars_help = {
	.summary = "Print Rizin variables and their values",
	.details_cb = rz_cmd_math_help_vars_details_cb,
	.args = list_rizin_vars_args,
};

static const RzCmdDescArg set_active_tab_zero_args[] = {
	{ 0 },
};
static const RzCmdDescHelp set_active_tab_zero_help = {
	.summary = "Set first tab as the current active tab",
	.args = set_active_tab_zero_args,
};

static const RzCmdDescArg set_active_tab_next_args[] = {
	{ 0 },
};
static const RzCmdDescHelp set_active_tab_next_help = {
	.summary = "Set next tab as the current active tab",
	.args = set_active_tab_next_args,
};

static const RzCmdDescArg generate_random_number_args[] = {
	{
		.name = "lowlimit",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "uplimit",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp generate_random_number_help = {
	.summary = "Generate a random number between <lowlimit> and <uplimit>",
	.args = generate_random_number_args,
};

static const RzCmdDescArg print_binary_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_binary_help = {
	.summary = "Print <expr> in binary format",
	.args = print_binary_args,
};

static const RzCmdDescDetailEntry base64_encode_Examples_detail_entries[] = {
	{ .text = "%b64", .arg_str = " ILoveRizin", .comment = "(SUxvdmVSaXppbgo=) Encodes given string into base64" },
	{ 0 },
};
static const RzCmdDescDetail base64_encode_details[] = {
	{ .name = "Examples", .entries = base64_encode_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg base64_encode_args[] = {
	{
		.name = "str",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp base64_encode_help = {
	.summary = "Encode <str> in Base64",
	.details = base64_encode_details,
	.args = base64_encode_args,
};

static const RzCmdDescDetailEntry base64_decode_Examples_detail_entries[] = {
	{ .text = "%b64- ", .arg_str = "SUxvdmVSaXppbgo=", .comment = "(ILoveRizin) Decodes given base64 string" },
	{ 0 },
};
static const RzCmdDescDetail base64_decode_details[] = {
	{ .name = "Examples", .entries = base64_decode_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg base64_decode_args[] = {
	{
		.name = "str",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp base64_decode_help = {
	.summary = "Decode <str> from Base64",
	.details = base64_decode_details,
	.args = base64_decode_args,
};

static const RzCmdDescArg check_between_args[] = {
	{
		.name = "first",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "middle",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "last",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp check_between_help = {
	.summary = "Check if <middle> number is between <first> and <last>",
	.args = check_between_args,
};

static const RzCmdDescDetailEntry print_boundaries_prot_Examples_detail_entries[] = {
	{ .text = "%B ", .arg_str = "@e:search.in=file", .comment = "Prints boundary of this file" },
	{ .text = "%Bt ", .arg_str = "@e:search.in=io.maps", .comment = "Prints boundaries of all io maps" },
	{ 0 },
};
static const RzCmdDescDetail print_boundaries_prot_details[] = {
	{ .name = "Examples", .entries = print_boundaries_prot_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg print_boundaries_prot_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_boundaries_prot_help = {
	.summary = "Prints the search boundaries based on the search.in mode.",
	.description = "There are multiple search modes in Rizin that can be listed using the command `e search.in=?`. This command can be used to get boundaries of those search modes.",
	.details = print_boundaries_prot_details,
	.args = print_boundaries_prot_args,
};

static const RzCmdDescDetailEntry print_djb2_hash_Examples_detail_entries[] = {
	{ .text = "%h ", .arg_str = "ILoveRizin", .comment = "0x56b7215a -> hashed value" },
	{ 0 },
};
static const RzCmdDescDetail print_djb2_hash_details[] = {
	{ .name = "Examples", .entries = print_djb2_hash_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg print_djb2_hash_args[] = {
	{
		.name = "<str>",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_djb2_hash_help = {
	.summary = "Print hash value of string <str>",
	.details = print_djb2_hash_details,
	.args = print_djb2_hash_args,
};

static const RzCmdDescDetailEntry print_bitstring_Examples_detail_entries[] = {
	{ .text = "%f", .arg_str = " 28 Hello", .comment = "LLO (00111b selected : big-endian bitstring)" },
	{ .text = "%f", .arg_str = " 12 Hello", .comment = "LL (00110b selected : big-endian bitstring)" },
	{ 0 },
};
static const RzCmdDescDetail print_bitstring_details[] = {
	{ .name = "Examples", .entries = print_bitstring_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg print_bitstring_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "bitstring",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_bitstring_help = {
	.summary = "bitstring manipulation.",
	.description = "Treat given string as bitstring and get selected characters from bitstring using given value. Bits that are flagged in value are used to get characters from given string. Bitstring is treated in big-endian format",
	.details = print_bitstring_details,
	.args = print_bitstring_args,
};

static const RzCmdDescDetailEntry eval_expr_print_octal_Examples_detail_entries[] = {
	{ .text = "%o", .arg_str = " 123", .comment = "0173 in octal" },
	{ .text = "%o", .arg_str = " 321", .comment = "0501 in octal" },
	{ 0 },
};
static const RzCmdDescDetail eval_expr_print_octal_details[] = {
	{ .name = "Examples", .entries = eval_expr_print_octal_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg eval_expr_print_octal_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_expr_print_octal_help = {
	.summary = "Print <expr> in octal format",
	.details = eval_expr_print_octal_details,
	.args = eval_expr_print_octal_args,
};

static const RzCmdDescArg num_to_units_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp num_to_units_help = {
	.summary = "Convert <expr> to K, M, G, T etc... units",
	.args = num_to_units_args,
};

static const RzCmdDescHelp perc_v_help = {
	.summary = "Show value commands",
};
static const RzCmdDescArg show_value_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr>",
	.args = show_value_args,
};

static const RzCmdDescArg show_value_hex_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_hex_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr> in hex",
	.args = show_value_hex_args,
};

static const RzCmdDescArg show_value_i1_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_i1_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr> as 1 byte integer",
	.args = show_value_i1_args,
};

static const RzCmdDescArg show_value_i2_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_i2_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr> as 2 bytes integer",
	.args = show_value_i2_args,
};

static const RzCmdDescArg show_value_i4_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_i4_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr> as 4 bytes integer",
	.args = show_value_i4_args,
};

static const RzCmdDescArg show_value_i8_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_i8_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr> as 8 bytes integer",
	.args = show_value_i8_args,
};

static const RzCmdDescArg show_value_int_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp show_value_int_help = {
	.summary = "Show last expression ($?) or currently evaluated <expr> as integer",
	.args = show_value_int_args,
};

static const RzCmdDescDetailEntry set_last_eval_expr_Examples_detail_entries[] = {
	{ .text = "%q", .arg_str = " 123", .comment = "This will set $?. Then commands like %+, %-, etc. can be used to do some task by checking whether $? holds positive value or not." },
	{ 0 },
};
static const RzCmdDescDetail set_last_eval_expr_details[] = {
	{ .name = "Examples", .entries = set_last_eval_expr_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg set_last_eval_expr_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp set_last_eval_expr_help = {
	.summary = "Update $? (last evaluated expression) with <expr>, without printing anything",
	.details = set_last_eval_expr_details,
	.args = set_last_eval_expr_args,
};

static const RzCmdDescDetailEntry compare_and_set_core_num_value_Examples_detail_entries[] = {
	{ .text = "%==", .arg_str = " str1 str2", .comment = "$? will be set to 0 if these two strings are equal, otherwise some other positive value." },
	{ 0 },
};
static const RzCmdDescDetail compare_and_set_core_num_value_details[] = {
	{ .name = "Examples", .entries = compare_and_set_core_num_value_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg compare_and_set_core_num_value_args[] = {
	{
		.name = "str1",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "str2",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp compare_and_set_core_num_value_help = {
	.summary = "Compare strings <str1> and <str2> and set $? register to cmp result",
	.details = compare_and_set_core_num_value_details,
	.args = compare_and_set_core_num_value_args,
};

static const RzCmdDescDetailEntry exec_cmd_if_core_num_value_positive_Examples_detail_entries[] = {
	{ .text = "%=1; %+", .arg_str = " %%x", .comment = "Will display hexdump at current seek address" },
	{ .text = "%=-2; %+", .arg_str = " %%x", .comment = "Won\"t do anything" },
	{ .text = "%=0; %+", .arg_str = " %%x", .comment = "Won\"t do anything" },
	{ 0 },
};
static const RzCmdDescDetail exec_cmd_if_core_num_value_positive_details[] = {
	{ .name = "Examples", .entries = exec_cmd_if_core_num_value_positive_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg exec_cmd_if_core_num_value_positive_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp exec_cmd_if_core_num_value_positive_help = {
	.summary = "Execute command <cmd> if $? register is greater than 0",
	.details = exec_cmd_if_core_num_value_positive_details,
	.args = exec_cmd_if_core_num_value_positive_args,
};

static const RzCmdDescDetailEntry exec_cmd_if_core_num_value_negative_Examples_detail_entries[] = {
	{ .text = "%=1; %-", .arg_str = " %%x", .comment = "Won\"t do anything" },
	{ .text = "%=-2; %-", .arg_str = " %%x", .comment = "Will display hexdump at current seek address" },
	{ .text = "%=0; %+", .arg_str = " %%x", .comment = "Won\"t do anything" },
	{ 0 },
};
static const RzCmdDescDetail exec_cmd_if_core_num_value_negative_details[] = {
	{ .name = "Examples", .entries = exec_cmd_if_core_num_value_negative_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg exec_cmd_if_core_num_value_negative_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp exec_cmd_if_core_num_value_negative_help = {
	.summary = "Execute command <cmd> if $? register is less than 0",
	.details = exec_cmd_if_core_num_value_negative_details,
	.args = exec_cmd_if_core_num_value_negative_args,
};

static const RzCmdDescArg exec_cmd_if_core_num_value_zero_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp exec_cmd_if_core_num_value_zero_help = {
	.summary = "Execute command <cmd> if $? is 0",
	.args = exec_cmd_if_core_num_value_zero_args,
};

static const RzCmdDescArg exec_cmd_if_core_num_value_nonzero_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp exec_cmd_if_core_num_value_nonzero_help = {
	.summary = "Execute command <cmd> if $? is not 0",
	.args = exec_cmd_if_core_num_value_nonzero_args,
};

static const RzCmdDescArg calculate_string_length_args[] = {
	{
		.name = "str",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp calculate_string_length_help = {
	.summary = "Calculate length of string <str>. Quite mode stores value in `$?` register.",
	.args = calculate_string_length_args,
};

static const RzCmdDescArg calc_expr_show_hex_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp calc_expr_show_hex_help = {
	.summary = "Show evaluated expression <expr> in hex",
	.args = calc_expr_show_hex_args,
};

static const RzCmdDescHelp perc_x_help = {
	.summary = "String/Numeric to hex manipulation commands",
};
static const RzCmdDescArg ascii_to_hex_args[] = {
	{
		.name = "astr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp ascii_to_hex_help = {
	.summary = "ASCII string to hex string",
	.args = ascii_to_hex_args,
};

static const RzCmdDescArg numeric_expr_to_hex_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp numeric_expr_to_hex_help = {
	.summary = "Numerical expression to hex",
	.args = numeric_expr_to_hex_args,
};

static const RzCmdDescArg hex_to_ascii_args[] = {
	{
		.name = "hexnum",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp hex_to_ascii_help = {
	.summary = "Hex string to ASCII string",
	.args = hex_to_ascii_args,
};

static const RzCmdDescArg generate_sequence_args[] = {
	{
		.name = "start",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "stop",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "step",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp generate_sequence_help = {
	.summary = "Generate sequence of numbers from <start> to <stop> with <step> increments",
	.args = generate_sequence_args,
};

static const RzCmdDescArg phys2virt_args[] = {
	{
		.name = "paddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp phys2virt_help = {
	.summary = "Convert physical to virtual address",
	.args = phys2virt_args,
};

static const RzCmdDescArg virt2phys_args[] = {
	{
		.name = "vaddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp virt2phys_help = {
	.summary = "Virtual to physical address conversion",
	.args = virt2phys_args,
};

static const RzCmdDescArg yank_hud_file_args[] = {
	{
		.name = "input",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_hud_file_help = {
	.summary = "HUD input",
	.args = yank_hud_file_args,
};

static const RzCmdDescHelp perc_i_help = {
	.summary = "Input commands",
};
static const RzCmdDescArg input_prompt_args[] = {
	{
		.name = "prompt",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp input_prompt_help = {
	.summary = "Input the <prompt> and save response in yank clipboard (`y` commands)",
	.args = input_prompt_args,
};

static const RzCmdDescArg input_prompt_echo_args[] = {
	{
		.name = "prompt",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp input_prompt_echo_help = {
	.summary = "Input the <prompt>, save response in yank clipboard (`y` commands), and print it",
	.args = input_prompt_echo_args,
};

static const RzCmdDescArg input_yesno_no_args[] = {
	{
		.name = "question",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp input_yesno_no_help = {
	.summary = "Input Yes/No <question> and store result in $? register (default No)",
	.args = input_yesno_no_args,
};

static const RzCmdDescArg input_yesno_yes_args[] = {
	{
		.name = "question",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp input_yesno_yes_help = {
	.summary = "Input Yes/No <question> and store result in $? register (default Yes)",
	.args = input_yesno_yes_args,
};

static const RzCmdDescArg input_any_key_args[] = {
	{ 0 },
};
static const RzCmdDescHelp input_any_key_help = {
	.summary = "Input any key. Does nothing else.",
	.args = input_any_key_args,
};

static const RzCmdDescArg input_yank_hud_args[] = {
	{
		.name = "path",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp input_yank_hud_help = {
	.summary = "Interactive HUD mode to find files in <path>",
	.args = input_yank_hud_args,
};

static const RzCmdDescArg input_msg_args[] = {
	{
		.name = "msg",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp input_msg_help = {
	.summary = "Display <msg> in console and wait for key",
	.args = input_msg_args,
};

static const RzCmdDescArg input_conditional_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp input_conditional_help = {
	.summary = "Evaluate <expr>, store result in $? register and print true if <expr> != 0, false otherwise",
	.args = input_conditional_args,
};

static const RzCmdDescArg get_addr_references_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp get_addr_references_help = {
	.summary = "Get references of given address",
	.args = get_addr_references_args,
};

static const RzCmdDescDetailEntry push_escaped_Examples_detail_entries[] = {
	{ .text = "< ppq; <command>", .arg_str = NULL, .comment = "Equivalent to running <command> and pressing the keys: p, p, q." },
	{ .text = "< \\n; <command>", .arg_str = NULL, .comment = "As above, but '\\n' is equivalent to pressing <enter>." },
	{ 0 },
};

static const RzCmdDescDetailEntry push_escaped_Escape_space_sequences_detail_entries[] = {
	{ .text = "\\n", .arg_str = NULL, .comment = "newline (0x0a)." },
	{ .text = "\\b", .arg_str = NULL, .comment = "backspace (0x08)." },
	{ .text = "\\t", .arg_str = NULL, .comment = "horizontal tab (0x09)." },
	{ .text = "\\v", .arg_str = NULL, .comment = "vertical tab (0x0b)." },
	{ .text = "\\f", .arg_str = NULL, .comment = "new page (0x0c)." },
	{ .text = "\\r", .arg_str = NULL, .comment = "carriage return (0x0d)." },
	{ .text = "\\xHH", .arg_str = NULL, .comment = "Raw byte 0xHH (in hexadecimal)." },
	{ 0 },
};
static const RzCmdDescDetail push_escaped_details[] = {
	{ .name = "Examples", .entries = push_escaped_Examples_detail_entries },
	{ .name = "Escape sequences", .entries = push_escaped_Escape_space_sequences_detail_entries },
	{ 0 },
};
static const RzCmdDescArg push_escaped_args[] = {
	{
		.name = "characters",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp push_escaped_help = {
	.summary = "Push escaped string into the RzCons.readChar (pressed keys) buffer",
	.details = push_escaped_details,
	.args = push_escaped_args,
};

static const RzCmdDescHelp cmd_analysis_help = {
	.summary = "Analysis commands",
};
static const RzCmdDescHelp aa_help = {
	.summary = "Analysis commands",
};
static const RzCmdDescArg analyze_simple_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_simple_help = {
	.summary = "Analyze all flags starting with sym. and entry",
	.args = analyze_simple_args,
};

static const RzCmdDescArg analyze_everything_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_everything_help = {
	.summary = "Analyze all calls, references, emulation and applies signatures",
	.args = analyze_everything_args,
};

static const RzCmdDescArg analyze_everything_experimental_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_everything_experimental_help = {
	.summary = "Experimental analysis",
	.args = analyze_everything_experimental_args,
};

static const RzCmdDescHelp aac_help = {
	.summary = "Analysis function calls commands",
};
static const RzCmdDescArg analyze_all_function_calls_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_function_calls_help = {
	.summary = "Analyze function calls",
	.args = analyze_all_function_calls_args,
};

static const RzCmdDescArg analyze_all_function_calls_to_imports_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_function_calls_to_imports_help = {
	.summary = "Analyze all function calls to imports",
	.args = analyze_all_function_calls_to_imports_args,
};

static const RzCmdDescArg analysis_recover_all_classes_from_bin_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_recover_all_classes_from_bin_help = {
	.summary = "Analysis classes from RzBin",
	.args = analysis_recover_all_classes_from_bin_args,
};

static const RzCmdDescArg analyze_all_data_references_to_code_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_data_references_to_code_help = {
	.summary = "Analyze data references to code",
	.args = analyze_all_data_references_to_code_args,
};

static const RzCmdDescHelp aae_help = {
	.summary = "Analysis commands using ESIL",
};
static const RzCmdDescDetailEntry analysis_all_esil_Examples_detail_entries[] = {
	{ .text = "aae", .arg_str = "", .comment = "analyze ranges given by analysis.in" },
	{ .text = "aae", .arg_str = " $SS @ $S", .comment = "analyze the whole section" },
	{ 0 },
};
static const RzCmdDescDetail analysis_all_esil_details[] = {
	{ .name = "Examples", .entries = analysis_all_esil_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_all_esil_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_all_esil_help = {
	.summary = "Analyze references with ESIL",
	.details = analysis_all_esil_details,
	.args = analysis_all_esil_args,
};

static const RzCmdDescArg analysis_all_esil_functions_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_all_esil_functions_help = {
	.summary = "Analyze references with ESIL in all functions",
	.args = analysis_all_esil_functions_args,
};

static const RzCmdDescHelp aaf_help = {
	.summary = "Analysis function commands",
};
static const RzCmdDescArg analyze_all_functions_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_functions_help = {
	.summary = "Analyze all functions",
	.args = analyze_all_functions_args,
};

static const RzCmdDescArg analyze_all_functions_esil_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_functions_esil_help = {
	.summary = "Analyze all functions using ESIL",
	.args = analyze_all_functions_esil_args,
};

static const RzCmdDescArg analyze_all_consecutive_functions_in_section_args[] = {
	{
		.name = "length",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_all_consecutive_functions_in_section_help = {
	.summary = "Analyze all consecutive functions in section",
	.args = analyze_all_consecutive_functions_in_section_args,
};

static const RzCmdDescArg analyze_recursively_all_function_types_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_recursively_all_function_types_help = {
	.summary = "Performs recursive type matching in all functions",
	.args = analyze_recursively_all_function_types_args,
};

static const RzCmdDescArg print_analysis_details_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_analysis_details_help = {
	.summary = "Print preformed analysis details",
	.args = print_analysis_details_args,
};

static const RzCmdDescArg analyze_all_unresolved_jumps_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_unresolved_jumps_help = {
	.summary = "Analyze all unresolved jumps",
	.args = analyze_all_unresolved_jumps_args,
};

static const RzCmdDescHelp aal_help = {
	.summary = "Language specific analysis commands",
};
static const RzCmdDescArg recover_all_golang_functions_strings_args[] = {
	{ 0 },
};
static const RzCmdDescHelp recover_all_golang_functions_strings_help = {
	.summary = "Recover and analyze all Golang functions and strings",
	.args = recover_all_golang_functions_strings_args,
};

static const RzCmdDescArg analyze_all_objc_references_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_objc_references_help = {
	.summary = "Analyze all Objective-C references from selector usages to their implementations",
	.args = analyze_all_objc_references_args,
};

static const RzCmdDescArg analyze_all_objc_stubs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_objc_stubs_help = {
	.summary = "Recover all Objective-C selector stub names (__objc_stubs section contents)",
	.args = analyze_all_objc_stubs_args,
};

static const RzCmdDescHelp aan_help = {
	.summary = "Automatic rename functions commands",
};
static const RzCmdDescArg autoname_all_functions_args[] = {
	{ 0 },
};
static const RzCmdDescHelp autoname_all_functions_help = {
	.summary = "Renames all functions based on their strings or calls",
	.args = autoname_all_functions_args,
};

static const RzCmdDescArg autoname_all_functions_noreturn_args[] = {
	{ 0 },
};
static const RzCmdDescHelp autoname_all_functions_noreturn_help = {
	.summary = "Renames all functions which does not return",
	.args = autoname_all_functions_noreturn_args,
};

static const RzCmdDescDetailEntry analyze_all_preludes_Search_space_a_space_custom_space_prelude_detail_entries[] = {
	{ .text = "e analysis.prelude='90AEF630'", .arg_str = "", .comment = "Set new prelude" },
	{ .text = "aap", .arg_str = "", .comment = "Search for 90AEF630 and create a new function" },
	{ 0 },
};
static const RzCmdDescDetail analyze_all_preludes_details[] = {
	{ .name = "Search a custom prelude", .entries = analyze_all_preludes_Search_space_a_space_custom_space_prelude_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analyze_all_preludes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_all_preludes_help = {
	.summary = "Analyze all preludes",
	.details = analyze_all_preludes_details,
	.args = analyze_all_preludes_args,
};

static const RzCmdDescArg analyze_xrefs_section_bytes_args[] = {
	{
		.name = "n_bytes",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_xrefs_section_bytes_help = {
	.summary = "Analyze xrefs in current section or by n_bytes",
	.args = analyze_xrefs_section_bytes_args,
};

static const RzCmdDescArg analyze_symbols_entries_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_symbols_entries_help = {
	.summary = "Analyze only the symbols",
	.args = analyze_symbols_entries_args,
};

static const RzCmdDescArg analyze_symbols_entries_flags_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_symbols_entries_flags_help = {
	.summary = "Analyze only the flags starting as sym.* and entry*",
	.args = analyze_symbols_entries_flags_args,
};

static const RzCmdDescArg analyze_function_linked_offsets_args[] = {
	{
		.name = "func_name",
		.type = RZ_CMD_ARG_TYPE_FCN,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_function_linked_offsets_help = {
	.summary = "Analyze all/given function to convert immediate to linked structure offsets",
	.args = analyze_function_linked_offsets_args,
};

static const RzCmdDescArg print_commands_after_traps_args[] = {
	{
		.name = "n_bytes",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_commands_after_traps_help = {
	.summary = "Prints commands to create functions after a trap call",
	.args = print_commands_after_traps_args,
};

static const RzCmdDescArg print_areas_no_functions_args[] = {
	{
		.name = "min_len",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_areas_no_functions_help = {
	.summary = "Print memory areas not covered by functions",
	.args = print_areas_no_functions_args,
};

static const RzCmdDescArg analyze_value_to_maps_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_value_to_maps_help = {
	.summary = "Analyze values referencing a specific section or map",
	.args = analyze_value_to_maps_args,
};

static const RzCmdDescHelp ad_help = {
	.summary = "Analyze data",
};
static const RzCmdDescArg analysis_data_args[] = {
	{
		.name = "count",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "depth",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "wordsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_data_help = {
	.summary = "Analyze <count> data words with <depth>",
	.args = analysis_data_args,
};

static const RzCmdDescArg analysis_data_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_data_function_help = {
	.summary = "Analyze data in function",
	.args = analysis_data_function_args,
};

static const RzCmdDescArg analysis_data_function_gaps_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_data_function_gaps_help = {
	.summary = "Analyze data in function gaps",
	.args = analysis_data_function_gaps_args,
};

static const RzCmdDescArg analysis_data_kind_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_data_kind_help = {
	.summary = "Analyze data kind (code, text, data, invalid, etc)",
	.args = analysis_data_kind_args,
};

static const RzCmdDescArg analysis_data_trampoline_args[] = {
	{
		.name = "minimum",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.default_value = "0",

	},
	{
		.name = "maximum",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "0",

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_data_trampoline_help = {
	.summary = "Analyze data trampolines",
	.args = analysis_data_trampoline_args,
};

static const RzCmdDescHelp af_help = {
	.summary = "Analyze Functions commands",
};
static const RzCmdDescArg analysis_function_add_recu_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_add_recu_help = {
	.summary = "Analyze functions recursively (honors `analysis.calls`)",
	.args = analysis_function_add_recu_args,
};

static const RzCmdDescArg analysis_function_add_recu_force_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_add_recu_force_help = {
	.summary = "Analyze functions recursively",
	.args = analysis_function_add_recu_force_args,
};

static const char *analysis_function_create_type_choices[] = { "l", "i", "s", NULL };
static const RzCmdDescArg analysis_function_create_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = analysis_function_create_type_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_create_help = {
	.summary = "Hand craft a function (requires `afb+`)",
	.args = analysis_function_create_args,
};

static const RzCmdDescArg analysis_function_del_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_del_help = {
	.summary = "Delete function",
	.args = analysis_function_del_args,
};

static const RzCmdDescArg analysis_function_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_del_all_help = {
	.summary = "Delete all function analysis data",
	.args = analysis_function_del_all_args,
};

static const RzCmdDescArg analysis_function_analyze_jmptable_args[] = {
	{
		.name = "tbl_addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "elements",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_analyze_jmptable_help = {
	.summary = "Analyze function jumptable",
	.args = analysis_function_analyze_jmptable_args,
};

static const RzCmdDescArg analysis_function_analyze_args_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_analyze_args_help = {
	.summary = "Analyze function arguments in a call",
	.args = analysis_function_analyze_args_args,
};

static const RzCmdDescArg analysis_function_analyze_args_l_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_analyze_args_l_help = {
	.summary = "Analyze function arguments in a call (honors `dbg.funcarg`)",
	.args = analysis_function_analyze_args_l_args,
};

static const RzCmdDescHelp afb_help = {
	.summary = "Basic blocks commands",
};
static const RzCmdDescArg analysis_function_blocks_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_list_help = {
	.summary = "List basic blocks of function",
	.args = analysis_function_blocks_list_args,
};

static const RzCmdDescArg analysis_function_blocks_add_args[] = {
	{
		.name = "fcn_addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "jump",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "fail",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_add_help = {
	.summary = "Add basic block by hand",
	.args = analysis_function_blocks_add_args,
};

static const RzCmdDescArg analysis_function_blocks_del_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_del_help = {
	.summary = "Remove basic block from function",
	.args = analysis_function_blocks_del_args,
};

static const RzCmdDescArg analysis_function_blocks_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_del_all_help = {
	.summary = "Remove all basic blocks from function",
	.args = analysis_function_blocks_del_all_args,
};

static const RzCmdDescArg analysis_function_blocks_edge_args[] = {
	{
		.name = "switch_addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "case_addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_edge_help = {
	.summary = "Add basic-block edge for switch-cases",
	.args = analysis_function_blocks_edge_args,
};

static const RzCmdDescArg analysis_function_blocks_switch_type_args[] = {
	{
		.name = "switch_addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "enum_name",
		.type = RZ_CMD_ARG_TYPE_ENUM_TYPE,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_switch_type_help = {
	.summary = "Set basic-block switch-case enum type",
	.args = analysis_function_blocks_switch_type_args,
};

static const RzCmdDescArg analysis_function_returns_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_returns_help = {
	.summary = "Show addresses of instructions which leave the function",
	.args = analysis_function_returns_args,
};

static const RzCmdDescArg analysis_function_blocks_asciiart_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_asciiart_help = {
	.summary = "Display ascii-art bars for basic block regions",
	.args = analysis_function_blocks_asciiart_args,
};

static const RzCmdDescArg analysis_function_blocks_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_info_help = {
	.summary = "Print single basic block information",
	.args = analysis_function_blocks_info_args,
};

static const RzCmdDescArg analysis_function_blocks_color_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "color",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_blocks_color_help = {
	.summary = "Set a color for the basic block at a given address",
	.args = analysis_function_blocks_color_args,
};

static const RzCmdDescArg analysis_function_setbits_args[] = {
	{
		.name = "bits",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_setbits_help = {
	.summary = "Set asm.bits for the current function",
	.args = analysis_function_setbits_args,
};

static const RzCmdDescHelp afs_help = {
	.summary = "Function signatures commands",
};
static const RzCmdDescArg analysis_function_signature_args[] = {
	{
		.name = "signature",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_signature_help = {
	.summary = "Get/Set function signature at current address",
	.args = analysis_function_signature_args,
};

static const RzCmdDescArg analysis_function_signature_bytes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_signature_bytes_help = {
	.summary = "Outputs the function signature bytes, mask and search mask at current address",
	.args = analysis_function_signature_bytes_args,
};

static const RzCmdDescArg analysis_function_signature_editor_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_signature_editor_help = {
	.summary = "Set function signature at current address by using the editor",
	.args = analysis_function_signature_editor_args,
};

static const RzCmdDescArg analysis_function_signature_type_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_signature_type_help = {
	.summary = "Change type for current function",
	.args = analysis_function_signature_type_args,
};

static const RzCmdDescArg analysis_function_address_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_address_help = {
	.summary = "Show address of current function",
	.args = analysis_function_address_args,
};

static const RzCmdDescArg analysis_function_until_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_until_help = {
	.summary = "Resize and analyze function from current address until addr",
	.args = analysis_function_until_args,
};

static const RzCmdDescArg analysis_function_xrefs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_xrefs_help = {
	.summary = "List function references",
	.args = analysis_function_xrefs_args,
};

static const RzCmdDescArg analysis_function_stacksz_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_stacksz_help = {
	.summary = "Set stack frame size for function at current address",
	.args = analysis_function_stacksz_args,
};

static const RzCmdDescHelp afv_help = {
	.summary = "Manipulate arguments/variables in a function",
};
static const RzCmdDescArg analysis_function_vars_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_help = {
	.summary = "List all variables and arguments of the current function",
	.args = analysis_function_vars_args,
};

static const RzCmdDescArg analysis_function_vars_dis_refs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_dis_refs_help = {
	.summary = "List function variables and arguments with disasm refs",
	.args = analysis_function_vars_dis_refs_args,
};

static const RzCmdDescArg analysis_function_vars_del_args[] = {
	{
		.name = "varname|*",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_del_help = {
	.summary = "Remove all variables/arguments or just the specified one",
	.args = analysis_function_vars_del_args,
};

static const RzCmdDescArg analysis_function_vars_detect_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_detect_help = {
	.summary = "Analyze function arguments/locals",
	.args = analysis_function_vars_detect_args,
};

static const RzCmdDescArg analysis_function_vars_display_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_display_help = {
	.summary = "Display the value of arguments/variables",
	.args = analysis_function_vars_display_args,
};

static const RzCmdDescArg analysis_function_vars_stackframe_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_stackframe_help = {
	.summary = "Show BP relative stackframe variables",
	.args = analysis_function_vars_stackframe_args,
};

static const RzCmdDescArg analysis_function_vars_rename_args[] = {
	{
		.name = "new_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "old_name",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_rename_help = {
	.summary = "Rename argument/variable in current function",
	.args = analysis_function_vars_rename_args,
};

static const RzCmdDescArg analysis_function_vars_reads_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_reads_help = {
	.summary = "List addresses where vars are accessed (READ)",
	.args = analysis_function_vars_reads_args,
};

static const RzCmdDescArg analysis_function_vars_writes_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_writes_help = {
	.summary = "List addresses where vars are accessed (WRITE)",
	.args = analysis_function_vars_writes_args,
};

static const RzCmdDescArg analysis_function_vars_type_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_type_help = {
	.summary = "Change type for given argument/local",
	.args = analysis_function_vars_type_args,
};

static const RzCmdDescHelp afvx_help = {
	.summary = "Show argument/variable xrefs in a function",
};
static const RzCmdDescArg analysis_function_vars_xrefs_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_xrefs_help = {
	.summary = "Show function variable xrefs (same as afvR+afvW)",
	.args = analysis_function_vars_xrefs_args,
};

static const RzCmdDescArg analysis_function_vars_xrefs_args_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_xrefs_args_help = {
	.summary = "Show function argument xrefs",
	.args = analysis_function_vars_xrefs_args_args,
};

static const RzCmdDescArg analysis_function_vars_xrefs_vars_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_xrefs_vars_help = {
	.summary = "Show function local variable xrefs",
	.args = analysis_function_vars_xrefs_vars_args,
};

static const RzCmdDescHelp afvs_help = {
	.summary = "Manipulate stack-based arguments/locals",
};
static const RzCmdDescArg analysis_function_vars_stack_args[] = {
	{
		.name = "delta",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_stack_help = {
	.summary = "List stack-based arguments and locals / Define a new one",
	.args = analysis_function_vars_stack_args,
};

static const RzCmdDescArg analysis_function_vars_stack_del_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_stack_del_help = {
	.summary = "Delete argument/local with the given name",
	.args = analysis_function_vars_stack_del_args,
};

static const RzCmdDescArg analysis_function_vars_stack_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_stack_del_all_help = {
	.summary = "Delete all arguments/locals",
	.args = analysis_function_vars_stack_del_all_args,
};

static const RzCmdDescArg analysis_function_vars_stack_getref_args[] = {
	{
		.name = "delta",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_stack_getref_help = {
	.summary = "Define var get reference",
	.args = analysis_function_vars_stack_getref_args,
};

static const RzCmdDescArg analysis_function_vars_stack_setref_args[] = {
	{
		.name = "delta",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_stack_setref_help = {
	.summary = "Define var set reference",
	.args = analysis_function_vars_stack_setref_args,
};

static const RzCmdDescHelp afvr_help = {
	.summary = "Manipulate register-based arguments/locals",
};
static const RzCmdDescArg analysis_function_vars_regs_args[] = {
	{
		.name = "reg",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_regs_help = {
	.summary = "List register-based arguments and locals / Define a new one",
	.args = analysis_function_vars_regs_args,
};

static const RzCmdDescArg analysis_function_vars_regs_del_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_FCN_VAR,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_regs_del_help = {
	.summary = "Delete register-based argument/local with the given name",
	.args = analysis_function_vars_regs_del_args,
};

static const RzCmdDescArg analysis_function_vars_regs_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_regs_del_all_help = {
	.summary = "Delete all register-based arguments/locals",
	.args = analysis_function_vars_regs_del_all_args,
};

static const RzCmdDescArg analysis_function_vars_regs_getref_args[] = {
	{
		.name = "reg",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_regs_getref_help = {
	.summary = "Define register-based arguments and locals get references",
	.args = analysis_function_vars_regs_getref_args,
};

static const RzCmdDescArg analysis_function_vars_regs_setref_args[] = {
	{
		.name = "reg",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_vars_regs_setref_help = {
	.summary = "Define register-based arguments and locals set references",
	.args = analysis_function_vars_regs_setref_args,
};

static const RzCmdDescHelp afl_help = {
	.summary = "List functions",
};
static const RzCmdDescArg analysis_function_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_list_help = {
	.summary = "List all functions",
	.args = analysis_function_list_args,
};

static const RzCmdDescArg analysis_function_list_in_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_list_in_help = {
	.summary = "List functions in current seek",
	.args = analysis_function_list_in_args,
};

static const RzCmdDescArg analysis_function_count_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_count_help = {
	.summary = "Display count of all functions",
	.args = analysis_function_count_args,
};

static const RzCmdDescArg analysis_function_size_sum_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_size_sum_help = {
	.summary = "Display sum of all functions sizes",
	.args = analysis_function_size_sum_args,
};

static const RzCmdDescArg analysis_function_list_calls_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_list_calls_help = {
	.summary = "List calls of all functions",
	.args = analysis_function_list_calls_args,
};

static const RzCmdDescArg analysis_function_list_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_list_ascii_help = {
	.summary = "Display ascii-art bars with function ranges",
	.args = analysis_function_list_ascii_args,
};

static const RzCmdDescHelp afi_help = {
	.summary = "Show/edit function information",
};
static const RzCmdDescArg analysis_function_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_info_help = {
	.summary = "Show information of functions in current seek",
	.args = analysis_function_info_args,
};

static const RzCmdDescHelp afii_help = {
	.summary = "Show/add/delete imports used in function in current seek",
};
static const RzCmdDescArg analysis_function_import_list_args[] = {
	{
		.name = "import",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_import_list_help = {
	.summary = "Show/add imports used in function in current seek",
	.args = analysis_function_import_list_args,
};

static const RzCmdDescArg analysis_function_import_list_del_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_import_list_del_help = {
	.summary = "Delete imports used in function in current seek",
	.args = analysis_function_import_list_del_args,
};

static const RzCmdDescHelp afis_help = {
	.summary = "Show opcode statistic in function",
};
static const char *analysis_function_opcode_stat_mode_choices[] = { "family", "type", NULL };
static const RzCmdDescArg analysis_function_opcode_stat_args[] = {
	{
		.name = "mode",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = analysis_function_opcode_stat_mode_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_opcode_stat_help = {
	.summary = "Enumerate unique opcodes/opcode families/opcode types in function",
	.args = analysis_function_opcode_stat_args,
};

static const char *analysis_function_all_opcode_stat_mode_choices[] = { "family", "type", NULL };
static const RzCmdDescArg analysis_function_all_opcode_stat_args[] = {
	{
		.name = "mode",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = analysis_function_all_opcode_stat_mode_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_all_opcode_stat_help = {
	.summary = "Enumerate unique opcodes/opcode families/opcode types in all functions",
	.args = analysis_function_all_opcode_stat_args,
};

static const RzCmdDescHelp afn_help = {
	.summary = "Analyze function names",
};
static const RzCmdDescArg analysis_function_rename_args[] = {
	{
		.name = "new name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_rename_help = {
	.summary = "Rename function at current seek",
	.args = analysis_function_rename_args,
};

static const RzCmdDescArg analysis_function_autoname_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_autoname_help = {
	.summary = "Suggest a name for the function in current seek",
	.args = analysis_function_autoname_args,
};

static const RzCmdDescArg analysis_function_strings_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_strings_help = {
	.summary = "Print all strings referenced by the function in current seek",
	.args = analysis_function_strings_args,
};

static const RzCmdDescArg analysis_function_type_matching_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_type_matching_help = {
	.summary = "Type matching analysis for the function in current seek",
	.args = analysis_function_type_matching_args,
};

static const RzCmdDescArg analysis_functions_map_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_functions_map_help = {
	.summary = "Print functions map",
	.args = analysis_functions_map_args,
};

static const RzCmdDescDetailEntry analysis_functions_merge_empty_detail_entries[] = {
	{ .text = "afm 0xbeef @ 0x42", .arg_str = NULL, .comment = "Merge function at address 0xbeef to function at address 0x42" },
	{ 0 },
};
static const RzCmdDescDetail analysis_functions_merge_details[] = {
	{ .name = "", .entries = analysis_functions_merge_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_functions_merge_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_FCN,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_functions_merge_help = {
	.summary = "Merge two functions",
	.details = analysis_functions_merge_details,
	.args = analysis_functions_merge_args,
};

static const RzCmdDescHelp afc_help = {
	.summary = "Calling convention",
};
static const RzCmdDescArg analysis_function_cc_set_get_args[] = {
	{
		.name = "convention",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_cc_set_get_help = {
	.summary = "Set/Get calling convention for current function",
	.args = analysis_function_cc_set_get_args,
};

static const RzCmdDescArg analysis_function_cc_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_cc_list_help = {
	.summary = "List all available calling conventions",
	.args = analysis_function_cc_list_args,
};

static const RzCmdDescArg analysis_function_cc_load_args[] = {
	{
		.name = "db_path",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_function_cc_load_help = {
	.summary = "Open Calling Convention sdb profile from given path",
	.args = analysis_function_cc_load_args,
};

static const RzCmdDescArg analysis_function_cc_reg_usage_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_cc_reg_usage_help = {
	.summary = "Show register usage for the current function",
	.args = analysis_function_cc_reg_usage_args,
};

static const RzCmdDescArg analysis_function_describe_offset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_describe_offset_help = {
	.summary = "Show function + delta for given offset",
	.args = analysis_function_describe_offset_args,
};

static const RzCmdDescArg analysis_function_add_nodepth_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_function_add_nodepth_help = {
	.summary = "Analyze function non-recursively",
	.args = analysis_function_add_nodepth_args,
};

static const RzCmdDescDetailEntry analysis_appcall_Examples_detail_entries[] = {
	{ .text = "aeC", .arg_str = " 1 2 @ sym._add", .comment = "Call sym._add(1,2)" },
	{ 0 },
};
static const RzCmdDescDetail analysis_appcall_details[] = {
	{ .name = "Examples", .entries = analysis_appcall_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_appcall_args[] = {
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_appcall_help = {
	.summary = "appcall in esil",
	.details = analysis_appcall_details,
	.args = analysis_appcall_args,
};

static const RzCmdDescHelp aec_help = {
	.summary = "continue until ^C",
};
static const RzCmdDescArg analysis_continue_until_except_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_continue_until_except_help = {
	.summary = "Continue until exception",
	.args = analysis_continue_until_except_args,
};

static const RzCmdDescArg analysis_continue_until_breakpoint_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_continue_until_breakpoint_help = {
	.summary = "Continue back until breakpoint",
	.args = analysis_continue_until_breakpoint_args,
};

static const RzCmdDescArg analysis_continue_until_syscall_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_continue_until_syscall_help = {
	.summary = "Continue until syscall",
	.args = analysis_continue_until_syscall_args,
};

static const RzCmdDescArg analysis_continue_until_call_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_continue_until_call_help = {
	.summary = "Continue until call",
	.args = analysis_continue_until_call_args,
};

static const RzCmdDescArg analysis_continue_until_addr_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_continue_until_addr_help = {
	.summary = "Continue until address",
	.args = analysis_continue_until_addr_args,
};

static const RzCmdDescArg analysis_continue_until_esil_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_continue_until_esil_help = {
	.summary = "Continue until esil expression",
	.args = analysis_continue_until_esil_args,
};

static const RzCmdDescHelp aei_help = {
	.summary = "ESIL VM state",
};
static const RzCmdDescArg analysis_esil_init_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_esil_init_help = {
	.summary = "initialize ESIL VM state",
	.args = analysis_esil_init_args,
};

static const RzCmdDescArg analysis_esil_deinit_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_esil_deinit_help = {
	.summary = "deinitialize ESIL VM state",
	.args = analysis_esil_deinit_args,
};

static const RzCmdDescArg analysis_esil_init_p_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_esil_init_p_help = {
	.summary = "initialize ESIL program counter to curseek",
	.args = analysis_esil_init_p_args,
};

static const RzCmdDescHelp aeim_help = {
	.summary = "ESIL VM stack",
};
static const RzCmdDescArg analysis_esil_init_mem_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_esil_init_mem_help = {
	.summary = "initialize ESIL VM stack",
	.args = analysis_esil_init_mem_args,
};

static const RzCmdDescArg analysis_esil_init_mem_remove_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_esil_init_mem_remove_help = {
	.summary = "remove ESIL VM stack",
	.args = analysis_esil_init_mem_remove_args,
};

static const RzCmdDescArg analysis_esil_init_mem_p_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_esil_init_mem_p_help = {
	.summary = "initialize ESIL VM stack to \"aeim.stack\" or ?",
	.args = analysis_esil_init_mem_p_args,
};

static const RzCmdDescHelp aes_help = {
	.summary = "ESIL emulated debugger step",
};
static const RzCmdDescArg il_step_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp il_step_help = {
	.summary = "perform emulated debugger step",
	.args = il_step_args,
};

static const RzCmdDescArg il_step_evaluate_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp il_step_evaluate_help = {
	.summary = "evaluate N instr from core->offset",
	.args = il_step_evaluate_args,
};

static const RzCmdDescArg il_step_back_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_step_back_help = {
	.summary = "step back",
	.args = il_step_back_args,
};

static const RzCmdDescArg il_step_over_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_step_over_help = {
	.summary = "step over",
	.args = il_step_over_args,
};

static const RzCmdDescArg il_step_over_until_addr_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp il_step_over_until_addr_help = {
	.summary = "step over until given address",
	.args = il_step_over_until_addr_args,
};

static const RzCmdDescHelp aess_help = {
	.summary = "step skip",
};
static const RzCmdDescArg il_step_skip_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_step_skip_help = {
	.summary = "step skip (in case of CALL, just skip, instead of step into)",
	.args = il_step_skip_args,
};

static const RzCmdDescArg il_step_skip_until_addr_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_step_skip_until_addr_help = {
	.summary = "step skip (in case of CALL, just skip, instead of step into)",
	.args = il_step_skip_until_addr_args,
};

static const RzCmdDescArg il_step_skip_until_expr_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_step_skip_until_expr_help = {
	.summary = "step skip (in case of CALL, just skip, instead of step into)",
	.args = il_step_skip_until_expr_args,
};

static const RzCmdDescHelp aesu_help = {
	.summary = "step until",
};
static const RzCmdDescArg il_step_until_addr_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp il_step_until_addr_help = {
	.summary = "step until given address",
	.args = il_step_until_addr_args,
};

static const RzCmdDescArg il_step_until_expr_args[] = {
	{
		.name = "esil",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp il_step_until_expr_help = {
	.summary = "step until esil expression match",
	.args = il_step_until_expr_args,
};

static const RzCmdDescArg il_step_until_opt_args[] = {
	{
		.name = "optype",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp il_step_until_opt_help = {
	.summary = "step until given opcode type",
	.args = il_step_until_opt_args,
};

static const RzCmdDescHelp aets_help = {
	.summary = "ESIL Trace session",
};
static const RzCmdDescArg il_trace_start_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_trace_start_help = {
	.summary = "Start ESIL trace session",
	.args = il_trace_start_args,
};

static const RzCmdDescArg il_trace_stop_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_trace_stop_help = {
	.summary = "Stop ESIL trace session",
	.args = il_trace_stop_args,
};

static const RzCmdDescHelp aez_help = {
	.summary = "RzIL Emulation",
};
static const RzCmdDescArg il_vm_initialize_args[] = {
	{ 0 },
};
static const RzCmdDescHelp il_vm_initialize_help = {
	.summary = "Initialize the RzIL Virtual Machine at the current offset",
	.args = il_vm_initialize_args,
};

static const RzCmdDescArg il_vm_step_args[] = {
	{
		.name = "n_times",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp il_vm_step_help = {
	.summary = "Step N instructions within the RzIL Virtual Machine",
	.args = il_vm_step_args,
};

static const RzCmdDescArg il_vm_step_with_events_args[] = {
	{
		.name = "n_times",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp il_vm_step_with_events_help = {
	.summary = "Step N instructions within the RzIL VM and output VM changes (read & write)",
	.args = il_vm_step_with_events_args,
};

static const RzCmdDescArg il_vm_step_until_addr_args[] = {
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp il_vm_step_until_addr_help = {
	.summary = "Step until PC equals given address",
	.args = il_vm_step_until_addr_args,
};

static const RzCmdDescArg il_vm_step_until_addr_with_events_args[] = {
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp il_vm_step_until_addr_with_events_help = {
	.summary = "Step until PC equals given address and output VM changes (read & write)",
	.args = il_vm_step_until_addr_with_events_args,
};

static const RzCmdDescArg il_vm_status_args[] = {
	{
		.name = "var_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "number",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp il_vm_status_help = {
	.summary = "Print or modify the current status of the RzIL Virtual Machine",
	.args = il_vm_status_args,
};

static const RzCmdDescDetailEntry ag_Formats_detail_entries[] = {
	{ .text = "ascii", .arg_str = NULL, .comment = "Ascii art" },
	{ .text = "cmd", .arg_str = NULL, .comment = "rizin commands" },
	{ .text = "dot", .arg_str = NULL, .comment = "Graphviz dot" },
	{ .text = "gml", .arg_str = NULL, .comment = "Graph Modelling Language" },
	{ .text = "json", .arg_str = NULL, .comment = "json" },
	{ .text = "json_disasm", .arg_str = NULL, .comment = "json formatted disassembly" },
	{ .text = "sdb", .arg_str = NULL, .comment = "SDB key-value" },
	{ .text = "interactive", .arg_str = NULL, .comment = "Interactive ascii art" },
	{ 0 },
};
static const RzCmdDescDetail ag_details[] = {
	{ .name = "Formats", .entries = ag_Formats_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp ag_help = {
	.summary = "Analysis graph commands",
	.details = ag_details,
};
static const RzCmdDescArg analysis_graph_dataref_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_dataref_help = {
	.summary = "Data reference graph",
	.args = analysis_graph_dataref_args,
};

static const RzCmdDescArg analysis_graph_dataref_global_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_dataref_global_help = {
	.summary = "Global data references graph",
	.args = analysis_graph_dataref_global_args,
};

static const RzCmdDescArg analysis_graph_callgraph_function_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_callgraph_function_help = {
	.summary = "Function callgraph",
	.args = analysis_graph_callgraph_function_args,
};

static const RzCmdDescArg analysis_graph_callgraph_global_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_callgraph_global_help = {
	.summary = "Global callgraph",
	.args = analysis_graph_callgraph_global_args,
};

static const RzCmdDescArg analysis_graph_icfg_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_icfg_help = {
	.summary = "Inter-procedual control flow graph",
	.args = analysis_graph_icfg_args,
};

static const RzCmdDescArg analysis_graph_cfg_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_cfg_help = {
	.summary = "Control flow graph (without calls)",
	.args = analysis_graph_cfg_args,
};

static const RzCmdDescArg analysis_graph_bb_function_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_bb_function_help = {
	.summary = "Basic blocks function graph",
	.args = analysis_graph_bb_function_args,
};

static const RzCmdDescArg analysis_graph_imports_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_imports_help = {
	.summary = "Imports graph",
	.args = analysis_graph_imports_args,
};

static const RzCmdDescArg analysis_graph_refs_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_refs_help = {
	.summary = "References graph",
	.args = analysis_graph_refs_args,
};

static const RzCmdDescArg analysis_graph_refs_global_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_refs_global_help = {
	.summary = "Global references graph",
	.args = analysis_graph_refs_global_args,
};

static const RzCmdDescArg analysis_graph_normal_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_normal_help = {
	.summary = "Normal graph",
	.args = analysis_graph_normal_args,
};

static const RzCmdDescArg analysis_graph_line_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_line_help = {
	.summary = "Line graph",
	.args = analysis_graph_line_args,
};

static const RzCmdDescArg analysis_graph_xrefs_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_xrefs_help = {
	.summary = "Cross-references graph",
	.args = analysis_graph_xrefs_args,
};

static const RzCmdDescArg analysis_graph_il_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_il_help = {
	.summary = "RzIL graph of the instruction at the current offset.",
	.args = analysis_graph_il_args,
};

static const RzCmdDescArg analysis_graph_custom_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "ascii",
		.choices.choices_cb = rz_analysis_graph_format_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_custom_help = {
	.summary = "Custom graph",
	.args = analysis_graph_custom_args,
};

static const RzCmdDescArg analysis_graph_custom_clear_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_custom_clear_help = {
	.summary = "Clear the custom graph",
	.args = analysis_graph_custom_clear_args,
};

static const RzCmdDescHelp agn_help = {
	.summary = "Managing custom graph nodes",
};
static const RzCmdDescArg analysis_graph_custom_node_add_args[] = {
	{
		.name = "title",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "body",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_custom_node_add_help = {
	.summary = "Add a node to the custom graph",
	.args = analysis_graph_custom_node_add_args,
};

static const RzCmdDescArg analysis_graph_custom_node_remove_args[] = {
	{
		.name = "title",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_custom_node_remove_help = {
	.summary = "Remove a node from the custom graph",
	.args = analysis_graph_custom_node_remove_args,
};

static const RzCmdDescHelp age_help = {
	.summary = "Managing custom graph edges",
};
static const RzCmdDescArg analysis_graph_custom_edge_add_args[] = {
	{
		.name = "title1",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "title2",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_custom_edge_add_help = {
	.summary = "Add an edge to the custom graph",
	.args = analysis_graph_custom_edge_add_args,
};

static const RzCmdDescArg analysis_graph_custom_edge_remove_args[] = {
	{
		.name = "title1",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "title2",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_custom_edge_remove_help = {
	.summary = "Remove an edge from the custom graph",
	.args = analysis_graph_custom_edge_remove_args,
};

static const RzCmdDescDetailEntry analysis_graph_write_Graph_space_Type_detail_entries[] = {
	{ .text = "dataref", .arg_str = NULL, .comment = "Data reference graph" },
	{ .text = "funcall", .arg_str = NULL, .comment = "Function call graph" },
	{ .text = "diff", .arg_str = NULL, .comment = "Diff graph" },
	{ .text = "funblock", .arg_str = NULL, .comment = "Function basic block graph" },
	{ .text = "import", .arg_str = NULL, .comment = "Imports graph" },
	{ .text = "ref", .arg_str = NULL, .comment = "References graph" },
	{ .text = "line", .arg_str = NULL, .comment = "Line graph" },
	{ .text = "xref", .arg_str = NULL, .comment = "Cross references graph" },
	{ .text = "custom", .arg_str = NULL, .comment = "Custom made graph" },
	{ 0 },
};
static const RzCmdDescDetail analysis_graph_write_details[] = {
	{ .name = "Graph Type", .entries = analysis_graph_write_Graph_space_Type_detail_entries },
	{ 0 },
};
static const char *analysis_graph_write_graphtype_choices[] = { "dataref", "funcall", "diff", "funblock", "import", "ref", "line", "xref", "custom", NULL };
static const RzCmdDescArg analysis_graph_write_args[] = {
	{
		.name = "graphtype",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "dataref",
		.choices.choices = analysis_graph_write_graphtype_choices,

	},
	{
		.name = "path",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "global",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_graph_write_help = {
	.summary = "Write to path or display graph image (see graph.gv.format)",
	.details = analysis_graph_write_details,
	.args = analysis_graph_write_args,
};

static const RzCmdDescDetailEntry ar_Register_space_Filter_detail_entries[] = {
	{ .text = "ar", .arg_str = "", .comment = "Show a sensible default selection of registers" },
	{ .text = "ar", .arg_str = " rax", .comment = "Show a single register" },
	{ .text = "ar", .arg_str = " 16", .comment = "Show 16 bits wide gpr registers" },
	{ .text = "ar", .arg_str = " xmm", .comment = "Show registers of type xmm (see `arT` for possible types)" },
	{ .text = "ar", .arg_str = " PC", .comment = "Show the register with the given role (see `arR` for possible roles)" },
	{ .text = "ar", .arg_str = " all", .comment = "Show all registers available" },
	{ 0 },
};
static const RzCmdDescDetail ar_details[] = {
	{ .name = "Register Filter", .entries = ar_Register_space_Filter_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp ar_help = {
	.summary = "Emulation Registers",
	.details = ar_details,
};
static const RzCmdDescArg analysis_regs_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_help = {
	.summary = "Show registers with their values, or assign one (`ar reg=value`)",
	.args_str = " [<filter> [= <value>]]",
	.args = analysis_regs_args,
};

static const RzCmdDescArg analysis_regs_columns_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_columns_help = {
	.summary = "Show registers in columns",
	.args = analysis_regs_columns_args,
};

static const RzCmdDescArg analysis_regs_references_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_references_help = {
	.summary = "Show register references (telescoping)",
	.args = analysis_regs_references_args,
};

static const RzCmdDescArg analysis_regs_valgroup_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_valgroup_help = {
	.summary = "Show register grouped by their values",
	.args = analysis_regs_valgroup_args,
};

static const RzCmdDescDetail analysis_regs_args_details[] = {
	{ 0 },
};
static const RzCmdDescArg analysis_regs_args_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_args_help = {
	.summary = "Show values of default function argument registers (A0, A1, A2, ...) with telescoping",
	.details = analysis_regs_args_details,
	.args = analysis_regs_args_args,
};

static const RzCmdDescDetail analysis_reg_cc_details[] = {
	{ 0 },
};
static const RzCmdDescArg analysis_reg_cc_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_cc_help = {
	.summary = "Show calling convention defined by registers",
	.details = analysis_reg_cc_details,
	.args = analysis_reg_cc_args,
};

static const RzCmdDescDetail analysis_regs_diff_details[] = {
	{ 0 },
};
static const RzCmdDescArg analysis_regs_diff_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_diff_help = {
	.summary = "Show register differences from previous contents",
	.details = analysis_regs_diff_details,
	.args = analysis_regs_diff_args,
};

static const RzCmdDescArg analysis_regs_prev_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_prev_help = {
	.summary = "Show previous register contents",
	.args = analysis_regs_prev_args,
};

static const RzCmdDescArg analysis_regs_fpu_args[] = {
	{
		.name = "reg",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_regs_fpu_help = {
	.summary = "Show fpu registers",
	.args_str = " [<register> [= <value>]]",
	.args = analysis_regs_fpu_args,
};

static const RzCmdDescHelp arf_help = {
	.summary = "Show commands for setting registers as flags",
};
static const RzCmdDescArg analysis_reg_flags_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_flags_help = {
	.summary = "Show commands for setting registers as flags",
	.args = analysis_reg_flags_args,
};

static const RzCmdDescArg analysis_reg_flags_unset_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_flags_unset_help = {
	.summary = "Show commands for unsetting flags from `arf`",
	.args = analysis_reg_flags_unset_args,
};

static const RzCmdDescDetail ara_details[] = {
	{ 0 },
};
static const RzCmdDescHelp ara_help = {
	.summary = "Register arena commands (underlying binary data)",
	.details = ara_details,
};
static const RzCmdDescArg analysis_reg_arenas_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_help = {
	.summary = "Show all currently allocated register arenas",
	.args = analysis_reg_arenas_args,
};

static const RzCmdDescArg analysis_reg_arenas_push_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_push_help = {
	.summary = "Push a new set of arenas to the stack",
	.args = analysis_reg_arenas_push_args,
};

static const RzCmdDescArg analysis_reg_arenas_pop_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_pop_help = {
	.summary = "Pop a set of arenas from the stack",
	.args = analysis_reg_arenas_pop_args,
};

static const RzCmdDescArg analysis_reg_arenas_stack_size_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_stack_size_help = {
	.summary = "Show number of stack elements",
	.args = analysis_reg_arenas_stack_size_args,
};

static const RzCmdDescArg analysis_reg_arenas_swap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_swap_help = {
	.summary = "Swap last two register arenas on the stack",
	.args = analysis_reg_arenas_swap_args,
};

static const RzCmdDescArg analysis_reg_arenas_zero_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_REG_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_zero_help = {
	.summary = "Reset the specified or all arena contents to 0",
	.args = analysis_reg_arenas_zero_args,
};

static const RzCmdDescArg analysis_reg_arenas_hexdump_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_REG_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_hexdump_help = {
	.summary = "Display hexdump of given arena (or gpr if none given)",
	.args = analysis_reg_arenas_hexdump_args,
};

static const RzCmdDescArg analysis_reg_arenas_write_hex_args[] = {
	{
		.name = "hex",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_REG_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_arenas_write_hex_help = {
	.summary = "Write hexadecimal data <hex> into the given arena (or gpr if none given)",
	.args = analysis_reg_arenas_write_hex_args,
};

static const RzCmdDescDetail arp_details[] = {
	{ 0 },
};
static const RzCmdDescHelp arp_help = {
	.summary = "Register profile commands (defining available registers)",
	.details = arp_details,
};
static const RzCmdDescArg analysis_reg_profile_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_profile_help = {
	.summary = "Show the current register profile",
	.args = analysis_reg_profile_args,
};

static const RzCmdDescArg analysis_reg_profile_comments_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_profile_comments_help = {
	.summary = "Show register profile comments",
	.args = analysis_reg_profile_comments_args,
};

static const RzCmdDescArg analysis_reg_profile_open_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_profile_open_help = {
	.summary = "Load a new register profile from file",
	.args = analysis_reg_profile_open_args,
};

static const RzCmdDescArg analysis_reg_profile_gdb_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_profile_gdb_help = {
	.summary = "Convert gdb profile from the given file to rizin register profile",
	.args = analysis_reg_profile_gdb_args,
};

static const RzCmdDescDetailEntry analysis_reg_cond_Basic_detail_entries[] = {
	{ .text = "eq", .arg_str = "", .comment = "equal" },
	{ .text = "ne", .arg_str = "", .comment = "not equal" },
	{ .text = "cf", .arg_str = "", .comment = "carry flag set" },
	{ .text = "neg", .arg_str = "", .comment = "negative value (has sign)" },
	{ .text = "of", .arg_str = "", .comment = "overflow" },
	{ 0 },
};

static const RzCmdDescDetailEntry analysis_reg_cond_Unsigned_detail_entries[] = {
	{ .text = "hi", .arg_str = "", .comment = "higher" },
	{ .text = "he", .arg_str = "", .comment = "higher or equal" },
	{ .text = "lo", .arg_str = "", .comment = "lower" },
	{ .text = "loe", .arg_str = "", .comment = "lower or equal" },
	{ 0 },
};

static const RzCmdDescDetailEntry analysis_reg_cond_Signed_detail_entries[] = {
	{ .text = "gt", .arg_str = "", .comment = "greater" },
	{ .text = "ge", .arg_str = "", .comment = "greater or equal" },
	{ .text = "lt", .arg_str = "", .comment = "less" },
	{ .text = "le", .arg_str = "", .comment = "less or equal" },
	{ 0 },
};
static const RzCmdDescDetail analysis_reg_cond_details[] = {
	{ .name = "Basic", .entries = analysis_reg_cond_Basic_detail_entries },
	{ .name = "Unsigned", .entries = analysis_reg_cond_Unsigned_detail_entries },
	{ .name = "Signed", .entries = analysis_reg_cond_Signed_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_reg_cond_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_cond_help = {
	.summary = "Conditional flags (aliases to processor flags)",
	.details = analysis_reg_cond_details,
	.args = analysis_reg_cond_args,
};

static const RzCmdDescDetail analysis_reg_types_details[] = {
	{ 0 },
};
static const RzCmdDescArg analysis_reg_types_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_types_help = {
	.summary = "List all register types",
	.details = analysis_reg_types_details,
	.args = analysis_reg_types_args,
};

static const RzCmdDescDetail analysis_reg_roles_details[] = {
	{ 0 },
};
static const RzCmdDescArg analysis_reg_roles_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_reg_roles_help = {
	.summary = "List all register roles",
	.details = analysis_reg_roles_details,
	.args = analysis_reg_roles_args,
};

static const RzCmdDescHelp ai_help = {
	.summary = "analysis/address information/imports",
};
static const RzCmdDescArg analysis_info_show_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_info_show_help = {
	.summary = "show address information",
	.args = analysis_info_show_args,
};

static const RzCmdDescHelp aii_help = {
	.summary = "global import (like afii, but global)",
};
static const RzCmdDescArg global_imports_args[] = {
	{
		.name = "namespace",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp global_imports_help = {
	.summary = "list/add global import (like afii, but global)",
	.args = global_imports_args,
};

static const RzCmdDescArg delete_global_imports_args[] = {
	{ 0 },
};
static const RzCmdDescHelp delete_global_imports_help = {
	.summary = "delete all global imports",
	.args = delete_global_imports_args,
};

static const RzCmdDescHelp av_help = {
	.summary = "C++ vtables and RTTI",
};
static const RzCmdDescArg analysis_list_vtables_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_list_vtables_help = {
	.summary = "search for vtables in data sections and show results",
	.args = analysis_list_vtables_args,
};

static const RzCmdDescHelp avg_help = {
	.summary = "Global variables",
};
static const RzCmdDescArg analysis_print_global_variable_args[] = {
	{
		.name = "var_name",
		.type = RZ_CMD_ARG_TYPE_GLOBAL_VAR,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_print_global_variable_help = {
	.summary = "show/list global variables",
	.args = analysis_print_global_variable_args,
};

static const RzCmdDescArg analysis_global_variable_add_args[] = {
	{
		.name = "var_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_add_help = {
	.summary = "add global variable manually",
	.args = analysis_global_variable_add_args,
};

static const RzCmdDescArg analysis_global_variable_delete_byaddr_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_delete_byaddr_help = {
	.summary = "delete the global variable at the addr",
	.args = analysis_global_variable_delete_byaddr_args,
};

static const RzCmdDescArg analysis_global_variable_delete_byname_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_GLOBAL_VAR,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_delete_byname_help = {
	.summary = "delete global variable with name",
	.args = analysis_global_variable_delete_byname_args,
};

static const RzCmdDescArg analysis_global_variable_rename_args[] = {
	{
		.name = "old_var_name",
		.type = RZ_CMD_ARG_TYPE_GLOBAL_VAR,

	},
	{
		.name = "new_var_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_rename_help = {
	.summary = "rename the global variable",
	.args = analysis_global_variable_rename_args,
};

static const RzCmdDescArg analysis_global_variable_print_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_GLOBAL_VAR,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_print_help = {
	.summary = "print the global variable value",
	.args = analysis_global_variable_print_args,
};

static const RzCmdDescArg analysis_global_variable_retype_args[] = {
	{
		.name = "var_name",
		.type = RZ_CMD_ARG_TYPE_GLOBAL_VAR,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_retype_help = {
	.summary = "change the global variable type",
	.args = analysis_global_variable_retype_args,
};

static const RzCmdDescArg analysis_global_variable_xrefs_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_GLOBAL_VAR,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_global_variable_xrefs_help = {
	.summary = "print all xrefs to the global variable",
	.args = analysis_global_variable_xrefs_args,
};

static const RzCmdDescArg analysis_print_rtti_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_print_rtti_help = {
	.summary = "try to parse RTTI at vtable addr (see analysis.cpp.abi)",
	.args = analysis_print_rtti_args,
};

static const RzCmdDescArg analysis_print_rtti_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_print_rtti_all_help = {
	.summary = "search for vtables and try to parse RTTI at each of them",
	.args = analysis_print_rtti_all_args,
};

static const RzCmdDescArg analysis_recover_rtti_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_recover_rtti_all_help = {
	.summary = "recover class info from all findable RTTI (see ac)",
	.args = analysis_recover_rtti_all_args,
};

static const RzCmdDescArg analysis_rtti_demangle_class_name_args[] = {
	{
		.name = "classname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_rtti_demangle_class_name_help = {
	.summary = "demangle a class name from RTTI",
	.args = analysis_rtti_demangle_class_name_args,
};

static const RzCmdDescHelp ax_help = {
	.summary = "Cross references (xrefs)",
};
static const RzCmdDescArg analysis_xrefs_set_0_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_set_0_help = {
	.summary = "Add custom xref to addr from current seek",
	.args = analysis_xrefs_set_0_args,
};

static const RzCmdDescArg analysis_xrefs_set_c_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_set_c_help = {
	.summary = "Add generic code xref to addr from current seek",
	.args = analysis_xrefs_set_c_args,
};

static const RzCmdDescArg analysis_xrefs_set_C_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_set_C_help = {
	.summary = "Add call code xref to addr from current seek",
	.args = analysis_xrefs_set_C_args,
};

static const RzCmdDescArg analysis_xrefs_set_d_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_set_d_help = {
	.summary = "Add data xref to addr from current seek",
	.args = analysis_xrefs_set_d_args,
};

static const RzCmdDescArg analysis_xrefs_set_s_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_set_s_help = {
	.summary = "Add string xref to addr from current seek",
	.args = analysis_xrefs_set_s_args,
};

static const RzCmdDescArg analysis_xrefs_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_list_help = {
	.summary = "List all xrefs",
	.args = analysis_xrefs_list_args,
};

static const RzCmdDescArg analysis_xrefs_to_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_to_list_help = {
	.summary = "List xrefs to current seek",
	.args = analysis_xrefs_to_list_args,
};

static const RzCmdDescArg analysis_xrefs_from_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_from_list_help = {
	.summary = "List xrefs from current seek",
	.args = analysis_xrefs_from_list_args,
};

static const RzCmdDescArg analysis_xrefs_to_graph_cmd_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_to_graph_cmd_help = {
	.summary = "Display commands to generate graphs according to xrefs",
	.args = analysis_xrefs_to_graph_cmd_args,
};

static const RzCmdDescArg analysis_xrefs_del_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_del_help = {
	.summary = "Delete xrefs to addr",
	.args = analysis_xrefs_del_args,
};

static const RzCmdDescArg analysis_xrefs_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_del_all_help = {
	.summary = "Delete all xrefs",
	.args = analysis_xrefs_del_all_args,
};

static const RzCmdDescArg analysis_xrefs_copy_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_copy_help = {
	.summary = "Copy xrefs pointing to addr to also point to curseek",
	.args = analysis_xrefs_copy_args,
};

static const RzCmdDescArg analysis_xrefs_graph_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_xrefs_graph_help = {
	.summary = "Show xrefs graph to reach function at current seek",
	.args = analysis_xrefs_graph_args,
};

static const RzCmdDescHelp ah_help = {
	.summary = "Analysis hints",
};
static const RzCmdDescArg analysis_hint_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_list_help = {
	.summary = "List all analysis hints",
	.args = analysis_hint_list_args,
};

static const RzCmdDescArg analysis_hint_list_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_list_at_help = {
	.summary = "List analysis hints at current seek",
	.args = analysis_hint_list_at_args,
};

static const RzCmdDescArg analysis_hint_del_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_help = {
	.summary = "Delete analysis hints in region starting from current seek",
	.args = analysis_hint_del_args,
};

static const RzCmdDescArg analysis_hint_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_all_help = {
	.summary = "Delete all analysis hints",
	.args = analysis_hint_del_all_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_arch_empty_detail_entries[] = {
	{ .text = "aha ppc @ 0x42", .arg_str = NULL, .comment = "Force arch ppc for all addresses >= 0x42 or until the next hint" },
	{ .text = "aha 0 @ 0x84", .arg_str = NULL, .comment = "Disable the effect of arch hints for all addresses >= 0x84 or until the next hint" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_arch_details[] = {
	{ .name = "", .entries = analysis_hint_set_arch_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_arch_args[] = {
	{
		.name = "arch",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_arch_help = {
	.summary = "Set arch hint",
	.details = analysis_hint_set_arch_details,
	.args = analysis_hint_set_arch_args,
};

static const RzCmdDescArg analysis_hint_del_arch_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_arch_help = {
	.summary = "Delete arch hint",
	.args = analysis_hint_del_arch_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_bits_empty_detail_entries[] = {
	{ .text = "ahb 16 @ 0x42", .arg_str = NULL, .comment = "Force 16bit for all addresses >= 0x42 or until the next hint" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_bits_details[] = {
	{ .name = "", .entries = analysis_hint_set_bits_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_bits_args[] = {
	{
		.name = "bits",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_bits_help = {
	.summary = "Set bits hint",
	.details = analysis_hint_set_bits_details,
	.args = analysis_hint_set_bits_args,
};

static const RzCmdDescArg analysis_hint_del_bits_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_bits_help = {
	.summary = "Delete bits hint",
	.args = analysis_hint_del_bits_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_high_empty_detail_entries[] = {
	{ .text = "ahh @ 0x804840", .arg_str = NULL, .comment = "Highlight this address offset in disasm" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_high_details[] = {
	{ .name = "", .entries = analysis_hint_set_high_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_high_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_high_help = {
	.summary = "Set highlight hint",
	.details = analysis_hint_set_high_details,
	.args = analysis_hint_set_high_args,
};

static const RzCmdDescArg analysis_hint_del_high_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_high_help = {
	.summary = "Delete highlight hint",
	.args = analysis_hint_del_high_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_jump_empty_detail_entries[] = {
	{ .text = "ahc ", .arg_str = "0x804840", .comment = "Replace call/jump address with 0x804840" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_jump_details[] = {
	{ .name = "", .entries = analysis_hint_set_jump_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_jump_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_jump_help = {
	.summary = "Set jump/call address hint",
	.details = analysis_hint_set_jump_details,
	.args = analysis_hint_set_jump_args,
};

static const RzCmdDescArg analysis_hint_del_jump_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_jump_help = {
	.summary = "Delete jump/call address hint",
	.args = analysis_hint_del_jump_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_esil_empty_detail_entries[] = {
	{ .text = "ahe ", .arg_str = "\"3,eax,+=\"", .comment = "Replace ESIL VM analysis string" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_esil_details[] = {
	{ .name = "", .entries = analysis_hint_set_esil_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_esil_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_esil_help = {
	.summary = "Set ESIL string hint",
	.details = analysis_hint_set_esil_details,
	.args = analysis_hint_set_esil_args,
};

static const RzCmdDescArg analysis_hint_del_esil_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_esil_help = {
	.summary = "Delete ESIL string hint",
	.args = analysis_hint_del_esil_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_opcode_empty_detail_entries[] = {
	{ .text = "ahd ", .arg_str = "\"foo a0,33\"", .comment = "Replace opcode string" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_opcode_details[] = {
	{ .name = "", .entries = analysis_hint_set_opcode_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_opcode_args[] = {
	{
		.name = "opcode",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_opcode_help = {
	.summary = "Set opcode hint",
	.details = analysis_hint_set_opcode_details,
	.args = analysis_hint_set_opcode_args,
};

static const RzCmdDescArg analysis_hint_del_opcode_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_opcode_help = {
	.summary = "Delete opcode hint",
	.args = analysis_hint_del_opcode_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_size_empty_detail_entries[] = {
	{ .text = "ahs ", .arg_str = "4", .comment = "Set opcode size=4" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_size_details[] = {
	{ .name = "", .entries = analysis_hint_set_size_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_size_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_size_help = {
	.summary = "Set opcode size hint",
	.details = analysis_hint_set_size_details,
	.args = analysis_hint_set_size_args,
};

static const RzCmdDescArg analysis_hint_del_size_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_size_help = {
	.summary = "Delete opcode size hint",
	.args = analysis_hint_del_size_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_fail_empty_detail_entries[] = {
	{ .text = "ahf ", .arg_str = "0x804840", .comment = "Replace fallback address for call with 0x804840" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_fail_details[] = {
	{ .name = "", .entries = analysis_hint_set_fail_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_fail_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_fail_help = {
	.summary = "Set fallback address hint",
	.details = analysis_hint_set_fail_details,
	.args = analysis_hint_set_fail_args,
};

static const RzCmdDescArg analysis_hint_del_fail_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_fail_help = {
	.summary = "Delete fallback address hint",
	.args = analysis_hint_del_fail_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_stackframe_empty_detail_entries[] = {
	{ .text = "ahF ", .arg_str = "0x10", .comment = "Set stackframe size to 0x10" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_stackframe_details[] = {
	{ .name = "", .entries = analysis_hint_set_stackframe_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_stackframe_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_stackframe_help = {
	.summary = "Set stackframe size hint",
	.details = analysis_hint_set_stackframe_details,
	.args = analysis_hint_set_stackframe_args,
};

static const RzCmdDescArg analysis_hint_del_stackframe_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_stackframe_help = {
	.summary = "Delete stackframe size hint",
	.args = analysis_hint_del_stackframe_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_syntax_empty_detail_entries[] = {
	{ .text = "ahS ", .arg_str = "jz", .comment = "Set asm.syntax=jz for opcode at current seek" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_syntax_details[] = {
	{ .name = "", .entries = analysis_hint_set_syntax_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_syntax_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_syntax_help = {
	.summary = "Set asm syntax hint",
	.details = analysis_hint_set_syntax_details,
	.args = analysis_hint_set_syntax_args,
};

static const RzCmdDescArg analysis_hint_del_syntax_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_syntax_help = {
	.summary = "Delete asm syntax hint",
	.args = analysis_hint_del_syntax_args,
};

static const RzCmdDescArg analysis_hint_set_ptr_args[] = {
	{
		.name = "pointer",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_ptr_help = {
	.summary = "Set pointer hint",
	.args = analysis_hint_set_ptr_args,
};

static const RzCmdDescArg analysis_hint_del_ptr_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_ptr_help = {
	.summary = "Delete pointer hint",
	.args = analysis_hint_del_ptr_args,
};

static const RzCmdDescArg analysis_hint_set_ret_args[] = {
	{
		.name = "return",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_ret_help = {
	.summary = "Set function return value hint",
	.args = analysis_hint_set_ret_args,
};

static const RzCmdDescArg analysis_hint_del_ret_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_ret_help = {
	.summary = "Delete function return value hint",
	.args = analysis_hint_del_ret_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_val_empty_detail_entries[] = {
	{ .text = "ahv ", .arg_str = "val", .comment = "Change opcode's value field (useful to set jmptbl sizes in jmp rax)" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_val_details[] = {
	{ .name = "", .entries = analysis_hint_set_val_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_val_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_val_help = {
	.summary = "Set opcode value hint",
	.details = analysis_hint_set_val_details,
	.args = analysis_hint_set_val_args,
};

static const RzCmdDescArg analysis_hint_del_val_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_val_help = {
	.summary = "Delete opcode value hint",
	.args = analysis_hint_del_val_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_optype_empty_detail_entries[] = {
	{ .text = "aho ", .arg_str = "call", .comment = "Change opcode type to <call>" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_optype_details[] = {
	{ .name = "", .entries = analysis_hint_set_optype_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_optype_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_optype_help = {
	.summary = "Set opcode type hint",
	.details = analysis_hint_set_optype_details,
	.args = analysis_hint_set_optype_args,
};

static const RzCmdDescArg analysis_hint_del_optype_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_optype_help = {
	.summary = "Delete opcode type hint",
	.args = analysis_hint_del_optype_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_immbase_empty_detail_entries[] = {
	{ .text = "ahi ", .arg_str = "<base>", .comment = "Set numeric <base> (2, 8, 10, 16)" },
	{ .text = "ahi 10|d", .arg_str = NULL, .comment = "Set base to signed decimal (10), sign bit should depend on receiver size" },
	{ .text = "ahi 10u|du", .arg_str = NULL, .comment = "Set base to unsigned decimal (11)" },
	{ .text = "ahi b", .arg_str = NULL, .comment = "Set base to binary (2)" },
	{ .text = "ahi o", .arg_str = NULL, .comment = "Set base to octal (8)" },
	{ .text = "ahi h", .arg_str = NULL, .comment = "Set base to hexadecimal (16)" },
	{ .text = "ahi i", .arg_str = NULL, .comment = "Set base to IP address (32)" },
	{ .text = "ahi p", .arg_str = NULL, .comment = "Set base to htons(port) (3)" },
	{ .text = "ahi S", .arg_str = NULL, .comment = "Set base to syscall (80)" },
	{ .text = "ahi s", .arg_str = NULL, .comment = "Set base to string (1)" },
	{ 0 },
};

static const RzCmdDescDetailEntry analysis_hint_set_immbase_Set_space_base_space_of_space_the_space_N_minus_th_space_immediate_space__oparen_indexing_space_starts_space_from_space_0_cparen__detail_entries[] = {
	{ .text = "ahi 16 1", .arg_str = NULL, .comment = "Set base of the 1-st immediate to hexadecimal" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_immbase_details[] = {
	{ .name = "", .entries = analysis_hint_set_immbase_empty_detail_entries },
	{ .name = "Set base of the N-th immediate (indexing starts from 0)", .entries = analysis_hint_set_immbase_Set_space_base_space_of_space_the_space_N_minus_th_space_immediate_space__oparen_indexing_space_starts_space_from_space_0_cparen__detail_entries },
	{ 0 },
};
static const char *analysis_hint_set_immbase_type_choices[] = { "2", "8", "10", "10u", "16", "b", "o", "h", "i", "p", "S", "s", NULL };
static const RzCmdDescArg analysis_hint_set_immbase_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.choices.choices = analysis_hint_set_immbase_type_choices,

	},
	{
		.name = "nword",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_immbase_help = {
	.summary = "Set immediate base hint",
	.details = analysis_hint_set_immbase_details,
	.args = analysis_hint_set_immbase_args,
};

static const RzCmdDescArg analysis_hint_del_immbase_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_immbase_help = {
	.summary = "Delete immediate base hint",
	.args = analysis_hint_del_immbase_args,
};

static const RzCmdDescDetailEntry analysis_hint_set_offset_empty_detail_entries[] = {
	{ .text = "aht ", .arg_str = "struct.member", .comment = "Replace immediate with <struct.member>" },
	{ 0 },
};
static const RzCmdDescDetail analysis_hint_set_offset_details[] = {
	{ .name = "", .entries = analysis_hint_set_offset_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescArg analysis_hint_set_offset_args[] = {
	{
		.name = "struct.member",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_set_offset_help = {
	.summary = "Set structure offset hint",
	.details = analysis_hint_set_offset_details,
	.args = analysis_hint_set_offset_args,
};

static const RzCmdDescArg analysis_hint_del_offset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_hint_del_offset_help = {
	.summary = "Delete structure offset hint",
	.args = analysis_hint_del_offset_args,
};

static const RzCmdDescArg analysis_list_struct_offsets_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_list_struct_offsets_help = {
	.summary = "List all matching structure offsets",
	.args = analysis_list_struct_offsets_args,
};

static const RzCmdDescHelp ac_help = {
	.summary = "Classes",
};
static const RzCmdDescArg analysis_class_add_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_add_help = {
	.summary = "Add class",
	.args = analysis_class_add_args,
};

static const RzCmdDescArg analysis_class_del_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_del_help = {
	.summary = "Delete class",
	.args = analysis_class_del_args,
};

static const RzCmdDescArg analysis_class_rename_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "new_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_rename_help = {
	.summary = "Rename class",
	.args = analysis_class_rename_args,
};

static const RzCmdDescArg analysis_class_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_class_list_help = {
	.summary = "List all classes",
	.args = analysis_class_list_args,
};

static const RzCmdDescArg analysis_class_info_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_info_help = {
	.summary = "Show information of class",
	.args = analysis_class_info_args,
};

static const RzCmdDescArg analysis_class_graph_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_graph_help = {
	.summary = "Print inheritance ascii graph",
	.args = analysis_class_graph_args,
};

static const RzCmdDescHelp acm_help = {
	.summary = "Class methods",
};
static const RzCmdDescArg analysis_class_method_add_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "method_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "vtable_offset",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_method_add_help = {
	.summary = "Add/edit method",
	.args = analysis_class_method_add_args,
};

static const RzCmdDescArg analysis_class_method_del_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "method_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_method_del_help = {
	.summary = "Delete method",
	.args = analysis_class_method_del_args,
};

static const RzCmdDescArg analysis_class_method_rename_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "method_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "new_method_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_method_rename_help = {
	.summary = "Rename method",
	.args = analysis_class_method_rename_args,
};

static const RzCmdDescHelp acb_help = {
	.summary = "Base classes",
};
static const RzCmdDescArg analysis_class_base_add_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "base_class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_base_add_help = {
	.summary = "Add base class",
	.args = analysis_class_base_add_args,
};

static const RzCmdDescArg analysis_class_base_del_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "base_class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_base_del_help = {
	.summary = "Delete base class",
	.args = analysis_class_base_del_args,
};

static const RzCmdDescArg analysis_class_base_list_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_base_list_help = {
	.summary = "List base classes",
	.args = analysis_class_base_list_args,
};

static const RzCmdDescHelp acv_help = {
	.summary = "Class vtable",
};
static const RzCmdDescArg analysis_class_vtable_add_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_vtable_add_help = {
	.summary = "Add vtable address to class",
	.args = analysis_class_vtable_add_args,
};

static const RzCmdDescArg analysis_class_vtable_del_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "vtable_id",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_vtable_del_help = {
	.summary = "Delete vtable by id",
	.args = analysis_class_vtable_del_args,
};

static const RzCmdDescArg analysis_class_vtable_list_args[] = {
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_vtable_list_help = {
	.summary = "List class vtables",
	.args = analysis_class_vtable_list_args,
};

static const RzCmdDescArg analysis_class_vtable_lookup_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "class_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_class_vtable_lookup_help = {
	.summary = "Lookup function address on vtable offset",
	.args = analysis_class_vtable_lookup_args,
};

static const RzCmdDescArg analyze_bytes_args[] = {
	{
		.name = "hexpairs",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_bytes_help = {
	.summary = "Analyze bytes",
	.args = analyze_bytes_args,
};

static const RzCmdDescHelp aO_help = {
	.summary = "Analyze next block as instructions",
};
static const RzCmdDescArg analyze_n_bytes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_n_bytes_help = {
	.summary = "Analyze next block as instructions",
	.args = analyze_n_bytes_args,
};

static const RzCmdDescArg analyze_n_bytes_esil_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_n_bytes_esil_help = {
	.summary = "Analyze the esil of next block",
	.args = analyze_n_bytes_esil_args,
};

static const RzCmdDescArg analyze_n_bytes_desc_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_n_bytes_desc_help = {
	.summary = "Print the description of next block",
	.args = analyze_n_bytes_desc_args,
};

static const RzCmdDescArg analyze_n_bytes_size_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_n_bytes_size_help = {
	.summary = "Print the total instruction size of next block",
	.args = analyze_n_bytes_size_args,
};

static const RzCmdDescHelp ao_help = {
	.summary = "Analyze N instructions",
};
static const RzCmdDescArg analyze_n_ins_args[] = {
	{
		.name = "n_instructions",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_n_ins_help = {
	.summary = "Analyze next N instructions",
	.args = analyze_n_ins_args,
};

static const RzCmdDescArg analyze_n_ins_size_args[] = {
	{
		.name = "n_instructions",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_n_ins_size_help = {
	.summary = "Print the total size of next N instructions",
	.args = analyze_n_ins_size_args,
};

static const RzCmdDescArg analyze_n_ins_esil_args[] = {
	{
		.name = "n_instructions",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_n_ins_esil_help = {
	.summary = "Print the esil of next N instructions",
	.args = analyze_n_ins_esil_args,
};

static const RzCmdDescHelp aoi_help = {
	.summary = "Print the RzIL of next N instructions",
};
static const RzCmdDescArg analyze_n_ins_il_args[] = {
	{
		.name = "n_instructions",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_n_ins_il_help = {
	.summary = "Print the RzIL of next N instructions",
	.args = analyze_n_ins_il_args,
};

static const RzCmdDescArg analyze_n_ins_il_pretty_args[] = {
	{
		.name = "n_instructions",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_n_ins_il_pretty_help = {
	.summary = "Pretty print the RzIL of next N instructions",
	.args = analyze_n_ins_il_pretty_args,
};

static const RzCmdDescArg analyze_opcode_args[] = {
	{
		.name = "opcode",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_opcode_help = {
	.summary = "Describe opcode for asm.arch",
	.args = analyze_opcode_args,
};

static const RzCmdDescArg display_opcode_args[] = {
	{ 0 },
};
static const RzCmdDescHelp display_opcode_help = {
	.summary = "Describe all opcode for asm.arch",
	.args = display_opcode_args,
};

static const RzCmdDescArg analyze_cycles_args[] = {
	{
		.name = "cycles",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_cycles_help = {
	.summary = "Analyze which op could be executed in [cycles]",
	.args = analyze_cycles_args,
};

static const RzCmdDescArg convert_mne_args[] = {
	{
		.name = "mne_or_id",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp convert_mne_help = {
	.summary = "convert between mnemonic/id for asm.arch",
	.args = convert_mne_args,
};

static const RzCmdDescArg list_mne_args[] = {
	{ 0 },
};
static const RzCmdDescHelp list_mne_help = {
	.summary = "List mnemonics for asm.arch",
	.args = list_mne_args,
};

static const RzCmdDescArg analyse_name_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyse_name_help = {
	.summary = "Show/rename/create whatever flag/function is used at addr",
	.args = analyse_name_args,
};

static const RzCmdDescHelp ab_help = {
	.summary = "Basic blocks",
};
static const RzCmdDescArg analysis_basic_block_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_basic_block_info_help = {
	.summary = "Show basic block information in current seek",
	.args = analysis_basic_block_info_args,
};

static const RzCmdDescArg analysis_basic_block_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_basic_block_list_help = {
	.summary = "List all basic blocks",
	.args = analysis_basic_block_list_args,
};

static const RzCmdDescArg analysis_basic_block_find_paths_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_basic_block_find_paths_help = {
	.summary = "Find paths from current seek to the given address",
	.args = analysis_basic_block_find_paths_args,
};

static const RzCmdDescHelp as_help = {
	.summary = "Syscalls",
};
static const RzCmdDescArg analysis_syscall_show_args[] = {
	{
		.name = "syscall",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_syscall_show_help = {
	.summary = "Show syscall and arguments",
	.args = analysis_syscall_show_args,
};

static const RzCmdDescArg analysis_syscall_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analysis_syscall_print_help = {
	.summary = "List syscalls",
	.args = analysis_syscall_print_args,
};

static const RzCmdDescArg analysis_syscall_dump_assembly_args[] = {
	{
		.name = "syscall",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_syscall_dump_assembly_help = {
	.summary = "Dump syscall info into .asm file",
	.args = analysis_syscall_dump_assembly_args,
};

static const RzCmdDescArg analysis_syscall_dump_c_args[] = {
	{
		.name = "syscall",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_syscall_dump_c_help = {
	.summary = "Dump syscall info into .h file",
	.args = analysis_syscall_dump_c_args,
};

static const RzCmdDescArg analysis_syscall_name_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_syscall_name_help = {
	.summary = "Returns the syscall number by the name",
	.args = analysis_syscall_name_args,
};

static const RzCmdDescArg analysis_syscall_number_args[] = {
	{
		.name = "number",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analysis_syscall_number_help = {
	.summary = "Returns the syscall name by the number",
	.args = analysis_syscall_number_args,
};

static const RzCmdDescHelp aL_help = {
	.summary = "List all asm/analysis plugins (e asm.arch=?)",
};
static const RzCmdDescArg list_plugins_args[] = {
	{ 0 },
};
static const RzCmdDescHelp list_plugins_help = {
	.summary = "List all asm/analysis plugins (e asm.arch=?) or CPU details for a plugin.",
	.args = list_plugins_args,
};

static const RzCmdDescArg list_cpu_details_args[] = {
	{
		.name = "plugin_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp list_cpu_details_help = {
	.summary = "Shows the CPU details for a specific plugin.",
	.args = list_cpu_details_args,
};

static const RzCmdDescHelp ae_help = {
	.summary = "ESIL analysis commands",
};
static const RzCmdDescArg analyze_esil_eval_expr_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_eval_expr_help = {
	.summary = "Analyze all flags starting with sym. and entry",
	.args = analyze_esil_eval_expr_args,
};

static const RzCmdDescArg analyze_esil_expr_help_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_expr_help_help = {
	.summary = "Show ESIL help.",
	.args = analyze_esil_expr_help_args,
};

static const RzCmdDescArg analyze_esil_emulate_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_emulate_block_help = {
	.summary = "Emulate current block with ESIL.",
	.args = analyze_esil_emulate_block_args,
};

static const RzCmdDescArg analyze_esil_set_pc_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_set_pc_help = {
	.summary = "Set ESIL PC to given address.",
	.args = analyze_esil_set_pc_args,
};

static const RzCmdDescHelp aek_help = {
	.summary = "SDB queries on ESIL info (emulation statistics).",
};
static const RzCmdDescArg analyze_esil_sdb_query_args[] = {
	{
		.name = "query",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "123*",

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_sdb_query_help = {
	.summary = "Perform sdb query on ESIL info.",
	.args = analyze_esil_sdb_query_args,
};

static const RzCmdDescArg analyze_esil_sdb_reset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_sdb_reset_help = {
	.summary = "Resets the ESIL info sdb instance.",
	.args = analyze_esil_sdb_reset_args,
};

static const RzCmdDescArg analyze_esil_eval_opcode_expr_args[] = {
	{
		.name = "bytes",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_eval_opcode_expr_help = {
	.summary = "Emulate the instruction encoded in the given bytes with ESIL.",
	.args = analyze_esil_eval_opcode_expr_args,
};

static const RzCmdDescHelp aef_help = {
	.summary = "Emulate functions with ESIL.",
};
static const RzCmdDescArg analyze_esil_emu_fcn_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_emu_fcn_help = {
	.summary = "Emulate the function at given or current offset with ESIL.",
	.args = analyze_esil_emu_fcn_args,
};

static const RzCmdDescArg analyze_esil_emu_fcn_find_args_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_emu_fcn_find_args_help = {
	.summary = "Emulate function at given or current offset to find arguments with ESIL.",
	.args = analyze_esil_emu_fcn_find_args_args,
};

static const RzCmdDescHelp ael_help = {
	.summary = "ESIL interrupt commands.",
};
static const RzCmdDescArg analyze_esil_int_list_load_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_int_list_load_help = {
	.summary = "List ESIL interrupts or load them from the given shared object.",
	.args = analyze_esil_int_list_load_args,
};

static const RzCmdDescArg analyze_esil_int_remove_args[] = {
	{
		.name = "interrupt number",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_int_remove_help = {
	.summary = "Remove ESIL interrupt and free it if needed.",
	.args = analyze_esil_int_remove_args,
};

static const RzCmdDescHelp aea_help = {
	.summary = "ESIL emulation to retrieve arguments.",
};
static const RzCmdDescDetailEntry analyze_esil_insn_access_Flag_detail_entries[] = {
	{ .text = "A", .arg_str = NULL, .comment = "Interpret the [len] parameter as number of bytes. Not as number of instructions." },
	{ 0 },
};

static const RzCmdDescDetailEntry analyze_esil_insn_access_Options_detail_entries[] = {
	{ .text = "*", .arg_str = NULL, .comment = "Create mem.* flags for memory accesses." },
	{ .text = "r", .arg_str = NULL, .comment = "Show regs read in N instructions." },
	{ .text = "w", .arg_str = NULL, .comment = "Show regs written in N instructions." },
	{ .text = "n", .arg_str = NULL, .comment = "Show regs not written in N instructions." },
	{ .text = "b", .arg_str = NULL, .comment = "Show regs used in current basic block. The [len] parameter, if not 0, is interpreted as address." },
	{ .text = "f", .arg_str = NULL, .comment = "Show regs used in current function." },
	{ .text = "d", .arg_str = NULL, .comment = "Show memory and register access." },
	{ 0 },
};

static const RzCmdDescDetailEntry analyze_esil_insn_access_Legend_detail_entries[] = {
	{ .text = "I", .arg_str = NULL, .comment = "input registers (read before being set)" },
	{ .text = "A", .arg_str = NULL, .comment = "all regs accessed" },
	{ .text = "R", .arg_str = NULL, .comment = "register values read" },
	{ .text = "W", .arg_str = NULL, .comment = "registers written" },
	{ .text = "N", .arg_str = NULL, .comment = "read but never written" },
	{ .text = "V", .arg_str = NULL, .comment = "values" },
	{ .text = "@R", .arg_str = NULL, .comment = "memreads" },
	{ .text = "@W", .arg_str = NULL, .comment = "memwrites" },
	{ .text = "NOTE:", .arg_str = NULL, .comment = "mem{reads,writes} with PIC only fetch the offset" },
	{ 0 },
};
static const RzCmdDescDetail analyze_esil_insn_access_details[] = {
	{ .name = "Flag", .entries = analyze_esil_insn_access_Flag_detail_entries },
	{ .name = "Options", .entries = analyze_esil_insn_access_Options_detail_entries },
	{ .name = "Legend", .entries = analyze_esil_insn_access_Legend_detail_entries },
	{ 0 },
};
static const char *analyze_esil_insn_access_type_choices[] = { "d", "*", "r", "w", "n", "b", "f", NULL };
static const RzCmdDescArg analyze_esil_insn_access_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "0",

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "d",
		.choices.choices = analyze_esil_insn_access_type_choices,

	},
	{
		.name = "A",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp analyze_esil_insn_access_help = {
	.summary = "Show register and memory access of the next [len] instructions or bytes.",
	.details = analyze_esil_insn_access_details,
	.args = analyze_esil_insn_access_args,
};

static const RzCmdDescHelp b_help = {
	.summary = "Display or change the block size",
};
static const RzCmdDescArg block_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp block_help = {
	.summary = "Set/Get current block size",
	.args = block_args,
};

static const RzCmdDescArg block_decrease_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp block_decrease_help = {
	.summary = "Decrease current block size",
	.args = block_decrease_args,
};

static const RzCmdDescArg block_increase_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp block_increase_help = {
	.summary = "Increase current block size",
	.args = block_increase_args,
};

static const RzCmdDescArg block_flag_args[] = {
	{
		.name = "flag",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{ 0 },
};
static const RzCmdDescHelp block_flag_help = {
	.summary = "Set block size to flag size",
	.args = block_flag_args,
};

static const RzCmdDescArg block_max_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp block_max_help = {
	.summary = "Set/Get max block size",
	.args = block_max_args,
};

static const RzCmdDescDetailEntry basefind_compute_Settings_space_of_space_this_space_command_detail_entries[] = {
	{ .text = "Check out the settings for this command with 'el basefind.'", .arg_str = NULL, .comment = "" },
	{ 0 },
};
static const RzCmdDescDetail basefind_compute_details[] = {
	{ .name = "Settings of this command", .entries = basefind_compute_Settings_space_of_space_this_space_command_detail_entries },
	{ 0 },
};
static const char *basefind_compute_pointer_bits_choices[] = { "32", "64", NULL };
static const RzCmdDescArg basefind_compute_args[] = {
	{
		.name = "pointer_bits",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = basefind_compute_pointer_bits_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp basefind_compute_help = {
	.summary = "Computes the possibles firmware locations in memory a.k.a basefind (CPU intensive)",
	.details = basefind_compute_details,
	.args = basefind_compute_args,
};

static const RzCmdDescHelp c_help = {
	.summary = "Compare block with given data",
};
static const RzCmdDescArg cmd_cmp_string_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_string_help = {
	.summary = "Compare an escaped <string> with data at current offset",
	.args = cmd_cmp_string_args,
};

static const RzCmdDescArg cmd_cmp_bits_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_bits_help = {
	.summary = "Compare 8-bit data at current offset with the data at <addr>",
	.args = cmd_cmp_bits_args,
};

static const RzCmdDescArg cmd_cmp_addr_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_addr_help = {
	.summary = "Compare <n> bytes of data at <addr> with the data at current offset",
	.args = cmd_cmp_addr_args,
};

static const RzCmdDescArg cmd_cmp_bytes_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_bytes_help = {
	.summary = "Compare <n> (up to 8) bytes at current offset with a number <num>",
	.args = cmd_cmp_bytes_args,
};

static const RzCmdDescArg cmd_cmp_hex_block_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_hex_block_help = {
	.summary = "Compare hexdump of data of block size at <addr> with the data at current offset",
	.args = cmd_cmp_hex_block_args,
};

static const RzCmdDescArg cmd_cmp_hex_diff_lines_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_hex_diff_lines_help = {
	.summary = "Show different lines between hexdump of a block of data at <addr> wth the data at current offset",
	.args = cmd_cmp_hex_diff_lines_args,
};

static const RzCmdDescArg cmd_cmp_disasm_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_disasm_help = {
	.summary = "Compare disassembly of block size at <addr> and at the current offset",
	.args = cmd_cmp_disasm_args,
};

static const RzCmdDescArg cmd_cmp_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_file_help = {
	.summary = "Compare the contents of <file> with the data at current offset",
	.args = cmd_cmp_file_args,
};

static const RzCmdDescHelp cu_help = {
	.summary = "Unified diff commands",
};
static const RzCmdDescDetailEntry cmd_cmp_unified_Applying_space_patches_detail_entries[] = {
	{ .text = "Apply unified hex patch", .arg_str = NULL, .comment = "cu <offset> > file; wu file" },
	{ 0 },
};
static const RzCmdDescDetail cmd_cmp_unified_details[] = {
	{ .name = "Applying patches", .entries = cmd_cmp_unified_Applying_space_patches_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_cmp_unified_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_unified_help = {
	.summary = "Compare data at <offset> with the current offset",
	.details = cmd_cmp_unified_details,
	.args = cmd_cmp_unified_args,
};

static const RzCmdDescArg cmd_cmp_unified1_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_unified1_help = {
	.summary = "Compare bytes at <offset> with the current offset",
	.args = cmd_cmp_unified1_args,
};

static const RzCmdDescArg cmd_cmp_unified2_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_unified2_help = {
	.summary = "Compare words (16-bit) at <offset> with the current offset",
	.args = cmd_cmp_unified2_args,
};

static const RzCmdDescArg cmd_cmp_unified4_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_unified4_help = {
	.summary = "Compare dwords (32-bit) at <offset> with the current offset",
	.args = cmd_cmp_unified4_args,
};

static const RzCmdDescArg cmd_cmp_unified8_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_unified8_help = {
	.summary = "Compare qwords (64-bit) at <offset> with the current offset",
	.args = cmd_cmp_unified8_args,
};

static const RzCmdDescArg cmd_cmp_unified_disasm_args[] = {
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_unified_disasm_help = {
	.summary = "Compare disassembly at <offset> with the current offset",
	.args = cmd_cmp_unified_disasm_args,
};

static const RzCmdDescDetailEntry cw_Compare_space_memory_space_locations_space_and_space_check_space_if_space_there_space_is_space_a_space_difference_detail_entries[] = {
	{ .text = "cw 32 'pD 32' @ 0x1234", .arg_str = NULL, .comment = "Adds a memory region watcher of 32 bytes at 0x1234, where it executes the command 'pD 32'." },
	{ .text = "cwl", .arg_str = NULL, .comment = "Lists all the memory region watchers and notifies of any changes" },
	{ .text = "cwx @ 0x1234", .arg_str = NULL, .comment = "Removes the memory region watchers at 0x1234" },
	{ 0 },
};
static const RzCmdDescDetail cw_details[] = {
	{ .name = "Compare memory locations and check if there is a difference", .entries = cw_Compare_space_memory_space_locations_space_and_space_check_space_if_space_there_space_is_space_a_space_difference_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp cw_help = {
	.summary = "Compare watcher commands",
	.details = cw_details,
};
static const RzCmdDescArg cmd_cmp_add_memory_watcher_args[] = {
	{
		.name = "sz",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_add_memory_watcher_help = {
	.summary = "Add a memory watcher of size <sz> and command <cmd> at current offset",
	.args = cmd_cmp_add_memory_watcher_args,
};

static const RzCmdDescArg cmd_cmp_list_compare_watchers_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_list_compare_watchers_help = {
	.summary = "List all compare watchers",
	.args = cmd_cmp_list_compare_watchers_args,
};

static const RzCmdDescArg cmd_cmp_reset_watcher_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_reset_watcher_help = {
	.summary = "Reset/revert watcher at current offset",
	.args = cmd_cmp_reset_watcher_args,
};

static const RzCmdDescArg cmd_cmp_update_watcher_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_update_watcher_help = {
	.summary = "Update watcher at current offset",
	.args = cmd_cmp_update_watcher_args,
};

static const RzCmdDescArg cmd_cmp_remove_watcher_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_remove_watcher_help = {
	.summary = "Remove watcher at current offset",
	.args = cmd_cmp_remove_watcher_args,
};

static const RzCmdDescArg cmd_cmp_hexpair_string_args[] = {
	{
		.name = "hexpair",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_hexpair_string_help = {
	.summary = "Compare data at current offset with a hexpair string <hexpair> (also return in $?)",
	.args = cmd_cmp_hexpair_string_args,
};

static const RzCmdDescArg cmd_cmp_hex_block_hexdiff_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_cmp_hex_block_hexdiff_help = {
	.summary = "Compare hexdump of data of block size at <addr> with the data at current offset using hexdiff output",
	.args = cmd_cmp_hex_block_hexdiff_args,
};

static const RzCmdDescHelp C_help = {
	.summary = "Code metadata (comments, format, hints, ..)",
};
static const RzCmdDescArg meta_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_list_help = {
	.summary = "List all meta information",
	.args = meta_list_args,
};

static const RzCmdDescArg meta_list_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_list_at_help = {
	.summary = "Show all meta information at current address",
	.args = meta_list_at_args,
};

static const RzCmdDescArg meta_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_remove_help = {
	.summary = "Remove meta information at current address",
	.args = meta_remove_args,
};

static const RzCmdDescArg meta_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_remove_all_help = {
	.summary = "Remove all meta information",
	.args = meta_remove_all_args,
};

static const RzCmdDescHelp CC_help = {
	.summary = "Manipulate the comments",
};
static const RzCmdDescArg comment_args[] = {
	{
		.name = "text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp comment_help = {
	.summary = "Append comment",
	.args = comment_args,
};

static const RzCmdDescArg comment_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_list_help = {
	.summary = "List all comments",
	.args = comment_list_args,
};

static const RzCmdDescArg comment_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_at_help = {
	.summary = "Show comment at the current offset",
	.args = comment_at_args,
};

static const RzCmdDescArg comment_append_args[] = {
	{
		.name = "text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp comment_append_help = {
	.summary = "Append comment at current address",
	.args = comment_append_args,
};

static const RzCmdDescArg comment_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_remove_help = {
	.summary = "Remove comment at current address",
	.args = comment_remove_args,
};

static const RzCmdDescArg comment_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_remove_all_help = {
	.summary = "Remove all comments",
	.args = comment_remove_all_args,
};

static const RzCmdDescArg comment_filelink_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp comment_filelink_help = {
	.summary = "Show / Set comment file",
	.args = comment_filelink_args,
};

static const RzCmdDescArg comment_editor_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_editor_help = {
	.summary = "Edit comment using `cfg.editor`",
	.args = comment_editor_args,
};

static const RzCmdDescHelp CCf_help = {
	.summary = "List comments in function at current address",
};
static const RzCmdDescArg comment_function_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_function_list_help = {
	.summary = "List all comments",
	.args = comment_function_list_args,
};

static const RzCmdDescArg comment_function_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_function_remove_help = {
	.summary = "Remove all comments from the current function",
	.args = comment_function_remove_args,
};

static const RzCmdDescArg comment_function_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp comment_function_remove_all_help = {
	.summary = "Remove all comments from all functions",
	.args = comment_function_remove_all_args,
};

static const RzCmdDescArg comment_unique_args[] = {
	{
		.name = "text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp comment_unique_help = {
	.summary = "Add unique comment",
	.args = comment_unique_args,
};

static const RzCmdDescHelp CS_help = {
	.summary = "Manage metainformation spaces",
};
static const RzCmdDescArg meta_space_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_space_help = {
	.summary = "Create new metaspace",
	.args = meta_space_args,
};

static const RzCmdDescArg meta_space_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_space_list_help = {
	.summary = "List all metaspaces",
	.args = meta_space_list_args,
};

static const RzCmdDescArg meta_space_remove_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_space_remove_help = {
	.summary = "Remove metaspace",
	.args = meta_space_remove_args,
};

static const RzCmdDescArg meta_space_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_space_remove_all_help = {
	.summary = "Remove all metaspaces",
	.args = meta_space_remove_all_args,
};

static const RzCmdDescArg meta_space_rename_args[] = {
	{
		.name = "oldname",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "newname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_space_rename_help = {
	.summary = "Rename the metaspace",
	.args = meta_space_rename_args,
};

static const RzCmdDescHelp Cf_help = {
	.summary = "Manage the format string metainformation",
};
static const RzCmdDescArg meta_format_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_format_help = {
	.summary = "Set the format string to the current address",
	.args = meta_format_args,
};

static const RzCmdDescArg meta_format_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_format_list_help = {
	.summary = "List all format marks",
	.args = meta_format_list_args,
};

static const RzCmdDescArg meta_format_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_format_remove_help = {
	.summary = "Remove format string from the current address",
	.args = meta_format_remove_args,
};

static const RzCmdDescArg meta_format_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_format_remove_all_help = {
	.summary = "Remove all format string marks",
	.args = meta_format_remove_all_args,
};

static const RzCmdDescHelp Cd_help = {
	.summary = "Manage the raw data metainformation",
};
static const RzCmdDescArg meta_data_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_data_help = {
	.summary = "Set the \"data\" mark to the current address",
	.args = meta_data_args,
};

static const RzCmdDescArg meta_data_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_data_list_help = {
	.summary = "List all \"data\" marks",
	.args = meta_data_list_args,
};

static const RzCmdDescArg meta_data_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_data_at_help = {
	.summary = "Show the data mark at the current offset",
	.args = meta_data_at_args,
};

static const RzCmdDescArg meta_data_remove_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_data_remove_help = {
	.summary = "Remove the data mark from the current address",
	.args = meta_data_remove_args,
};

static const RzCmdDescArg meta_data_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_data_remove_all_help = {
	.summary = "Remove all data marks",
	.args = meta_data_remove_all_args,
};

static const RzCmdDescHelp Ch_help = {
	.summary = "Manage the \"hidden\" mark metainformation",
};
static const RzCmdDescArg meta_hidden_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_hidden_help = {
	.summary = "Set the \"hidden\" mark to the current address",
	.description = "When \"hidden\" mark is set for some memory region, it's not shown in the disassembly output",
	.args = meta_hidden_args,
};

static const RzCmdDescArg meta_hidden_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_hidden_list_help = {
	.summary = "List all \"hidden\" marks",
	.args = meta_hidden_list_args,
};

static const RzCmdDescArg meta_hidden_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_hidden_remove_help = {
	.summary = "Remove the \"hidden\" mark from the current address",
	.args = meta_hidden_remove_args,
};

static const RzCmdDescArg meta_hidden_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_hidden_remove_all_help = {
	.summary = "Remove all \"hidden\" marks",
	.args = meta_hidden_remove_all_args,
};

static const RzCmdDescHelp Cm_help = {
	.summary = "Manage the \"magic\" mark metainformation",
};
static const RzCmdDescArg meta_magic_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_magic_help = {
	.summary = "Set the magic to the current address",
	.args = meta_magic_args,
};

static const RzCmdDescArg meta_magic_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_magic_list_help = {
	.summary = "List all magic marks",
	.args = meta_magic_list_args,
};

static const RzCmdDescArg meta_magic_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_magic_remove_help = {
	.summary = "Remove the magic mark from the current address",
	.args = meta_magic_remove_args,
};

static const RzCmdDescArg meta_magic_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_magic_remove_all_help = {
	.summary = "Remove all magic marks",
	.args = meta_magic_remove_all_args,
};

static const RzCmdDescHelp Cs_help = {
	.summary = "Manipulate string metainformation",
};
static const RzCmdDescArg meta_string_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_string_help = {
	.summary = "Add string (autodetects the encoding)",
	.args = meta_string_args,
};

static const RzCmdDescArg meta_string_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_string_list_help = {
	.summary = "List all strings",
	.args = meta_string_list_args,
};

static const RzCmdDescArg meta_string_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_string_at_help = {
	.summary = "Show string at the current address",
	.args = meta_string_at_args,
};

static const RzCmdDescArg meta_string_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_string_remove_help = {
	.summary = "Remove string",
	.args = meta_string_remove_args,
};

static const RzCmdDescArg meta_string_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_string_remove_all_help = {
	.summary = "Remove all strings",
	.args = meta_string_remove_all_args,
};

static const RzCmdDescArg meta_string_pascal_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_string_pascal_help = {
	.summary = "Add Pascal-style string with the size",
	.args = meta_string_pascal_args,
};

static const RzCmdDescArg meta_string_utf8_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_string_utf8_help = {
	.summary = "Add UTF-8 string",
	.args = meta_string_utf8_args,
};

static const RzCmdDescArg meta_string_8bit_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_string_8bit_help = {
	.summary = "Add ASCII/8-bit string",
	.args = meta_string_8bit_args,
};

static const RzCmdDescArg meta_string_wide16_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_string_wide16_help = {
	.summary = "Add wide 2-byte (UTF-16) string",
	.args = meta_string_wide16_args,
};

static const RzCmdDescArg meta_string_wide32_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_string_wide32_help = {
	.summary = "Add wide 4-byte (UTF-32) string",
	.args = meta_string_wide32_args,
};

static const RzCmdDescHelp Ct_help = {
	.summary = "Manage the type metainformation",
};
static const RzCmdDescArg meta_type_args[] = {
	{
		.name = "text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_type_help = {
	.summary = "Set the type comment to the current address",
	.args = meta_type_args,
};

static const RzCmdDescArg meta_type_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_type_list_help = {
	.summary = "List all type comments",
	.args = meta_type_list_args,
};

static const RzCmdDescArg meta_type_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_type_remove_help = {
	.summary = "Remove the type mark from the current address",
	.args = meta_type_remove_args,
};

static const RzCmdDescArg meta_type_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_type_remove_all_help = {
	.summary = "Remove all type marks",
	.args = meta_type_remove_all_args,
};

static const RzCmdDescArg meta_type_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_type_current_help = {
	.summary = "Show the type mark at the current address",
	.args = meta_type_current_args,
};

static const RzCmdDescHelp Cv_help = {
	.summary = "Add comments to the vars or arguments",
};
static const RzCmdDescArg meta_var_comment_append_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "text",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_var_comment_append_help = {
	.summary = "Add comment for the variable",
	.args = meta_var_comment_append_args,
};

static const RzCmdDescArg meta_var_comment_remove_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_var_comment_remove_help = {
	.summary = "Remove comment from the variable",
	.args = meta_var_comment_remove_args,
};

static const RzCmdDescArg meta_var_comment_editor_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp meta_var_comment_editor_help = {
	.summary = "Edit comment using `cfg.editor`",
	.args = meta_var_comment_editor_args,
};

static const RzCmdDescArg meta_var_comment_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_var_comment_list_help = {
	.summary = "List all comments for all barguments and variables",
	.args = meta_var_comment_list_args,
};

static const RzCmdDescArg meta_var_reg_comment_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_var_reg_comment_list_help = {
	.summary = "List all comments for all register-based arguments and variables",
	.args = meta_var_reg_comment_list_args,
};

static const RzCmdDescArg meta_var_stack_comment_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp meta_var_stack_comment_list_help = {
	.summary = "List all comments for all stack-based arguments and variables",
	.args = meta_var_stack_comment_list_args,
};

static const RzCmdDescHelp d_help = {
	.summary = "Debugger commands",
};
static const RzCmdDescHelp db_help = {
	.summary = "Breakpoints commands",
};
static const RzCmdDescArg cmd_debug_add_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_add_bp_help = {
	.summary = "Add breakpoint at current offset",
	.args = cmd_debug_add_bp_args,
};

static const RzCmdDescDetailEntry cmd_debug_list_bp_Apply_space_a_space_command_space_to_space_all_space_breakpoints_detail_entries[] = {
	{ .text = "Disable all the breakpoints", .arg_str = NULL, .comment = "dbd @@c:dblq" },
	{ .text = "Enable all the breakpoints", .arg_str = NULL, .comment = "dbe @@c:dblq" },
	{ .text = "Toggle all the breakpoints", .arg_str = NULL, .comment = "dbs @@c:dblq" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_list_bp_details[] = {
	{ .name = "Apply a command to all breakpoints", .entries = cmd_debug_list_bp_Apply_space_a_space_command_space_to_space_all_space_breakpoints_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_debug_list_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_list_bp_help = {
	.summary = "List all breakpoints",
	.details = cmd_debug_list_bp_details,
	.args = cmd_debug_list_bp_args,
};

static const RzCmdDescArg cmd_debug_add_hw_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_add_hw_bp_help = {
	.summary = "Add hardware breakpoint at current offset",
	.args = cmd_debug_add_hw_bp_args,
};

static const RzCmdDescArg cmd_debug_remove_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_remove_bp_help = {
	.summary = "Remove breakpoint at current offset",
	.args = cmd_debug_remove_bp_args,
};

static const RzCmdDescArg cmd_debug_remove_all_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_remove_all_bp_help = {
	.summary = "Remove all breakpoints",
	.args = cmd_debug_remove_all_bp_args,
};

static const RzCmdDescArg cmd_debug_show_cur_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_show_cur_bp_help = {
	.summary = "Show breakpoint info at current offset",
	.args = cmd_debug_show_cur_bp_args,
};

static const RzCmdDescArg cmd_debug_command_bp_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_command_bp_help = {
	.summary = "Set a command <cmd> to be run when the breakpoint at the current offset is hit",
	.args = cmd_debug_command_bp_args,
};

static const RzCmdDescDetailEntry cmd_debug_add_cond_bp_Usage_space_example_detail_entries[] = {
	{ .text = "Example of a condition", .arg_str = NULL, .comment = "%v rax-0x0" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_add_cond_bp_details[] = {
	{ .name = "Usage example", .entries = cmd_debug_add_cond_bp_Usage_space_example_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_debug_add_cond_bp_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_add_cond_bp_help = {
	.summary = "Make the breakpoint at the current offset conditional, and hit only when <cmd> evaluates to 0",
	.details = cmd_debug_add_cond_bp_details,
	.args = cmd_debug_add_cond_bp_args,
};

static const RzCmdDescArg cmd_debug_disable_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_disable_bp_help = {
	.summary = "Disable breakpoint at current offset",
	.args = cmd_debug_disable_bp_args,
};

static const RzCmdDescArg cmd_debug_enable_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_enable_bp_help = {
	.summary = "Enable breakpoint at current offset",
	.args = cmd_debug_enable_bp_args,
};

static const RzCmdDescArg cmd_debug_toggle_bp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_toggle_bp_help = {
	.summary = "Toggle breakpoint at current offset",
	.args = cmd_debug_toggle_bp_args,
};

static const RzCmdDescArg cmd_debug_add_bp_noreturn_func_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_add_bp_noreturn_func_help = {
	.summary = "Put a breakpoint into every no-return function",
	.args = cmd_debug_add_bp_noreturn_func_args,
};

static const RzCmdDescArg cmd_debug_add_bp_module_args[] = {
	{
		.name = "module",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_add_bp_module_help = {
	.summary = "Add a breakpoint at an offset from a module's base",
	.args = cmd_debug_add_bp_module_args,
};

static const RzCmdDescArg cmd_debug_name_bp_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_name_bp_help = {
	.summary = "Show name of current breakpoint / Set name for current breakpoint",
	.args = cmd_debug_name_bp_args,
};

static const RzCmdDescHelp dbi_help = {
	.summary = "Breakpoint index commands",
};
static const RzCmdDescArg cmd_debug_show_bp_index_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_show_bp_index_help = {
	.summary = "Show breakpoint index at current offset",
	.args = cmd_debug_show_bp_index_args,
};

static const RzCmdDescArg cmd_debug_list_bp_indexes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_list_bp_indexes_help = {
	.summary = "List breakpoints indexes",
	.args = cmd_debug_list_bp_indexes_args,
};

static const RzCmdDescArg cmd_debug_remove_bp_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_remove_bp_index_help = {
	.summary = "Remove breakpoint by index",
	.args = cmd_debug_remove_bp_index_args,
};

static const RzCmdDescArg cmd_debug_set_expr_bp_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_set_expr_bp_index_help = {
	.summary = "Set expression for breakpoint at given index",
	.args = cmd_debug_set_expr_bp_index_args,
};

static const RzCmdDescArg cmd_debug_run_command_bp_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_run_command_bp_index_help = {
	.summary = "Run a command at breakpoint index",
	.args = cmd_debug_run_command_bp_index_args,
};

static const RzCmdDescArg cmd_debug_enable_bp_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_enable_bp_index_help = {
	.summary = "Enable breakpoint by index",
	.args = cmd_debug_enable_bp_index_args,
};

static const RzCmdDescArg cmd_debug_disable_bp_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_disable_bp_index_help = {
	.summary = "Disable breakpoint by index",
	.args = cmd_debug_disable_bp_index_args,
};

static const RzCmdDescArg cmd_debug_toggle_bp_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_toggle_bp_index_help = {
	.summary = "Toggle breakpoint by index",
	.args = cmd_debug_toggle_bp_index_args,
};

static const RzCmdDescArg cmd_debug_enable_bp_trace_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_enable_bp_trace_index_help = {
	.summary = "Enable breakpoint trace by index",
	.args = cmd_debug_enable_bp_trace_index_args,
};

static const RzCmdDescArg cmd_debug_disable_bp_trace_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_disable_bp_trace_index_help = {
	.summary = "Disable breakpoint trace by index",
	.args = cmd_debug_disable_bp_trace_index_args,
};

static const RzCmdDescArg cmd_debug_toggle_bp_trace_index_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_toggle_bp_trace_index_help = {
	.summary = "Toggle breakpoint trace by index",
	.args = cmd_debug_toggle_bp_trace_index_args,
};

static const RzCmdDescArg cmd_debug_bp_plugin_args[] = {
	{
		.name = "handler",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_bp_plugin_help = {
	.summary = "List breakpoint plugin handlers / Set breakpoint plugin handler",
	.args = cmd_debug_bp_plugin_args,
};

static const RzCmdDescArg cmd_debug_remove_bp_plugin_args[] = {
	{
		.name = "handler",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_remove_bp_plugin_help = {
	.summary = "Remove breakpoint plugin handler",
	.args = cmd_debug_remove_bp_plugin_args,
};

static const RzCmdDescHelp dbt_help = {
	.summary = "Backtrace commands",
};
static const RzCmdDescArg cmd_debug_display_bt_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_display_bt_help = {
	.summary = "Display backtrace based on dbg.btdepth and dbg.btalgo",
	.args = cmd_debug_display_bt_args,
};

static const RzCmdDescArg cmd_debug_display_bt_oneline_args[] = {
	{
		.name = "s/b",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_display_bt_oneline_help = {
	.summary = "Display backtrace in one line (see dbt= s and dbt= b for sp or bp)",
	.args = cmd_debug_display_bt_oneline_args,
};

static const RzCmdDescArg cmd_debug_display_bt_local_vars_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_display_bt_local_vars_help = {
	.summary = "Display backtrace with local vars if any",
	.args = cmd_debug_display_bt_local_vars_args,
};

static const RzCmdDescArg cmd_debug_display_bt_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_display_bt_ascii_help = {
	.summary = "Display ascii-art representation of the stack backtrace",
	.args = cmd_debug_display_bt_ascii_args,
};

static const RzCmdDescArg cmd_debug_bt_enable_bp_trace_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_bt_enable_bp_trace_help = {
	.summary = "Enable breakpoint trace at current offset",
	.args = cmd_debug_bt_enable_bp_trace_args,
};

static const RzCmdDescArg cmd_debug_bt_disable_bp_trace_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_bt_disable_bp_trace_help = {
	.summary = "Disable breakpoint trace at current offset",
	.args = cmd_debug_bt_disable_bp_trace_args,
};

static const RzCmdDescArg cmd_debug_bt_toggle_bp_trace_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_bt_toggle_bp_trace_help = {
	.summary = "Toggle breakpoint trace at current offset",
	.args = cmd_debug_bt_toggle_bp_trace_args,
};

static const RzCmdDescArg cmd_debug_bp_set_expr_cur_offset_args[] = {
	{
		.name = "expr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_bp_set_expr_cur_offset_help = {
	.summary = "View expression for all the breakpoints / Set expression for breakpoint at current offset",
	.args = cmd_debug_bp_set_expr_cur_offset_args,
};

static const RzCmdDescDetailEntry cmd_debug_add_watchpoint_Valid_space_permission_space_arguments_detail_entries[] = {
	{ .text = "r", .arg_str = NULL, .comment = "read only" },
	{ .text = "w", .arg_str = NULL, .comment = "write only" },
	{ .text = "rw", .arg_str = NULL, .comment = "read-write" },
	{ 0 },
};

static const RzCmdDescDetailEntry cmd_debug_add_watchpoint_Example_space_sizes_detail_entries[] = {
	{ .text = "1", .arg_str = NULL, .comment = "watch only a single byte" },
	{ .text = "2", .arg_str = NULL, .comment = "watch a 16-bit value" },
	{ .text = "4", .arg_str = NULL, .comment = "watch a 32-bit value" },
	{ .text = "8", .arg_str = NULL, .comment = "watch a 64-bit value" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_add_watchpoint_details[] = {
	{ .name = "Valid permission arguments", .entries = cmd_debug_add_watchpoint_Valid_space_permission_space_arguments_detail_entries },
	{ .name = "Example sizes", .entries = cmd_debug_add_watchpoint_Example_space_sizes_detail_entries },
	{ 0 },
};
static const char *cmd_debug_add_watchpoint_perm_choices[] = { "r", "w", "rw", NULL };
static const RzCmdDescArg cmd_debug_add_watchpoint_args[] = {
	{
		.name = "perm",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.choices.choices = cmd_debug_add_watchpoint_perm_choices,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_add_watchpoint_help = {
	.summary = "Add watchpoint at current offset",
	.details = cmd_debug_add_watchpoint_details,
	.args = cmd_debug_add_watchpoint_args,
};

static const RzCmdDescArg cmd_debug_set_cond_bp_win_args[] = {
	{
		.name = "WM_DEFINE",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "handle/name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_set_cond_bp_win_help = {
	.summary = "Set conditional breakpoint on a window message handler (only for Windows)",
	.args = cmd_debug_set_cond_bp_win_args,
};

static const RzCmdDescHelp dc_help = {
	.summary = "Continue execution",
};
static const RzCmdDescArg cmd_debug_continue_execution_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_execution_help = {
	.summary = "Continue execution of all children",
	.args = cmd_debug_continue_execution_args,
};

static const RzCmdDescArg cmd_debug_continue_back_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_back_help = {
	.summary = "Continue back until breakpoint",
	.args = cmd_debug_continue_back_args,
};

static const RzCmdDescArg cmd_debug_continue_call_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_call_help = {
	.summary = "Continue until call (use step into)",
	.args = cmd_debug_continue_call_args,
};

static const RzCmdDescArg cmd_debug_continue_call_over_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_call_over_help = {
	.summary = "Continue until call (use step out)",
	.args = cmd_debug_continue_call_over_args,
};

static const RzCmdDescArg cmd_debug_continue_unknown_call_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_unknown_call_help = {
	.summary = "Continue until unknown call (call reg)",
	.args = cmd_debug_continue_unknown_call_args,
};

static const RzCmdDescArg cmd_debug_continue_exception_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_exception_help = {
	.summary = "Continue execution (pass exception to program) (Windows only)",
	.args = cmd_debug_continue_exception_args,
};

static const RzCmdDescArg cmd_debug_continue_fork_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_fork_help = {
	.summary = "Continue until fork",
	.args = cmd_debug_continue_fork_args,
};

static const RzCmdDescArg cmd_debug_continue_send_signal_args[] = {
	{
		.name = "signal",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_send_signal_help = {
	.summary = "Continue sending signal to process",
	.args = cmd_debug_continue_send_signal_args,
};

static const RzCmdDescArg cmd_debug_continue_mapped_io_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_mapped_io_help = {
	.summary = "Continue until program code (mapped io section)",
	.args = cmd_debug_continue_mapped_io_args,
};

static const RzCmdDescArg cmd_debug_continue_ret_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_ret_help = {
	.summary = "Continue until ret (uses step over)",
	.args = cmd_debug_continue_ret_args,
};

static const RzCmdDescArg cmd_debug_continue_syscall_args[] = {
	{
		.name = "syscall",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_syscall_help = {
	.summary = "Continue until syscall",
	.args = cmd_debug_continue_syscall_args,
};

static const RzCmdDescArg cmd_debug_continue_traptrace_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_traptrace_help = {
	.summary = "Traptrace from curseek to len, no argument to list",
	.args = cmd_debug_continue_traptrace_args,
};

static const RzCmdDescArg cmd_debug_continue_until_args[] = {
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "$$",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_continue_until_help = {
	.summary = "Debug continue until",
	.args = cmd_debug_continue_until_args,
};

static const RzCmdDescHelp dd_help = {
	.summary = "Debug file descriptors commands",
};
static const RzCmdDescArg cmd_debug_descriptor_open_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_open_help = {
	.summary = "Open and map <file> given the path",
	.args = cmd_debug_descriptor_open_args,
};

static const RzCmdDescArg cmd_debug_descriptor_close_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_close_help = {
	.summary = "Close the <fd> file descriptor",
	.args = cmd_debug_descriptor_close_args,
};

static const RzCmdDescArg cmd_debug_descriptor_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_list_help = {
	.summary = "List all file descriptors",
	.args = cmd_debug_descriptor_list_args,
};

static const RzCmdDescArg cmd_debug_descriptor_seek_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_seek_help = {
	.summary = "Seek given <fd> to the <offset>",
	.args = cmd_debug_descriptor_seek_args,
};

static const RzCmdDescArg cmd_debug_descriptor_dup_args[] = {
	{
		.name = "fd_src",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "fd_dst",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_dup_help = {
	.summary = "Duplicate <fd_src> to <fd_dst>",
	.args = cmd_debug_descriptor_dup_args,
};

static const RzCmdDescArg cmd_debug_descriptor_read_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_read_help = {
	.summary = "Read <len> bytes from <fd> file at <offset>",
	.args = cmd_debug_descriptor_read_args,
};

static const RzCmdDescArg cmd_debug_descriptor_write_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_descriptor_write_help = {
	.summary = "Write <len> bytes to <fd> file at <offset>",
	.args = cmd_debug_descriptor_write_args,
};

static const RzCmdDescHelp de_help = {
	.summary = "Manage ESIL watchpoints",
};
static const RzCmdDescDetailEntry cmd_debug_esil_add_Examples_detail_entries[] = {
	{ .text = "de", .arg_str = "r reg rip", .comment = "Stop when reads RIP register" },
	{ .text = "de", .arg_str = "rw mem ADDR", .comment = "Stop when read or write in ADDR" },
	{ .text = "de", .arg_str = "w r rdx", .comment = "Stop when rdx register is modified" },
	{ .text = "de", .arg_str = "x m FROM..TO", .comment = "Stop when rip in range" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_esil_add_details[] = {
	{ .name = "Examples", .entries = cmd_debug_esil_add_Examples_detail_entries },
	{ 0 },
};
static const char *cmd_debug_esil_add_kind_choices[] = { "reg", "mem", NULL };
static const RzCmdDescArg cmd_debug_esil_add_args[] = {
	{
		.name = "perm",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "kind",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.choices.choices = cmd_debug_esil_add_kind_choices,

	},
	{
		.name = "expression",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_esil_add_help = {
	.summary = "Add ESIL watchpoint",
	.details = cmd_debug_esil_add_details,
	.args = cmd_debug_esil_add_args,
};

static const RzCmdDescArg cmd_debug_esil_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_esil_remove_help = {
	.summary = "Remove all ESIL watchpoints",
	.args = cmd_debug_esil_remove_args,
};

static const RzCmdDescArg cmd_debug_esil_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_esil_list_help = {
	.summary = "List all ESIL watchpoints",
	.args = cmd_debug_esil_list_args,
};

static const RzCmdDescArg cmd_debug_esil_continue_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_esil_continue_help = {
	.summary = "Continue execution until matching expression",
	.args = cmd_debug_esil_continue_args,
};

static const RzCmdDescArg cmd_debug_esil_step_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_esil_step_help = {
	.summary = "Step-in <N> instructions with ESIL",
	.args = cmd_debug_esil_step_args,
};

static const RzCmdDescArg cmd_debug_esil_step_until_args[] = {
	{
		.name = "<address>",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_esil_step_until_help = {
	.summary = "Step until specified <address>",
	.args = cmd_debug_esil_step_until_args,
};

static const RzCmdDescArg cmd_debug_core_dump_generate_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_core_dump_generate_help = {
	.summary = "Generate core dump file",
	.args = cmd_debug_core_dump_generate_args,
};

static const RzCmdDescHelp do_help = {
	.summary = "Debug (re)open commands",
};
static const RzCmdDescArg cmd_debug_process_profile_args[] = {
	{
		.name = "key=val",
		.type = RZ_CMD_ARG_TYPE_EVAL_FULL,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_process_profile_help = {
	.summary = "Set rz-run profile options (e dbg.profile)",
	.args_str = " [<key>=<val> [<key>=<val> ...]]",
	.args = cmd_debug_process_profile_args,
};

static const RzCmdDescArg cmd_debug_process_profile_edit_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_process_profile_edit_help = {
	.summary = "Edit rz-run startup profile with $EDITOR",
	.args = cmd_debug_process_profile_edit_args,
};

static const RzCmdDescArg cmd_debug_process_close_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_process_close_help = {
	.summary = "Close debug session",
	.args = cmd_debug_process_close_args,
};

static const RzCmdDescHelp ds_help = {
	.summary = "Debug step commands",
};
static const RzCmdDescArg cmd_debug_step_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "1",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_help = {
	.summary = "Step <num> instruction",
	.args = cmd_debug_step_args,
};

static const RzCmdDescArg cmd_debug_step_back_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "1",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_back_help = {
	.summary = "Step back <num> instruction",
	.args = cmd_debug_step_back_args,
};

static const RzCmdDescArg cmd_debug_step_frame_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_frame_help = {
	.summary = "Step until end of frame",
	.args = cmd_debug_step_frame_args,
};

static const RzCmdDescArg cmd_debug_step_cond_args[] = {
	{
		.name = "cond",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_cond_help = {
	.summary = "Continue until condition matches",
	.args = cmd_debug_step_cond_args,
};

static const RzCmdDescArg cmd_debug_step_line_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "1",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_line_help = {
	.summary = "Step <num> source line",
	.args = cmd_debug_step_line_args,
};

static const RzCmdDescArg cmd_debug_step_over_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "1",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_over_help = {
	.summary = "Step over <num> instructions",
	.args = cmd_debug_step_over_args,
};

static const RzCmdDescArg cmd_debug_step_prog_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_prog_help = {
	.summary = "Step into program (skip libs)",
	.args = cmd_debug_step_prog_args,
};

static const RzCmdDescArg cmd_debug_step_skip_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "1",

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_skip_help = {
	.summary = "Skip <num> step instructions",
	.args = cmd_debug_step_skip_args,
};

static const RzCmdDescHelp dsu_help = {
	.summary = "Debug step until commands",
};
static const RzCmdDescArg cmd_debug_step_until_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_until_help = {
	.summary = "Step until <addr>",
	.args = cmd_debug_step_until_args,
};

static const RzCmdDescArg cmd_debug_step_until_instr_args[] = {
	{
		.name = "instr",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_until_instr_help = {
	.summary = "Step until an instruction that matches <instr>",
	.args = cmd_debug_step_until_instr_args,
};

static const RzCmdDescArg cmd_debug_step_until_instr_regex_args[] = {
	{
		.name = "regex",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_until_instr_regex_help = {
	.summary = "Step until an instruction that matches <regex>",
	.args = cmd_debug_step_until_instr_regex_args,
};

static const RzCmdDescArg cmd_debug_step_until_optype_args[] = {
	{
		.name = "optype",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_until_optype_help = {
	.summary = "Step until an instruction matches one of the <optype>s",
	.args = cmd_debug_step_until_optype_args,
};

static const RzCmdDescArg cmd_debug_step_until_esil_args[] = {
	{
		.name = "esil",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_until_esil_help = {
	.summary = "Step until <esil> expression matches",
	.args = cmd_debug_step_until_esil_args,
};

static const RzCmdDescArg cmd_debug_step_until_flag_args[] = {
	{
		.name = "flag",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_step_until_flag_help = {
	.summary = "Step until pc == <flag> matching name",
	.args = cmd_debug_step_until_flag_args,
};

static const RzCmdDescHelp dt_help = {
	.summary = "Trace commands",
};
static const RzCmdDescArg cmd_debug_trace_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_help = {
	.summary = "Get trace info at the current address",
	.args = cmd_debug_trace_args,
};

static const RzCmdDescArg cmd_debug_traces_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_traces_help = {
	.summary = "List all traces",
	.args = cmd_debug_traces_args,
};

static const RzCmdDescArg cmd_debug_traces_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_traces_ascii_help = {
	.summary = "List all traces in ascii art",
	.args = cmd_debug_traces_ascii_args,
};

static const RzCmdDescArg cmd_debug_trace_add_args[] = {
	{
		.name = "times",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_add_help = {
	.summary = "Add trace for address N times",
	.args = cmd_debug_trace_add_args,
};

static const RzCmdDescArg cmd_debug_trace_add_addrs_args[] = {
	{
		.name = "addrs",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_add_addrs_help = {
	.summary = "Add trace for some address",
	.args = cmd_debug_trace_add_addrs_args,
};

static const RzCmdDescArg cmd_debug_traces_reset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_traces_reset_help = {
	.summary = "Reset traces (instruction/calls)",
	.args = cmd_debug_traces_reset_args,
};

static const RzCmdDescArg cmd_debug_trace_calls_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_calls_help = {
	.summary = "Trace call/ret",
	.args = cmd_debug_trace_calls_args,
};

static const RzCmdDescHelp dte_help = {
	.summary = "Esil trace logs",
};
static const RzCmdDescArg cmd_debug_trace_esil_args[] = {
	{
		.name = "idx",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_esil_help = {
	.summary = "Esil trace log for a single instruction for that index log",
	.args = cmd_debug_trace_esil_args,
};

static const RzCmdDescArg cmd_debug_trace_esils_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_esils_help = {
	.summary = "Esil trace log for a single instruction",
	.args = cmd_debug_trace_esils_args,
};

static const RzCmdDescArg cmd_debug_traces_esil_delete_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_traces_esil_delete_help = {
	.summary = "Delete all esil traces",
	.args = cmd_debug_traces_esil_delete_args,
};

static const RzCmdDescArg cmd_debug_traces_esil_i_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_traces_esil_i_help = {
	.summary = "Esil trace log for a single instruction",
	.args = cmd_debug_traces_esil_i_args,
};

static const RzCmdDescHelp dtg_help = {
	.summary = "Graph call/ret trace",
};
static const RzCmdDescArg cmd_debug_trace_graph_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_graph_help = {
	.summary = "Graph call/ret trace",
	.args = cmd_debug_trace_graph_args,
};

static const RzCmdDescArg cmd_debug_trace_interactive_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_interactive_help = {
	.summary = "Interactive debug trace",
	.args = cmd_debug_trace_interactive_args,
};

static const RzCmdDescHelp dts_help = {
	.summary = "Debug trace session commands",
};
static const RzCmdDescArg cmd_debug_start_trace_session_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_start_trace_session_help = {
	.summary = "Start trace session",
	.args = cmd_debug_start_trace_session_args,
};

static const RzCmdDescArg cmd_debug_stop_trace_session_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_stop_trace_session_help = {
	.summary = "Stop trace session",
	.args = cmd_debug_stop_trace_session_args,
};

static const RzCmdDescArg cmd_debug_save_trace_session_args[] = {
	{
		.name = "dir",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_save_trace_session_help = {
	.summary = "Save trace sessions to disk",
	.args = cmd_debug_save_trace_session_args,
};

static const RzCmdDescArg cmd_debug_load_trace_session_args[] = {
	{
		.name = "dir",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_load_trace_session_help = {
	.summary = "Load trace sessions to disk",
	.args = cmd_debug_load_trace_session_args,
};

static const RzCmdDescArg cmd_debug_list_trace_session_mmap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_list_trace_session_mmap_help = {
	.summary = "List current memory map and hash",
	.args = cmd_debug_list_trace_session_mmap_args,
};

static const RzCmdDescArg cmd_debug_trace_tag_args[] = {
	{
		.name = "tag",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_trace_tag_help = {
	.summary = "Select trace tag (no arg unsets)",
	.args = cmd_debug_trace_tag_args,
};

static const RzCmdDescArg debug_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_info_help = {
	.summary = "Debug information",
	.args = debug_info_args,
};

static const RzCmdDescHelp dk_help = {
	.summary = "Debug signals management",
};
static const RzCmdDescArg cmd_debug_signal_args[] = {
	{
		.name = "signal",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_signal_help = {
	.summary = "Send signal to the child",
	.args = cmd_debug_signal_args,
};

static const RzCmdDescArg cmd_debug_signal_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_signal_list_help = {
	.summary = "List all signal handlers of the child process",
	.args = cmd_debug_signal_list_args,
};

static const RzCmdDescArg cmd_debug_signal_name_args[] = {
	{
		.name = "signal",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_signal_name_help = {
	.summary = "Resolve the name of signal given the number",
	.args = cmd_debug_signal_name_args,
};

static const RzCmdDescArg cmd_debug_signal_number_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_signal_number_help = {
	.summary = "Resolve the signal number given the name",
	.args = cmd_debug_signal_number_args,
};

static const RzCmdDescDetailEntry cmd_debug_signal_option_Signal_space_options_detail_entries[] = {
	{ .text = "skip", .arg_str = NULL, .comment = "Do not enter into the signal handler" },
	{ .text = "continue", .arg_str = NULL, .comment = "Enter into the signal handler" },
	{ .text = "reset", .arg_str = NULL, .comment = "Remove all previously set signal options" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_signal_option_details[] = {
	{ .name = "Signal options", .entries = cmd_debug_signal_option_Signal_space_options_detail_entries },
	{ 0 },
};
static const char *cmd_debug_signal_option_option_choices[] = { "skip", "continue", "reset", NULL };
static const RzCmdDescArg cmd_debug_signal_option_args[] = {
	{
		.name = "signal",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "option",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "reset",
		.choices.choices = cmd_debug_signal_option_option_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_signal_option_help = {
	.summary = "Set skip or continue options for a given signal",
	.details = cmd_debug_signal_option_details,
	.args = cmd_debug_signal_option_args,
};

static const RzCmdDescHelp dl_help = {
	.summary = "Debug handler",
};
static const RzCmdDescArg cmd_debug_handler_set_args[] = {
	{
		.name = "handler",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_handler_set_help = {
	.summary = "Set debugger handler",
	.args = cmd_debug_handler_set_args,
};

static const RzCmdDescArg cmd_debug_handler_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_handler_list_help = {
	.summary = "List debugger handler",
	.args = cmd_debug_handler_list_args,
};

static const RzCmdDescHelp dm_help = {
	.summary = "Memory map commands",
};
static const RzCmdDescArg cmd_debug_list_maps_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_list_maps_help = {
	.summary = "List memory maps",
	.args = cmd_debug_list_maps_args,
};

static const RzCmdDescArg cmd_debug_allocate_maps_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_allocate_maps_help = {
	.summary = "Allocate <size> bytes at current offset",
	.args = cmd_debug_allocate_maps_args,
};

static const RzCmdDescArg cmd_debug_list_maps_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_list_maps_ascii_help = {
	.summary = "List memory maps of current process with ASCII art bars",
	.args = cmd_debug_list_maps_ascii_args,
};

static const RzCmdDescArg cmd_debug_map_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_map_current_help = {
	.summary = "Show map name of current address",
	.args = cmd_debug_map_current_args,
};

static const RzCmdDescHelp dmm_help = {
	.summary = "Module memory map commands",
};
static const RzCmdDescArg cmd_debug_modules_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_modules_help = {
	.summary = "List modules (libraries, binaries loaded in memory)",
	.args = cmd_debug_modules_args,
};

static const RzCmdDescArg cmd_debug_current_modules_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_current_modules_help = {
	.summary = "List memory map of current module",
	.args = cmd_debug_current_modules_args,
};

static const RzCmdDescArg cmd_debug_deallocate_map_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_deallocate_map_help = {
	.summary = "Deallocate memory map at current offset",
	.args = cmd_debug_deallocate_map_args,
};

static const RzCmdDescHelp dmd_help = {
	.summary = "Dump debug map regions to a file (from-to.dmp)",
};
static const RzCmdDescArg cmd_debug_dump_maps_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dump_maps_help = {
	.summary = "Dump debug maps to <filename>",
	.args = cmd_debug_dump_maps_args,
};

static const RzCmdDescArg cmd_debug_dump_maps_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dump_maps_all_help = {
	.summary = "Dump all debug maps",
	.args = cmd_debug_dump_maps_all_args,
};

static const RzCmdDescArg cmd_debug_dump_maps_writable_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dump_maps_writable_help = {
	.summary = "Dump writable debug maps",
	.args = cmd_debug_dump_maps_writable_args,
};

static const RzCmdDescHelp dmh_help = {
	.summary = "Glibc heap commands",
};
static const RzCmdDescArg cmd_heap_chunks_print_args[] = {
	{
		.name = "malloc_state",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_chunks_print_help = {
	.summary = "List heap chunks of an arena",
	.args = cmd_heap_chunks_print_args,
};

static const RzCmdDescArg cmd_arena_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_arena_print_help = {
	.summary = "List all the arenas",
	.args = cmd_arena_print_args,
};

static const RzCmdDescArg cmd_heap_bins_list_print_args[] = {
	{
		.name = "bin_num|bin_num:malloc_state",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_bins_list_print_help = {
	.summary = "Display double linked list for bins in an arena.",
	.args = cmd_heap_bins_list_print_args,
};

static const RzCmdDescArg cmd_heap_chunk_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_chunk_print_help = {
	.summary = "Get info about heap chunk at current offset",
	.args = cmd_heap_chunk_print_args,
};

static const char *cmd_heap_arena_bins_print_bin_type_choices[] = { "small", "large", "fast", "unsorted", "tcache", NULL };
static const RzCmdDescArg cmd_heap_arena_bins_print_args[] = {
	{
		.name = "bin_type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = cmd_heap_arena_bins_print_bin_type_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_arena_bins_print_help = {
	.summary = "Display state of bins in an arena. <bin_type> can be tcache/fast/unsorted/small/large",
	.args = cmd_heap_arena_bins_print_args,
};

static const RzCmdDescArg cmd_heap_fastbins_print_args[] = {
	{
		.name = "fastbin_num|fastbin_num:malloc_state",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_fastbins_print_help = {
	.summary = "Display all parsed fastbins of main_arena's or a particular arena fastbinY instance",
	.args = cmd_heap_fastbins_print_args,
};

static const RzCmdDescArg cmd_heap_chunks_graph_args[] = {
	{
		.name = "malloc_state",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_chunks_graph_help = {
	.summary = "Display heap graph of a particular arena",
	.args = cmd_heap_chunks_graph_args,
};

static const RzCmdDescArg cmd_heap_info_print_args[] = {
	{
		.name = "malloc_state",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_info_print_help = {
	.summary = "Display heap_info structure/structures for a given arena",
	.args = cmd_heap_info_print_args,
};

static const RzCmdDescArg cmd_main_arena_print_args[] = {
	{
		.name = "malloc_state",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_main_arena_print_help = {
	.summary = "List all elements of struct malloc_state",
	.args = cmd_main_arena_print_args,
};

static const RzCmdDescArg cmd_heap_tcache_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_heap_tcache_print_help = {
	.summary = "Display all parsed thread cache bins of all arena's tcache instance",
	.args = cmd_heap_tcache_print_args,
};

static const RzCmdDescHelp dmi_help = {
	.summary = "List/Load symbols",
};
static const RzCmdDescArg cmd_debug_dmi_args[] = {
	{
		.name = "lib_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "symbol_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dmi_help = {
	.summary = "List libraries and library symbols.",
	.args = cmd_debug_dmi_args,
};

static const RzCmdDescArg cmd_debug_dmi_all_args[] = {
	{
		.name = "lib_name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dmi_all_help = {
	.summary = "List all info of target library.",
	.args = cmd_debug_dmi_all_args,
};

static const RzCmdDescArg cmd_debug_dmi_closest_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dmi_closest_help = {
	.summary = "List closest symbol to the current address.",
	.args = cmd_debug_dmi_closest_args,
};

static const RzCmdDescArg cmd_debug_dml_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dml_help = {
	.summary = "Load contents of file into current map region",
	.args = cmd_debug_dml_args,
};

static const RzCmdDescArg debug_memory_permission_args[] = {
	{
		.name = "perms",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_memory_permission_help = {
	.summary = "Change page at current offset with <size>, protection <perms> / Change dbg.map permissions to <perms>",
	.args = debug_memory_permission_args,
};

static const RzCmdDescArg cmd_debug_dmL_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dmL_help = {
	.summary = "Allocate <size> bytes at current offset and promote to huge page",
	.args = cmd_debug_dmL_args,
};

static const RzCmdDescArg cmd_debug_dmS_args[] = {
	{
		.name = "addr|libname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "sectname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_dmS_help = {
	.summary = "List sections of target lib",
	.args = cmd_debug_dmS_args,
};

static const RzCmdDescHelp dmw_help = {
	.summary = "Windows heap commands",
};
static const RzCmdDescArg cmd_debug_process_heaps_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_process_heaps_help = {
	.summary = "List process heaps",
	.args = cmd_debug_process_heaps_args,
};

static const RzCmdDescArg cmd_debug_process_heap_block_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_process_heap_block_help = {
	.summary = "List allocated heap blocks",
	.args = cmd_debug_process_heap_block_args,
};

static const RzCmdDescArg cmd_debug_heap_block_flag_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_heap_block_flag_help = {
	.summary = "Create flags for each allocated heap block",
	.args = cmd_debug_heap_block_flag_args,
};

static const RzCmdDescHelp dmx_help = {
	.summary = "Jemalloc heap commands",
};
static const RzCmdDescArg cmd_debug_heap_jemalloc_a_args[] = {
	{
		.name = "arena_type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_heap_jemalloc_a_help = {
	.summary = "Show all arenas created, or print arena_type structure for given arena.",
	.args = cmd_debug_heap_jemalloc_a_args,
};

static const RzCmdDescArg cmd_debug_heap_jemalloc_b_args[] = {
	{
		.name = "arena_type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_heap_jemalloc_b_help = {
	.summary = "Show all arenas created, or print arena_type structure for given arena.",
	.args = cmd_debug_heap_jemalloc_b_args,
};

static const RzCmdDescArg cmd_debug_heap_jemalloc_c_args[] = {
	{
		.name = "*|arena_type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_heap_jemalloc_c_help = {
	.summary = "Show all chunks created in all arenas, or show all chunks created for a given arena_t instanc.",
	.args = cmd_debug_heap_jemalloc_c_args,
};

static const RzCmdDescHelp dp_help = {
	.summary = "List or attach to process or thread",
};
static const RzCmdDescArg cmd_debug_pid_list_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_list_help = {
	.summary = "List current pid and children",
	.args = cmd_debug_pid_list_args,
};

static const RzCmdDescArg cmd_debug_pid_attachable_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_attachable_list_help = {
	.summary = "List all attachable pids",
	.args = cmd_debug_pid_attachable_list_args,
};

static const RzCmdDescArg cmd_debug_pid_attach_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_attach_help = {
	.summary = "Attach to selected <pid>",
	.args = cmd_debug_pid_attach_args,
};

static const RzCmdDescArg cmd_debug_pid_detach_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_detach_help = {
	.summary = "Detach from selected <pid>",
	.args = cmd_debug_pid_detach_args,
};

static const RzCmdDescArg cmd_debug_pid_select_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_select_help = {
	.summary = "Select <pid>",
	.args = cmd_debug_pid_select_args,
};

static const RzCmdDescArg cmd_debug_pid_select_forked_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_select_forked_help = {
	.summary = "Select forked pid (see dbg.forks)",
	.args = cmd_debug_pid_select_forked_args,
};

static const RzCmdDescArg cmd_debug_pid_display_forked_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_display_forked_help = {
	.summary = "Display forked pid (see dbg.forks)",
	.args = cmd_debug_pid_display_forked_args,
};

static const RzCmdDescArg cmd_debug_executable_path_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_executable_path_help = {
	.summary = "Show path to executable",
	.args = cmd_debug_executable_path_args,
};

static const RzCmdDescArg cmd_debug_pid_attach_fd_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_attach_fd_help = {
	.summary = "Attach to pid like file fd",
	.args = cmd_debug_pid_attach_fd_args,
};

static const RzCmdDescArg cmd_debug_pid_signal_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "signal",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_signal_help = {
	.summary = "Send <signal> to process <pid>",
	.args = cmd_debug_pid_signal_args,
};

static const RzCmdDescArg cmd_debug_thread_list_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_thread_list_help = {
	.summary = "List threads of specified or current <pid>",
	.args = cmd_debug_thread_list_args,
};

static const RzCmdDescArg cmd_debug_pid_thread_select_args[] = {
	{
		.name = "thread-id",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_pid_thread_select_help = {
	.summary = "Select <thread-id>",
	.args = cmd_debug_pid_thread_select_args,
};

static const RzCmdDescDetailEntry dr_Register_space_Filter_detail_entries[] = {
	{ .text = "dr", .arg_str = "", .comment = "Show a sensible default selection of registers" },
	{ .text = "dr", .arg_str = " rax", .comment = "Show a single register" },
	{ .text = "dr", .arg_str = " 16", .comment = "Show 16 bits wide gpr registers" },
	{ .text = "dr", .arg_str = " xmm", .comment = "Show registers of type xmm (see `drT` for possible types)" },
	{ .text = "dr", .arg_str = " PC", .comment = "Show the register with the given role (see `drR` for possible roles)" },
	{ .text = "dr", .arg_str = " all", .comment = "Show all registers available" },
	{ 0 },
};
static const RzCmdDescDetail dr_details[] = {
	{ .name = "Register Filter", .entries = dr_Register_space_Filter_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp dr_help = {
	.summary = "CPU Registers",
	.details = dr_details,
};
static const RzCmdDescArg debug_regs_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_regs_help = {
	.summary = "Show registers with their values, or assign one (`dr reg=value`)",
	.args_str = " [<filter> [= <value>]]",
	.args = debug_regs_args,
};

static const RzCmdDescArg debug_regs_columns_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_regs_columns_help = {
	.summary = "Show registers in columns",
	.args = debug_regs_columns_args,
};

static const RzCmdDescArg debug_regs_references_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_regs_references_help = {
	.summary = "Show register references (telescoping)",
	.args = debug_regs_references_args,
};

static const RzCmdDescArg debug_regs_valgroup_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_regs_valgroup_help = {
	.summary = "Show register grouped by their values",
	.args = debug_regs_valgroup_args,
};

static const RzCmdDescDetail debug_regs_args_details[] = {
	{ 0 },
};
static const RzCmdDescArg debug_regs_args_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_regs_args_help = {
	.summary = "Show values of default function drgument registers (A0, A1, A2, ...) with telescoping",
	.details = debug_regs_args_details,
	.args = debug_regs_args_args,
};

static const RzCmdDescDetail debug_reg_cc_details[] = {
	{ 0 },
};
static const RzCmdDescArg debug_reg_cc_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_cc_help = {
	.summary = "Show calling convention defined by registers",
	.details = debug_reg_cc_details,
	.args = debug_reg_cc_args,
};

static const RzCmdDescDetail debug_regs_diff_details[] = {
	{ 0 },
};
static const RzCmdDescArg debug_regs_diff_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_regs_diff_help = {
	.summary = "Show register differences from previous contents",
	.details = debug_regs_diff_details,
	.args = debug_regs_diff_args,
};

static const RzCmdDescArg debug_regs_prev_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_regs_prev_help = {
	.summary = "Show previous register contents",
	.args = debug_regs_prev_args,
};

static const RzCmdDescArg debug_regs_fpu_args[] = {
	{
		.name = "reg",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_regs_fpu_help = {
	.summary = "Show fpu registers",
	.args_str = " [<register> [= <value>]]",
	.args = debug_regs_fpu_args,
};

static const RzCmdDescHelp drf_help = {
	.summary = "Show commands for setting registers as flags",
};
static const RzCmdDescArg debug_reg_flags_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_flags_help = {
	.summary = "Show commands for setting registers as flags",
	.args = debug_reg_flags_args,
};

static const RzCmdDescArg debug_reg_flags_unset_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_REG_FILTER,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_flags_unset_help = {
	.summary = "Show commands for unsetting flags from `drf`",
	.args = debug_reg_flags_unset_args,
};

static const RzCmdDescDetail dra_details[] = {
	{ 0 },
};
static const RzCmdDescHelp dra_help = {
	.summary = "Register arena commands (underlying binary data)",
	.details = dra_details,
};
static const RzCmdDescArg debug_reg_arenas_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_help = {
	.summary = "Show all currently allocated register arenas",
	.args = debug_reg_arenas_args,
};

static const RzCmdDescArg debug_reg_arenas_push_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_push_help = {
	.summary = "Push a new set of arenas to the stack",
	.args = debug_reg_arenas_push_args,
};

static const RzCmdDescArg debug_reg_arenas_pop_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_pop_help = {
	.summary = "Pop a set of arenas from the stack",
	.args = debug_reg_arenas_pop_args,
};

static const RzCmdDescArg debug_reg_arenas_stack_size_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_stack_size_help = {
	.summary = "Show number of stack elements",
	.args = debug_reg_arenas_stack_size_args,
};

static const RzCmdDescArg debug_reg_arenas_swap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_swap_help = {
	.summary = "Swap last two register arenas on the stack",
	.args = debug_reg_arenas_swap_args,
};

static const RzCmdDescArg debug_reg_arenas_zero_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_REG_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_zero_help = {
	.summary = "Reset the specified or all arena contents to 0",
	.args = debug_reg_arenas_zero_args,
};

static const RzCmdDescArg debug_reg_arenas_hexdump_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_REG_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_hexdump_help = {
	.summary = "Display hexdump of given arena (or gpr if none given)",
	.args = debug_reg_arenas_hexdump_args,
};

static const RzCmdDescArg debug_reg_arenas_write_hex_args[] = {
	{
		.name = "hex",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_REG_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_arenas_write_hex_help = {
	.summary = "Write hexadecimal data <hex> into the given arena (or gpr if none given)",
	.args = debug_reg_arenas_write_hex_args,
};

static const RzCmdDescDetail drp_details[] = {
	{ 0 },
};
static const RzCmdDescHelp drp_help = {
	.summary = "Register profile commands (defining available registers)",
	.details = drp_details,
};
static const RzCmdDescArg debug_reg_profile_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_profile_help = {
	.summary = "Show the current register profile",
	.args = debug_reg_profile_args,
};

static const RzCmdDescArg debug_reg_profile_comments_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_profile_comments_help = {
	.summary = "Show register profile comments",
	.args = debug_reg_profile_comments_args,
};

static const RzCmdDescArg debug_reg_profile_open_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_profile_open_help = {
	.summary = "Load a new register profile from file",
	.args = debug_reg_profile_open_args,
};

static const RzCmdDescArg debug_reg_profile_gdb_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_reg_profile_gdb_help = {
	.summary = "Convert gdb profile from the given file to rizin register profile",
	.args = debug_reg_profile_gdb_args,
};

static const RzCmdDescDetailEntry debug_reg_cond_Basic_detail_entries[] = {
	{ .text = "eq", .arg_str = "", .comment = "equal" },
	{ .text = "ne", .arg_str = "", .comment = "not equal" },
	{ .text = "cf", .arg_str = "", .comment = "carry flag set" },
	{ .text = "neg", .arg_str = "", .comment = "negative value (has sign)" },
	{ .text = "of", .arg_str = "", .comment = "overflow" },
	{ 0 },
};

static const RzCmdDescDetailEntry debug_reg_cond_Unsigned_detail_entries[] = {
	{ .text = "hi", .arg_str = "", .comment = "higher" },
	{ .text = "he", .arg_str = "", .comment = "higher or equal" },
	{ .text = "lo", .arg_str = "", .comment = "lower" },
	{ .text = "loe", .arg_str = "", .comment = "lower or equal" },
	{ 0 },
};

static const RzCmdDescDetailEntry debug_reg_cond_Signed_detail_entries[] = {
	{ .text = "gt", .arg_str = "", .comment = "greater" },
	{ .text = "ge", .arg_str = "", .comment = "greater or equal" },
	{ .text = "lt", .arg_str = "", .comment = "less" },
	{ .text = "le", .arg_str = "", .comment = "less or equal" },
	{ 0 },
};
static const RzCmdDescDetail debug_reg_cond_details[] = {
	{ .name = "Basic", .entries = debug_reg_cond_Basic_detail_entries },
	{ .name = "Unsigned", .entries = debug_reg_cond_Unsigned_detail_entries },
	{ .name = "Signed", .entries = debug_reg_cond_Signed_detail_entries },
	{ 0 },
};
static const RzCmdDescArg debug_reg_cond_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_cond_help = {
	.summary = "Conditional flags (aliases to processor flags)",
	.details = debug_reg_cond_details,
	.args = debug_reg_cond_args,
};

static const RzCmdDescDetail debug_reg_types_details[] = {
	{ 0 },
};
static const RzCmdDescArg debug_reg_types_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_types_help = {
	.summary = "List all register types",
	.details = debug_reg_types_details,
	.args = debug_reg_types_args,
};

static const RzCmdDescDetail debug_reg_roles_details[] = {
	{ 0 },
};
static const RzCmdDescArg debug_reg_roles_args[] = {
	{ 0 },
};
static const RzCmdDescHelp debug_reg_roles_help = {
	.summary = "List all register roles",
	.details = debug_reg_roles_details,
	.args = debug_reg_roles_args,
};

static const RzCmdDescDetail drx_details[] = {
	{ 0 },
};
static const RzCmdDescHelp drx_help = {
	.summary = "Show hardware breakpoint registers",
	.details = drx_details,
};
static const RzCmdDescArg debug_drx_args[] = {
	{
		.name = "number",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "length",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "perms",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_drx_help = {
	.summary = "Show or modify hardware breakpoint registers",
	.args = debug_drx_args,
};

static const RzCmdDescArg debug_drx_unset_args[] = {
	{
		.name = "number",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp debug_drx_unset_help = {
	.summary = "Clear hardware breakpoint",
	.args = debug_drx_unset_args,
};

static const RzCmdDescArg cmd_debug_wait_args[] = {
	{
		.name = "pid",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_wait_help = {
	.summary = "Block prompt until <pid> dies",
	.args = cmd_debug_wait_args,
};

static const RzCmdDescHelp dW_help = {
	.summary = "Windows process commands",
};
static const RzCmdDescArg cmd_debug_windows_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_windows_list_help = {
	.summary = "List process windows",
	.args = cmd_debug_windows_list_args,
};

static const RzCmdDescArg cmd_debug_window_identify_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_window_identify_help = {
	.summary = "Identify window under cursor",
	.args = cmd_debug_window_identify_args,
};

static const RzCmdDescHelp dx_help = {
	.summary = "Code injection commands",
};
static const RzCmdDescDetailEntry cmd_debug_inject_opcode_Examples_detail_entries[] = {
	{ .text = "dx", .arg_str = " 9090", .comment = "Insert two 0x90 bytes (nop instruction on x86 platforms)" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_inject_opcode_details[] = {
	{ .name = "Examples", .entries = cmd_debug_inject_opcode_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_debug_inject_opcode_args[] = {
	{
		.name = "opcode",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_inject_opcode_help = {
	.summary = "Inject opcodes",
	.details = cmd_debug_inject_opcode_details,
	.args = cmd_debug_inject_opcode_args,
};

static const RzCmdDescDetailEntry cmd_debug_inject_assembly_Examples_detail_entries[] = {
	{ .text = "dxa", .arg_str = " mov eax,6; mov ebx,0; int 0x80", .comment = "Assemble and insert 3 instructions" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_inject_assembly_details[] = {
	{ .name = "Examples", .entries = cmd_debug_inject_assembly_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_debug_inject_assembly_args[] = {
	{
		.name = "asm",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_inject_assembly_help = {
	.summary = "Assemble code and inject",
	.details = cmd_debug_inject_assembly_details,
	.args = cmd_debug_inject_assembly_args,
};

static const RzCmdDescArg cmd_debug_inject_egg_args[] = {
	{
		.name = "expression",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_inject_egg_help = {
	.summary = "Compile RzEgg expression and inject",
	.args = cmd_debug_inject_egg_args,
};

static const RzCmdDescArg cmd_debug_inject_opcode_restore_args[] = {
	{
		.name = "opcode",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_inject_opcode_restore_help = {
	.summary = "Inject opcodes and restore state",
	.args = cmd_debug_inject_opcode_restore_args,
};

static const RzCmdDescDetailEntry cmd_debug_inject_syscall_Examples_detail_entries[] = {
	{ .text = "dxs", .arg_str = " write 1, 0x8048, 12", .comment = "Inject the write() syscall with given arguments" },
	{ 0 },
};
static const RzCmdDescDetail cmd_debug_inject_syscall_details[] = {
	{ .name = "Examples", .entries = cmd_debug_inject_syscall_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_debug_inject_syscall_args[] = {
	{
		.name = "syscall",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_debug_inject_syscall_help = {
	.summary = "Syscall injection",
	.details = cmd_debug_inject_syscall_details,
	.args = cmd_debug_inject_syscall_args,
};

static const RzCmdDescHelp e_help = {
	.summary = "List/get/set config evaluable vars",
};
static const RzCmdDescDetailEntry eval_getset_Examples_detail_entries[] = {
	{ .text = "e", .arg_str = " asm.bytes", .comment = "Show current value of config variable `asm.bytes`" },
	{ .text = "e", .arg_str = " asm.bytes=true", .comment = "Set config variable `asm.bytes` to `true`" },
	{ .text = "e", .arg_str = " search.in=?", .comment = "Show all possible values for config variable `search.in`" },
	{ .text = "e", .arg_str = " search.in=??", .comment = "Show all possible values for config variable `search.in` together with description" },
	{ .text = "e", .arg_str = " asm.bytes=true asm.offset=false", .comment = "Set asm.bytes to true and asm.offset to false" },
	{ 0 },
};
static const RzCmdDescDetail eval_getset_details[] = {
	{ .name = "Examples", .entries = eval_getset_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg eval_getset_args[] = {
	{
		.name = "key=value",
		.type = RZ_CMD_ARG_TYPE_EVAL_FULL,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_getset_help = {
	.summary = "Get/Set value of config variable <key>",
	.args_str = " <key>[=<val|?>] [<key>[=<val|?>] ...]]",
	.details = eval_getset_details,
	.args = eval_getset_args,
};

static const RzCmdDescArg eval_list_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_EVAL_KEY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_list_help = {
	.summary = "List config variables with their descriptions",
	.args = eval_list_args,
};

static const RzCmdDescArg eval_reset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp eval_reset_help = {
	.summary = "Reset config variables",
	.args = eval_reset_args,
};

static const RzCmdDescArg eval_bool_invert_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_EVAL_KEY,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_bool_invert_help = {
	.summary = "Invert the boolean value of config variable <key>",
	.args = eval_bool_invert_args,
};

static const RzCmdDescHelp ec_help = {
	.summary = "Set color for given key (prompt, offset, ...)",
};
static const RzCmdDescArg cmd_eval_color_list_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "color",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_list_help = {
	.summary = "List eval colors and keys",
	.args = cmd_eval_color_list_args,
};

static const RzCmdDescArg cmd_eval_color_display_palette_css_args[] = {
	{
		.name = "prefix",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_display_palette_css_help = {
	.summary = "Show palette in CSS",
	.args = cmd_eval_color_display_palette_css_args,
};

static const RzCmdDescArg cmd_eval_color_set_default_palette_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_set_default_palette_help = {
	.summary = "Set default palette",
	.args = cmd_eval_color_set_default_palette_args,
};

static const RzCmdDescHelp ecH_help = {
	.summary = "Highlight word or an instruction",
};
static const RzCmdDescArg cmd_eval_color_highlight_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_highlight_list_help = {
	.summary = "List all the highlight rules",
	.args = cmd_eval_color_highlight_list_args,
};

static const RzCmdDescArg cmd_eval_color_highlight_current_instruction_args[] = {
	{
		.name = "color",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_highlight_current_instruction_help = {
	.summary = "Highlight current instruction with the given color as background",
	.args = cmd_eval_color_highlight_current_instruction_args,
};

static const RzCmdDescArg cmd_eval_color_highlight_instruction_word_args[] = {
	{
		.name = "word",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "color",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_highlight_instruction_word_help = {
	.summary = "Highlight the word with the given color as background",
	.args = cmd_eval_color_highlight_instruction_word_args,
};

static const RzCmdDescArg cmd_eval_color_highlight_list_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_highlight_list_current_help = {
	.summary = "Show highlight rule in current offset",
	.args = cmd_eval_color_highlight_list_current_args,
};

static const RzCmdDescArg cmd_eval_color_highlight_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_highlight_remove_all_help = {
	.summary = "Remove all highlights and hints",
	.args = cmd_eval_color_highlight_remove_all_args,
};

static const RzCmdDescArg cmd_eval_color_highlight_remove_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_highlight_remove_current_help = {
	.summary = "Remove all highlights on current instruction",
	.args = cmd_eval_color_highlight_remove_current_args,
};

static const RzCmdDescArg cmd_eval_color_set_random_palette_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_set_random_palette_help = {
	.summary = "Set random palette",
	.args = cmd_eval_color_set_random_palette_args,
};

static const RzCmdDescArg cmd_eval_color_set_colorful_palette_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_set_colorful_palette_help = {
	.summary = "Set a colorful palette",
	.args = cmd_eval_color_set_colorful_palette_args,
};

static const RzCmdDescHelp eco_help = {
	.summary = "Load the provided theme or list the available themes",
};
static const RzCmdDescArg cmd_eval_color_load_theme_args[] = {
	{
		.name = "theme",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_load_theme_help = {
	.summary = "List the available themes",
	.args = cmd_eval_color_load_theme_args,
};

static const RzCmdDescArg cmd_eval_color_list_current_theme_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_list_current_theme_help = {
	.summary = "Display current theme name",
	.args = cmd_eval_color_list_current_theme_args,
};

static const RzCmdDescArg cmd_eval_color_list_reload_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_list_reload_current_help = {
	.summary = "Reload current theme",
	.args = cmd_eval_color_list_reload_current_args,
};

static const RzCmdDescArg cmd_eval_color_load_previous_theme_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_load_previous_theme_help = {
	.summary = "Load previuos color theme",
	.args = cmd_eval_color_load_previous_theme_args,
};

static const RzCmdDescArg cmd_eval_color_load_next_theme_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_eval_color_load_next_theme_help = {
	.summary = "Load next color theme",
	.args = cmd_eval_color_load_next_theme_args,
};

static const RzCmdDescArg eval_editor_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_EVAL_KEY,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_editor_help = {
	.summary = "Open editor to change the value of config variable <key>",
	.args = eval_editor_args,
};

static const RzCmdDescArg eval_readonly_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_EVAL_KEY,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_readonly_help = {
	.summary = "Set config variable <key> as read-only",
	.args = eval_readonly_args,
};

static const RzCmdDescArg eval_spaces_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_EVAL_KEY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_spaces_help = {
	.summary = "List all config variable spaces or sub-keys/sub-spaces if a <key> is provided",
	.args = eval_spaces_args,
};

static const RzCmdDescArg eval_type_args[] = {
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_EVAL_KEY,

	},
	{ 0 },
};
static const RzCmdDescHelp eval_type_help = {
	.summary = "Show type of given config variable <key>",
	.args = eval_type_args,
};

static const RzCmdDescHelp f_help = {
	.summary = "Manage flags",
};
static const RzCmdDescArg flag_add_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "comment",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_add_help = {
	.summary = "Add the flag if there are no existing flags",
	.description = "Adds the flag to the current offset only if no flag exists at this offset already.",
	.args = flag_add_args,
};

static const RzCmdDescArg flag_append_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "comment",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_append_help = {
	.summary = "Add the flag",
	.description = "Add the flag like the 'f' command but in any case, even if one or multiple flags already exist.",
	.args = flag_append_args,
};

static const RzCmdDescHelp f_dot__help = {
	.summary = "Local flags (per function)",
};
static const RzCmdDescArg flag_local_add_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_local_add_help = {
	.summary = "Add the local flag",
	.args = flag_local_add_args,
};

static const RzCmdDescArg flag_local_remove_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_local_remove_help = {
	.summary = "Remove the local flag",
	.args = flag_local_remove_args,
};

static const RzCmdDescArg flag_local_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_local_list_help = {
	.summary = "List the local flags for the function",
	.args = flag_local_list_args,
};

static const RzCmdDescArg flag_local_list_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_local_list_all_help = {
	.summary = "List the local flags for all functions",
	.args = flag_local_list_all_args,
};

static const RzCmdDescArg flag_remove_args[] = {
	{
		.name = "glob",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_remove_help = {
	.summary = "Remove the flag",
	.description = "If the glob is supplied it removes just flag items matching the pattern. Otherwise, it removes all flags at the current offset.",
	.args = flag_remove_args,
};

static const RzCmdDescArg flag_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_remove_all_help = {
	.summary = "Remove all flags",
	.args = flag_remove_all_args,
};

static const RzCmdDescArg flag_alias_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{
		.name = "alias",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_alias_help = {
	.summary = "Alias a flag to evaluate an expression",
	.args = flag_alias_args,
};

static const RzCmdDescArg flag_exists_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_exists_help = {
	.summary = "Check if flag exists",
	.args = flag_exists_args,
};

static const RzCmdDescArg flag_distance_args[] = {
	{
		.name = "glob",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_distance_help = {
	.summary = "Distance in bytes to reach the next flag",
	.args = flag_distance_args,
};

static const RzCmdDescArg flag_graph_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_FLAG,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_graph_help = {
	.summary = "Show the flag graph",
	.args = flag_graph_args,
};

static const RzCmdDescArg flag_range_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_range_help = {
	.summary = "Show the flags in the block or custom range",
	.args = flag_range_args,
};

static const RzCmdDescArg flag_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_list_help = {
	.summary = "List all flags",
	.args = flag_list_args,
};

static const RzCmdDescArg flag_list_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_list_at_help = {
	.summary = "List all flags at the current offset",
	.args = flag_list_at_args,
};

static const RzCmdDescArg flag_length_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_length_help = {
	.summary = "Show the flag length / Set the flag length",
	.args = flag_length_args,
};

static const RzCmdDescArg flag_realname_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_FLAG,
		.optional = true,

	},
	{
		.name = "realname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_realname_help = {
	.summary = "Show the realname of the flag / Set the realname of the flag",
	.args = flag_realname_args,
};

static const RzCmdDescArg flag_list_ascii_args[] = {
	{
		.name = "glob",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_list_ascii_help = {
	.summary = "List range bars with flag offsets and sizes",
	.args = flag_list_ascii_args,
};

static const RzCmdDescArg flag_color_args[] = {
	{
		.name = "flag",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{
		.name = "color",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_color_help = {
	.summary = "Set a color for the given flag / Show the color for the given flag",
	.args = flag_color_args,
};

static const RzCmdDescArg flag_comment_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{
		.name = "comment",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_comment_help = {
	.summary = "Set a comment for the given flag / Show the comment for the given flag",
	.args = flag_comment_args,
};

static const RzCmdDescHelp fd_help = {
	.summary = "Describe flag",
};
static const RzCmdDescArg flag_describe_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_describe_help = {
	.summary = "Describe flag + delta for the current offset",
	.args = flag_describe_args,
};

static const RzCmdDescArg flag_describe_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_describe_at_help = {
	.summary = "Describe flags for the current offset",
	.args = flag_describe_at_args,
};

static const RzCmdDescArg flag_describe_closest_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_describe_closest_help = {
	.summary = "Describe closest flag by string for the current offset",
	.args = flag_describe_closest_args,
};

static const RzCmdDescArg flag_move_args[] = {
	{
		.name = "newaddress",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_move_help = {
	.summary = "Move a flag to the new address",
	.args = flag_move_args,
};

static const RzCmdDescArg flag_ordinals_args[] = {
	{
		.name = "glob",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_ordinals_help = {
	.summary = "Flag as ordinals (sym.* func.* method.*)",
	.args = flag_ordinals_args,
};

static const RzCmdDescArg flag_rename_args[] = {
	{
		.name = "old",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{
		.name = "new",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_rename_help = {
	.summary = "Rename flag",
	.args = flag_rename_args,
};

static const RzCmdDescArg flag_relocate_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "mask",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_relocate_help = {
	.summary = "Relocate flags",
	.args = flag_relocate_args,
};

static const RzCmdDescHelp fs_help = {
	.summary = "Manage flagspaces",
};
static const RzCmdDescArg flag_space_add_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_space_add_help = {
	.summary = "Add the flagspace",
	.args = flag_space_add_args,
};

static const RzCmdDescArg flag_space_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_space_list_help = {
	.summary = "Display flagspaces",
	.args = flag_space_list_args,
};

static const RzCmdDescArg flag_space_remove_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_space_remove_help = {
	.summary = "Remove the flagspace",
	.args = flag_space_remove_args,
};

static const RzCmdDescArg flag_space_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_space_remove_all_help = {
	.summary = "Remove all flagspaces",
	.args = flag_space_remove_all_args,
};

static const RzCmdDescArg flag_space_move_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_space_move_help = {
	.summary = "Move the flags at the current address to the current flagspace",
	.args = flag_space_move_args,
};

static const RzCmdDescArg flag_space_rename_args[] = {
	{
		.name = "newname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_space_rename_help = {
	.summary = "Rename the flag space",
	.args = flag_space_rename_args,
};

static const RzCmdDescHelp fss_help = {
	.summary = "Manage the flagspace stack",
};
static const RzCmdDescArg flag_space_stack_push_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_space_stack_push_help = {
	.summary = "Push the flagspace to the stack",
	.args = flag_space_stack_push_args,
};

static const RzCmdDescArg flag_space_stack_pop_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_space_stack_pop_help = {
	.summary = "Pop the flagspace from the stack",
	.args = flag_space_stack_pop_args,
};

static const RzCmdDescArg flag_space_stack_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_space_stack_list_help = {
	.summary = "Display flagspace stack",
	.args = flag_space_stack_list_args,
};

static const RzCmdDescHelp ft_help = {
	.summary = "Flag tags",
};
static const RzCmdDescArg flag_tag_add_args[] = {
	{
		.name = "tag",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "words",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_tag_add_help = {
	.summary = "Set a list of words for the given tag",
	.args = flag_tag_add_args,
};

static const RzCmdDescArg flag_tag_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_tag_list_help = {
	.summary = "List all flag tags",
	.args = flag_tag_list_args,
};

static const RzCmdDescArg flag_tag_search_args[] = {
	{
		.name = "tag",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_tag_search_help = {
	.summary = "Find all matching flag names for the given tag",
	.args = flag_tag_search_args,
};

static const RzCmdDescHelp fz_help = {
	.summary = "Flag zones",
};
static const RzCmdDescArg flag_zone_add_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_zone_add_help = {
	.summary = "Add new flagzone with [name]",
	.args = flag_zone_add_args,
};

static const RzCmdDescArg flag_zone_remove_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_zone_remove_help = {
	.summary = "Remove the flag zone with [name]",
	.args = flag_zone_remove_args,
};

static const RzCmdDescArg flag_zone_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_zone_remove_all_help = {
	.summary = "Remove all flagzones",
	.args = flag_zone_remove_all_args,
};

static const RzCmdDescArg flag_zone_around_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_zone_around_help = {
	.summary = "Show around flag zone context",
	.args = flag_zone_around_args,
};

static const RzCmdDescArg flag_zone_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flag_zone_list_help = {
	.summary = "List all flag zones",
	.args = flag_zone_list_args,
};

static const RzCmdDescArg flag_hexdump_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_FLAG,

	},
	{ 0 },
};
static const RzCmdDescHelp flag_hexdump_help = {
	.summary = "Show hexdump of flag:flagsize",
	.args = flag_hexdump_args,
};

static const RzCmdDescHelp F_help = {
	.summary = "FLIRT signature management",
};
static const RzCmdDescArg flirt_create_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp flirt_create_help = {
	.summary = "Create a FLIRT file (.pat or .sig)",
	.args = flirt_create_args,
};

static const RzCmdDescArg flirt_dump_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp flirt_dump_help = {
	.summary = "Open a FLIRT file (.pat or .sig) and dumps its contents",
	.args = flirt_dump_args,
};

static const RzCmdDescArg flirt_scan_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp flirt_scan_help = {
	.summary = "Open a FLIRT file (.pat or .sig) and tries to apply the signatures to the loaded binary",
	.args = flirt_scan_args,
};

static const RzCmdDescArg flirt_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp flirt_function_help = {
	.summary = "Outputs the flirt function signature info",
	.args = flirt_function_args,
};

static const RzCmdDescArg apply_signatures_from_sigdb_args[] = {
	{
		.name = "filter",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp apply_signatures_from_sigdb_help = {
	.summary = "Apply signatures from sigdb",
	.args = apply_signatures_from_sigdb_args,
};

static const RzCmdDescArg list_signatures_in_sigdb_args[] = {
	{ 0 },
};
static const RzCmdDescHelp list_signatures_in_sigdb_help = {
	.summary = "Lists all available signatures in sigdb",
	.args = list_signatures_in_sigdb_args,
};

static const RzCmdDescHelp g_help = {
	.summary = "Generate shellcodes with rz_egg",
};
static const RzCmdDescArg egg_compile_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp egg_compile_help = {
	.summary = "Compile the shellcode",
	.args = egg_compile_args,
};

static const RzCmdDescDetailEntry egg_config_Examples_detail_entries[] = {
	{ .text = "gc", .arg_str = " egg.encoder", .comment = "Show current value of config variable `egg.encoder`" },
	{ .text = "gc", .arg_str = " egg.encoder=xor", .comment = "Set config variable `egg.encoder` to `xor`" },
	{ 0 },
};
static const RzCmdDescDetail egg_config_details[] = {
	{ .name = "Examples", .entries = egg_config_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg egg_config_args[] = {
	{
		.name = "key=value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp egg_config_help = {
	.summary = "Get/Set config option for shellcode / List all config options",
	.args_str = " <key>[=<val>] [<key>[=<val>] ...]]",
	.details = egg_config_details,
	.args = egg_config_args,
};

static const RzCmdDescArg egg_list_plugins_args[] = {
	{ 0 },
};
static const RzCmdDescHelp egg_list_plugins_help = {
	.summary = "List shellcode and encoder plugins",
	.args = egg_list_plugins_args,
};

static const RzCmdDescArg egg_syscall_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp egg_syscall_help = {
	.summary = "Compile syscall \"name(args)\"",
	.args = egg_syscall_args,
};

static const RzCmdDescArg egg_type_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp egg_type_help = {
	.summary = "Define the shellcode type",
	.args = egg_type_args,
};

static const RzCmdDescArg egg_padding_args[] = {
	{
		.name = "padding",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp egg_padding_help = {
	.summary = "Define padding for command",
	.args = egg_padding_args,
};

static const RzCmdDescArg egg_encoder_args[] = {
	{
		.name = "encoder",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp egg_encoder_help = {
	.summary = "Specify an encoder and a key",
	.args = egg_encoder_args,
};

static const RzCmdDescArg egg_reset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp egg_reset_help = {
	.summary = "Reset the shellcode configuration",
	.args = egg_reset_args,
};

static const RzCmdDescArg egg_show_config_args[] = {
	{ 0 },
};
static const RzCmdDescHelp egg_show_config_help = {
	.summary = "Show the current configuration",
	.args = egg_show_config_args,
};

static const RzCmdDescArg help_args[] = {
	{ 0 },
};
static const RzCmdDescHelp help_help = {
	.summary = "Generic help",
	.args = help_args,
};

static const RzCmdDescHelp H_help = {
	.summary = "Rizin history commands.",
};
static const RzCmdDescDetailEntry history_list_or_exec_Examples_detail_entries[] = {
	{ .text = "H", .arg_str = "", .comment = "Shows the current session history" },
	{ .text = "H", .arg_str = " 12", .comment = "Executes a history command with index value of 12" },
	{ 0 },
};
static const RzCmdDescDetail history_list_or_exec_details[] = {
	{ .name = "Examples", .entries = history_list_or_exec_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg history_list_or_exec_args[] = {
	{
		.name = "index",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp history_list_or_exec_help = {
	.summary = "Shows the history in current session or executes an history command via its index.",
	.details = history_list_or_exec_details,
	.args = history_list_or_exec_args,
};

static const RzCmdDescArg history_clear_args[] = {
	{ 0 },
};
static const RzCmdDescHelp history_clear_help = {
	.summary = "Clears the history in current session",
	.args = history_clear_args,
};

static const RzCmdDescArg history_save_args[] = {
	{ 0 },
};
static const RzCmdDescHelp history_save_help = {
	.summary = "Saves the history of the current session",
	.args = history_save_args,
};

static const RzCmdDescHelp i_help = {
	.summary = "Get info about opened binary file",
};
static const RzCmdDescArg cmd_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_help = {
	.summary = "Show info of current file",
	.args = cmd_info_args,
};

static const RzCmdDescArg cmd_info_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_all_help = {
	.summary = "Show a summary of all info (imports, exports, sections, etc.)",
	.args = cmd_info_all_args,
};

static const RzCmdDescArg cmd_info_archs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_archs_help = {
	.summary = "List archs",
	.args = cmd_info_archs_args,
};

static const RzCmdDescHelp ic_help = {
	.summary = "List classes, fields and methods",
};
static const RzCmdDescArg cmd_info_classes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_classes_help = {
	.summary = "List classes",
	.args = cmd_info_classes_args,
};

static const RzCmdDescArg cmd_info_class_as_source_args[] = {
	{
		.name = "class name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_class_as_source_help = {
	.summary = "Prints class, fields and methods as source code",
	.args = cmd_info_class_as_source_args,
};

static const RzCmdDescArg cmd_info_class_fields_args[] = {
	{
		.name = "class name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_class_fields_help = {
	.summary = "List class fields",
	.args = cmd_info_class_fields_args,
};

static const RzCmdDescArg cmd_info_class_methods_args[] = {
	{
		.name = "class name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_class_methods_help = {
	.summary = "List class methods",
	.args = cmd_info_class_methods_args,
};

static const RzCmdDescArg cmd_info_signature_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_signature_help = {
	.summary = "Show signature info (entitlements, ...)",
	.args = cmd_info_signature_args,
};

static const RzCmdDescHelp id_help = {
	.summary = "Debug commands",
};
static const RzCmdDescArg cmd_info_dwarf_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_dwarf_help = {
	.summary = "Show DWARF source lines information",
	.args = cmd_info_dwarf_args,
};

static const RzCmdDescHelp idp_help = {
	.summary = "PDB commands",
};
static const RzCmdDescArg cmd_info_pdb_load_args[] = {
	{
		.name = "file.pdb",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_pdb_load_help = {
	.summary = "Load PDB file information",
	.args = cmd_info_pdb_load_args,
};

static const RzCmdDescArg cmd_info_pdb_show_args[] = {
	{
		.name = "file.pdb",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_pdb_show_help = {
	.summary = "Show PDB file information",
	.args = cmd_info_pdb_show_args,
};

static const RzCmdDescArg cmd_info_pdb_download_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_pdb_download_help = {
	.summary = "Download PDB file on remote server",
	.args = cmd_info_pdb_download_args,
};

static const RzCmdDescArg cmd_pdb_extract_args[] = {
	{
		.name = "file.pdb",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "output_dir",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_pdb_extract_help = {
	.summary = "Extracts a compressed PDB file to a folder",
	.args = cmd_pdb_extract_args,
};

static const RzCmdDescHelp iD_help = {
	.summary = "Demangle symbol for given language",
};
static const RzCmdDescArg cmd_info_demangle_args[] = {
	{
		.name = "lang",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.choices.choices_cb = rz_cmd_info_demangle_lang_choices,

	},
	{
		.name = "symbol",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_demangle_help = {
	.summary = "Demangle symbol for given language",
	.args = cmd_info_demangle_args,
};

static const RzCmdDescArg cmd_info_demangle_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_demangle_list_help = {
	.summary = "Lists the available demanglers",
	.args = cmd_info_demangle_list_args,
};

static const RzCmdDescArg cmd_info_entry_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_entry_help = {
	.summary = "List entrypoints",
	.args = cmd_info_entry_args,
};

static const RzCmdDescArg cmd_info_entryexits_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_entryexits_help = {
	.summary = "List entries/exits functions (e.g. preinit, init, fini)",
	.args = cmd_info_entryexits_args,
};

static const RzCmdDescHelp iE_help = {
	.summary = "List exports",
};
static const RzCmdDescArg cmd_info_exports_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_exports_help = {
	.summary = "List exports (global symbols)",
	.args = cmd_info_exports_args,
};

static const RzCmdDescArg cmd_info_cur_export_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_cur_export_help = {
	.summary = "List export at current offset",
	.args = cmd_info_cur_export_args,
};

static const RzCmdDescArg cmd_info_fields_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_fields_help = {
	.summary = "Show binary fields",
	.args = cmd_info_fields_args,
};

static const RzCmdDescArg cmd_info_headers_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_headers_help = {
	.summary = "Show binary headers",
	.args = cmd_info_headers_args,
};

static const RzCmdDescArg cmd_info_imports_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_imports_help = {
	.summary = "List imports",
	.args = cmd_info_imports_args,
};

static const RzCmdDescArg cmd_info_binary_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_binary_help = {
	.summary = "Show binary info",
	.args = cmd_info_binary_args,
};

static const RzCmdDescHelp ik_help = {
	.summary = "Query key-value database from RzBinObject",
};
static const RzCmdDescDetailEntry cmd_info_query_Examples_detail_entries[] = {
	{ .text = "ik", .arg_str = NULL, .comment = "Show all key value pairs in the root namespace (same as 'ik *')." },
	{ .text = "ik", .arg_str = " **", .comment = "Show all namespaces under root" },
	{ .text = "ik", .arg_str = " versioninfo/versym/*", .comment = "Show all key value pairs in the 'versioninfo/versym/' namespace." },
	{ 0 },
};
static const RzCmdDescDetail cmd_info_query_details[] = {
	{ .name = "Examples", .entries = cmd_info_query_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_info_query_args[] = {
	{
		.name = "sdb-query",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_query_help = {
	.summary = "Query key-value database from RzBinObject",
	.details = cmd_info_query_details,
	.args = cmd_info_query_args,
};

static const RzCmdDescArg cmd_info_show_header_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_show_header_info_help = {
	.summary = "Show all binary header information.",
	.args = cmd_info_show_header_info_args,
};

static const RzCmdDescArg cmd_info_libs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_libs_help = {
	.summary = "List libraries",
	.args = cmd_info_libs_args,
};

static const RzCmdDescArg cmd_info_plugins_args[] = {
	{
		.name = "plugin",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_plugins_help = {
	.summary = "List all binary plugins loaded / Show plugin details",
	.args = cmd_info_plugins_args,
};

static const RzCmdDescArg cmd_info_memory_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_memory_help = {
	.summary = "Show info about predefined memory allocation",
	.args = cmd_info_memory_args,
};

static const RzCmdDescArg cmd_info_main_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_main_help = {
	.summary = "Show main address",
	.args = cmd_info_main_args,
};

static const RzCmdDescArg cmd_info_relocs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_relocs_help = {
	.summary = "List relocations",
	.args = cmd_info_relocs_args,
};

static const RzCmdDescArg cmd_info_resources_args[] = {
	{
		.name = "digests",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_resources_help = {
	.summary = "List Resources",
	.args = cmd_info_resources_args,
};

static const RzCmdDescArg cmd_info_symbols_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_symbols_help = {
	.summary = "List symbols",
	.args = cmd_info_symbols_args,
};

static const RzCmdDescArg cmd_info_cur_symbol_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_cur_symbol_help = {
	.summary = "Current symbol",
	.args = cmd_info_cur_symbol_args,
};

static const RzCmdDescArg cmd_info_sections_args[] = {
	{
		.name = "digests",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_sections_help = {
	.summary = "List sections",
	.args = cmd_info_sections_args,
};

static const RzCmdDescArg cmd_info_cur_section_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_cur_section_help = {
	.summary = "Current section",
	.args = cmd_info_cur_section_args,
};

static const RzCmdDescArg cmd_info_section_bars_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_section_bars_help = {
	.summary = "Show ascii-art color bars with the section ranges",
	.args = cmd_info_section_bars_args,
};

static const RzCmdDescArg cmd_info_segments_args[] = {
	{
		.name = "digests",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_info_segments_help = {
	.summary = "List segments",
	.args = cmd_info_segments_args,
};

static const RzCmdDescArg cmd_info_cur_segment_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_cur_segment_help = {
	.summary = "Current segment",
	.args = cmd_info_cur_segment_args,
};

static const RzCmdDescArg cmd_info_hashes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_hashes_help = {
	.summary = "Show file hashes",
	.args = cmd_info_hashes_args,
};

static const RzCmdDescArg cmd_info_versions_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_versions_help = {
	.summary = "Display file version info",
	.args = cmd_info_versions_args,
};

static const RzCmdDescArg cmd_info_trycatch_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_trycatch_help = {
	.summary = "Show try/catch blocks",
	.args = cmd_info_trycatch_args,
};

static const RzCmdDescArg cmd_info_sourcelines_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_sourcelines_help = {
	.summary = "Display source file line info",
	.args = cmd_info_sourcelines_args,
};

static const RzCmdDescArg cmd_info_sourcelines_here_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_sourcelines_here_help = {
	.summary = "Display source file line info at current address",
	.args = cmd_info_sourcelines_here_args,
};

static const RzCmdDescArg cmd_info_source_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_source_help = {
	.summary = "Display source file info",
	.args = cmd_info_source_args,
};

static const RzCmdDescHelp iz_help = {
	.summary = "String commands",
};
static const RzCmdDescArg cmd_info_strings_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_strings_help = {
	.summary = "List strings",
	.description = "Lists the strings; the behavior can be modified via str.search.*",
	.args = cmd_info_strings_args,
};

static const RzCmdDescArg cmd_info_whole_strings_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_whole_strings_help = {
	.summary = "List strings in the whole binary",
	.description = "Lists the strings of the whole binary; the behavior can be modified via str.search.*",
	.args = cmd_info_whole_strings_args,
};

static const RzCmdDescArg cmd_info_purge_string_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_purge_string_help = {
	.summary = "Purge string at current address via bin.str.purge",
	.args = cmd_info_purge_string_args,
};

static const RzCmdDescArg cmd_info_xrefs_strings_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_xrefs_strings_help = {
	.summary = "List all strings which have xrefs to them.",
	.args = cmd_info_xrefs_strings_args,
};

static const RzCmdDescArg cmd_info_guess_size_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_info_guess_size_help = {
	.summary = "Guess size of binary program",
	.args = cmd_info_guess_size_args,
};

static const RzCmdDescHelp k_help = {
	.summary = "Run query (SDB)",
};
static const RzCmdDescDetailEntry query_sdb_get_set_Examples_detail_entries[] = {
	{ .text = "k", .arg_str = NULL, .comment = "List all keys in root namespace." },
	{ .text = "k", .arg_str = " **", .comment = "List namespaces under root." },
	{ .text = "k", .arg_str = " analysis/**", .comment = "List namespaces under 'analysis'." },
	{ .text = "k", .arg_str = " analysis/meta/*", .comment = "List key-value pairs under the 'analysis.meta' namespace." },
	{ .text = "k", .arg_str = " analysis/meta/meta.0x80404", .comment = "Show value of key 'meta.0x80404'." },
	{ .text = "k", .arg_str = " foo", .comment = "Show value of key 'foo'." },
	{ .text = "k", .arg_str = " foo=bar", .comment = "Set key 'foo' to value 'bar'" },
	{ 0 },
};
static const RzCmdDescDetail query_sdb_get_set_details[] = {
	{ .name = "Examples", .entries = query_sdb_get_set_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg query_sdb_get_set_args[] = {
	{
		.name = "key=value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp query_sdb_get_set_help = {
	.summary = "Get or set a value from the SDB.",
	.args_str = " [<key>[=<val>]]",
	.details = query_sdb_get_set_details,
	.args = query_sdb_get_set_args,
};

static const RzCmdDescArg query_dump_json_args[] = {
	{ 0 },
};
static const RzCmdDescHelp query_dump_json_help = {
	.summary = "List all namespaces under 'analysis/' and sdb databases in JSON format (SDB).",
	.args = query_dump_json_args,
};

static const RzCmdDescArg query_shell_sdb_args[] = {
	{
		.name = "namespace",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp query_shell_sdb_help = {
	.summary = "Enter query shell (SDB).",
	.args = query_shell_sdb_args,
};

static const RzCmdDescArg sdb_namespace_dump_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "namespace",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp sdb_namespace_dump_help = {
	.summary = "Dump namespace to file (SDB).",
	.args = sdb_namespace_dump_args,
};

static const RzCmdDescArg sdb_namespace_load_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "namespace",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp sdb_namespace_load_help = {
	.summary = "Load namespace from file (SDB).",
	.args = sdb_namespace_load_args,
};

static const RzCmdDescHelp L_help = {
	.summary = "List, unload, load rizin plugins",
};
static const RzCmdDescArg plugins_load_args[] = {
	{
		.name = "plugin_file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp plugins_load_help = {
	.summary = "Load a plugin from file",
	.args = plugins_load_args,
};

static const RzCmdDescArg plugins_unload_args[] = {
	{
		.name = "plugin_file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp plugins_unload_help = {
	.summary = "Unload a plugin from file",
	.args = plugins_unload_args,
};

static const RzCmdDescArg plugins_lang_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_lang_print_help = {
	.summary = "List the lang plugins",
	.args = plugins_lang_print_args,
};

static const RzCmdDescHelp La_help = {
	.summary = "List the asm/analysis plugins",
};
static const RzCmdDescDetailEntry plugins_asm_print_Legend_detail_entries[] = {
	{ .text = "a", .arg_str = NULL, .comment = "Analysis plugin" },
	{ .text = "d", .arg_str = NULL, .comment = "Disassembler plugin" },
	{ .text = "A", .arg_str = NULL, .comment = "Assembler plugin" },
	{ .text = "e", .arg_str = NULL, .comment = "ESIL Support" },
	{ .text = "I", .arg_str = NULL, .comment = "RzIL Support" },
	{ 0 },
};
static const RzCmdDescDetail plugins_asm_print_details[] = {
	{ .name = "Legend", .entries = plugins_asm_print_Legend_detail_entries },
	{ 0 },
};
static const RzCmdDescArg plugins_asm_print_args[] = {
	{
		.name = "features",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp plugins_asm_print_help = {
	.summary = "List the arch plugins",
	.details = plugins_asm_print_details,
	.args = plugins_asm_print_args,
};

static const RzCmdDescArg plugins_asm_cpu_print_args[] = {
	{
		.name = "architecture",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp plugins_asm_cpu_print_help = {
	.summary = "List the cpus supported by the arch plugin",
	.args = plugins_asm_cpu_print_args,
};

static const RzCmdDescArg plugins_core_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_core_print_help = {
	.summary = "List the core plugins",
	.args = plugins_core_print_args,
};

static const RzCmdDescArg plugins_crypto_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_crypto_print_help = {
	.summary = "List the crypto plugins",
	.args = plugins_crypto_print_args,
};

static const RzCmdDescArg plugins_debug_print_args[] = {
	{
		.name = "handler",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp plugins_debug_print_help = {
	.summary = "List debug plugins / Set debug backend (e dbg.backend)",
	.args = plugins_debug_print_args,
};

static const RzCmdDescArg plugins_hash_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_hash_print_help = {
	.summary = "List the hash plugins",
	.args = plugins_hash_print_args,
};

static const RzCmdDescArg plugins_bin_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_bin_print_help = {
	.summary = "List the bin plugins",
	.args = plugins_bin_print_args,
};

static const RzCmdDescArg plugins_io_print_args[] = {
	{
		.name = "path",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp plugins_io_print_help = {
	.summary = "List IO plugins / Register IO plugin from <path>",
	.args = plugins_io_print_args,
};

static const RzCmdDescArg plugins_parser_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_parser_print_help = {
	.summary = "List the parser plugins",
	.args = plugins_parser_print_args,
};

static const RzCmdDescArg plugins_demanglers_print_args[] = {
	{ 0 },
};
static const RzCmdDescHelp plugins_demanglers_print_help = {
	.summary = "List the demanglers plugins (alias for iDl)",
	.args = plugins_demanglers_print_args,
};

static const RzCmdDescHelp o_help = {
	.summary = "Open files and handle opened files",
};
static const RzCmdDescArg open_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "perm",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_help = {
	.summary = "Open <file>",
	.args = open_args,
};

static const RzCmdDescArg open_write_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "perm",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_write_help = {
	.summary = "Open <file> in write mode",
	.args = open_write_args,
};

static const RzCmdDescArg open_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_list_help = {
	.summary = "List opened files",
	.args = open_list_args,
};

static const RzCmdDescArg open_show_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_show_current_help = {
	.summary = "Show currently opened file",
	.args = open_show_current_args,
};

static const RzCmdDescArg open_close_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_close_help = {
	.summary = "Close file descriptor",
	.args = open_close_args,
};

static const RzCmdDescArg open_close_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_close_all_help = {
	.summary = "Close all files",
	.args = open_close_all_args,
};

static const RzCmdDescArg open_core_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp open_core_file_help = {
	.summary = "Close all opened files and open <file>, like relaunching rizin",
	.args = open_core_file_args,
};

static const RzCmdDescArg open_malloc_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_malloc_help = {
	.summary = "Open a 'malloc://<len>' file, copying the bytes from current offset",
	.args = open_malloc_args,
};

static const RzCmdDescHelp on_help = {
	.summary = "Open files without parsing binary info",
};
static const RzCmdDescArg open_nobin_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "perm",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_nobin_help = {
	.summary = "Open <file> without parsing binary info",
	.args = open_nobin_args,
};

static const RzCmdDescArg open_nobin_write_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "perm",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_nobin_write_help = {
	.summary = "Open <file> in write mode, without parsing binary info",
	.args = open_nobin_write_args,
};

static const RzCmdDescHelp oo_help = {
	.summary = "Reopen current file",
};
static const RzCmdDescArg reopen_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp reopen_help = {
	.summary = "Reopen current file or file <fd>",
	.args = reopen_args,
};

static const RzCmdDescArg reopen_write_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp reopen_write_help = {
	.summary = "Reopen current file or file <fd> in write mode",
	.args = reopen_write_args,
};

static const RzCmdDescArg reopen_binary_args[] = {
	{
		.name = "baddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp reopen_binary_help = {
	.summary = "Reopen current file and reload binary information",
	.args = reopen_binary_args,
};

static const RzCmdDescArg reopen_core_args[] = {
	{ 0 },
};
static const RzCmdDescHelp reopen_core_help = {
	.summary = "Reopen current file as if restarting rizin",
	.args = reopen_core_args,
};

static const RzCmdDescHelp ood_help = {
	.summary = "Reopen current file in debug mode",
};
static const RzCmdDescArg reopen_debug_args[] = {
	{
		.name = "args",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp reopen_debug_help = {
	.summary = "Reopen current file in debug mode",
	.args = reopen_debug_args,
};

static const RzCmdDescArg reopen_debug_file_args[] = {
	{
		.name = "uri",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp reopen_debug_file_help = {
	.summary = "Open <uri> in debug mode",
	.args = reopen_debug_file_args,
};

static const RzCmdDescArg reopen_debug_rzrun_args[] = {
	{
		.name = "rz-run-directives",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp reopen_debug_rzrun_help = {
	.summary = "Reopen current file in debug mode with given rz-run directives",
	.args = reopen_debug_rzrun_args,
};

static const RzCmdDescArg reopen_malloc_args[] = {
	{ 0 },
};
static const RzCmdDescHelp reopen_malloc_help = {
	.summary = "Reopen curent file in malloc://",
	.args = reopen_malloc_args,
};

static const RzCmdDescArg reopen_nobin_args[] = {
	{ 0 },
};
static const RzCmdDescHelp reopen_nobin_help = {
	.summary = "Reopen curent file without loading binary information",
	.args = reopen_nobin_args,
};

static const RzCmdDescArg reopen_nobin_write_args[] = {
	{ 0 },
};
static const RzCmdDescHelp reopen_nobin_write_help = {
	.summary = "Reopen curent file in write-mode without loading binary information",
	.args = reopen_nobin_write_args,
};

static const RzCmdDescArg reopen_nobin_headers_args[] = {
	{ 0 },
};
static const RzCmdDescHelp reopen_nobin_headers_help = {
	.summary = "Reopen curent file without loading binary information but with header flags",
	.args = reopen_nobin_headers_args,
};

static const RzCmdDescArg reopen_nobin_write_headers_args[] = {
	{ 0 },
};
static const RzCmdDescHelp reopen_nobin_write_headers_help = {
	.summary = "Reopen curent file in write-mode without loading binary information but with header flags",
	.args = reopen_nobin_write_headers_args,
};

static const RzCmdDescArg open_plugins_args[] = {
	{
		.name = "path",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_plugins_help = {
	.summary = "List all IO plugins / Register IO plugin from <path>",
	.args = open_plugins_args,
};

static const RzCmdDescArg open_list_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_list_ascii_help = {
	.summary = "List opened files in ASCII-art bars",
	.args = open_list_ascii_args,
};

static const RzCmdDescArg open_arch_bits_args[] = {
	{
		.name = "arch",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "bits",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_arch_bits_help = {
	.summary = "Specify <arch> and <bits> for the file <filename> or the current one if none is specified",
	.args = open_arch_bits_args,
};

static const RzCmdDescHelp ob_help = {
	.summary = "Handle binary files",
};
static const RzCmdDescArg open_binary_select_id_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_binary_select_id_help = {
	.summary = "Switch to binary file with the given <id>",
	.args = open_binary_select_id_args,
};

static const RzCmdDescArg open_binary_select_fd_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_binary_select_fd_help = {
	.summary = "Switch to binary file with the given <fd>",
	.args = open_binary_select_fd_args,
};

static const RzCmdDescArg open_binary_del_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_binary_del_help = {
	.summary = "Delete binary file with the given <id>",
	.args = open_binary_del_args,
};

static const RzCmdDescArg open_binary_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_binary_del_all_help = {
	.summary = "Delete all binary files",
	.args = open_binary_del_all_args,
};

static const RzCmdDescArg open_binary_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_binary_list_help = {
	.summary = "List opened binary files",
	.args = open_binary_list_args,
};

static const RzCmdDescArg open_binary_list_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_binary_list_ascii_help = {
	.summary = "List opened binary files in ASCII art",
	.args = open_binary_list_ascii_args,
};

static const RzCmdDescArg open_binary_show_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_binary_show_help = {
	.summary = "Show id of binary file current address",
	.args = open_binary_show_args,
};

static const RzCmdDescArg open_binary_add_args[] = {
	{
		.name = "loadaddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "0",

	},
	{ 0 },
};
static const RzCmdDescHelp open_binary_add_help = {
	.summary = "Open binary file for current file and load binary info with baseaddr at current offset",
	.args = open_binary_add_args,
};

static const RzCmdDescArg open_binary_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_binary_file_help = {
	.summary = "Load binary info for the given file or current one with baseaddr at current offset",
	.args = open_binary_file_args,
};

static const RzCmdDescArg open_binary_reload_args[] = {
	{
		.name = "baddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "0",

	},
	{ 0 },
};
static const RzCmdDescHelp open_binary_reload_help = {
	.summary = "Reload the current buffer for setting of the bin (use once only)",
	.args = open_binary_reload_args,
};

static const RzCmdDescArg open_use_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_use_help = {
	.summary = "Use specified <fd>",
	.args = open_use_args,
};

static const RzCmdDescHelp op_help = {
	.summary = "Select prioritized file",
};
static const RzCmdDescArg open_prioritize_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_prioritize_help = {
	.summary = "Prioritize file with file descriptor <fd>",
	.args = open_prioritize_args,
};

static const RzCmdDescArg open_prioritize_next_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_prioritize_next_help = {
	.summary = "Prioritize next file in the list",
	.args = open_prioritize_next_args,
};

static const RzCmdDescArg open_prioritize_prev_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_prioritize_prev_help = {
	.summary = "Prioritize previous file in the list",
	.args = open_prioritize_prev_args,
};

static const RzCmdDescArg open_prioritize_next_rotate_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_prioritize_next_rotate_help = {
	.summary = "Prioritize next file in the list (go back to first if on the last)",
	.args = open_prioritize_next_rotate_args,
};

static const RzCmdDescHelp om_help = {
	.summary = "Handle IO maps",
};
static const RzCmdDescArg open_maps_map_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "vaddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "paddr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "flags",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_map_help = {
	.summary = "Create a new map",
	.args = open_maps_map_args,
};

static const RzCmdDescArg open_maps_list_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_list_help = {
	.summary = "List maps of all file descriptor or only the specified <fd>",
	.args = open_maps_list_args,
};

static const RzCmdDescArg open_maps_list_cur_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_maps_list_cur_help = {
	.summary = "Show map at the current offset",
	.args = open_maps_list_cur_args,
};

static const RzCmdDescArg open_maps_list_ascii_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_maps_list_ascii_help = {
	.summary = "List IO maps in ASCII art",
	.args = open_maps_list_ascii_args,
};

static const RzCmdDescArg open_maps_remove_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_remove_help = {
	.summary = "Remove the IO map with corresponding <id>",
	.args = open_maps_remove_args,
};

static const RzCmdDescArg open_maps_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_maps_remove_all_help = {
	.summary = "Remove all IO maps",
	.args = open_maps_remove_all_args,
};

static const RzCmdDescArg open_maps_all_fd_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_all_fd_help = {
	.summary = "Create a IO map covering all VA for given <fd> or current one if not provided",
	.args = open_maps_all_fd_args,
};

static const RzCmdDescArg open_maps_relocate_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_relocate_help = {
	.summary = "Relocate map with corresponding <id> to <addr>",
	.args = open_maps_relocate_args,
};

static const RzCmdDescArg open_maps_relocate_current_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_relocate_current_help = {
	.summary = "Relocate map at current offset to <addr>",
	.args = open_maps_relocate_current_args,
};

static const RzCmdDescArg open_maps_flags_args[] = {
	{
		.name = "flags",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_flags_help = {
	.summary = "Change flags/perms for map with given <id> or current one",
	.args = open_maps_flags_args,
};

static const RzCmdDescArg open_maps_flags_global_args[] = {
	{
		.name = "flags",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_flags_global_help = {
	.summary = "Change flags/perms for all maps",
	.description = "Update flags of all maps. If <flags> starts with a +, the specified flags are added to the maps. If <flags> starts with a -, the specified flags are removed from the maps. Otherwise, the exact <flags> are set for each map.",
	.args = open_maps_flags_global_args,
};

static const RzCmdDescArg open_maps_map_fd_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_map_fd_help = {
	.summary = "Create default map for given <fd> or current one",
	.args = open_maps_map_fd_args,
};

static const RzCmdDescHelp omn_help = {
	.summary = "Handle maps names",
};
static const RzCmdDescArg open_maps_name_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_name_help = {
	.summary = "Set name of map which spans current seek",
	.args = open_maps_name_args,
};

static const RzCmdDescArg open_maps_name_del_args[] = {
	{ 0 },
};
static const RzCmdDescHelp open_maps_name_del_help = {
	.summary = "Delete name of map which spans current seek",
	.args = open_maps_name_del_args,
};

static const RzCmdDescArg open_maps_name_id_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_name_id_help = {
	.summary = "Set name of map with map <id>",
	.args = open_maps_name_id_args,
};

static const RzCmdDescArg open_maps_name_id_del_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_name_id_del_help = {
	.summary = "Delete name of map with map <id>",
	.args = open_maps_name_id_del_args,
};

static const RzCmdDescArg open_maps_resize_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "newsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_resize_help = {
	.summary = "Resize map with corresponding <id>",
	.args = open_maps_resize_args,
};

static const RzCmdDescHelp omp_help = {
	.summary = "Prioritize maps",
};
static const RzCmdDescArg open_maps_prioritize_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_prioritize_help = {
	.summary = "Prioritize map with the corresponding id",
	.args = open_maps_prioritize_args,
};

static const RzCmdDescArg open_maps_prioritize_binid_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_prioritize_binid_help = {
	.summary = "Prioritize maps of the bin associated with the binid",
	.args = open_maps_prioritize_binid_args,
};

static const RzCmdDescArg open_maps_deprioritize_args[] = {
	{
		.name = "id",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_deprioritize_help = {
	.summary = "Deprioritize map with the corresponding id",
	.args = open_maps_deprioritize_args,
};

static const RzCmdDescArg open_maps_prioritize_fd_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_maps_prioritize_fd_help = {
	.summary = "Prioritize map by fd",
	.args = open_maps_prioritize_fd_args,
};

static const RzCmdDescArg open_exchange_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "fdx",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp open_exchange_help = {
	.summary = "Exchange the descs of <fd> and <fdx> and keep the mapping",
	.args = open_exchange_args,
};

static const RzCmdDescHelp cmd_print_help = {
	.summary = "Print commands",
};
static const RzCmdDescArg cmd_print_2bpp_tiles_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_2bpp_tiles_help = {
	.summary = "Print 8x8 2bpp tiles.",
	.args = cmd_print_2bpp_tiles_args,
};

static const RzCmdDescHelp p8_help = {
	.summary = "Print 8bit hexpair list of bytes.",
};
static const RzCmdDescArg cmd_print_8bit_hexpair_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_8bit_hexpair_help = {
	.summary = "Print 8bit hexpair list of bytes.",
	.args = cmd_print_8bit_hexpair_args,
};

static const RzCmdDescArg cmd_print_8bit_hexpair_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_8bit_hexpair_function_help = {
	.summary = "Print 8bit hexpair list of bytes in function (linear).",
	.args = cmd_print_8bit_hexpair_function_args,
};

static const RzCmdDescArg print_bitstream_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.default_value = "0",

	},
	{ 0 },
};
static const RzCmdDescHelp print_bitstream_help = {
	.summary = "Print bitstream of <n> bits, skipping the first <skip> bits.",
	.args = print_bitstream_args,
};

static const RzCmdDescArg print_byte_bitstream_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_byte_bitstream_help = {
	.summary = "Print bitstream of <n> bytes",
	.args = print_byte_bitstream_args,
};

static const RzCmdDescHelp pa_help = {
	.summary = "Print (dis)assembly of given hexpairs/assembly",
};
static const RzCmdDescArg hex_of_assembly_args[] = {
	{
		.name = "assembly",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp hex_of_assembly_help = {
	.summary = "Print hexpairs of the given assembly expression",
	.args = hex_of_assembly_args,
};

static const RzCmdDescArg esil_of_assembly_args[] = {
	{
		.name = "assembly",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp esil_of_assembly_help = {
	.summary = "Print ESIL expression of the given assembly expression",
	.args = esil_of_assembly_args,
};

static const RzCmdDescArg assembly_of_hex_args[] = {
	{
		.name = "hexpair",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp assembly_of_hex_help = {
	.summary = "Print assembly expression from hexpairs (alias for pix)",
	.args = assembly_of_hex_args,
};

static const RzCmdDescArg esil_of_hex_args[] = {
	{
		.name = "hexpair",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp esil_of_hex_help = {
	.summary = "Print ESIL expression from hexpairs",
	.args = esil_of_hex_args,
};

static const RzCmdDescDetailEntry cmd_print_byte_array_Useful_space_modifiers_detail_entries[] = {
	{ .text = "pch @e:cfg.bigendian=<true|false>", .arg_str = NULL, .comment = "Change endianness for pch, pcw and pcd commands" },
	{ .text = "pc @! <n>", .arg_str = NULL, .comment = "Change the N of bytes (i.e. block size)." },
	{ 0 },
};

static const RzCmdDescDetailEntry cmd_print_byte_array_Example_space_of_space_usages_detail_entries[] = {
	{ .text = "pch @! 64 @e:cfg.bigendian=true", .arg_str = NULL, .comment = "Generate a C 32 bits array in big endian format, using 64 bytes" },
	{ .text = "pcp 1024", .arg_str = NULL, .comment = "Generate a Python byte array of size 1024" },
	{ .text = "pcj 10", .arg_str = NULL, .comment = "Generate a JSON bytes array of size 10" },
	{ 0 },
};
static const RzCmdDescDetail cmd_print_byte_array_details[] = {
	{ .name = "Useful modifiers", .entries = cmd_print_byte_array_Useful_space_modifiers_detail_entries },
	{ .name = "Example of usages", .entries = cmd_print_byte_array_Example_space_of_space_usages_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_help = {
	.summary = "Print bytes as code byte arrays.",
	.details = cmd_print_byte_array_details,
};
static const RzCmdDescArg cmd_print_byte_array_c_cpp_bytes_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_c_cpp_bytes_help = {
	.summary = "Generate a C/C++ byte array.",
	.args = cmd_print_byte_array_c_cpp_bytes_args,
};

static const RzCmdDescArg cmd_print_byte_array_c_cpp_half_word_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_c_cpp_half_word_help = {
	.summary = "Generate a C/C++ 16 bits array.",
	.args = cmd_print_byte_array_c_cpp_half_word_args,
};

static const RzCmdDescArg cmd_print_byte_array_c_cpp_word_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_c_cpp_word_help = {
	.summary = "Generate a C/C++ 32 bits array.",
	.args = cmd_print_byte_array_c_cpp_word_args,
};

static const RzCmdDescArg cmd_print_byte_array_c_cpp_double_word_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_c_cpp_double_word_help = {
	.summary = "Generate a C/C++ 64 bits array.",
	.args = cmd_print_byte_array_c_cpp_double_word_args,
};

static const RzCmdDescArg cmd_print_byte_array_asm_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_asm_help = {
	.summary = "Generate a byte array in GAS assembly.",
	.args = cmd_print_byte_array_asm_args,
};

static const RzCmdDescArg cmd_print_byte_array_with_inst_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_with_inst_help = {
	.summary = "Generate a byte array in GAS assembly with instructions in comments.",
	.args = cmd_print_byte_array_with_inst_args,
};

static const RzCmdDescArg cmd_print_byte_array_bash_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_bash_help = {
	.summary = "Generate a bash script with the byte array.",
	.args = cmd_print_byte_array_bash_args,
};

static const RzCmdDescArg cmd_print_byte_array_golang_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_golang_help = {
	.summary = "Generate a Golang byte array.",
	.args = cmd_print_byte_array_golang_args,
};

static const RzCmdDescArg cmd_print_byte_array_java_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_java_help = {
	.summary = "Generate a Java byte array.",
	.args = cmd_print_byte_array_java_args,
};

static const RzCmdDescArg cmd_print_byte_array_json_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_json_help = {
	.summary = "Generate a JSON byte array.",
	.args = cmd_print_byte_array_json_args,
};

static const RzCmdDescArg cmd_print_byte_array_kotlin_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_kotlin_help = {
	.summary = "Generate a Kotlin byte array.",
	.args = cmd_print_byte_array_kotlin_args,
};

static const RzCmdDescArg cmd_print_byte_array_nodejs_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_nodejs_help = {
	.summary = "Generate a NodeJS buffer.",
	.args = cmd_print_byte_array_nodejs_args,
};

static const RzCmdDescArg cmd_print_byte_array_objc_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_objc_help = {
	.summary = "Generate a Objective-C/C++ byte array.",
	.args = cmd_print_byte_array_objc_args,
};

static const RzCmdDescArg cmd_print_byte_array_python_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_python_help = {
	.summary = "Generate a Python byte array.",
	.args = cmd_print_byte_array_python_args,
};

static const RzCmdDescArg cmd_print_byte_array_rust_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_rust_help = {
	.summary = "Generate a Rust byte array.",
	.args = cmd_print_byte_array_rust_args,
};

static const RzCmdDescArg cmd_print_byte_array_swift_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_swift_help = {
	.summary = "Generate a Swift byte array.",
	.args = cmd_print_byte_array_swift_args,
};

static const RzCmdDescArg cmd_print_byte_array_yara_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_yara_help = {
	.summary = "Generate a Yara match pattern.",
	.args = cmd_print_byte_array_yara_args,
};

static const RzCmdDescArg cmd_print_byte_array_rizin_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_byte_array_rizin_help = {
	.summary = "Generate a rizin commands for writing the byte array.",
	.args = cmd_print_byte_array_rizin_args,
};

static const RzCmdDescArg cmd_disassembly_n_bytes_args[] = {
	{
		.name = "n_bytes",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_n_bytes_help = {
	.summary = "Disassemble N bytes (can be negative)",
	.args = cmd_disassembly_n_bytes_args,
};

static const RzCmdDescHelp pC_help = {
	.summary = "Print disassembly in columns",
};
static const RzCmdDescArg print_columns_disassembly_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_columns_disassembly_help = {
	.summary = "Print <len> lines of instructions disassembly in columns",
	.args = print_columns_disassembly_args,
};

static const RzCmdDescArg print_columns_debug_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_columns_debug_help = {
	.summary = "Print <len> lines of the debug registers and stack in columns",
	.args = print_columns_debug_args,
};

static const RzCmdDescArg print_columns_hex_annotated_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_columns_hex_annotated_help = {
	.summary = "Print <len> lines of annotated hexdump in columns",
	.args = print_columns_hex_annotated_args,
};

static const RzCmdDescArg print_columns_hex_op_colored_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_columns_hex_op_colored_help = {
	.summary = "Print <len> lines of op analysis color map in columns",
	.args = print_columns_hex_op_colored_args,
};

static const RzCmdDescArg print_columns_hex_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_columns_hex_help = {
	.summary = "Print <len> lines of hexdump in columns",
	.args = print_columns_hex_args,
};

static const RzCmdDescArg print_columns_hex_words_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_columns_hex_words_help = {
	.summary = "Print <len> lines of 4-byte integer hexdump in columns",
	.args = print_columns_hex_words_args,
};

static const RzCmdDescHelp cmd_print_disassembly_help = {
	.summary = "Print Disassembly",
};
static const RzCmdDescArg cmd_disassembly_n_instructions_args[] = {
	{
		.name = "n_instrs",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_n_instructions_help = {
	.summary = "Disassemble N instructions (can be negative)",
	.args = cmd_disassembly_n_instructions_args,
};

static const RzCmdDescHelp cmd_disassembly_all_opcodes_help = {
	.summary = "Disassemble all possible opcodes (byte per byte)",
};
static const RzCmdDescArg cmd_disassembly_all_possible_opcodes_args[] = {
	{
		.name = "n_bytes",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_all_possible_opcodes_help = {
	.summary = "Disassemble all possible opcodes (byte per byte)",
	.args = cmd_disassembly_all_possible_opcodes_args,
};

static const RzCmdDescArg cmd_disassembly_all_possible_opcodes_treeview_args[] = {
	{
		.name = "n_bytes",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_all_possible_opcodes_treeview_help = {
	.summary = "Disassemble all possible opcodes (treeview)",
	.args = cmd_disassembly_all_possible_opcodes_treeview_args,
};

static const RzCmdDescHelp cmd_disasm_basic_block_help = {
	.summary = "Disassemble basic block",
};
static const RzCmdDescArg cmd_disassembly_basic_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_basic_block_help = {
	.summary = "Disassemble basic block",
	.args = cmd_disassembly_basic_block_args,
};

static const RzCmdDescArg cmd_disassembly_basic_block_as_text_json_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_basic_block_as_text_json_help = {
	.summary = "Disassemble basic block as json containing the printed text",
	.args = cmd_disassembly_basic_block_as_text_json_args,
};

static const RzCmdDescArg cmd_comments_in_n_instructions_args[] = {
	{
		.name = "n_instrs",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_comments_in_n_instructions_help = {
	.summary = "Prints the comments found in N instructions",
	.args = cmd_comments_in_n_instructions_args,
};

static const RzCmdDescArg cmd_disassembly_n_instructions_with_flow_args[] = {
	{
		.name = "n_instrs",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_n_instructions_with_flow_help = {
	.summary = "Disassemble N instructions following execution flow from current PC",
	.args = cmd_disassembly_n_instructions_with_flow_args,
};

static const RzCmdDescHelp cmd_disasm_func_help = {
	.summary = "Disassemble a function",
};
static const RzCmdDescArg cmd_disassembly_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_function_help = {
	.summary = "Disassemble a function",
	.args = cmd_disassembly_function_args,
};

static const RzCmdDescArg cmd_disassembly_function_summary_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_function_summary_help = {
	.summary = "Disassemble a function and outputs the summary of it.",
	.args = cmd_disassembly_function_summary_args,
};

static const RzCmdDescArg cmd_disassembly_n_instrs_as_text_json_args[] = {
	{
		.name = "n_instrs",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_n_instrs_as_text_json_help = {
	.summary = "Disassemble N instructions as json containing the printed text",
	.args = cmd_disassembly_n_instrs_as_text_json_args,
};

static const RzCmdDescArg cmd_disassembly_all_methods_class_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassembly_all_methods_class_help = {
	.summary = "Disassemble all methods of a class",
	.args = cmd_disassembly_all_methods_class_args,
};

static const RzCmdDescArg cmd_sizes_of_n_instructions_args[] = {
	{
		.name = "n_instrs",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_sizes_of_n_instructions_help = {
	.summary = "Disassemble N instructions and prints its sizes",
	.args = cmd_sizes_of_n_instructions_args,
};

static const RzCmdDescArg cmd_disassemble_ropchain_args[] = {
	{
		.name = "limit",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_ropchain_help = {
	.summary = "Disassemble instructions and follows pointers to read ropchains",
	.args = cmd_disassemble_ropchain_args,
};

static const RzCmdDescHelp cmd_disassemble_recursive_help = {
	.summary = "Disassemble recursively across the function graph",
};
static const RzCmdDescArg cmd_disassemble_recursively_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_recursively_help = {
	.summary = "Disassemble recursively across the function graph",
	.args = cmd_disassemble_recursively_args,
};

static const RzCmdDescArg cmd_disassemble_recursively_from_current_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_recursively_from_current_block_help = {
	.summary = "Disassemble recursively across the function graph (from current basic block)",
	.args = cmd_disassemble_recursively_from_current_block_args,
};

static const RzCmdDescArg cmd_disassemble_recursively_no_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_recursively_no_function_help = {
	.summary = "Disassemble recursively the block size bytes without analyzing functions",
	.args = cmd_disassemble_recursively_no_function_args,
};

static const RzCmdDescHelp cmd_disassemble_summarize_help = {
	.summary = "Summarize N bytes or current block or a function (strings, calls, jumps, refs)",
};
static const RzCmdDescArg cmd_disassemble_summarize_n_bytes_args[] = {
	{
		.name = "n_bytes",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_summarize_n_bytes_help = {
	.summary = "Summarize N bytes",
	.args = cmd_disassemble_summarize_n_bytes_args,
};

static const RzCmdDescArg cmd_disassemble_summarize_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_summarize_function_help = {
	.summary = "Summarize the current function",
	.args = cmd_disassemble_summarize_function_args,
};

static const RzCmdDescArg cmd_disassemble_summarize_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_disassemble_summarize_block_help = {
	.summary = "Summarize current block",
	.args = cmd_disassemble_summarize_block_args,
};

static const RzCmdDescDetailEntry pf_Formats_detail_entries[] = {
	{ .text = "b", .arg_str = NULL, .comment = "byte (unsigned)" },
	{ .text = "B", .arg_str = NULL, .comment = "resolve enum bitfield (see t?)" },
	{ .text = "c", .arg_str = NULL, .comment = "char (signed byte)" },
	{ .text = "C", .arg_str = NULL, .comment = "byte in decimal" },
	{ .text = "d", .arg_str = NULL, .comment = "0xHEX value (4 bytes) (see 'i' and 'x' formats)" },
	{ .text = "D", .arg_str = NULL, .comment = "disassemble one opcode" },
	{ .text = "e", .arg_str = NULL, .comment = "temporarily swap endian" },
	{ .text = "E", .arg_str = NULL, .comment = "resolve enum name (see t?)" },
	{ .text = "f", .arg_str = NULL, .comment = "float value (4 bytes)" },
	{ .text = "F", .arg_str = NULL, .comment = "double float value (8 bytes)" },
	{ .text = "i", .arg_str = NULL, .comment = "signed integer value (4 bytes) (see 'd' and 'x' formats)" },
	{ .text = "n", .arg_str = NULL, .comment = "next char specifies size of signed value (1, 2, 4, or 8 byte(s))" },
	{ .text = "N", .arg_str = NULL, .comment = "next char specifies size of unsigned value (1, 2, 4, or 8 byte(s))" },
	{ .text = "o", .arg_str = NULL, .comment = "octal value (4 bytes)" },
	{ .text = "p", .arg_str = NULL, .comment = "pointer reference (2, 4, or 8 bytes)" },
	{ .text = "q", .arg_str = NULL, .comment = "quadword (8 bytes)" },
	{ .text = "Q", .arg_str = NULL, .comment = "octoword (uint128_t) (16 bytes)" },
	{ .text = "r", .arg_str = NULL, .comment = "CPU register (`pf r (eax)plop`)" },
	{ .text = "s", .arg_str = NULL, .comment = "32 bit pointer to string (4 bytes)" },
	{ .text = "s", .arg_str = NULL, .comment = "32 bit pointer to string (4 bytes)" },
	{ .text = "t", .arg_str = NULL, .comment = "32 bit UNIX timestamp (4 bytes)" },
	{ .text = "T", .arg_str = NULL, .comment = "show ten first bytes of buffer" },
	{ .text = "u", .arg_str = NULL, .comment = "uleb128 (variable length)" },
	{ .text = "w", .arg_str = NULL, .comment = "word (2 bytes unsigned short in hex)" },
	{ .text = "x", .arg_str = NULL, .comment = "0xHEX value and flag (fd @ addr) (see 'd' and 'i' formats)" },
	{ .text = "X", .arg_str = NULL, .comment = "show formatted hexpairs" },
	{ .text = "z", .arg_str = NULL, .comment = "null terminated string" },
	{ .text = "Z", .arg_str = NULL, .comment = "null terminated wide string" },
	{ .text = "?", .arg_str = NULL, .comment = "data structure `pf ? (struct_name)example_name`" },
	{ .text = "*", .arg_str = NULL, .comment = "next char is pointer (honors 'asm.bits')" },
	{ .text = "+", .arg_str = NULL, .comment = "toggle show flags for each offset" },
	{ .text = ":", .arg_str = NULL, .comment = "skip 4 bytes" },
	{ .text = ".", .arg_str = NULL, .comment = "skip 1 byte" },
	{ .text = ";", .arg_str = NULL, .comment = "rewind 4 bytes" },
	{ .text = ",", .arg_str = NULL, .comment = "rewind 1 byte" },
	{ 0 },
};

static const RzCmdDescDetailEntry pf_Example_space_of_space_usages_detail_entries[] = {
	{ .text = "pf '3xi foo bar'", .arg_str = NULL, .comment = "3-array of structures, each with named fields: 'foo' as hex, 'bar' as int" },
	{ .text = "pf 'B (BitFldType)arg_name'", .arg_str = NULL, .comment = "Resolve bitfield enum type for the arg_name" },
	{ .text = "pf 'E (EnumType)arg_name'", .arg_str = NULL, .comment = "Resolve enum type for the arg_name" },
	{ .text = "pf '*z*i*w nb name blob'", .arg_str = NULL, .comment = "Print pointers with the given labels" },
	{ .text = "pf 'iwq foo bar troll'", .arg_str = NULL, .comment = "Print the iwq format with foo, bar, troll as respective fields" },
	{ .text = "pf '0iwq foo bar troll'", .arg_str = NULL, .comment = "Same as above but considered as a union (all fields at offset 0)" },
	{ .text = "pfn obj 'xxdz prev next size name'", .arg_str = NULL, .comment = "Define the obj format as xxdz" },
	{ .text = "pf. 'plop ? (troll)mystruct'", .arg_str = NULL, .comment = "Use previously defined structure 'troll'" },
	{ .text = "pf.j plop @ 0x14", .arg_str = NULL, .comment = "Apply format object at the given offset" },
	{ .text = "pf '{N} (bifc)'", .arg_str = NULL, .comment = "Print N times the following format (bifc)" },
	{ .text = "pf [4]w[7]i", .arg_str = NULL, .comment = "Print an array of 4 words and then an array of 7 integers" },
	{ .text = "pf 'ic...?i foo bar \"(pf xw yo foo)troll\" yo'", .arg_str = NULL, .comment = "Print nested anonymous structures" },
	{ .text = "pf ';..x'", .arg_str = NULL, .comment = "Print value located 6 bytes from the current offset" },
	{ .text = "pf '[10]z[3]i[10]Zb'", .arg_str = NULL, .comment = "Print a fixed size string, widechar, and var" },
	{ .text = "pfj +F @ 0x14", .arg_str = NULL, .comment = "Print the content at given offset with a flag" },
	{ .text = "pf n2", .arg_str = NULL, .comment = "Print signed short (2 bytes) value. Use N instead of n for printing unsigned values" },
	{ .text = "pf '[2]? (plop)structname @ 0x10'", .arg_str = NULL, .comment = "Print an array of structures at the given offset" },
	{ .text = "pf 'eqew bigWord beef'", .arg_str = NULL, .comment = "Swap endianness and print with given labels" },
	{ .text = "pfn foo 'rr (eax)reg1 (eip)reg2'", .arg_str = NULL, .comment = "Create obect foo referencing to register values" },
	{ .text = "pf 'tt troll plop'", .arg_str = NULL, .comment = "Print time stamps with labels 'troll' and 'plop'" },
	{ 0 },
};
static const RzCmdDescDetail pf_details[] = {
	{ .name = "Formats", .entries = pf_Formats_detail_entries },
	{ .name = "Example of usages", .entries = pf_Example_space_of_space_usages_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp pf_help = {
	.summary = "Print formatted data",
	.details = pf_details,
};
static const RzCmdDescArg cmd_print_format_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_help = {
	.summary = "Show data using given format string",
	.args = cmd_print_format_args,
};

static const RzCmdDescArg cmd_print_format_delete_args[] = {
	{
		.name = "formatname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_delete_help = {
	.summary = "Remove named format",
	.args = cmd_print_format_delete_args,
};

static const RzCmdDescArg cmd_print_format_delete_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_delete_all_help = {
	.summary = "Remove all named formats",
	.args = cmd_print_format_delete_all_args,
};

static const RzCmdDescArg cmd_print_format_c_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_c_help = {
	.summary = "Show data using given format string with C syntax",
	.args = cmd_print_format_c_args,
};

static const RzCmdDescArg cmd_print_format_dot_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_dot_help = {
	.summary = "Show data using given format string as DOT",
	.args = cmd_print_format_dot_args,
};

static const RzCmdDescArg cmd_print_format_named_dot_args[] = {
	{
		.name = "formatname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_named_dot_help = {
	.summary = "Show data using given named format",
	.args = cmd_print_format_named_dot_args,
};

static const RzCmdDescArg cmd_print_format_named_args[] = {
	{
		.name = "formatname",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.optional = true,

	},
	{
		.name = "formatstring",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_named_help = {
	.summary = "List named formats/Print named format string/Define a new named format",
	.args = cmd_print_format_named_args,
};

static const RzCmdDescArg cmd_print_format_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_file_help = {
	.summary = "Load a Format Definition File (FDF)",
	.args = cmd_print_format_file_args,
};

static const RzCmdDescArg cmd_print_format_size_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_size_help = {
	.summary = "Print the size of format in bytes",
	.args = cmd_print_format_size_args,
};

static const RzCmdDescArg cmd_print_format_value_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_value_help = {
	.summary = "Print the value for named format",
	.args = cmd_print_format_value_args,
};

static const RzCmdDescArg cmd_print_format_write_args[] = {
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_format_write_help = {
	.summary = "Write data using given format string",
	.args = cmd_print_format_write_args,
};

static const RzCmdDescHelp pF_help = {
	.summary = "Print parsed ASN.1, PKCS, X509, ProtoBuf, AXML, etc.. formats",
};
static const RzCmdDescArg cmd_print_asn1_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_asn1_help = {
	.summary = "Decode ASN.1 from current block",
	.args = cmd_print_asn1_args,
};

static const RzCmdDescHelp cmd_print_protobuf_help = {
	.summary = "Decode raw protobuf from current block",
};
static const RzCmdDescArg cmd_print_protobuf_standard_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_protobuf_standard_help = {
	.summary = "Decode raw protobuf from current block",
	.args = cmd_print_protobuf_standard_args,
};

static const RzCmdDescArg cmd_print_protobuf_verbose_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_protobuf_verbose_help = {
	.summary = "Decode raw protobuf from current block (verbose)",
	.args = cmd_print_protobuf_verbose_args,
};

static const RzCmdDescArg cmd_print_pkcs7_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_pkcs7_help = {
	.summary = "Decode PKCS7 from current block",
	.args = cmd_print_pkcs7_args,
};

static const RzCmdDescArg cmd_print_x509_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_x509_help = {
	.summary = "Decode X.509 from current block",
	.args = cmd_print_x509_args,
};

static const RzCmdDescArg cmd_print_axml_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_axml_help = {
	.summary = "Decode Android Binary XML from current block",
	.args = cmd_print_axml_args,
};

static const RzCmdDescHelp cmd_print_gadget_help = {
	.summary = "Print gadgets",
};
static const RzCmdDescArg cmd_print_gadget_add_args[] = {
	{
		.name = "x",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "y",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "w",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "h",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_gadget_add_help = {
	.summary = "Add a new gadget / Print all existing gadgets",
	.args = cmd_print_gadget_add_args,
};

static const RzCmdDescArg cmd_print_gadget_print_as_rizin_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_gadget_print_as_rizin_help = {
	.summary = "Print all gadgets as Rizin commands",
	.args = cmd_print_gadget_print_as_rizin_args,
};

static const RzCmdDescArg cmd_print_gadget_remove_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_gadget_remove_help = {
	.summary = "Remove all gadgets",
	.args = cmd_print_gadget_remove_args,
};

static const RzCmdDescArg cmd_print_gadget_move_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "x",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "y",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "w",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "h",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_gadget_move_help = {
	.summary = "Move the position of the n-th gadget",
	.args = cmd_print_gadget_move_args,
};

static const RzCmdDescHelp cmd_print_default_help = {
	.summary = "Print hash/message digest or entropy",
};
static const RzCmdDescArg cmd_print_hash_cfg_args[] = {
	{
		.name = "algo",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_hash_cfg_help = {
	.summary = "Prints a hash/message digest or entropy (use @! to change the block size)",
	.args = cmd_print_hash_cfg_args,
};

static const RzCmdDescArg cmd_print_hash_cfg_algo_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_hash_cfg_algo_list_help = {
	.summary = "Lists all the supported algorithms",
	.args = cmd_print_hash_cfg_algo_list_args,
};

static const RzCmdDescHelp pi_help = {
	.summary = "Print instructions",
};
static const RzCmdDescArg print_instr_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_instr_help = {
	.summary = "Disassemble and print <N> instructions",
	.args = print_instr_args,
};

static const RzCmdDescArg print_instr_opcodes_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_instr_opcodes_help = {
	.summary = "Print all possible opcodes (byte by byte)",
	.args = print_instr_opcodes_args,
};

static const RzCmdDescArg print_instr_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_instr_block_help = {
	.summary = "Print all instructions in a basic block",
	.args = print_instr_block_args,
};

static const RzCmdDescArg print_instr_esil_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_instr_esil_help = {
	.summary = "Print offset and ESIL expression",
	.args = print_instr_esil_args,
};

static const RzCmdDescArg print_instr_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_instr_function_help = {
	.summary = "Print all instructions at the current function",
	.args = print_instr_function_args,
};

static const RzCmdDescArg print_calls_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_calls_function_help = {
	.summary = "Print only call instructions at the current function",
	.args = print_calls_function_args,
};

static const RzCmdDescArg print_instr_recursive_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_instr_recursive_help = {
	.summary = "Print instructions using recursive disassembly algorithm",
	.args = print_instr_recursive_args,
};

static const RzCmdDescArg print_instr_recursive_at_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_instr_recursive_at_help = {
	.summary = "Print instructions using recursive disassembly algorithm from the current position",
	.args = print_instr_recursive_at_args,
};

static const RzCmdDescArg print_instr_until_args[] = {
	{
		.name = "limit",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_instr_until_help = {
	.summary = "Print all instructions until first ret/jmp",
	.args = print_instr_until_args,
};

static const RzCmdDescArg assembly_of_hex_alias_args[] = {
	{
		.name = "hexpair",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = false,

	},
	{ 0 },
};
static const RzCmdDescHelp assembly_of_hex_alias_help = {
	.summary = "Print assembly expression from hexpairs (alias for pad)",
	.args = assembly_of_hex_alias_args,
};

static const RzCmdDescHelp pI_help = {
	.summary = "Print instructions",
};
static const RzCmdDescArg print_instructions_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_instructions_help = {
	.summary = "Disassemble and print <N> bytes",
	.args = print_instructions_args,
};

static const RzCmdDescArg print_instructions_function_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_instructions_function_help = {
	.summary = "Print all instructions at the current function",
	.args = print_instructions_function_args,
};

static const RzCmdDescArg print_current_block_json_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_current_block_json_help = {
	.summary = "Parse, format and print JSON at current offset.",
	.args = print_current_block_json_args,
};

static const RzCmdDescArg print_function_rzil_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_function_rzil_help = {
	.summary = "Print the RzIL of the function",
	.args = print_function_rzil_args,
};

static const RzCmdDescHelp pp_help = {
	.summary = "Print patterns",
};
static const RzCmdDescArg print_pattern0_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern0_help = {
	.summary = "Print buffer filled with zeroes",
	.args = print_pattern0_args,
};

static const RzCmdDescArg print_pattern1_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern1_help = {
	.summary = "Print incremental byte pattern (honor lower bits of current address and block size)",
	.args = print_pattern1_args,
};

static const RzCmdDescArg print_pattern2_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern2_help = {
	.summary = "Print incremental word pattern",
	.args = print_pattern2_args,
};

static const RzCmdDescArg print_pattern4_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern4_help = {
	.summary = "Print incremental dword pattern",
	.args = print_pattern4_args,
};

static const RzCmdDescArg print_pattern8_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern8_help = {
	.summary = "Print incremental qword pattern",
	.args = print_pattern8_args,
};

static const RzCmdDescArg print_pattern_latin_alphabet_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern_latin_alphabet_help = {
	.summary = "Print Latin alphabet pattern",
	.args = print_pattern_latin_alphabet_args,
};

static const RzCmdDescArg print_pattern_debrujin_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern_debrujin_help = {
	.summary = "Print De Brujin pattern",
	.args = print_pattern_debrujin_args,
};

static const RzCmdDescArg print_pattern_oxff_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern_oxff_help = {
	.summary = "Print buffer filled with 0xFF",
	.args = print_pattern_oxff_args,
};

static const RzCmdDescArg print_pattern_num_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pattern_num_help = {
	.summary = "Print numeric pin pattern",
	.args = print_pattern_num_args,
};

static const RzCmdDescHelp cmd_print_timestamp_help = {
	.summary = "Print timestamps",
};
static const RzCmdDescArg cmd_print_timestamp_unix_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_timestamp_unix_help = {
	.summary = "Print UNIX epoch time (32 bit `cfg.bigendian`, since January 1, 1970)",
	.args = cmd_print_timestamp_unix_args,
};

static const RzCmdDescArg cmd_print_timestamp_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_timestamp_current_help = {
	.summary = "Print the current time",
	.args = cmd_print_timestamp_current_args,
};

static const RzCmdDescArg cmd_print_timestamp_dos_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_timestamp_dos_help = {
	.summary = "Print MS-DOS time (32 bit `cfg.bigendian`, since January 1, 1980)",
	.args = cmd_print_timestamp_dos_args,
};

static const RzCmdDescArg cmd_print_timestamp_hfs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_timestamp_hfs_help = {
	.summary = "Print Mac HFS time (32 bit `cfg.bigendian`, since January 1, 1904)",
	.args = cmd_print_timestamp_hfs_args,
};

static const RzCmdDescArg cmd_print_timestamp_ntfs_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_timestamp_ntfs_help = {
	.summary = "Print NTFS time (64 bit `cfg.bigendian`, since January 1, 1601)",
	.args = cmd_print_timestamp_ntfs_args,
};

static const RzCmdDescArg print_key_randomart_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_key_randomart_help = {
	.summary = "Print cryptographic key in randomart",
	.args = print_key_randomart_args,
};

static const RzCmdDescArg print_key_mosaic_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_key_mosaic_help = {
	.summary = "Print cryptographic key in randomart mosaic",
	.args = print_key_mosaic_args,
};

static const RzCmdDescArg cmd_print_magic_args[] = {
	{
		.name = "file/directory",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_magic_help = {
	.summary = "Search magics and print the long description of them.",
	.args = cmd_print_magic_args,
};

static const RzCmdDescHelp po_help = {
	.summary = "Print operation applied on the data",
};
static const RzCmdDescArg print_operation_2swap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_operation_2swap_help = {
	.summary = "2-byte endian swap",
	.args = print_operation_2swap_args,
};

static const RzCmdDescArg print_operation_4swap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_operation_4swap_help = {
	.summary = "4-byte endian swap",
	.args = print_operation_4swap_args,
};

static const RzCmdDescArg print_operation_8swap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_operation_8swap_help = {
	.summary = "8-byte endian swap",
	.args = print_operation_8swap_args,
};

static const RzCmdDescArg print_operation_add_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_add_help = {
	.summary = "Apply addition",
	.args = print_operation_add_args,
};

static const RzCmdDescArg print_operation_and_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_and_help = {
	.summary = "Apply AND operation",
	.args = print_operation_and_args,
};

static const RzCmdDescArg print_operation_div_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_div_help = {
	.summary = "Apply division operation",
	.args = print_operation_div_args,
};

static const RzCmdDescArg print_operation_shl_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_shl_help = {
	.summary = "Apply shift left operation",
	.args = print_operation_shl_args,
};

static const RzCmdDescArg print_operation_mul_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_mul_help = {
	.summary = "Apply multiplication operation",
	.args = print_operation_mul_args,
};

static const RzCmdDescArg print_operation_or_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_or_help = {
	.summary = "Apply OR operation",
	.args = print_operation_or_args,
};

static const RzCmdDescArg print_operation_shr_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_shr_help = {
	.summary = "Apply shift right operation",
	.args = print_operation_shr_args,
};

static const RzCmdDescArg print_operation_sub_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_sub_help = {
	.summary = "Apply subtraction operation",
	.args = print_operation_sub_args,
};

static const RzCmdDescArg print_operation_xor_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp print_operation_xor_help = {
	.summary = "Apply XOR operation",
	.args = print_operation_xor_args,
};

static const RzCmdDescHelp pr_help = {
	.summary = "Print raw bytes in different representations",
};
static const RzCmdDescArg cmd_print_raw_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_raw_help = {
	.summary = "Print raw bytes",
	.args = cmd_print_raw_args,
};

static const RzCmdDescArg cmd_print_raw_colors_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_raw_colors_help = {
	.summary = "Print bytes as colors in palette",
	.args = cmd_print_raw_colors_args,
};

static const RzCmdDescHelp prg_help = {
	.summary = "Print uncompressed data",
};
static const RzCmdDescArg cmd_print_raw_gunzip_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_raw_gunzip_help = {
	.summary = "gunzip block and print",
	.args = cmd_print_raw_gunzip_args,
};

static const RzCmdDescArg cmd_print_raw_gunzip_verbose_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_raw_gunzip_verbose_help = {
	.summary = "Show consumed bytes and output size",
	.args = cmd_print_raw_gunzip_verbose_args,
};

static const RzCmdDescArg cmd_print_raw_printable_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_print_raw_printable_help = {
	.summary = "Printable chars with real offset",
	.args = cmd_print_raw_printable_args,
};

static const RzCmdDescArg cmd_print_raw_string_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_print_raw_string_help = {
	.summary = "Print raw zero-terminated string",
	.args = cmd_print_raw_string_args,
};

static const RzCmdDescHelp ps_help = {
	.summary = "Print string at the current offset.",
};
static const RzCmdDescDetailEntry print_string_Value_space_details_detail_entries[] = {
	{ .text = "String length", .arg_str = NULL, .comment = "The string length depends on the block size. You need to change it via 'b <size-in-bytes>' if your string is too short." },
	{ .text = "encoding=settings", .arg_str = NULL, .comment = "Use encoding from 'str.encoding' option." },
	{ .text = "delimeter=null", .arg_str = NULL, .comment = "Prints until first NUL code point. Non-printable characters are escaped." },
	{ .text = "delimeter=unprintable", .arg_str = NULL, .comment = "Prints until the first non-printable code point. This includes '\\n', '\\t' etc." },
	{ .text = "delimeter=block", .arg_str = NULL, .comment = "Print whole block as string (don't stop at non-printable or NUL character)." },
	{ 0 },
};
static const RzCmdDescDetail print_string_details[] = {
	{ .name = "Value details", .entries = print_string_Value_space_details_detail_entries },
	{ 0 },
};
static const char *print_string_encoding_choices[] = { "settings", "guess", "ascii", "utf8", "utf16le", "utf32le", "utf16be", "utf32be", "ibm037", "ibm290", "ebcdices", "ebcdicuk", "ebcdicus", NULL };

static const char *print_string_delimiter_choices[] = { "null", "block", "unprintable", NULL };
static const RzCmdDescArg print_string_args[] = {
	{
		.name = "encoding",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "settings",
		.choices.choices = print_string_encoding_choices,

	},
	{
		.name = "delimiter",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "null",
		.choices.choices = print_string_delimiter_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp print_string_help = {
	.summary = "Print the string at the current offset in the block.",
	.details = print_string_details,
	.args = print_string_args,
};

static const RzCmdDescArg print_string_as_libcpp_string_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_string_as_libcpp_string_help = {
	.summary = "Print libc++ std::string (same-endian, ascii, zero-terminated)",
	.args = print_string_as_libcpp_string_args,
};

static const RzCmdDescArg print_strings_current_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_strings_current_block_help = {
	.summary = "Print all the strings in current block",
	.args = print_strings_current_block_args,
};

static const RzCmdDescArg print_string_c_cpp_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_string_c_cpp_help = {
	.summary = "Generate a C/C++ string",
	.args = print_string_c_cpp_args,
};

static const RzCmdDescArg print_first_string_current_block_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_first_string_current_block_help = {
	.summary = "Print the first string in the current block",
	.args = print_first_string_current_block_args,
};

static const char *print_pascal_string_bits_choices[] = { "8", "16", "32", "64", NULL };
static const RzCmdDescArg print_pascal_string_args[] = {
	{
		.name = "bits",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "8",
		.choices.choices = print_pascal_string_bits_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp print_pascal_string_help = {
	.summary = "Print the pascal string at the current offset",
	.args = print_pascal_string_args,
};

static const RzCmdDescArg print_string_wrap_width_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_string_wrap_width_help = {
	.summary = "Print string at the current offset in screen (wrap width)",
	.args = print_string_wrap_width_args,
};

static const RzCmdDescArg print_utf8_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_utf8_help = {
	.summary = "Print buffer as a utf8 string (alias for 'ps utf8 null').",
	.args = print_utf8_args,
};

static const RzCmdDescArg print_utf16be_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_utf16be_help = {
	.summary = "Print buffer as a utf16be string (alias for 'ps utf16be null').",
	.args = print_utf16be_args,
};

static const RzCmdDescArg print_utf32be_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_utf32be_help = {
	.summary = "Print buffer as a utf32be string (alias for 'ps utf32be null').",
	.args = print_utf32be_args,
};

static const RzCmdDescArg print_string_escaped_newlines_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_string_escaped_newlines_help = {
	.summary = "Print string with escaped new lines",
	.args = print_string_escaped_newlines_args,
};

static const RzCmdDescArg print_utf16le_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_utf16le_help = {
	.summary = "Print buffer as a utf16le string (alias for 'ps utf16le null').",
	.args = print_utf16le_args,
};

static const RzCmdDescArg print_utf32le_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_utf32le_help = {
	.summary = "Print buffer as a utf32le string (alias for 'ps utf32le null').",
	.args = print_utf32le_args,
};

static const RzCmdDescHelp pv_help = {
	.summary = "Print bytes based on current bitness and endianness",
};
static const RzCmdDescArg print_value_args[] = {
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_value_help = {
	.summary = "print bytes",
	.args = print_value_args,
};

static const RzCmdDescArg print_value1_args[] = {
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_value1_help = {
	.summary = "print 1 byte",
	.args = print_value1_args,
};

static const RzCmdDescArg print_value2_args[] = {
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_value2_help = {
	.summary = "print 2 bytes",
	.args = print_value2_args,
};

static const RzCmdDescArg print_value4_args[] = {
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_value4_help = {
	.summary = "print 4 bytes",
	.args = print_value4_args,
};

static const RzCmdDescArg print_value8_args[] = {
	{
		.name = "repeat",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_value8_help = {
	.summary = "print 8 bytes",
	.args = print_value8_args,
};

static const RzCmdDescHelp px_help = {
	.summary = "Show hexdump",
};
static const RzCmdDescArg print_hexdump_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_help = {
	.summary = "show hexdump",
	.args = print_hexdump_args,
};

static const RzCmdDescDetailEntry print_hexdump_format_number_detail_entries[] = {
	{ .text = "", .arg_str = NULL, .comment = "Number of elements to print." },
	{ 0 },
};

static const RzCmdDescDetailEntry print_hexdump_format_format_detail_entries[] = {
	{ .text = "o", .arg_str = NULL, .comment = "Octal" },
	{ .text = "d", .arg_str = NULL, .comment = "Decimal" },
	{ .text = "x", .arg_str = NULL, .comment = "Hex" },
	{ .text = "f", .arg_str = NULL, .comment = "Float - Alias for: 'pf ffff...' (<number> times 'f'. <width> is ignored)." },
	{ .text = "i", .arg_str = NULL, .comment = "Instruction - Alias for: 'pdq <number> !@ <number * width>'." },
	{ .text = "s", .arg_str = NULL, .comment = "String - Alias for: 'psb !@ <number * width>'." },
	{ 0 },
};

static const RzCmdDescDetailEntry print_hexdump_format_width_detail_entries[] = {
	{ .text = "b", .arg_str = NULL, .comment = "Byte        = 1 bytes" },
	{ .text = "h", .arg_str = NULL, .comment = "Half word   = 2 bytes" },
	{ .text = "w", .arg_str = NULL, .comment = "Word        = 4 bytes" },
	{ .text = "d", .arg_str = NULL, .comment = "Double word = 8 bytes" },
	{ .text = "a", .arg_str = NULL, .comment = "Architecture width as bytes." },
	{ 0 },
};
static const RzCmdDescDetail print_hexdump_format_details[] = {
	{ .name = "number", .entries = print_hexdump_format_number_detail_entries },
	{ .name = "format", .entries = print_hexdump_format_format_detail_entries },
	{ .name = "width", .entries = print_hexdump_format_width_detail_entries },
	{ 0 },
};
static const char *print_hexdump_format_format_choices[] = { "o", "d", "x", "f", "i", "s", NULL };

static const char *print_hexdump_format_width_choices[] = { "b", "h", "w", "d", "a", NULL };
static const RzCmdDescArg print_hexdump_format_args[] = {
	{
		.name = "number",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.default_value = "1",

	},
	{
		.name = "format",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "x",
		.choices.choices = print_hexdump_format_format_choices,

	},
	{
		.name = "width",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.default_value = "a",
		.choices.choices = print_hexdump_format_width_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_format_help = {
	.summary = "Print formatted bytes.",
	.details = print_hexdump_format_details,
	.args = print_hexdump_format_args,
};

static const RzCmdDescArg print_hexdump_annotated_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_annotated_help = {
	.summary = "show annotated hexdump",
	.args = print_hexdump_annotated_args,
};

static const RzCmdDescArg print_op_analysis_color_map_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_op_analysis_color_map_help = {
	.summary = "show op analysis color map",
	.args = print_op_analysis_color_map_args,
};

static const RzCmdDescArg print_hexdump_bits_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_bits_help = {
	.summary = "dump bits in hexdump form",
	.args = print_hexdump_bits_args,
};

static const RzCmdDescArg print_hexdump_comments_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_comments_help = {
	.summary = "show hexdump with comments",
	.args = print_hexdump_comments_args,
};

static const RzCmdDescHelp pxd_help = {
	.summary = "show signed integer dump",
};
static const RzCmdDescArg print_hexdump_signed_integer_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_signed_integer_help = {
	.summary = "show 1-byte integer dump",
	.args = print_hexdump_signed_integer_args,
};

static const RzCmdDescArg print_hexdump_signed_integer2_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_signed_integer2_help = {
	.summary = "show 2-bytes integer dump",
	.args = print_hexdump_signed_integer2_args,
};

static const RzCmdDescArg print_hexdump_signed_integer4_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_signed_integer4_help = {
	.summary = "show 4-bytes integer dump",
	.args = print_hexdump_signed_integer4_args,
};

static const RzCmdDescArg print_hexdump_signed_integer8_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_signed_integer8_help = {
	.summary = "show 8-bytes integer dump",
	.args = print_hexdump_signed_integer8_args,
};

static const RzCmdDescArg print_hexdump_emoji_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_emoji_help = {
	.summary = "emoji hexdump! :)",
	.args = print_hexdump_emoji_args,
};

static const RzCmdDescArg print_hexdump_function_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_function_help = {
	.summary = "show hexdump of current function",
	.args = print_hexdump_function_args,
};

static const RzCmdDescArg print_hexdump_hexii_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hexii_help = {
	.summary = "HexII compact binary representation",
	.args = print_hexdump_hexii_args,
};

static const RzCmdDescHelp pxr_help = {
	.summary = "show hexword references",
};
static const RzCmdDescArg print_hexword_references_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexword_references_help = {
	.summary = "show hexword references",
	.args = print_hexword_references_args,
};

static const RzCmdDescArg print_hexword_references_1_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexword_references_1_help = {
	.summary = "show hexword references",
	.args = print_hexword_references_1_args,
};

static const RzCmdDescArg print_hexword_references_2_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexword_references_2_help = {
	.summary = "show hexword references with hexdump",
	.args = print_hexword_references_2_args,
};

static const RzCmdDescArg print_hexword_references_4_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexword_references_4_help = {
	.summary = "show hexword references with hexdump",
	.args = print_hexword_references_4_args,
};

static const RzCmdDescArg print_hexword_references_8_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexword_references_8_help = {
	.summary = "show hexword references with hexdump",
	.args = print_hexword_references_8_args,
};

static const RzCmdDescArg print_hexdump_sparse_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_sparse_help = {
	.summary = "show hexadecimal in sparse mode",
	.args = print_hexdump_sparse_args,
};

static const RzCmdDescArg print_delta_pointer_table_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_delta_pointer_table_help = {
	.summary = "show delta pointer table in rizin commands",
	.args = print_delta_pointer_table_args,
};

static const RzCmdDescArg print_hexdump_hexless_bytes_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hexless_bytes_help = {
	.summary = "show <N> bytes of hex-less hexdump",
	.args = print_hexdump_hexless_bytes_args,
};

static const RzCmdDescArg print_hexdump_hexless_words_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hexless_words_help = {
	.summary = "show <N> words of hex-less hexdump",
	.args = print_hexdump_hexless_words_args,
};

static const RzCmdDescArg print_hexdump_hexpair_bytes_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hexpair_bytes_help = {
	.summary = "8bit hexpair list of bytes until zero byte",
	.args = print_hexdump_hexpair_bytes_args,
};

static const RzCmdDescArg print_hexdump_hex2_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hex2_help = {
	.summary = "show 2-bytes hexadecimal integers dump",
	.args = print_hexdump_hex2_args,
};

static const RzCmdDescArg print_hexdump_hex2l_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hex2l_help = {
	.summary = "show 2-bytes hexadecimal integers dump, one per line",
	.args = print_hexdump_hex2l_args,
};

static const RzCmdDescArg print_hexdump_hex4_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hex4_help = {
	.summary = "show 4-bytes hexadecimal integers dump",
	.args = print_hexdump_hex4_args,
};

static const RzCmdDescArg print_hexdump_hex4l_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hex4l_help = {
	.summary = "show 4-bytes hexadecimal integers dump, one per line",
	.args = print_hexdump_hex4l_args,
};

static const RzCmdDescArg print_hexdump_hex8_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hex8_help = {
	.summary = "show 8-bytes hexadecimal integers dump",
	.args = print_hexdump_hex8_args,
};

static const RzCmdDescArg print_hexdump_hex8l_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_hex8l_help = {
	.summary = "show 8-bytes hexadecimal integers dump, one per line",
	.args = print_hexdump_hex8l_args,
};

static const RzCmdDescArg print_hexdump_oct_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_oct_help = {
	.summary = "show 1-byte octal integers dump",
	.args = print_hexdump_oct_args,
};

static const RzCmdDescArg print_hexdump_n_lines_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_n_lines_help = {
	.summary = "display <N> lines of hexdump",
	.args = print_hexdump_n_lines_args,
};

static const RzCmdDescHelp p6_help = {
	.summary = "Base64 decoding/encoding",
};
static const RzCmdDescArg cmd_base64_encode_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_base64_encode_help = {
	.summary = "Base64 encoding",
	.args = cmd_base64_encode_args,
};

static const RzCmdDescArg cmd_base64_decode_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_base64_decode_help = {
	.summary = "Base64 decoding",
	.args = cmd_base64_decode_args,
};

static const RzCmdDescHelp pu_help = {
	.summary = "URL-encoded strings",
};
static const RzCmdDescArg print_url_encode_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_url_encode_help = {
	.summary = "Print <N> bytes as URL-encoded UTF-8 string",
	.args = print_url_encode_args,
};

static const RzCmdDescArg print_url_encode_wide_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_url_encode_wide_help = {
	.summary = "Print <N> bytes as URL-encoded UTF-16 string",
	.args = print_url_encode_wide_args,
};

static const RzCmdDescArg print_url_encode_zero_args[] = {
	{
		.name = "N",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_url_encode_zero_help = {
	.summary = "Print <N> bytes as URL-encoded string and stop at zero",
	.args = print_url_encode_zero_args,
};

static const RzCmdDescHelp p_minus__help = {
	.summary = "Blocks information representation as a horisontal bar and summary",
};
static const RzCmdDescArg print_minus_args[] = {
	{
		.name = "width",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_minus_help = {
	.summary = "Show horisontal bar of metadata in file boundaries",
	.args = print_minus_args,
};

static const RzCmdDescArg print_minus_entropy_args[] = {
	{
		.name = "width",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_minus_entropy_help = {
	.summary = "Show horisontal bar of entropy per block in file boundaries",
	.args = print_minus_entropy_args,
};

static const RzCmdDescArg print_minus_table_args[] = {
	{
		.name = "depth",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_minus_table_help = {
	.summary = "Show statistics table about blocks in the file",
	.args = print_minus_table_args,
};

static const RzCmdDescHelp p_equal__help = {
	.summary = "Blocks information representation as a histogram",
};
static const RzCmdDescArg print_equal_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_help = {
	.summary = "Show a vertical histogram of bytes in current block",
	.args = print_equal_args,
};

static const RzCmdDescArg print_equal_d_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_d_help = {
	.summary = "Show a summary of min/max/number of unique bytes in the current block",
	.args = print_equal_d_args,
};

static const RzCmdDescArg print_equal_two_args[] = {
	{
		.name = "step",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_two_help = {
	.summary = "Show progress bars of int16 values",
	.args = print_equal_two_args,
};

static const RzCmdDescArg print_equal_0x00_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_0x00_help = {
	.summary = "Show a vertical histogram of 0x00 bytes per each block",
	.args = print_equal_0x00_args,
};

static const RzCmdDescArg print_equal_0xff_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_0xff_help = {
	.summary = "Show a vertical histogram of 0xFF bytes per each block",
	.args = print_equal_0xff_args,
};

static const RzCmdDescArg print_equal_bbs_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_bbs_help = {
	.summary = "Show a vertical histogram of basic blocks per each block",
	.args = print_equal_bbs_args,
};

static const RzCmdDescArg print_equal_stats_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_stats_help = {
	.summary = "Show a vertical histogram of statistical maps per each block",
	.args = print_equal_stats_args,
};

static const RzCmdDescArg print_equal_call_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_call_help = {
	.summary = "Show a vertical histogram of calls per each block",
	.args = print_equal_call_args,
};

static const RzCmdDescArg print_equal_entropy_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_entropy_help = {
	.summary = "Show a vertical histogram of entropy per each block",
	.args = print_equal_entropy_args,
};

static const RzCmdDescDetailEntry print_rising_and_falling_entropy_Default_space_values_detail_entries[] = {
	{ .text = "", .arg_str = NULL, .comment = "Default rising threshold is 0.95 and falling threshold is 0.85" },
	{ 0 },
};
static const RzCmdDescDetail print_rising_and_falling_entropy_details[] = {
	{ .name = "Default values", .entries = print_rising_and_falling_entropy_Default_space_values_detail_entries },
	{ 0 },
};
static const RzCmdDescArg print_rising_and_falling_entropy_args[] = {
	{
		.name = "rising_threshold",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "falling_threshold",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_rising_and_falling_entropy_help = {
	.summary = "Print rising and falling entropy.",
	.details = print_rising_and_falling_entropy_details,
	.args = print_rising_and_falling_entropy_args,
};

static const RzCmdDescArg print_equal_invalid_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_invalid_help = {
	.summary = "Show a vertical histogram of invalid instructions per each block",
	.args = print_equal_invalid_args,
};

static const RzCmdDescArg print_equal_jump_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_jump_help = {
	.summary = "Show a vertical histogram of jumps and conditional jumps per each block",
	.args = print_equal_jump_args,
};

static const RzCmdDescArg print_equal_m_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_m_help = {
	.summary = "Show a vertical histogram of number of flags and marks per each block",
	.args = print_equal_m_args,
};

static const RzCmdDescArg print_equal_printable_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_printable_help = {
	.summary = "Show a vertical histogram of printable bytes per each block",
	.args = print_equal_printable_args,
};

static const RzCmdDescArg print_equal_priv_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_priv_help = {
	.summary = "Show a vertical histogram of syscalls and privileged instructions per each block",
	.args = print_equal_priv_args,
};

static const RzCmdDescArg print_equal_z_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_z_help = {
	.summary = "Show a vertical histogram of number of chars in strings per each block",
	.args = print_equal_z_args,
};

static const RzCmdDescHelp p_equal__equal__help = {
	.summary = "Blocks information representation as a horizontal histogram",
};
static const RzCmdDescArg print_equal_equal_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_help = {
	.summary = "Show a horizontal histogram of bytes in current block",
	.args = print_equal_equal_args,
};

static const RzCmdDescArg print_equal_equal_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_visual_help = {
	.summary = "Show a visual horizontal histogram of bytes in current block",
	.args = print_equal_equal_visual_args,
};

static const RzCmdDescHelp p_equal__equal_0_help = {
	.summary = "Show a horizontal histogram of 0x00 bytes per each block",
};
static const RzCmdDescArg print_equal_equal_0x00_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_0x00_help = {
	.summary = "Show a horizontal histogram of 0x00 bytes per each block",
	.args = print_equal_equal_0x00_args,
};

static const RzCmdDescArg print_equal_equal_0x00_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_0x00_visual_help = {
	.summary = "Show a interactive horizontal histogram of 0x00 bytes per each block",
	.args = print_equal_equal_0x00_visual_args,
};

static const RzCmdDescHelp p_equal__equal_F_help = {
	.summary = "Show a horizontal histogram of 0xFF bytes per each block",
};
static const RzCmdDescArg print_equal_equal_0xff_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_0xff_help = {
	.summary = "Show a horizontal histogram of 0xFF bytes per each block",
	.args = print_equal_equal_0xff_args,
};

static const RzCmdDescArg print_equal_equal_0xff_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_0xff_visual_help = {
	.summary = "Show a interactive horizontal histogram of 0xFF bytes per each block",
	.args = print_equal_equal_0xff_visual_args,
};

static const RzCmdDescHelp p_equal__equal_a_help = {
	.summary = "Show a horizontal histogram of basic blocks per each block",
};
static const RzCmdDescArg print_equal_equal_bbs_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_bbs_help = {
	.summary = "Show a horizontal histogram of basic blocks per each block",
	.args = print_equal_equal_bbs_args,
};

static const RzCmdDescArg print_equal_equal_bbs_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_bbs_visual_help = {
	.summary = "Show a interactive horizontal histogram of basic blocks per each block",
	.args = print_equal_equal_bbs_visual_args,
};

static const RzCmdDescHelp p_equal__equal_A_help = {
	.summary = "Show a horizontal histogram of statistical maps per each block",
};
static const RzCmdDescArg print_equal_equal_stats_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_stats_help = {
	.summary = "Show a horizontal histogram of statistical maps per each block",
	.args = print_equal_equal_stats_args,
};

static const RzCmdDescArg print_equal_equal_stats_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_stats_visual_help = {
	.summary = "Show a interactive horizontal histogram of statistical maps per each block",
	.args = print_equal_equal_stats_visual_args,
};

static const RzCmdDescHelp p_equal__equal_c_help = {
	.summary = "Show a horizontal histogram of calls per each block",
};
static const RzCmdDescArg print_equal_equal_call_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_call_help = {
	.summary = "Show a horizontal histogram of calls per each block",
	.args = print_equal_equal_call_args,
};

static const RzCmdDescArg print_equal_equal_call_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_call_visual_help = {
	.summary = "Show a interactive horizontal histogram of calls per each block",
	.args = print_equal_equal_call_visual_args,
};

static const RzCmdDescHelp p_equal__equal_e_help = {
	.summary = "Show a horizontal histogram of entropy per each block",
};
static const RzCmdDescArg print_equal_equal_entropy_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_entropy_help = {
	.summary = "Show a horizontal histogram of entropy per each block",
	.args = print_equal_equal_entropy_args,
};

static const RzCmdDescArg print_equal_equal_entropy_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_entropy_visual_help = {
	.summary = "Show a interactive horizontal histogram of entropy per each block",
	.args = print_equal_equal_entropy_visual_args,
};

static const RzCmdDescHelp p_equal__equal_i_help = {
	.summary = "Show a horizontal histogram of invalid instructions per each block",
};
static const RzCmdDescArg print_equal_equal_invalid_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_invalid_help = {
	.summary = "Show a horizontal histogram of invalid instructions per each block",
	.args = print_equal_equal_invalid_args,
};

static const RzCmdDescArg print_equal_equal_invalid_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_invalid_visual_help = {
	.summary = "Show a interactive horizontal histogram of invalid instructions per each block",
	.args = print_equal_equal_invalid_visual_args,
};

static const RzCmdDescHelp p_equal__equal_j_help = {
	.summary = "Show a horizontal histogram of jumps and conditional jumps per each block",
};
static const RzCmdDescArg print_equal_equal_jump_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_jump_help = {
	.summary = "Show a horizontal histogram of jumps and conditional jumps per each block",
	.args = print_equal_equal_jump_args,
};

static const RzCmdDescArg print_equal_equal_jump_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_jump_visual_help = {
	.summary = "Show a interactive horizontal histogram of jumps and conditional jumps per each block",
	.args = print_equal_equal_jump_visual_args,
};

static const RzCmdDescHelp p_equal__equal_m_help = {
	.summary = "Show a horizontal histogram of number of flags and marks per each block",
};
static const RzCmdDescArg print_equal_equal_m_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_m_help = {
	.summary = "Show a horizontal histogram of number of flags and marks per each block",
	.args = print_equal_equal_m_args,
};

static const RzCmdDescArg print_equal_equal_m_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_m_visual_help = {
	.summary = "Show a interactive horizontal histogram of number of flags and marks per each block",
	.args = print_equal_equal_m_visual_args,
};

static const RzCmdDescHelp p_equal__equal_p_help = {
	.summary = "Show a horizontal histogram of printable bytes per each block",
};
static const RzCmdDescArg print_equal_equal_printable_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_printable_help = {
	.summary = "Show a horizontal histogram of printable bytes per each block",
	.args = print_equal_equal_printable_args,
};

static const RzCmdDescArg print_equal_equal_printable_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_printable_visual_help = {
	.summary = "Show a interactive horizontal histogram of printable bytes per each block",
	.args = print_equal_equal_printable_visual_args,
};

static const RzCmdDescHelp p_equal__equal_s_help = {
	.summary = "Show a horizontal histogram of syscalls and privileged instructions per each block",
};
static const RzCmdDescArg print_equal_equal_priv_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_priv_help = {
	.summary = "Show a horizontal histogram of syscalls and privileged instructions per each block",
	.args = print_equal_equal_priv_args,
};

static const RzCmdDescArg print_equal_equal_priv_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_priv_visual_help = {
	.summary = "Show a interactive horizontal histogram of syscalls and privileged instructions per each block",
	.args = print_equal_equal_priv_visual_args,
};

static const RzCmdDescHelp p_equal__equal_z_help = {
	.summary = "Show a horizontal histogram of number of chars in strings per each block",
};
static const RzCmdDescArg print_equal_equal_z_args[] = {
	{
		.name = "blocks",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "totalsize",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "skip",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_z_help = {
	.summary = "Show a horizontal histogram of number of chars in strings per each block",
	.args = print_equal_equal_z_args,
};

static const RzCmdDescArg print_equal_equal_z_visual_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_equal_equal_z_visual_help = {
	.summary = "Show a interactive horizontal histogram of number of chars in strings per each block",
	.args = print_equal_equal_z_visual_args,
};

static const RzCmdDescHelp P_help = {
	.summary = "Project management",
};
static const RzCmdDescArg project_save_args[] = {
	{
		.name = "project.rzdb",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp project_save_help = {
	.summary = "Save a project",
	.args = project_save_args,
};

static const RzCmdDescArg project_open_args[] = {
	{
		.name = "project.rzdb",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp project_open_help = {
	.summary = "Open a project",
	.args = project_open_args,
};

static const RzCmdDescArg project_open_no_bin_io_args[] = {
	{
		.name = "project.rzdb",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp project_open_no_bin_io_help = {
	.summary = "Open a project on top of currently loaded binaries",
	.args = project_open_no_bin_io_args,
};

static const RzCmdDescHelp q_help = {
	.summary = "Quit rizin",
};
static const RzCmdDescArg cmd_quit_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_quit_help = {
	.summary = "Quit rizin",
	.args = cmd_quit_args,
};

static const RzCmdDescArg cmd_force_quit_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_force_quit_help = {
	.summary = "Force quit rizin",
	.args = cmd_force_quit_args,
};

static const RzCmdDescArg cmd_force_quit_without_history_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_force_quit_without_history_help = {
	.summary = "Force quit rizin without saving history",
	.args = cmd_force_quit_without_history_args,
};

static const RzCmdDescHelp quit_with_preference_help = {
	.summary = "Quit rizin and choose to kill the process and save projects",
	.options = "<yn><yn>",
};
static const RzCmdDescHelp qy_help = {
	.summary = "Quit rizin by killing the process and and choose to save the projects or not",
};
static const RzCmdDescArg quit_kill_save_args[] = {
	{ 0 },
};
static const RzCmdDescHelp quit_kill_save_help = {
	.summary = "Quit rizin by killing the process and saving the project",
	.args = quit_kill_save_args,
};

static const RzCmdDescArg quit_kill_nosave_args[] = {
	{ 0 },
};
static const RzCmdDescHelp quit_kill_nosave_help = {
	.summary = "Quit rizin by killing the process and not saving the project",
	.args = quit_kill_nosave_args,
};

static const RzCmdDescHelp qn_help = {
	.summary = "Quit rizin by not killing the process and choose to save the projects or not",
};
static const RzCmdDescArg quit_nokill_nosave_args[] = {
	{ 0 },
};
static const RzCmdDescHelp quit_nokill_nosave_help = {
	.summary = "Quit rizin by not killing the process and not saving the project",
	.args = quit_nokill_nosave_args,
};

static const RzCmdDescArg quit_nokill_save_args[] = {
	{ 0 },
};
static const RzCmdDescHelp quit_nokill_save_help = {
	.summary = "Quit rizin by not killing the process and saving the project",
	.args = quit_nokill_save_args,
};

static const RzCmdDescHelp r_help = {
	.summary = "Resize file",
};
static const RzCmdDescArg resize_args[] = {
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp resize_help = {
	.summary = "Resize file / Display file size",
	.args = resize_args,
};

static const RzCmdDescArg resize_remove_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp resize_remove_help = {
	.summary = "Remove num bytes, move following data down",
	.args = resize_remove_args,
};

static const RzCmdDescArg resize_insert_args[] = {
	{
		.name = "num",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp resize_insert_help = {
	.summary = "Insert num bytes, move following data up",
	.args = resize_insert_args,
};

static const RzCmdDescArg rebase_args[] = {
	{
		.name = "oldbase",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp rebase_help = {
	.summary = "Rebase all flags, binary information, breakpoints, and analysis",
	.args = rebase_args,
};

static const RzCmdDescArg resize_human_args[] = {
	{ 0 },
};
static const RzCmdDescHelp resize_human_help = {
	.summary = "Display size in human-friendly format",
	.args = resize_human_args,
};

static const RzCmdDescHelp s_help = {
	.summary = "Seek commands",
};
static const RzCmdDescArg seek_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_help = {
	.summary = "Print current address / Seek to address",
	.args = seek_args,
};

static const RzCmdDescArg seek_padded_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_padded_help = {
	.summary = "Print current address with <n> padded zeros (defaults to 8)",
	.args = seek_padded_args,
};

static const RzCmdDescArg seek_base_args[] = {
	{
		.name = "hex_offset",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_base_help = {
	.summary = "Seek honoring a base from core->offset",
	.args = seek_base_args,
};

static const RzCmdDescArg seek_delta_args[] = {
	{
		.name = "delta",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_delta_help = {
	.summary = "Seek to a delta relative to current offset",
	.args = seek_delta_args,
};

static const RzCmdDescArg seek_blocksize_backward_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_blocksize_backward_help = {
	.summary = "Seek blocksize bytes backward (/=n)",
	.args = seek_blocksize_backward_args,
};

static const RzCmdDescArg seek_blocksize_forward_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_blocksize_forward_help = {
	.summary = "Seek blocksize bytes forward (/=n)",
	.args = seek_blocksize_forward_args,
};

static const RzCmdDescHelp sh_help = {
	.summary = "Seek history commands",
};
static const RzCmdDescArg seek_history_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_history_list_help = {
	.summary = "List undo seek history",
	.args = seek_history_list_args,
};

static const RzCmdDescArg seek_redo_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_redo_help = {
	.summary = "Go to position before the last undo (forward in history)",
	.args = seek_redo_args,
};

static const RzCmdDescArg seek_undo_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_undo_help = {
	.summary = "Go to last seek in seek history (back in history)",
	.args = seek_undo_args,
};

static const RzCmdDescArg seek_undo_reset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_undo_reset_help = {
	.summary = "Clear seek history",
	.args = seek_undo_reset_args,
};

static const RzCmdDescArg seek_asz_args[] = {
	{
		.name = "align",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_asz_help = {
	.summary = "Seek to current offset (or <addr>) aligned to <align>",
	.args = seek_asz_args,
};

static const RzCmdDescArg seek_basicblock_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_basicblock_help = {
	.summary = "Seek aligned to bb start",
	.args = seek_basicblock_args,
};

static const RzCmdDescArg seek_function_args[] = {
	{
		.name = "fcn",
		.type = RZ_CMD_ARG_TYPE_FCN,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_function_help = {
	.summary = "Seek to next function / Seek to specific function",
	.args = seek_function_args,
};

static const RzCmdDescArg seek_function_current_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_function_current_help = {
	.summary = "Seek to the beginning of current function",
	.args = seek_function_current_args,
};

static const RzCmdDescArg seek_begin_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_begin_help = {
	.summary = "Seek to begin of section/file",
	.args = seek_begin_args,
};

static const RzCmdDescArg seek_end_args[] = {
	{ 0 },
};
static const RzCmdDescHelp seek_end_help = {
	.summary = "Seek to end of section/file",
	.args = seek_end_args,
};

static const char *seek_next_type_choices[] = { "opcodes", "function", "hit", "flags", NULL };
static const RzCmdDescArg seek_next_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = seek_next_type_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_next_help = {
	.summary = "Seek to next location of the given <type> or scr.nkey otherwise",
	.description = "<type> and scr.nkey can be one of \"opcodes\", \"function\", \"hit\", \"flags\".",
	.args = seek_next_args,
};

static const char *seek_prev_type_choices[] = { "opcodes", "function", "hit", "flags", NULL };
static const RzCmdDescArg seek_prev_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_CHOICES,
		.optional = true,
		.choices.choices = seek_prev_type_choices,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_prev_help = {
	.summary = "Seek to prev location",
	.description = "<type> and scr.nkey can be one of \"opcodes\", \"function\", \"hit\", \"flags\".",
	.args = seek_prev_args,
};

static const RzCmdDescArg seek_opcode_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_opcode_help = {
	.summary = "Seek to <n> next opcodes",
	.args = seek_opcode_args,
};

static const RzCmdDescArg seek_register_args[] = {
	{
		.name = "reg",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp seek_register_help = {
	.summary = "Seek to register",
	.args = seek_register_args,
};

static const RzCmdDescHelp t_help = {
	.summary = "Types, noreturn, signatures, C parser and more",
};
static const RzCmdDescArg type_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_help = {
	.summary = "List all types / Show type information",
	.description = "When <type> is provided, the pf-format for the given type is provided, otherwise all types are listed.",
	.args = type_args,
};

static const RzCmdDescArg type_del_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{ 0 },
};
static const RzCmdDescHelp type_del_help = {
	.summary = "Remove the type",
	.args = type_del_args,
};

static const RzCmdDescArg type_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp type_del_all_help = {
	.summary = "Remove all types",
	.args = type_del_all_args,
};

static const RzCmdDescHelp tc_help = {
	.summary = "List loaded types in C format",
};
static const RzCmdDescArg type_list_c_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_c_help = {
	.summary = "List loaded types in C format with newlines",
	.args = type_list_c_args,
};

static const RzCmdDescArg type_list_c_nl_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_c_nl_help = {
	.summary = "List loaded types in C format without newlines",
	.args = type_list_c_nl_args,
};

static const RzCmdDescHelp tcc_help = {
	.summary = "Manage calling convention types",
};
static const RzCmdDescArg type_cc_list_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_cc_list_help = {
	.summary = "List all calling conventions",
	.args = type_cc_list_args,
};

static const RzCmdDescArg type_cc_del_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp type_cc_del_help = {
	.summary = "Remove the calling convention",
	.args = type_cc_del_args,
};

static const RzCmdDescArg type_cc_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp type_cc_del_all_help = {
	.summary = "Remove all calling conventions",
	.args = type_cc_del_all_args,
};

static const RzCmdDescArg type_define_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp type_define_help = {
	.summary = "Define type from C definition",
	.args = type_define_args,
};

static const RzCmdDescHelp te_help = {
	.summary = "List loaded enums",
};
static const RzCmdDescArg type_list_enum_args[] = {
	{
		.name = "enum",
		.type = RZ_CMD_ARG_TYPE_ENUM_TYPE,
		.optional = true,

	},
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_enum_help = {
	.summary = "List loaded enums / Show enum member",
	.args = type_list_enum_args,
};

static const RzCmdDescArg type_enum_bitfield_args[] = {
	{
		.name = "enum",
		.type = RZ_CMD_ARG_TYPE_ENUM_TYPE,

	},
	{
		.name = "field",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp type_enum_bitfield_help = {
	.summary = "Show enum bitfield",
	.args = type_enum_bitfield_args,
};

static const RzCmdDescArg type_enum_c_args[] = {
	{
		.name = "enum",
		.type = RZ_CMD_ARG_TYPE_ENUM_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_enum_c_help = {
	.summary = "Show enum in the C output format",
	.args = type_enum_c_args,
};

static const RzCmdDescArg type_enum_c_nl_args[] = {
	{
		.name = "enum",
		.type = RZ_CMD_ARG_TYPE_ENUM_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_enum_c_nl_help = {
	.summary = "Show enum in the C output format without newlines",
	.args = type_enum_c_nl_args,
};

static const RzCmdDescArg type_enum_find_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp type_enum_find_help = {
	.summary = "Find enum and member by the member value",
	.args = type_enum_find_args,
};

static const RzCmdDescHelp tf_help = {
	.summary = "List loaded functions definitions",
};
static const RzCmdDescArg type_list_function_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_function_help = {
	.summary = "List loaded function definitions / Show function signature",
	.args = type_list_function_args,
};

static const RzCmdDescArg type_function_del_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp type_function_del_help = {
	.summary = "Remove the function type by name",
	.args = type_function_del_args,
};

static const RzCmdDescArg type_function_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp type_function_del_all_help = {
	.summary = "Remove all function types",
	.args = type_function_del_all_args,
};

static const RzCmdDescArg type_function_cc_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "cc",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_function_cc_help = {
	.summary = "Show or set function calling convention",
	.args = type_function_cc_args,
};

static const RzCmdDescHelp tn_help = {
	.summary = "Manage noreturn function attributes and marks",
};
static const RzCmdDescArg type_list_noreturn_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_noreturn_help = {
	.summary = "List all noreturn references / Add a noreturn function",
	.args = type_list_noreturn_args,
};

static const RzCmdDescArg type_noreturn_del_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp type_noreturn_del_help = {
	.summary = "Remove the noreturn reference",
	.args = type_noreturn_del_args,
};

static const RzCmdDescArg type_noreturn_del_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp type_noreturn_del_all_help = {
	.summary = "Remove all noreturn references",
	.args = type_noreturn_del_all_args,
};

static const RzCmdDescHelp to_help = {
	.summary = "Open C header file and load types from it",
};
static const RzCmdDescArg type_open_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp type_open_file_help = {
	.summary = "Open C header file and load types from it",
	.args = type_open_file_args,
};

static const RzCmdDescArg type_open_editor_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{ 0 },
};
static const RzCmdDescHelp type_open_editor_help = {
	.summary = "Open cfg.editor to edit type",
	.args = type_open_editor_args,
};

static const RzCmdDescArg type_open_sdb_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp type_open_sdb_help = {
	.summary = "Open SDB file and load types from it",
	.args = type_open_sdb_args,
};

static const RzCmdDescHelp tp_help = {
	.summary = "Print formatted type casted to the address",
};
static const RzCmdDescArg type_print_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_print_help = {
	.summary = "Print formatted type casted to the address or variable",
	.args = type_print_args,
};

static const RzCmdDescArg type_print_value_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_print_value_help = {
	.summary = "Print formatted type casted to the value",
	.args = type_print_value_args,
};

static const RzCmdDescArg type_print_hexstring_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,

	},
	{
		.name = "hexpairs",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp type_print_hexstring_help = {
	.summary = "Print formatted type casted to the hexadecimal sequence",
	.args = type_print_hexstring_args,
};

static const RzCmdDescHelp ts_help = {
	.summary = "List loaded structures",
};
static const RzCmdDescArg type_list_structure_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRUCT_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_structure_help = {
	.summary = "List loaded structures / Show pf format string for given structure",
	.args = type_list_structure_args,
};

static const RzCmdDescArg type_structure_c_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRUCT_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_structure_c_help = {
	.summary = "Show structure in the C output format with newlines",
	.args = type_structure_c_args,
};

static const RzCmdDescArg type_structure_c_nl_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_STRUCT_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_structure_c_nl_help = {
	.summary = "Show structure in the C output format without newlines",
	.args = type_structure_c_nl_args,
};

static const RzCmdDescHelp tt_help = {
	.summary = "List loaded typedefs",
};
static const RzCmdDescArg type_list_typedef_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ALIAS_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_typedef_help = {
	.summary = "List loaded typedefs / Show name for given type alias",
	.args = type_list_typedef_args,
};

static const RzCmdDescArg type_typedef_c_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ALIAS_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_typedef_c_help = {
	.summary = "Show typedef in the C output format",
	.args = type_typedef_c_args,
};

static const RzCmdDescHelp tu_help = {
	.summary = "List loaded unions",
};
static const RzCmdDescArg type_list_union_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_UNION_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_list_union_help = {
	.summary = "List loaded unions / Show pf format string for given union",
	.args = type_list_union_args,
};

static const RzCmdDescArg type_union_c_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_UNION_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_union_c_help = {
	.summary = "Show union in the C output format with newlines",
	.args = type_union_c_args,
};

static const RzCmdDescArg type_union_c_nl_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_UNION_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_union_c_nl_help = {
	.summary = "Show union in the C output format without newlines",
	.args = type_union_c_nl_args,
};

static const RzCmdDescHelp tx_help = {
	.summary = "Type xrefs",
};
static const RzCmdDescArg type_xrefs_list_args[] = {
	{
		.name = "type",
		.type = RZ_CMD_ARG_TYPE_ANY_TYPE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_xrefs_list_help = {
	.summary = "List functions using the type",
	.args = type_xrefs_list_args,
};

static const RzCmdDescArg type_xrefs_function_args[] = {
	{
		.name = "address",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp type_xrefs_function_help = {
	.summary = "List all types used in the function",
	.args = type_xrefs_function_args,
};

static const RzCmdDescArg type_xrefs_graph_args[] = {
	{ 0 },
};
static const RzCmdDescHelp type_xrefs_graph_help = {
	.summary = "Render the type xrefs graph",
	.args = type_xrefs_graph_args,
};

static const RzCmdDescArg type_xrefs_list_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp type_xrefs_list_all_help = {
	.summary = "List all types used by any function",
	.args = type_xrefs_list_all_args,
};

static const RzCmdDescHelp V_help = {
	.summary = "Interactive mode",
};
static const RzCmdDescDetailEntry interactive_visual_Parameters_detail_entries[] = {
	{ .text = "V", .arg_str = " <key_sequence>", .comment = "The <key-sequence> argument is a string of keys to press directly after entering the visual mode. See 'VH' or 'VHH' for a full list of valid keys." },
	{ 0 },
};
static const RzCmdDescDetail interactive_visual_details[] = {
	{ .name = "Parameters", .entries = interactive_visual_Parameters_detail_entries },
	{ 0 },
};
static const RzCmdDescArg interactive_visual_args[] = {
	{
		.name = "key-sequence",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_help = {
	.summary = "Enter interactive visual mode",
	.description = "Use Rizin (mostly) without shell. Scrolling disassembly, debugging, searching or graph views. All with a few keyboard shortcuts.",
	.details = interactive_visual_details,
	.args = interactive_visual_args,
};

static const RzCmdDescArg interactive_visual_help_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_help_help = {
	.summary = "Show most common keys shortcuts of the visual mode.",
	.args = interactive_visual_help_args,
};

static const RzCmdDescArg interactive_visual_help_detail_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_help_detail_help = {
	.summary = "Show all keys shortcuts of the visual mode.",
	.args = interactive_visual_help_detail_args,
};

static const RzCmdDescArg interactive_visual_disas_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_disas_help = {
	.summary = "Enter interactive visual mode and select next mode (alias for 'V p').",
	.args = interactive_visual_disas_args,
};

static const RzCmdDescArg interactive_visual_emu_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_emu_help = {
	.summary = "Enter interactive visual mode and select the mode after next (alias for 'V pp').",
	.args = interactive_visual_emu_args,
};

static const RzCmdDescArg interactive_visual_management_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_management_help = {
	.summary = "Enter interactive visual mode and select the view management (alias for 'V v').",
	.args = interactive_visual_management_args,
};

static const RzCmdDescArg interactive_visual_config_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_config_help = {
	.summary = "Enter interactive visual mode and select the configurations toggle (alias for 'V e').",
	.args = interactive_visual_config_args,
};

static const RzCmdDescArg interactive_visual_graph_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_visual_graph_help = {
	.summary = "Enter interactive visual mode and select the function graph (alias for 'V V').",
	.args = interactive_visual_graph_args,
};

static const RzCmdDescHelp v_help = {
	.summary = "Interactive panel mode",
};
static const RzCmdDescArg interactive_panel_args[] = {
	{ 0 },
};
static const RzCmdDescHelp interactive_panel_help = {
	.summary = "Enter interactive panel mode",
	.args = interactive_panel_args,
};

static const RzCmdDescArg interactive_panel_load_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp interactive_panel_load_help = {
	.summary = "Load panel layout",
	.args = interactive_panel_load_args,
};

static const RzCmdDescArg interactive_panel_store_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp interactive_panel_store_help = {
	.summary = "Store panel layout",
	.args = interactive_panel_store_args,
};

static const RzCmdDescHelp w_help = {
	.summary = "Write commands",
};
static const RzCmdDescDetailEntry write_Examples_detail_entries[] = {
	{ .text = "w", .arg_str = " 123\\n", .comment = "Write the chars '1', '2', '3' and a newline" },
	{ .text = "w", .arg_str = " ab\\0cd\\0", .comment = "Write the chars 'a', 'b', a NUL, 'c', 'd' and another NUL" },
	{ 0 },
};

static const RzCmdDescDetailEntry write_Escape_space_sequences_detail_entries[] = {
	{ .text = "\\0", .arg_str = NULL, .comment = "NUL (0x0)" },
	{ .text = "\\a", .arg_str = NULL, .comment = "Bell (0x7)" },
	{ .text = "\\b", .arg_str = NULL, .comment = "Backspace (0x8)" },
	{ .text = "\\e", .arg_str = NULL, .comment = "Escape (0x1b)" },
	{ .text = "\\f", .arg_str = NULL, .comment = "Form feed (0xc)" },
	{ .text = "\\n", .arg_str = NULL, .comment = "Newline (0xa)" },
	{ .text = "\\r", .arg_str = NULL, .comment = "Carriage return (0xd)" },
	{ .text = "\\t", .arg_str = NULL, .comment = "Tab (0x9)" },
	{ .text = "\\v", .arg_str = NULL, .comment = "Vertical tab (0xb)" },
	{ .text = "\\\\", .arg_str = NULL, .comment = "Backslash ('\\')" },
	{ .text = "\\xhh", .arg_str = NULL, .comment = "Byte in hexadecimal" },
	{ .text = "\\nnn", .arg_str = NULL, .comment = "Byte in octal (eg. \\033 for the escape char)" },
	{ 0 },
};
static const RzCmdDescDetail write_details[] = {
	{ .name = "Examples", .entries = write_Examples_detail_entries },
	{ .name = "Escape sequences", .entries = write_Escape_space_sequences_detail_entries },
	{ 0 },
};
static const RzCmdDescArg write_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_help = {
	.summary = "Write string",
	.details = write_details,
	.args = write_args,
};

static const RzCmdDescHelp wB_help = {
	.summary = "Set or unset bits with given value",
};
static const RzCmdDescDetailEntry write_bits_Examples_detail_entries[] = {
	{ .text = "wB", .arg_str = " 0x20", .comment = "Sets the 5th bit at current offset, leaving all other bits intact." },
	{ 0 },
};
static const RzCmdDescDetail write_bits_details[] = {
	{ .name = "Examples", .entries = write_bits_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg write_bits_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_bits_help = {
	.summary = "Set bits with given value",
	.description = "Set the bits that are set in the value passed as arguments. 0 bits in the value argument are ignored, while the others are set at the current offset.",
	.details = write_bits_details,
	.args = write_bits_args,
};

static const RzCmdDescArg write_unset_bits_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_unset_bits_help = {
	.summary = "Unset bits with given value",
	.description = "Unset the bits that are set in the value passed as arguments. 0 bits in the value argument are ignored, while the others are unset at the current offset",
	.args = write_unset_bits_args,
};

static const RzCmdDescDetailEntry wv_Examples_detail_entries[] = {
	{ .text = "wv", .arg_str = " 0xdeadbeef", .comment = "Write the value 0xdeadbeef at current offset" },
	{ .text = "wv2", .arg_str = " 0xdead", .comment = "Write the word 0xdead at current offset" },
	{ .text = "wv1", .arg_str = " 0xde", .comment = "Write the byte 0xde at current offset" },
	{ 0 },
};
static const RzCmdDescDetail wv_details[] = {
	{ .name = "Examples", .entries = wv_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp wv_help = {
	.summary = "Write value of given size",
	.details = wv_details,
};
static const RzCmdDescArg write_value_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_value_help = {
	.summary = "Write value as 4-bytes/8-bytes based on value",
	.description = "Write the number passed as argument at the current offset as a 4 - bytes value or 8 - bytes value if the input is bigger than UT32_MAX, respecting the cfg.bigendian variable",
	.args = write_value_args,
};

static const RzCmdDescArg write_value1_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_value1_help = {
	.summary = "Write value of 1 byte",
	.description = "Write the number passed as argument at the current offset as 1 - byte, respecting the cfg.bigendian variable",
	.args = write_value1_args,
};

static const RzCmdDescArg write_value2_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_value2_help = {
	.summary = "Write value of 2 byte",
	.description = "Write the number passed as argument at the current offset as 2 - bytes, respecting the cfg.bigendian variable",
	.args = write_value2_args,
};

static const RzCmdDescArg write_value4_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_value4_help = {
	.summary = "Write value of 4 byte",
	.description = "Write the number passed as argument at the current offset as 4 - bytes, respecting the cfg.bigendian variable",
	.args = write_value4_args,
};

static const RzCmdDescArg write_value8_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_value8_help = {
	.summary = "Write value of 8 byte",
	.description = "Write the number passed as argument at the current offset as 8 - bytes, respecting the cfg.bigendian variable",
	.args = write_value8_args,
};

static const RzCmdDescArg write_zero_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp write_zero_help = {
	.summary = "Write <len> bytes with value 0x00",
	.description = "Fill <len> bytes starting from the current offset with the value 0.",
	.args = write_zero_args,
};

static const RzCmdDescHelp write_incdec_help = {
	.summary = "Increment/decrement byte, word, ...",
	.args_str = " [<n>]",
	.options = "<1248><+->",
};
static const RzCmdDescDetailEntry w1_Examples_detail_entries[] = {
	{ .text = "w1+", .arg_str = NULL, .comment = "Add 1 to the byte at the current offset." },
	{ .text = "w1-", .arg_str = NULL, .comment = "Subtract 1 to the byte at the current offset." },
	{ .text = "w1-", .arg_str = " 9", .comment = "Subtract 9 to the byte at the current offset." },
	{ 0 },
};
static const RzCmdDescDetail w1_details[] = {
	{ .name = "Examples", .entries = w1_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp w1_help = {
	.summary = "Increment/decrement a byte",
	.details = w1_details,
};
static const RzCmdDescArg write_1_inc_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_1_inc_help = {
	.summary = "Increment a byte",
	.description = "Increment a byte at the current offset by 1 or <n>, if specified",
	.args = write_1_inc_args,
};

static const RzCmdDescArg write_1_dec_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_1_dec_help = {
	.summary = "Decrement a byte",
	.description = "Decrement a byte at the current offset by 1 or <n>, if specified",
	.args = write_1_dec_args,
};

static const RzCmdDescDetailEntry w2_Examples_detail_entries[] = {
	{ .text = "w2+", .arg_str = NULL, .comment = "Add 1 to the word at the current offset." },
	{ .text = "w2-", .arg_str = NULL, .comment = "Subtract 1 to the word at the current offset." },
	{ .text = "w2-", .arg_str = " 9", .comment = "Subtract 9 to the word at the current offset." },
	{ 0 },
};
static const RzCmdDescDetail w2_details[] = {
	{ .name = "Examples", .entries = w2_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp w2_help = {
	.summary = "Increment/decrement a word",
	.details = w2_details,
};
static const RzCmdDescArg write_2_inc_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_2_inc_help = {
	.summary = "Increment a word",
	.description = "Increment a word at the current offset by 1 or <n>, if specified",
	.args = write_2_inc_args,
};

static const RzCmdDescArg write_2_dec_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_2_dec_help = {
	.summary = "Decrement a word",
	.description = "Decrement a word at the current offset by 1 or <n>, if specified",
	.args = write_2_dec_args,
};

static const RzCmdDescDetailEntry w4_Examples_detail_entries[] = {
	{ .text = "w4+", .arg_str = NULL, .comment = "Add 1 to the dword at the current offset." },
	{ .text = "w4-", .arg_str = NULL, .comment = "Subtract 1 to the dword at the current offset." },
	{ .text = "w4-", .arg_str = " 9", .comment = "Subtract 9 to the dword at the current offset." },
	{ 0 },
};
static const RzCmdDescDetail w4_details[] = {
	{ .name = "Examples", .entries = w4_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp w4_help = {
	.summary = "Increment/decrement a dword",
	.details = w4_details,
};
static const RzCmdDescArg write_4_inc_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_4_inc_help = {
	.summary = "Increment a dword",
	.description = "Increment a dword at the current offset by 1 or <n>, if specified",
	.args = write_4_inc_args,
};

static const RzCmdDescArg write_4_dec_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_4_dec_help = {
	.summary = "Decrement a dword",
	.description = "Decrement a dword at the current offset by 1 or <n>, if specified",
	.args = write_4_dec_args,
};

static const RzCmdDescDetailEntry w8_Examples_detail_entries[] = {
	{ .text = "w8+", .arg_str = NULL, .comment = "Add 1 to the qword at the current offset." },
	{ .text = "w8-", .arg_str = NULL, .comment = "Subtract 1 to the qword at the current offset." },
	{ .text = "w8-", .arg_str = " 9", .comment = "Subtract 9 to the qword at the current offset." },
	{ 0 },
};
static const RzCmdDescDetail w8_details[] = {
	{ .name = "Examples", .entries = w8_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp w8_help = {
	.summary = "Increment/decrement a qword",
	.details = w8_details,
};
static const RzCmdDescArg write_8_inc_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_8_inc_help = {
	.summary = "Increment a qword",
	.description = "Increment a qword at the current offset by 1 or <n>, if specified",
	.args = write_8_inc_args,
};

static const RzCmdDescArg write_8_dec_args[] = {
	{
		.name = "n",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_8_dec_help = {
	.summary = "Decrement a qword",
	.description = "Decrement a qword at the current offset by 1 or <n>, if specified",
	.args = write_8_dec_args,
};

static const RzCmdDescDetailEntry w6_Examples_detail_entries[] = {
	{ .text = "w6d", .arg_str = " SGVsbG9Xb3JsZAo=", .comment = "Write the string \"HelloWorld\" (without quotes) at current offset." },
	{ .text = "w6e", .arg_str = " 48656c6c6f576f726c64", .comment = "Write the string \"SGVsbG9Xb3JsZAo=\" (without quotes) at current offset." },
	{ 0 },
};
static const RzCmdDescDetail w6_details[] = {
	{ .name = "Examples", .entries = w6_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp w6_help = {
	.summary = "Write base64 [d]ecoded or [e]ncoded string",
	.details = w6_details,
};
static const RzCmdDescArg write_base64_decode_args[] = {
	{
		.name = "base64",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_base64_decode_help = {
	.summary = "Write the base64-decoded bytes",
	.description = "Base64-Decode the string passed as argument and write it at the current offset.",
	.args = write_base64_decode_args,
};

static const RzCmdDescArg write_base64_encode_args[] = {
	{
		.name = "hexstring",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_base64_encode_help = {
	.summary = "Write the base64-encoded bytes",
	.description = "Base64-Encode the hex string passed as argument and write it at the current offset",
	.args = write_base64_encode_args,
};

static const RzCmdDescHelp we_help = {
	.summary = "Extend write operations (insert bytes instead of replacing)",
};
static const RzCmdDescArg write_extend_zero_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_extend_zero_help = {
	.summary = "Insert <len> null bytes at <addr> or current offset and extend the file at current offset",
	.args = write_extend_zero_args,
};

static const RzCmdDescArg write_extend_shift_args[] = {
	{
		.name = "dist",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_extend_shift_help = {
	.summary = "Shift <len> bytes at current offset left or right based on <dist>",
	.description = "Shift the bytes at current offset left or right, based on the value of <dist>. Positive <dist> shifts the data right, negative <dist> shifts the data left. The amount of data to be shifted is either <len>, if specified, or the whole remaining file otherwise.",
	.args = write_extend_shift_args,
};

static const RzCmdDescDetailEntry write_extend_hexbytes_Examples_detail_entries[] = {
	{ .text = "wex", .arg_str = " 414243", .comment = "Insert the characters \"ABC\" at the current offset and extend the file" },
	{ 0 },
};
static const RzCmdDescDetail write_extend_hexbytes_details[] = {
	{ .name = "Examples", .entries = write_extend_hexbytes_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg write_extend_hexbytes_args[] = {
	{
		.name = "bytes",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_extend_hexbytes_help = {
	.summary = "Insert <hex_bytes> at <addr> or current offset and extend the file at current offset",
	.details = write_extend_hexbytes_details,
	.args = write_extend_hexbytes_args,
};

static const RzCmdDescArg write_unified_patch_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp write_unified_patch_help = {
	.summary = "Apply unified hex patch (see output of cu)",
	.args = write_unified_patch_args,
};

static const RzCmdDescArg write_random_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_random_help = {
	.summary = "Write <len> random bytes",
	.args = write_random_args,
};

static const RzCmdDescHelp wc_help = {
	.summary = "Write cache commands",
};
static const RzCmdDescArg write_cache_list_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_cache_list_help = {
	.summary = "List all write changes in the cache",
	.args = write_cache_list_args,
};

static const RzCmdDescArg write_cache_remove_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_cache_remove_help = {
	.summary = "Remove write operation at current offset or in the given range",
	.args = write_cache_remove_args,
};

static const RzCmdDescArg write_cache_remove_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_cache_remove_all_help = {
	.summary = "Reset the cache",
	.args = write_cache_remove_all_args,
};

static const RzCmdDescArg write_cache_commit_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_cache_commit_help = {
	.summary = "Commit cache from address <from> up to <to> or one blocksize",
	.args = write_cache_commit_args,
};

static const RzCmdDescArg write_cache_commit_all_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_cache_commit_all_help = {
	.summary = "Commit the cache",
	.args = write_cache_commit_all_args,
};

static const RzCmdDescArg write_pcache_list_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_pcache_list_help = {
	.summary = "List all write changes in the p-cache",
	.args = write_pcache_list_args,
};

static const RzCmdDescArg write_pcache_commit_args[] = {
	{
		.name = "fd",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_pcache_commit_help = {
	.summary = "Commit p-cache for specified <fd> or current file",
	.args = write_pcache_commit_args,
};

static const RzCmdDescArg write_zero_string_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_zero_string_help = {
	.summary = "Write zero-terminated string",
	.args = write_zero_string_args,
};

static const RzCmdDescHelp wf_help = {
	.summary = "Write data from file, socket, offset",
};
static const RzCmdDescArg write_from_io_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_from_io_help = {
	.summary = "Write <size> bytes from <addr> into current offset",
	.args = write_from_io_args,
};

static const RzCmdDescArg write_from_io_xchg_args[] = {
	{
		.name = "addr",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_from_io_xchg_help = {
	.summary = "Exchange <size> bytes between <addr> and current offset",
	.args = write_from_io_xchg_args,
};

static const RzCmdDescArg write_from_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.optional = true,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_from_file_help = {
	.summary = "Write data from <file> into current offset",
	.args = write_from_file_args,
};

static const RzCmdDescArg write_from_socket_args[] = {
	{
		.name = "host:port",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "size",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_from_socket_help = {
	.summary = "Write data from socket into current offset",
	.args = write_from_socket_args,
};

static const RzCmdDescArg write_wide_string_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_wide_string_help = {
	.summary = "Write wide (16-bit) little-endian string",
	.args = write_wide_string_args,
};

static const RzCmdDescHelp wx_help = {
	.summary = "Write hexadecimal data",
};
static const RzCmdDescArg write_hex_args[] = {
	{
		.name = "hex",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_hex_help = {
	.summary = "Write hexadecimal data <hex> into current offset",
	.args = write_hex_args,
};

static const RzCmdDescArg write_hex_from_file_args[] = {
	{
		.name = "file|-",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp write_hex_from_file_help = {
	.summary = "Write hexadecimal data from file <file> into current offset",
	.args = write_hex_from_file_args,
};

static const RzCmdDescHelp wa_help = {
	.summary = "Write opcodes",
};
static const RzCmdDescArg write_assembly_args[] = {
	{
		.name = "instructions",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp write_assembly_help = {
	.summary = "Assemble instruction(s) and write bytes at current offset",
	.description = "Assemble the <instructions> provided as argument considering the current architecture and bits in asm.arch/asm.bits and write the resulting bytes at the current offset.",
	.args = write_assembly_args,
};

static const RzCmdDescArg write_assembly_inside_args[] = {
	{
		.name = "instructions",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,

	},
	{ 0 },
};
static const RzCmdDescHelp write_assembly_inside_help = {
	.summary = "Assemble instruction(s) and write bytes inside the current instruction",
	.description = "Assemble the <instructions> provided as argument considering the current architecture and bits in asm.arch/asm.bits and write the resulting bytes \"inside\" the current instruction, by filling the remaining bytes of the old instruction with nop bytes.",
	.args = write_assembly_inside_args,
};

static const RzCmdDescArg write_assembly_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp write_assembly_file_help = {
	.summary = "Assemble file and write bytes at current offset",
	.description = "Assemble the assembly file <file> provided as argument considering the current architecture and bits in asm.arch/asm.bits and write the resulting bytes at the current offset.",
	.args = write_assembly_file_args,
};

static const RzCmdDescDetailEntry write_assembly_opcode_Operators_detail_entries[] = {
	{ .text = "wao", .arg_str = " nop", .comment = "Make the current instruction a no operation" },
	{ .text = "wao", .arg_str = " jinf", .comment = "Assemble an infinite loop" },
	{ .text = "wao", .arg_str = " jz", .comment = "Make the current conditional instruction a jump-if-zero" },
	{ .text = "wao", .arg_str = " jnz", .comment = "Make the current conditional instruction a jump-if-not-zero" },
	{ .text = "wao", .arg_str = " ret1", .comment = "Make the current instruction return 1" },
	{ .text = "wao", .arg_str = " ret0", .comment = "Make the current instruction return 0" },
	{ .text = "wao", .arg_str = " retn", .comment = "Make the current instruction return -1" },
	{ .text = "wao", .arg_str = " nocj", .comment = "Make the current conditional instruction unconditional" },
	{ .text = "wao", .arg_str = " trap", .comment = "Make the current instruction a trap (e.g. int3 in x86)" },
	{ .text = "wao", .arg_str = " recj", .comment = "Swap the condition of the current conditional instruction" },
	{ 0 },
};
static const RzCmdDescDetail write_assembly_opcode_details[] = {
	{ .name = "Operators", .entries = write_assembly_opcode_Operators_detail_entries },
	{ 0 },
};
static const RzCmdDescArg write_assembly_opcode_args[] = {
	{
		.name = "op",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_assembly_opcode_help = {
	.summary = "Write on the current opcode",
	.details = write_assembly_opcode_details,
	.args = write_assembly_opcode_args,
};

static const RzCmdDescArg write_block_args[] = {
	{
		.name = "hex",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_block_help = {
	.summary = "Write in current block a hexstring cyclically",
	.args = write_block_args,
};

static const RzCmdDescHelp wm_help = {
	.summary = "Set binary mask hexpair to be used as cyclic write mask",
};
static const RzCmdDescArg write_mask_set_args[] = {
	{
		.name = "hex_mask",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_mask_set_help = {
	.summary = "Set a write mask",
	.description = "Set a write mask that is applied whenever a following write operation is performed. Data will be masked as if the first byte of data is in arithmetic AND (&) with the first byte of the mask, the second byte of data with the second byte of the mask, and so on.",
	.args = write_mask_set_args,
};

static const RzCmdDescArg write_mask_reset_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_mask_reset_help = {
	.summary = "Remove the write mask",
	.args = write_mask_reset_args,
};

static const RzCmdDescDetailEntry wo_Examples_detail_entries[] = {
	{ .text = "woa", .arg_str = " 20", .comment = "Content before: 1122334455 ; Content after: 3142536475" },
	{ .text = "wos", .arg_str = " 2021", .comment = "Content before: 1122334455 ; Content after: f101132335" },
	{ .text = "wo4", .arg_str = "", .comment = "Content before: 1122334455667788; Content after: 4433221188776655" },
	{ 0 },
};
static const RzCmdDescDetail wo_details[] = {
	{ .name = "Examples", .entries = wo_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp wo_help = {
	.summary = "Write a block with a special operation",
	.details = wo_details,
};
static const RzCmdDescArg write_op_2byteswap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_op_2byteswap_help = {
	.summary = "Swap the endianess of 2-bytes values in the current block",
	.args = write_op_2byteswap_args,
};

static const RzCmdDescArg write_op_4byteswap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_op_4byteswap_help = {
	.summary = "Swap the endianess of 4-bytes values in the current block",
	.args = write_op_4byteswap_args,
};

static const RzCmdDescArg write_op_8byteswap_args[] = {
	{ 0 },
};
static const RzCmdDescHelp write_op_8byteswap_help = {
	.summary = "Swap the endianess of 8-bytes values in the current block",
	.args = write_op_8byteswap_args,
};

static const RzCmdDescArg write_op_add_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_add_help = {
	.summary = "Add each existing byte in the block with the given <value>",
	.args = write_op_add_args,
};

static const RzCmdDescArg write_op_and_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_and_help = {
	.summary = "Bitwise-and each existing byte in the block with the given <value>",
	.args = write_op_and_args,
};

static const RzCmdDescArg write_op_div_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_div_help = {
	.summary = "Divide each existing byte in the block with the given <value>",
	.args = write_op_div_args,
};

static const RzCmdDescArg write_op_shl_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_shl_help = {
	.summary = "Bitwise-shift-left each existing byte in the block with the given <value>",
	.args = write_op_shl_args,
};

static const RzCmdDescArg write_op_mul_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_mul_help = {
	.summary = "Multiply each existing byte in the block with the given <value>",
	.args = write_op_mul_args,
};

static const RzCmdDescArg write_op_or_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_or_help = {
	.summary = "Bitwise-or each existing byte in the block with the given <value>",
	.args = write_op_or_args,
};

static const RzCmdDescArg write_op_shr_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_shr_help = {
	.summary = "Bitwise-shift-right each existing byte in the block with the given <value>",
	.args = write_op_shr_args,
};

static const RzCmdDescArg write_op_sub_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_sub_help = {
	.summary = "Subtract each existing byte in the block with the given <value>",
	.args = write_op_sub_args,
};

static const RzCmdDescArg write_op_xor_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_xor_help = {
	.summary = "Bitwise-xor each existing byte in the block with the given <value>",
	.args = write_op_xor_args,
};

static const RzCmdDescDetailEntry write_op_sequence_Examples_detail_entries[] = {
	{ .text = "woe", .arg_str = " 1 3 1", .comment = "Write 010203010203010203" },
	{ .text = "woe", .arg_str = " 1 4 2", .comment = "Write 010301030103010301" },
	{ .text = "woe", .arg_str = " 1 5 2", .comment = "Write 010305020401030502" },
	{ .text = "woe", .arg_str = " 1 3 1 2", .comment = "Write 01000200030001000200" },
	{ 0 },
};
static const RzCmdDescDetail write_op_sequence_details[] = {
	{ .name = "Examples", .entries = write_op_sequence_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescArg write_op_sequence_args[] = {
	{
		.name = "from",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "to",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{
		.name = "step",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "1",

	},
	{
		.name = "value_size",
		.type = RZ_CMD_ARG_TYPE_NUM,
		.default_value = "1",

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_sequence_help = {
	.summary = "Write a sequence repeatedly with values from <from> up to <to> in the block",
	.description = "Write a sequence of data to fill the whole block at the current offset. The sequence is formed starting from <from> up to <to>, with an increment specified in <step>. Each value is written as a <value_size>-bytes value, according to the endianess specified in cfg.bigendian.",
	.details = write_op_sequence_details,
	.args = write_op_sequence_args,
};

static const RzCmdDescArg write_op_decrypt_args[] = {
	{
		.name = "algo",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "IV",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_decrypt_help = {
	.summary = "Decrypt current block with given <algo>, <key> and optional <IV>",
	.args = write_op_decrypt_args,
};

static const RzCmdDescArg write_op_encrypt_args[] = {
	{
		.name = "algo",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "key",
		.type = RZ_CMD_ARG_TYPE_STRING,

	},
	{
		.name = "IV",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp write_op_encrypt_help = {
	.summary = "Encrypt current block with given <algo>, <key> and optional <IV>",
	.args = write_op_encrypt_args,
};

static const RzCmdDescHelp wD_help = {
	.summary = "Write de Bruijn pattern",
};
static const RzCmdDescArg write_debruijn_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_debruijn_help = {
	.summary = "Write a de Bruijn pattern of length <len> at the current offset",
	.args = write_debruijn_args,
};

static const RzCmdDescArg write_debruijn_find_args[] = {
	{
		.name = "value",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_debruijn_find_help = {
	.summary = "Returns the offset where <value> can be found in a de Bruijn pattern",
	.description = "It search for a particular value in the pattern as returned by the `wD` command. <value> is assumed to be a number of as few bytes as necessary, in the endian specified by cfg.bigendian.",
	.args = write_debruijn_find_args,
};

static const RzCmdDescArg write_duplicate_args[] = {
	{
		.name = "src",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_duplicate_help = {
	.summary = "Duplicate <len> bytes from <src> offset to current seek",
	.args = write_duplicate_args,
};

static const RzCmdDescArg write_length_string_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp write_length_string_help = {
	.summary = "Write 1 byte for length and then the string",
	.args = write_length_string_args,
};

static const RzCmdDescArg print_hexdump_alias_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_alias_help = {
	.summary = "Alias for 'px' (print hexdump).",
	.args = print_hexdump_alias_args,
};

static const RzCmdDescArg print_hexdump_comments_alias_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp print_hexdump_comments_alias_help = {
	.summary = "Alias for 'pxc' (show hexdump with comments).",
	.args = print_hexdump_comments_alias_args,
};

static const RzCmdDescHelp y_help = {
	.summary = "Yank/paste bytes from/to memory",
};
static const RzCmdDescArg yank_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_help = {
	.summary = "Yank bytes / Show yank contents",
	.args = yank_args,
};

static const RzCmdDescArg yank_editor_args[] = {
	{ 0 },
};
static const RzCmdDescHelp yank_editor_help = {
	.summary = "Open cfg.editor to edit the clipboard",
	.args = yank_editor_args,
};

static const RzCmdDescArg yank_file_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_file_help = {
	.summary = "Yank <len> bytes from file",
	.args = yank_file_args,
};

static const RzCmdDescArg yank_whole_file_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_whole_file_help = {
	.summary = "Yank whole file into clipboard",
	.args = yank_whole_file_args,
};

static const RzCmdDescArg yank_print_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_print_help = {
	.summary = "Print contents of clipboards as raw data",
	.args = yank_print_args,
};

static const RzCmdDescArg yank_string_print_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_string_print_help = {
	.summary = "Print contents of clipboards as string",
	.args = yank_string_print_args,
};

static const RzCmdDescArg yank_to_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,

	},
	{
		.name = "offset",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_to_help = {
	.summary = "Copy <len> bytes from current seek to <offset>",
	.args = yank_to_args,
};

static const RzCmdDescArg yank_hexpairs_args[] = {
	{
		.name = "string",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_hexpairs_help = {
	.summary = "Yank from hexpairs string",
	.args = yank_hexpairs_args,
};

static const RzCmdDescArg yank_hex_print_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_hex_print_help = {
	.summary = "Print contents of clipboard in hexadecimal",
	.args = yank_hex_print_args,
};

static const RzCmdDescArg yank_paste_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_paste_help = {
	.summary = "Paste <len> bytes from yank clipboard",
	.args = yank_paste_args,
};

static const RzCmdDescArg yank_string_args[] = {
	{
		.name = "len",
		.type = RZ_CMD_ARG_TYPE_RZNUM,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp yank_string_help = {
	.summary = "Copy NULL-terminated string into clipboard",
	.args = yank_string_args,
};

static const RzCmdDescDetailEntry tmp_modifiers_empty_detail_entries[] = {
	{ .text = "<cmd> @ ", .arg_str = "<addr>", .comment = "Temporary seek to <addr>" },
	{ .text = "<cmd> @ ", .arg_str = "..<addr>", .comment = "Temporary partial address seek (see s..)" },
	{ .text = "<cmd> @!", .arg_str = "<blocksize>", .comment = "Temporary change the block size" },
	{ .text = "<cmd> @(", .arg_str = "<from> <to>)", .comment = "Temporary set from and to for commands supporting ranges" },
	{ .text = "<cmd> @a:", .arg_str = "<arch>[:<bits>]", .comment = "Temporary set arch and bits, if specified" },
	{ .text = "<cmd> @b:", .arg_str = "<bits>", .comment = "Temporary set asm.bits" },
	{ .text = "<cmd> @B:", .arg_str = "<nth>", .comment = "Temporary seek to nth instruction in current basic block (negative numbers too)" },
	{ .text = "<cmd> @e:", .arg_str = "<k>=<v>[,<k>=<v>]", .comment = "Temporary change eval vars (multiple vars separated by comma)" },
	{ .text = "<cmd> @f:", .arg_str = "<file>", .comment = "Temporary replace block with file contents" },
	{ .text = "<cmd> @F:", .arg_str = "<flagspace>", .comment = "Temporary change flag space" },
	{ .text = "<cmd> @i:", .arg_str = "<nth.op>", .comment = "Temporary seek to the Nth relative instruction" },
	{ .text = "<cmd> @k:", .arg_str = "<key>", .comment = "Temporary seek at value of sdb key `key`" },
	{ .text = "<cmd> @o:", .arg_str = "<fd>", .comment = "Temporary switch to another fd" },
	{ .text = "<cmd> @r:", .arg_str = "<reg>", .comment = "Temporary seek to register value" },
	{ .text = "<cmd> @s:", .arg_str = "<string>", .comment = "Temporary replace block with string" },
	{ .text = "<cmd> @v:", .arg_str = "<value>", .comment = "Temporary replace block with value, written according to asm.bits and cfg.bigendian" },
	{ .text = "<cmd> @x:", .arg_str = "<hexstring>", .comment = "Temporary replace block with hexstring" },
	{ 0 },
};
static const RzCmdDescDetail tmp_modifiers_details[] = {
	{ .name = "", .entries = tmp_modifiers_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp tmp_modifiers_help = {
	.summary = "'@' help, temporary modifiers, applied left-to-right",
	.usage = "<cmd> <@> <args> [<@> <args> ...]",
	.options = "[?]",
	.details = tmp_modifiers_details,
};

static const RzCmdDescDetailEntry iterators_empty_detail_entries[] = {
	{ .text = "<cmd> @@.", .arg_str = " <file>", .comment = "Run <cmd> over the offsets specified in <file>, one per line" },
	{ .text = "<cmd> @@=", .arg_str = "<addr1> [<addr2> ...]", .comment = "Run <cmd> over the listed addresses" },
	{ .text = "<cmd> @@@=", .arg_str = "<addr1> <blksz1> [<addr2> <blksz2> ...]", .comment = "Run <cmd> over the listed addresses and set the proper block size" },
	{ .text = "<cmd> @@/", .arg_str = "<search-cmd>", .comment = "Run <cmd> over the search results of /<search-cmd>" },
	{ .text = "<cmd> @@c:", .arg_str = "<cmd2>", .comment = "Run <cmd> on all addresses in the output of <cmd2>" },
	{ .text = "<cmd> @@@c:", .arg_str = "<cmd2>", .comment = "Run <cmd> on all addresses/blocksizes in the output of <cmd2>, similar to @@@=" },
	{ .text = "<cmd> @@C", .arg_str = "[:<glob>]", .comment = "Run <cmd> over all comments matching <glob>. <glob> may contain `*` to indicate multiple chars. If not specified all comments are considered." },
	{ .text = "<cmd> @@dbt[abs]", .arg_str = "", .comment = "Run <cmd> on every backtrace address, bp or sp" },
	{ .text = "<cmd> @@t", .arg_str = "", .comment = "Run <cmd> over all threads" },
	{ .text = "<cmd> @@b", .arg_str = "", .comment = "Run <cmd> over all basic blocks of the current function" },
	{ .text = "<cmd> @@i", .arg_str = "", .comment = "Run <cmd> over all instructions of the current basic block" },
	{ .text = "<cmd> @@ii", .arg_str = "", .comment = "Run <cmd> over all imports" },
	{ .text = "<cmd> @@iS", .arg_str = "", .comment = "Run <cmd> over all sections" },
	{ .text = "<cmd> @@iSS", .arg_str = "", .comment = "Run <cmd> over all segments" },
	{ .text = "<cmd> @@is", .arg_str = "", .comment = "Run <cmd> over all symbols" },
	{ .text = "<cmd> @@iz", .arg_str = "", .comment = "Run <cmd> over all strings" },
	{ .text = "<cmd> @@f", .arg_str = "[:<glob>]", .comment = "Run <cmd> over all flags matching <glob>. <glob> may contain `*` to indicate multiple chars. If not specified all flags are considered." },
	{ .text = "<cmd> @@F", .arg_str = "[:<glob>]", .comment = "Run <cmd> over all functions matching <glob>. <glob> may contain `*` to indicate multiple chars. If not specified all functions are considered." },
	{ .text = "<cmd> @@om", .arg_str = "", .comment = "Run <cmd> over all iomap (see `om`)" },
	{ .text = "<cmd> @@dm", .arg_str = "", .comment = "Run <cmd> over all debug maps (see `dm`)" },
	{ .text = "<cmd> @@r", .arg_str = "", .comment = "Run <cmd> over all registers" },
	{ .text = "<cmd> @@s:", .arg_str = "<from> <to> <step>", .comment = "Run <cmd> on all addresses starting from <from> and going up to <to> (excluded), with a step <step>." },
	{ 0 },
};
static const RzCmdDescDetail iterators_details[] = {
	{ .name = "", .entries = iterators_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp iterators_help = {
	.summary = "'@@' help, iterators",
	.usage = "<cmd> <@@> <args>",
	.options = "[?]",
	.details = iterators_details,
};

static const RzCmdDescDetailEntry redirection_empty_detail_entries[] = {
	{ .text = "<cmd> >", .arg_str = " <file>|<$alias>", .comment = "Redirect STDOUT of <cmd> to <file> or save it to an alias (see $?)" },
	{ .text = "<cmd> 2>", .arg_str = " <file>|<$alias>", .comment = "Redirect STDERR of <cmd> to <file> or save it to an alias (see $?)" },
	{ .text = "<cmd> H>", .arg_str = " <file>|<$alias>", .comment = "Redirect HTML output of <cmd> to <file> or save it to an alias (see $?)" },
	{ 0 },
};
static const RzCmdDescDetail redirection_details[] = {
	{ .name = "", .entries = redirection_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp redirection_help = {
	.summary = "Redirection help ('>')",
	.usage = "<cmd> > <arg>",
	.options = "[?]",
	.details = redirection_details,
};

static const RzCmdDescDetailEntry pipe_empty_detail_entries[] = {
	{ .text = "<cmd> |", .arg_str = NULL, .comment = "Disable scr.html and scr.color" },
	{ .text = "<cmd> |H", .arg_str = NULL, .comment = "Enable scr.html, respect scr.color" },
	{ .text = "<cmd> |", .arg_str = " <program>", .comment = "Pipe output of command to program" },
	{ .text = "<cmd> |.", .arg_str = NULL, .comment = "Alias for .<cmd>" },
	{ 0 },
};
static const RzCmdDescDetail pipe_details[] = {
	{ .name = "", .entries = pipe_empty_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp pipe_help = {
	.summary = "Pipe help ('|')",
	.usage = "<cmd> |[<program>|H|T|.|]",
	.options = "[?]",
	.details = pipe_details,
};

static const RzCmdDescDetailEntry grep_Modifiers_detail_entries[] = {
	{ .text = "&", .arg_str = NULL, .comment = "All words must match to grep the line" },
	{ .text = "$[n]", .arg_str = NULL, .comment = "Sort numerically / alphabetically the Nth column" },
	{ .text = "$!", .arg_str = NULL, .comment = "Sort in inverse order" },
	{ .text = ",", .arg_str = NULL, .comment = "Token to define another keyword" },
	{ .text = "+", .arg_str = NULL, .comment = "Set the grep as the opposite of search.case_sensitive" },
	{ .text = "^", .arg_str = NULL, .comment = "Words must be placed at the beginning of line, after whitespace if any" },
	{ .text = "<", .arg_str = NULL, .comment = "Perform zoom operation on the buffer" },
	{ .text = "!", .arg_str = NULL, .comment = "Negate grep" },
	{ .text = "?", .arg_str = NULL, .comment = "Count number of matching lines" },
	{ .text = "?.", .arg_str = NULL, .comment = "Count number chars" },
	{ .text = ":s..e", .arg_str = NULL, .comment = "Show lines s-e" },
	{ .text = "..", .arg_str = NULL, .comment = "Internal 'less'" },
	{ .text = "...", .arg_str = NULL, .comment = "Internal 'hud' (like V_)" },
	{ .text = "{:", .arg_str = NULL, .comment = "Human friendly indentation (yes, it's a smiley)" },
	{ .text = "{:..", .arg_str = NULL, .comment = "Less the output of {:" },
	{ .text = "{:...", .arg_str = NULL, .comment = "Hud the output of {:" },
	{ .text = "{}", .arg_str = NULL, .comment = "Json indentation" },
	{ .text = "{}..", .arg_str = NULL, .comment = "Less json indentation" },
	{ .text = "{}...", .arg_str = NULL, .comment = "Hud json indentation" },
	{ .text = "{path}", .arg_str = NULL, .comment = "Json path grep" },
	{ 0 },
};

static const RzCmdDescDetailEntry grep_EndModifiers_detail_entries[] = {
	{ .text = "$", .arg_str = NULL, .comment = "Words must be placed at the end of line" },
	{ 0 },
};

static const RzCmdDescDetailEntry grep_Columns_detail_entries[] = {
	{ .text = "[n]", .arg_str = NULL, .comment = "Show only columns n" },
	{ .text = "[n-m]", .arg_str = NULL, .comment = "Show column n to m" },
	{ .text = "[n-]", .arg_str = NULL, .comment = "Show all columns starting from column n" },
	{ .text = "[i,j,k]", .arg_str = NULL, .comment = "Show the columns i, j and k" },
	{ 0 },
};

static const RzCmdDescDetailEntry grep_Examples_detail_entries[] = {
	{ .text = "i", .arg_str = "~:0", .comment = "Show first line of 'i' output" },
	{ .text = "i", .arg_str = "~:-2..", .comment = "Show from the second-last line to the last line of 'i' output" },
	{ .text = "i", .arg_str = "~:..3", .comment = "Show first three lines of 'i' output" },
	{ .text = "i", .arg_str = "~:2..5", .comment = "Show three lines of 'i' output starting from 2nd line" },
	{ .text = "pd", .arg_str = "~mov", .comment = "Disasm and grep for mov" },
	{ .text = "pi", .arg_str = "~[0]", .comment = "Show only opcode" },
	{ .text = "i", .arg_str = "~0x400$", .comment = "Show lines ending with 0x400" },
	{ 0 },
};
static const RzCmdDescDetail grep_details[] = {
	{ .name = "Modifiers", .entries = grep_Modifiers_detail_entries },
	{ .name = "EndModifiers", .entries = grep_EndModifiers_detail_entries },
	{ .name = "Columns", .entries = grep_Columns_detail_entries },
	{ .name = "Examples", .entries = grep_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp grep_help = {
	.summary = "Internal grep help ('~')",
	.usage = "<command>~[modifier][word,word][endmodifier][[column]][:line]",
	.options = "[?]",
	.details = grep_details,
};

static const RzCmdDescDetailEntry specifiers_Table_space_format_space_specifiers_space__oparen__minor_table_spec_greater__cparen__detail_entries[] = {
	{ .text = "<col>/sort/<inc|dec>", .arg_str = NULL, .comment = "Sort table by column <col> in increasing or decreasing order." },
	{ .text = "<col>/sortlen/<inc|dec>", .arg_str = NULL, .comment = "Sort table length of column <col> in increasing or decreasing order." },
	{ .text = "<col>/cols[/<col2>[/<col3>...]]", .arg_str = NULL, .comment = "Show only specified columns in the table." },
	{ .text = "<col>", .arg_str = NULL, .comment = "Show only column <col> (it must not have the same name as an output format specifier)." },
	{ .text = "<col>/gt/<val>", .arg_str = NULL, .comment = "Grep rows where column <col> is greater than <val>." },
	{ .text = "<col>/ge/<val>", .arg_str = NULL, .comment = "Grep rows where column <col> is greater than or equal to <val>." },
	{ .text = "<col>/lt/<val>", .arg_str = NULL, .comment = "Grep rows where column <col> is less than <val>." },
	{ .text = "<col>/le/<val>", .arg_str = NULL, .comment = "Grep rows where column <col> is less than or equal to <val>." },
	{ .text = "<col>/eq/<val>", .arg_str = NULL, .comment = "Grep rows where column <col> is equal to <val>." },
	{ .text = "<col>/ne/<val>", .arg_str = NULL, .comment = "Grep rows where column <col> is not equal to <val>." },
	{ .text = "<col|*>/uniq", .arg_str = NULL, .comment = "Only get the first row where column <col> or all columns are unique." },
	{ .text = "*/page/<n_page>/<page_size>", .arg_str = NULL, .comment = "Show <page_size> rows starting from the page number <n_page>." },
	{ .text = "*/head/<n_rows>", .arg_str = NULL, .comment = "Show the first <n_rows> rows." },
	{ .text = "*/tail/<n_rows>", .arg_str = NULL, .comment = "Show the last <n_rows> rows." },
	{ .text = "<col>/str/<value>", .arg_str = NULL, .comment = "Grep rows where string <value> is a substring of column <col>." },
	{ .text = "<col>/strlen/<value>", .arg_str = NULL, .comment = "Grep rows where the length of column <col> is <value>." },
	{ .text = "<col>/minlen/<value>", .arg_str = NULL, .comment = "Grep rows where the length of column <col> is greater than <value>." },
	{ .text = "<col>/maxlen/<value>", .arg_str = NULL, .comment = "Grep rows where the length of column <col> is less than <value>." },
	{ .text = "<col>/sum/<value>", .arg_str = NULL, .comment = "Sum all the values of column <col>." },
	{ 0 },
};

static const RzCmdDescDetailEntry specifiers_Output_space_format_space_specifiers_space__oparen__minor_output_spec_greater__cparen__detail_entries[] = {
	{ .text = "csv", .arg_str = NULL, .comment = "Print the table in CSV format." },
	{ .text = "json", .arg_str = NULL, .comment = "Print the table in JSON format." },
	{ .text = "fancy", .arg_str = NULL, .comment = "Print the table in a nice form with borders and headers." },
	{ .text = "simple", .arg_str = NULL, .comment = "Print the table in a simple form, only with headers." },
	{ .text = "quiet", .arg_str = NULL, .comment = "Print the table in a simple form, without headers." },
	{ 0 },
};

static const RzCmdDescDetailEntry specifiers_Examples_detail_entries[] = {
	{ .text = "aflt", .arg_str = ":addr/cols/name/nbbs:nbbs/sort/dec:nbbs/gt/1:nbbs/lt/10:fancy", .comment = "Show only the address, name and number of basic blocks of the identified functions with more than 1 block but less than 10, sorted decrementally by number of blocks." },
	{ 0 },
};
static const RzCmdDescDetail specifiers_details[] = {
	{ .name = "Table format specifiers (<table_spec>)", .entries = specifiers_Table_space_format_space_specifiers_space__oparen__minor_table_spec_greater__cparen__detail_entries },
	{ .name = "Output format specifiers (<output_spec>)", .entries = specifiers_Output_space_format_space_specifiers_space__oparen__minor_output_spec_greater__cparen__detail_entries },
	{ .name = "Examples", .entries = specifiers_Examples_detail_entries },
	{ 0 },
};
static const RzCmdDescHelp specifiers_help = {
	.summary = "Command specifiers (table-output only for now)",
	.usage = "<command>[:<table_spec>[:<table_spec>...]][:<output_spec>]",
	.options = "[?]",
	.details = specifiers_details,
};

static const RzCmdDescHelp shell_help = {
	.summary = "Common shell commands",
	.sort_subcommands = true,
};
static const RzCmdDescArg cmd_shell_ascii_table_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_ascii_table_help = {
	.summary = "Print ASCII table",
	.args = cmd_shell_ascii_table_args,
};

static const RzCmdDescArg cmd_shell_date_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_date_help = {
	.summary = "Get current date",
	.args = cmd_shell_date_args,
};

static const RzCmdDescArg cmd_shell_diff_args[] = {
	{
		.name = "A",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "B",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_diff_help = {
	.summary = "Compare <A> file with <B>",
	.args = cmd_shell_diff_args,
};

static const RzCmdDescDetailEntry cmd_shell_env_Examples_detail_entries[] = {
	{ .text = "env", .arg_str = NULL, .comment = "List all environment variables" },
	{ .text = "env", .arg_str = " SHELL", .comment = "Print value of SHELL variable" },
	{ .text = "env", .arg_str = " TMPDIR=/tmp", .comment = "Set TMPDIR to \"/tmp\"" },
	{ 0 },
};

static const RzCmdDescDetailEntry cmd_shell_env_Environment_detail_entries[] = {
	{ .text = "RZ_FILE", .arg_str = NULL, .comment = "currently opened file name" },
	{ .text = "RZ_OFFSET", .arg_str = NULL, .comment = "current offset (64bit value)" },
	{ .text = "RZ_BSIZE", .arg_str = NULL, .comment = "block size" },
	{ .text = "RZ_ENDIAN", .arg_str = NULL, .comment = "'big' or 'little'" },
	{ .text = "RZ_IOVA", .arg_str = NULL, .comment = "is io.va true? virtual addressing (1,0)" },
	{ .text = "RZ_DEBUG", .arg_str = NULL, .comment = "debug mode enabled? (1,0)" },
	{ .text = "RZ_SIZE", .arg_str = NULL, .comment = "file size" },
	{ .text = "RZ_ARCH", .arg_str = NULL, .comment = "value of asm.arch" },
	{ .text = "RZ_BITS", .arg_str = NULL, .comment = "arch reg size (8, 16, 32, 64)" },
	{ .text = "RZ_BIN_LANG", .arg_str = NULL, .comment = "assume this lang to demangle" },
	{ .text = "RZ_BIN_DEMANGLE", .arg_str = NULL, .comment = "demangle or not" },
	{ .text = "RZ_BIN_PDBSERVER", .arg_str = NULL, .comment = "e pdb.server" },
	{ 0 },
};
static const RzCmdDescDetail cmd_shell_env_details[] = {
	{ .name = "Examples", .entries = cmd_shell_env_Examples_detail_entries },
	{ .name = "Environment", .entries = cmd_shell_env_Environment_detail_entries },
	{ 0 },
};
static const RzCmdDescArg cmd_shell_env_args[] = {
	{
		.name = "varname",
		.type = RZ_CMD_ARG_TYPE_ENV,
		.optional = true,

	},
	{
		.name = "varvalue",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_env_help = {
	.summary = "Get/set environment variables",
	.args_str = " [<varname>[=<varvalue>]]",
	.details = cmd_shell_env_details,
	.args = cmd_shell_env_args,
};

static const RzCmdDescArg cmd_shell_exit_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_exit_help = {
	.summary = "Exit Rizin",
	.args = cmd_shell_exit_args,
};

static const RzCmdDescArg cmd_shell_ls_args[] = {
	{
		.name = "e",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{
		.name = "q",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{
		.name = "l",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{
		.name = "j",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{
		.name = "path",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_ls_help = {
	.summary = "List files and directories",
	.args_str = " [-e -q -l -j] <dir/file>",
	.args = cmd_shell_ls_args,
};

static const RzCmdDescArg cmd_shell_rm_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_rm_help = {
	.summary = "Remove <file>",
	.args = cmd_shell_rm_args,
};

static const RzCmdDescArg cmd_shell_sleep_args[] = {
	{
		.name = "seconds",
		.type = RZ_CMD_ARG_TYPE_NUM,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_sleep_help = {
	.summary = "Sleep for <seconds> seconds",
	.args = cmd_shell_sleep_args,
};

static const RzCmdDescArg cmd_shell_uniq_args[] = {
	{
		.name = "filename",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_uniq_help = {
	.summary = "List uniq strings in <filename>",
	.args = cmd_shell_uniq_args,
};

static const RzCmdDescArg cmd_shell_uname_args[] = {
	{
		.name = "r",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_uname_help = {
	.summary = "Provide system info",
	.args = cmd_shell_uname_args,
};

static const RzCmdDescArg cmd_shell_echo_args[] = {
	{
		.name = "strs",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_echo_help = {
	.summary = "Display a line of text",
	.args = cmd_shell_echo_args,
};

static const RzCmdDescArg cmd_shell_clippy_args[] = {
	{
		.name = "strs",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_ARRAY,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_clippy_help = {
	.summary = "echo but with a comic",
	.args = cmd_shell_clippy_args,
};

static const RzCmdDescArg cmd_shell_cp_args[] = {
	{
		.name = "src",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "dst",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_cp_help = {
	.summary = "Copy <src> file to <dst>",
	.args = cmd_shell_cp_args,
};

static const RzCmdDescArg cmd_shell_cd_args[] = {
	{
		.name = "dir",
		.type = RZ_CMD_ARG_TYPE_FILE,
		.optional = true,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_cd_help = {
	.summary = "Change directory to <dir>",
	.args = cmd_shell_cd_args,
};

static const RzCmdDescArg cmd_shell_cat_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_cat_help = {
	.summary = "Print contents of <file>",
	.args = cmd_shell_cat_args,
};

static const RzCmdDescArg cmd_shell_mv_args[] = {
	{
		.name = "src",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{
		.name = "dst",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_mv_help = {
	.summary = "Move <src> file to <dst>",
	.args = cmd_shell_mv_args,
};

static const RzCmdDescArg cmd_shell_mkdir_args[] = {
	{
		.name = "p",
		.type = RZ_CMD_ARG_TYPE_OPTION,
		.flags = RZ_CMD_ARG_FLAG_OPTION,
		.optional = true,

	},
	{
		.name = "dir",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_mkdir_help = {
	.summary = "Create a directory <dir>",
	.args_str = " [-p] <dir>",
	.args = cmd_shell_mkdir_args,
};

static const RzCmdDescArg cmd_shell_pwd_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_pwd_help = {
	.summary = "Show the present working directory",
	.args = cmd_shell_pwd_args,
};

static const RzCmdDescArg cmd_shell_sort_args[] = {
	{
		.name = "file",
		.type = RZ_CMD_ARG_TYPE_FILE,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_sort_help = {
	.summary = "Sort the contents of <file>",
	.args = cmd_shell_sort_args,
};

static const RzCmdDescArg cmd_shell_clear_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_clear_help = {
	.summary = "Clear screen/console",
	.args = cmd_shell_clear_args,
};

static const RzCmdDescArg cmd_shell_cls_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_cls_help = {
	.summary = "clear",
	.args = cmd_shell_cls_args,
};

static const RzCmdDescArg cmd_shell_flush_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_flush_help = {
	.summary = "Flush console",
	.args = cmd_shell_flush_args,
};

static const RzCmdDescArg cmd_shell_which_args[] = {
	{
		.name = "command",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_which_help = {
	.summary = "Which shell command",
	.args = cmd_shell_which_args,
};

static const RzCmdDescArg cmd_shell_fortune_args[] = {
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_fortune_help = {
	.summary = "Show the random fortune message",
	.args = cmd_shell_fortune_args,
};

static const RzCmdDescArg cmd_shell_pkill_args[] = {
	{
		.name = "name",
		.type = RZ_CMD_ARG_TYPE_STRING,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp cmd_shell_pkill_help = {
	.summary = "Kill process by name",
	.args = cmd_shell_pkill_args,
};

static const RzCmdDescHelp ver_help = {
	.summary = "Show version information",
};
static const RzCmdDescArg show_version_info_args[] = {
	{ 0 },
};
static const RzCmdDescHelp show_version_info_help = {
	.summary = "Show version info",
	.args = show_version_info_args,
};

static const RzCmdDescArg show_version_numeric_args[] = {
	{ 0 },
};
static const RzCmdDescHelp show_version_numeric_help = {
	.summary = "Show numeric version",
	.args = show_version_numeric_args,
};

static const RzCmdDescArg show_version_major_args[] = {
	{ 0 },
};
static const RzCmdDescHelp show_version_major_help = {
	.summary = "Show major version",
	.args = show_version_major_args,
};

static const RzCmdDescArg show_version_minor_args[] = {
	{ 0 },
};
static const RzCmdDescHelp show_version_minor_help = {
	.summary = "Show minor version",
	.args = show_version_minor_args,
};

static const RzCmdDescArg show_version_patch_args[] = {
	{ 0 },
};
static const RzCmdDescHelp show_version_patch_help = {
	.summary = "Show patch version",
	.args = show_version_patch_args,
};

static const RzCmdDescArg calculate_command_time_args[] = {
	{
		.name = "cmd",
		.type = RZ_CMD_ARG_TYPE_CMD,
		.flags = RZ_CMD_ARG_FLAG_LAST,

	},
	{ 0 },
};
static const RzCmdDescHelp calculate_command_time_help = {
	.summary = "Calculate time taken to run a command",
	.args = calculate_command_time_args,
};

static const RzCmdDescArg print_init_time_values_args[] = {
	{ 0 },
};
static const RzCmdDescHelp print_init_time_values_help = {
	.summary = "Print init time values",
	.args = print_init_time_values_args,
};

RZ_IPI void rzshell_cmddescs_init(RzCore *core) {
	RzCmdDesc *root_cd = rz_cmd_get_root(core->rcmd);
	rz_cmd_batch_start(core->rcmd);

	RzCmdDesc *escl__cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "!", rz_system_handler, &system_help, &escl__help);
	rz_warn_if_fail(escl__cd);
	RzCmdDesc *system_to_cons_cd = rz_cmd_desc_argv_new(core->rcmd, escl__cd, "!!", rz_system_to_cons_handler, &system_to_cons_help);
	rz_warn_if_fail(system_to_cons_cd);

	RzCmdDesc *last_output_cd = rz_cmd_desc_argv_new(core->rcmd, root_cd, "_", rz_last_output_handler, &last_output_help);
	rz_warn_if_fail(last_output_cd);

	RzCmdDesc *hash_bang_cd = rz_cmd_desc_argv_new(core->rcmd, root_cd, "#!", rz_hash_bang_handler, &hash_bang_help);
	rz_warn_if_fail(hash_bang_cd);

	RzCmdDesc *dollar__cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "$", rz_alias_handler, &alias_help, &dollar__help);
	rz_warn_if_fail(dollar__cd);
	RzCmdDesc *alias_list_cmd_base64_cd = rz_cmd_desc_argv_new(core->rcmd, dollar__cd, "$*", rz_alias_list_cmd_base64_handler, &alias_list_cmd_base64_help);
	rz_warn_if_fail(alias_list_cmd_base64_cd);

	RzCmdDesc *alias_list_cmd_plain_cd = rz_cmd_desc_argv_new(core->rcmd, dollar__cd, "$**", rz_alias_list_cmd_plain_handler, &alias_list_cmd_plain_help);
	rz_warn_if_fail(alias_list_cmd_plain_cd);

	RzCmdDesc *and__cd = rz_cmd_desc_group_modes_new(core->rcmd, root_cd, "&", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_tasks_handler, &tasks_help, &and__help);
	rz_warn_if_fail(and__cd);
	RzCmdDesc *tasks_transient_cd = rz_cmd_desc_argv_new(core->rcmd, and__cd, "&t", rz_tasks_transient_handler, &tasks_transient_help);
	rz_warn_if_fail(tasks_transient_cd);

	RzCmdDesc *tasks_output_cd = rz_cmd_desc_argv_new(core->rcmd, and__cd, "&=", rz_tasks_output_handler, &tasks_output_help);
	rz_warn_if_fail(tasks_output_cd);

	RzCmdDesc *tasks_break_cd = rz_cmd_desc_argv_new(core->rcmd, and__cd, "&b", rz_tasks_break_handler, &tasks_break_help);
	rz_warn_if_fail(tasks_break_cd);

	RzCmdDesc *tasks_delete_cd = rz_cmd_desc_argv_new(core->rcmd, and__cd, "&-", rz_tasks_delete_handler, &tasks_delete_help);
	rz_warn_if_fail(tasks_delete_cd);

	RzCmdDesc *tasks_delete_all_cd = rz_cmd_desc_argv_new(core->rcmd, and__cd, "&-*", rz_tasks_delete_all_handler, &tasks_delete_all_help);
	rz_warn_if_fail(tasks_delete_all_cd);

	RzCmdDesc *tasks_wait_cd = rz_cmd_desc_argv_new(core->rcmd, and__cd, "&&", rz_tasks_wait_handler, &tasks_wait_help);
	rz_warn_if_fail(tasks_wait_cd);

	RzCmdDesc *oparen__cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "(", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_macros_list_handler, &macros_list_help, &oparen__help);
	rz_warn_if_fail(oparen__cd);
	RzCmdDesc *macros_remove_cd = rz_cmd_desc_argv_new(core->rcmd, oparen__cd, "(-", rz_macros_remove_handler, &macros_remove_help);
	rz_warn_if_fail(macros_remove_cd);

	RzCmdDesc *macros_add_cd = rz_cmd_desc_inner_new(core->rcmd, oparen__cd, "(", &macros_add_help);
	rz_warn_if_fail(macros_add_cd);

	RzCmdDesc *macros_add_call_cd = rz_cmd_desc_inner_new(core->rcmd, oparen__cd, "(", &macros_add_call_help);
	rz_warn_if_fail(macros_add_call_cd);

	RzCmdDesc *macros_call_cd = rz_cmd_desc_inner_new(core->rcmd, oparen__cd, ".(", &macros_call_help);
	rz_warn_if_fail(macros_call_cd);

	RzCmdDesc *macros_call_multiple_cd = rz_cmd_desc_inner_new(core->rcmd, oparen__cd, "..(", &macros_call_multiple_help);
	rz_warn_if_fail(macros_call_multiple_cd);

	RzCmdDesc *pointer_cd = rz_cmd_desc_argv_new(core->rcmd, root_cd, "*", rz_pointer_handler, &pointer_help);
	rz_warn_if_fail(pointer_cd);

	RzCmdDesc *dot__cd = rz_cmd_desc_group_new(core->rcmd, root_cd, ".", rz_interpret_handler, &interpret_help, &dot__help);
	rz_warn_if_fail(dot__cd);
	RzCmdDesc *interpret_script_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, ". ", rz_interpret_script_handler, &interpret_script_help);
	rz_warn_if_fail(interpret_script_cd);

	RzCmdDesc *repeat_forward_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, "...", rz_repeat_forward_handler, &repeat_forward_help);
	rz_warn_if_fail(repeat_forward_cd);

	RzCmdDesc *interpret_output_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, "..", rz_interpret_output_handler, &interpret_output_help);
	rz_warn_if_fail(interpret_output_cd);

	RzCmdDesc *interpret_editor_2_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, ".-", rz_interpret_editor_2_handler, &interpret_editor_2_help);
	rz_warn_if_fail(interpret_editor_2_cd);

	RzCmdDesc *interpret_pipe_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, ".*", rz_interpret_pipe_handler, &interpret_pipe_help);
	rz_warn_if_fail(interpret_pipe_cd);

	RzCmdDesc *interpret_macro_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, ".(", rz_interpret_macro_handler, &interpret_macro_help);
	rz_warn_if_fail(interpret_macro_cd);

	RzCmdDesc *interpret_macro_multiple_cd = rz_cmd_desc_argv_new(core->rcmd, dot__cd, "..(", rz_interpret_macro_multiple_handler, &interpret_macro_multiple_help);
	rz_warn_if_fail(interpret_macro_multiple_cd);

	RzCmdDesc *slash__cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "/", NULL, NULL, &slash__help);
	rz_warn_if_fail(slash__cd);
	RzCmdDesc *cmd_search_str_chunk_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/+", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_str_chunk_handler, &cmd_search_str_chunk_help);
	rz_warn_if_fail(cmd_search_str_chunk_cd);

	RzCmdDesc *slash_a_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/a", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_assemble_handler, &cmd_search_assemble_help, &slash_a_help);
	rz_warn_if_fail(slash_a_cd);
	RzCmdDesc *cmd_search_assemble_1_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/a1", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_1_handler, &cmd_search_assemble_1_help);
	rz_warn_if_fail(cmd_search_assemble_1_cd);

	RzCmdDesc *cmd_search_assemble_I_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/aI", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_I_handler, &cmd_search_assemble_I_help);
	rz_warn_if_fail(cmd_search_assemble_I_cd);

	RzCmdDesc *cmd_search_assemble_a_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/aa", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_a_handler, &cmd_search_assemble_a_help);
	rz_warn_if_fail(cmd_search_assemble_a_cd);

	RzCmdDesc *cmd_search_assemble_c_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/ac", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_c_handler, &cmd_search_assemble_c_help);
	rz_warn_if_fail(cmd_search_assemble_c_cd);

	RzCmdDesc *cmd_search_assemble_d_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/ad", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_d_handler, &cmd_search_assemble_d_help);
	rz_warn_if_fail(cmd_search_assemble_d_cd);

	RzCmdDesc *cmd_search_assemble_d_slash_cd = rz_cmd_desc_argv_new(core->rcmd, slash_a_cd, "/ad/", rz_cmd_search_assemble_d_slash_handler, &cmd_search_assemble_d_slash_help);
	rz_warn_if_fail(cmd_search_assemble_d_slash_cd);

	RzCmdDesc *cmd_search_assemble_d_slasha_cd = rz_cmd_desc_argv_new(core->rcmd, slash_a_cd, "/ad/a", rz_cmd_search_assemble_d_slasha_handler, &cmd_search_assemble_d_slasha_help);
	rz_warn_if_fail(cmd_search_assemble_d_slasha_cd);

	RzCmdDesc *cmd_search_assemble_e_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/ae", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_e_handler, &cmd_search_assemble_e_help);
	rz_warn_if_fail(cmd_search_assemble_e_cd);

	RzCmdDesc *slash_af_cd = rz_cmd_desc_group_modes_new(core->rcmd, slash_a_cd, "/af", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_f_handler, &cmd_search_assemble_f_help, &slash_af_help);
	rz_warn_if_fail(slash_af_cd);
	RzCmdDesc *cmd_search_assemble_fl_cd = rz_cmd_desc_argv_new(core->rcmd, slash_af_cd, "/afl", rz_cmd_search_assemble_fl_handler, &cmd_search_assemble_fl_help);
	rz_warn_if_fail(cmd_search_assemble_fl_cd);

	RzCmdDesc *cmd_search_assemble_i_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/ai", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_i_handler, &cmd_search_assemble_i_help);
	rz_warn_if_fail(cmd_search_assemble_i_cd);

	RzCmdDesc *cmd_search_assemble_l_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/al", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_l_handler, &cmd_search_assemble_l_help);
	rz_warn_if_fail(cmd_search_assemble_l_cd);

	RzCmdDesc *cmd_search_assemble_m_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/am", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_m_handler, &cmd_search_assemble_m_help);
	rz_warn_if_fail(cmd_search_assemble_m_cd);

	RzCmdDesc *cmd_search_assemble_o_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash_a_cd, "/ao", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_o_handler, &cmd_search_assemble_o_help);
	rz_warn_if_fail(cmd_search_assemble_o_cd);

	RzCmdDesc *slash_as_cd = rz_cmd_desc_group_modes_new(core->rcmd, slash_a_cd, "/as", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_s_handler, &cmd_search_assemble_s_help, &slash_as_help);
	rz_warn_if_fail(slash_as_cd);
	RzCmdDesc *cmd_search_assemble_sl_cd = rz_cmd_desc_argv_new(core->rcmd, slash_as_cd, "/asl", rz_cmd_search_assemble_sl_handler, &cmd_search_assemble_sl_help);
	rz_warn_if_fail(cmd_search_assemble_sl_cd);

	RzCmdDesc *slash_at_cd = rz_cmd_desc_group_modes_new(core->rcmd, slash_a_cd, "/at", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_assemble_t_handler, &cmd_search_assemble_t_help, &slash_at_help);
	rz_warn_if_fail(slash_at_cd);
	RzCmdDesc *cmd_search_assemble_tl_cd = rz_cmd_desc_argv_new(core->rcmd, slash_at_cd, "/atl", rz_cmd_search_assemble_tl_handler, &cmd_search_assemble_tl_help);
	rz_warn_if_fail(cmd_search_assemble_tl_cd);

	RzCmdDesc *slash_c_cd = rz_cmd_desc_group_new(core->rcmd, slash__cd, "/c", NULL, NULL, &slash_c_help);
	rz_warn_if_fail(slash_c_cd);
	RzCmdDesc *cmd_search_collision_cd = rz_cmd_desc_argv_new(core->rcmd, slash_c_cd, "/cc", rz_cmd_search_collision_handler, &cmd_search_collision_help);
	rz_warn_if_fail(cmd_search_collision_cd);

	RzCmdDesc *cmd_search_hash_block_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/ch", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hash_block_handler, &cmd_search_hash_block_help);
	rz_warn_if_fail(cmd_search_hash_block_cd);

	RzCmdDesc *cmd_search_hash_entropy_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/ce", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hash_entropy_handler, &cmd_search_hash_entropy_help);
	rz_warn_if_fail(cmd_search_hash_entropy_cd);

	RzCmdDesc *cmd_search_hash_entropy_fractional_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/cef", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hash_entropy_fractional_handler, &cmd_search_hash_entropy_fractional_help);
	rz_warn_if_fail(cmd_search_hash_entropy_fractional_cd);

	RzCmdDesc *cmd_search_cryptographic_material_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/cm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_cryptographic_material_handler, &cmd_search_cryptographic_material_help);
	rz_warn_if_fail(cmd_search_cryptographic_material_cd);

	RzCmdDesc *cmd_search_deltified_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/d", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_deltified_handler, &cmd_search_deltified_help);
	rz_warn_if_fail(cmd_search_deltified_cd);

	RzCmdDesc *cmd_search_file_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash__cd, "/F", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_file_handler, &cmd_search_file_help);
	rz_warn_if_fail(cmd_search_file_cd);

	RzCmdDesc *cmd_search_insn_offset_backwards_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/o", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_insn_offset_backwards_handler, &cmd_search_insn_offset_backwards_help);
	rz_warn_if_fail(cmd_search_insn_offset_backwards_cd);

	RzCmdDesc *cmd_search_insn_offset_backwards_fallback_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/O", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_insn_offset_backwards_fallback_handler, &cmd_search_insn_offset_backwards_fallback_help);
	rz_warn_if_fail(cmd_search_insn_offset_backwards_fallback_cd);

	RzCmdDesc *cmd_search_pattern_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash__cd, "/p", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_pattern_handler, &cmd_search_pattern_help);
	rz_warn_if_fail(cmd_search_pattern_cd);

	RzCmdDesc *cmd_search_blocks_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash__cd, "/P", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_blocks_handler, &cmd_search_blocks_help);
	rz_warn_if_fail(cmd_search_blocks_cd);

	RzCmdDesc *slash_g_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/g", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_graph_path_handler, &cmd_search_graph_path_help, &slash_g_help);
	rz_warn_if_fail(slash_g_cd);
	RzCmdDesc *cmd_search_graph_path_follow_calls_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_g_cd, "/gg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_graph_path_follow_calls_handler, &cmd_search_graph_path_follow_calls_help);
	rz_warn_if_fail(cmd_search_graph_path_follow_calls_cd);

	RzCmdDesc *slash_m_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/m", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_magic_const_handler, &cmd_search_magic_const_help, &slash_m_help);
	rz_warn_if_fail(slash_m_cd);
	RzCmdDesc *cmd_search_magic_bin_headers_cd = rz_cmd_desc_argv_new(core->rcmd, slash_m_cd, "/mb", rz_cmd_search_magic_bin_headers_handler, &cmd_search_magic_bin_headers_help);
	rz_warn_if_fail(cmd_search_magic_bin_headers_cd);

	RzCmdDesc *cmd_search_esil_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/E", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_esil_handler, &cmd_search_esil_help);
	rz_warn_if_fail(cmd_search_esil_cd);

	RzCmdDesc *slash_r_cd = rz_cmd_desc_group_new(core->rcmd, slash__cd, "/r", rz_cmd_search_reference_handler, &cmd_search_reference_help, &slash_r_help);
	rz_warn_if_fail(slash_r_cd);
	RzCmdDesc *cmd_search_reference_all_cd = rz_cmd_desc_argv_new(core->rcmd, slash_r_cd, "/ra", rz_cmd_search_reference_all_handler, &cmd_search_reference_all_help);
	rz_warn_if_fail(cmd_search_reference_all_cd);

	RzCmdDesc *cmd_search_reference_call_cd = rz_cmd_desc_argv_new(core->rcmd, slash_r_cd, "/rc", rz_cmd_search_reference_call_handler, &cmd_search_reference_call_help);
	rz_warn_if_fail(cmd_search_reference_call_cd);

	RzCmdDesc *cmd_search_reference_read_cd = rz_cmd_desc_argv_new(core->rcmd, slash_r_cd, "/rr", rz_cmd_search_reference_read_handler, &cmd_search_reference_read_help);
	rz_warn_if_fail(cmd_search_reference_read_cd);

	RzCmdDesc *cmd_search_reference_write_cd = rz_cmd_desc_argv_new(core->rcmd, slash_r_cd, "/rw", rz_cmd_search_reference_write_handler, &cmd_search_reference_write_help);
	rz_warn_if_fail(cmd_search_reference_write_cd);

	RzCmdDesc *cmd_search_reference_execute_cd = rz_cmd_desc_argv_new(core->rcmd, slash_r_cd, "/rx", rz_cmd_search_reference_execute_handler, &cmd_search_reference_execute_help);
	rz_warn_if_fail(cmd_search_reference_execute_cd);

	RzCmdDesc *slash_R_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/R", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_info_gadget_handler, &cmd_info_gadget_help, &slash_R_help);
	rz_warn_if_fail(slash_R_cd);
	RzCmdDesc *cmd_search_gadget_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_R_cd, "/R/", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_gadget_handler, &cmd_search_gadget_help);
	rz_warn_if_fail(cmd_search_gadget_cd);

	RzCmdDesc *cmd_query_gadget_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_R_cd, "/Rk", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_query_gadget_handler, &cmd_query_gadget_help);
	rz_warn_if_fail(cmd_query_gadget_cd);

	RzCmdDesc *cmd_detail_gadget_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_R_cd, "/Rg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_detail_gadget_handler, &cmd_detail_gadget_help);
	rz_warn_if_fail(cmd_detail_gadget_cd);

	RzCmdDesc *slash_v_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/v", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_handler, &cmd_search_value_help, &slash_v_help);
	rz_warn_if_fail(slash_v_cd);
	RzCmdDesc *cmd_search_value_alias_v1_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v1", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v1_handler, &cmd_search_value_alias_v1_help);
	rz_warn_if_fail(cmd_search_value_alias_v1_cd);

	RzCmdDesc *cmd_search_value_alias_v2_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v2", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v2_handler, &cmd_search_value_alias_v2_help);
	rz_warn_if_fail(cmd_search_value_alias_v2_cd);

	RzCmdDesc *cmd_search_value_alias_v4_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v4", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v4_handler, &cmd_search_value_alias_v4_help);
	rz_warn_if_fail(cmd_search_value_alias_v4_cd);

	RzCmdDesc *cmd_search_value_alias_v8_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v8_handler, &cmd_search_value_alias_v8_help);
	rz_warn_if_fail(cmd_search_value_alias_v8_cd);

	RzCmdDesc *cmd_search_value_alias_v1_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V1", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v1_range_handler, &cmd_search_value_alias_v1_range_help);
	rz_warn_if_fail(cmd_search_value_alias_v1_range_cd);

	RzCmdDesc *cmd_search_value_alias_v2_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V2", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v2_range_handler, &cmd_search_value_alias_v2_range_help);
	rz_warn_if_fail(cmd_search_value_alias_v2_range_cd);

	RzCmdDesc *cmd_search_value_alias_v4_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V4", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v4_range_handler, &cmd_search_value_alias_v4_range_help);
	rz_warn_if_fail(cmd_search_value_alias_v4_range_cd);

	RzCmdDesc *cmd_search_value_alias_v8_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v8_range_handler, &cmd_search_value_alias_v8_range_help);
	rz_warn_if_fail(cmd_search_value_alias_v8_range_cd);

	RzCmdDesc *slash_x_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/x", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hex_handler, &cmd_search_hex_help, &slash_x_help);
	rz_warn_if_fail(slash_x_cd);
	RzCmdDesc *cmd_search_hex_regex_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_x_cd, "/xr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hex_regex_handler, &cmd_search_hex_regex_help);
	rz_warn_if_fail(cmd_search_hex_regex_cd);

	RzCmdDesc *slash_z_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/z", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_string_sensitive_handler, &cmd_search_string_sensitive_help, &slash_z_help);
	rz_warn_if_fail(slash_z_cd);

	RzCmdDesc *R_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "R", rz_remote_handler, &remote_help, &R_help);
	rz_warn_if_fail(R_cd);
	RzCmdDesc *remote_send_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R<", rz_remote_send_handler, &remote_send_help);
	rz_warn_if_fail(remote_send_cd);

	RzCmdDesc *remote_io_system_run_cmd_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R!", rz_remote_io_system_run_cmd_handler, &remote_io_system_run_cmd_help);
	rz_warn_if_fail(remote_io_system_run_cmd_cd);

	RzCmdDesc *remote_add_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R+", rz_remote_add_handler, &remote_add_help);
	rz_warn_if_fail(remote_add_cd);

	RzCmdDesc *remote_del_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R-", rz_remote_del_handler, &remote_del_help);
	rz_warn_if_fail(remote_del_cd);

	RzCmdDesc *remote_open_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R=", rz_remote_open_handler, &remote_open_help);
	rz_warn_if_fail(remote_open_cd);

	RzCmdDesc *remote_mode_enable_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R!=", rz_remote_mode_enable_handler, &remote_mode_enable_help);
	rz_warn_if_fail(remote_mode_enable_cd);

	RzCmdDesc *remote_mode_disable_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "R=!", rz_remote_mode_disable_handler, &remote_mode_disable_help);
	rz_warn_if_fail(remote_mode_disable_cd);

	RzCmdDesc *Rg_cd = rz_cmd_desc_group_new(core->rcmd, R_cd, "Rg", rz_remote_gdb_handler, &remote_gdb_help, &Rg_help);
	rz_warn_if_fail(Rg_cd);
	RzCmdDesc *remote_gdb_debug_cd = rz_cmd_desc_argv_new(core->rcmd, Rg_cd, "Rg!", rz_remote_gdb_debug_handler, &remote_gdb_debug_help);
	rz_warn_if_fail(remote_gdb_debug_cd);

	RzCmdDesc *Rh_cd = rz_cmd_desc_group_new(core->rcmd, R_cd, "Rh", rz_remote_webserver_start_fg_handler, &remote_webserver_start_fg_help, &Rh_help);
	rz_warn_if_fail(Rh_cd);
	RzCmdDesc *remote_webserver_restart_fg_cd = rz_cmd_desc_argv_new(core->rcmd, Rh_cd, "Rh*", rz_remote_webserver_restart_fg_handler, &remote_webserver_restart_fg_help);
	rz_warn_if_fail(remote_webserver_restart_fg_cd);

	RzCmdDesc *remote_webserver_stop_fg_cd = rz_cmd_desc_argv_new(core->rcmd, Rh_cd, "Rh--", rz_remote_webserver_stop_fg_handler, &remote_webserver_stop_fg_help);
	rz_warn_if_fail(remote_webserver_stop_fg_cd);

	RzCmdDesc *remote_tcp_cd = rz_cmd_desc_argv_new(core->rcmd, R_cd, "Rt", rz_remote_tcp_handler, &remote_tcp_help);
	rz_warn_if_fail(remote_tcp_cd);

	RzCmdDesc *cmd_help_search_cd = rz_cmd_desc_argv_modes_new(core->rcmd, root_cd, "?*", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_help_search_handler, &cmd_help_search_help);
	rz_warn_if_fail(cmd_help_search_cd);

	RzCmdDesc *cmd_math_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "%", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_calculate_expr_handler, &calculate_expr_help, &cmd_math_help);
	rz_warn_if_fail(cmd_math_cd);
	RzCmdDesc *list_rizin_vars_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%$", rz_list_rizin_vars_handler, &list_rizin_vars_help);
	rz_warn_if_fail(list_rizin_vars_cd);

	RzCmdDesc *set_active_tab_zero_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%0", rz_set_active_tab_zero_handler, &set_active_tab_zero_help);
	rz_warn_if_fail(set_active_tab_zero_cd);

	RzCmdDesc *set_active_tab_next_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%1", rz_set_active_tab_next_handler, &set_active_tab_next_help);
	rz_warn_if_fail(set_active_tab_next_cd);

	RzCmdDesc *generate_random_number_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%r", rz_generate_random_number_handler, &generate_random_number_help);
	rz_warn_if_fail(generate_random_number_cd);

	RzCmdDesc *print_binary_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%b", rz_print_binary_handler, &print_binary_help);
	rz_warn_if_fail(print_binary_cd);

	RzCmdDesc *base64_encode_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%b64", rz_base64_encode_handler, &base64_encode_help);
	rz_warn_if_fail(base64_encode_cd);

	RzCmdDesc *base64_decode_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%b64-", rz_base64_decode_handler, &base64_decode_help);
	rz_warn_if_fail(base64_decode_cd);

	RzCmdDesc *check_between_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%btw", rz_check_between_handler, &check_between_help);
	rz_warn_if_fail(check_between_cd);

	RzCmdDesc *print_boundaries_prot_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_math_cd, "%B", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_print_boundaries_prot_handler, &print_boundaries_prot_help);
	rz_warn_if_fail(print_boundaries_prot_cd);

	RzCmdDesc *print_djb2_hash_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%h", rz_print_djb2_hash_handler, &print_djb2_hash_help);
	rz_warn_if_fail(print_djb2_hash_cd);

	RzCmdDesc *print_bitstring_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%f", rz_print_bitstring_handler, &print_bitstring_help);
	rz_warn_if_fail(print_bitstring_cd);

	RzCmdDesc *eval_expr_print_octal_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%o", rz_eval_expr_print_octal_handler, &eval_expr_print_octal_help);
	rz_warn_if_fail(eval_expr_print_octal_cd);

	RzCmdDesc *num_to_units_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%u", rz_num_to_units_handler, &num_to_units_help);
	rz_warn_if_fail(num_to_units_cd);

	RzCmdDesc *perc_v_cd = rz_cmd_desc_group_new(core->rcmd, cmd_math_cd, "%v", rz_show_value_handler, &show_value_help, &perc_v_help);
	rz_warn_if_fail(perc_v_cd);
	RzCmdDesc *show_value_hex_cd = rz_cmd_desc_argv_new(core->rcmd, perc_v_cd, "%vx", rz_show_value_hex_handler, &show_value_hex_help);
	rz_warn_if_fail(show_value_hex_cd);

	RzCmdDesc *show_value_i1_cd = rz_cmd_desc_argv_new(core->rcmd, perc_v_cd, "%vi1", rz_show_value_i1_handler, &show_value_i1_help);
	rz_warn_if_fail(show_value_i1_cd);

	RzCmdDesc *show_value_i2_cd = rz_cmd_desc_argv_new(core->rcmd, perc_v_cd, "%vi2", rz_show_value_i2_handler, &show_value_i2_help);
	rz_warn_if_fail(show_value_i2_cd);

	RzCmdDesc *show_value_i4_cd = rz_cmd_desc_argv_new(core->rcmd, perc_v_cd, "%vi4", rz_show_value_i4_handler, &show_value_i4_help);
	rz_warn_if_fail(show_value_i4_cd);

	RzCmdDesc *show_value_i8_cd = rz_cmd_desc_argv_new(core->rcmd, perc_v_cd, "%vi8", rz_show_value_i8_handler, &show_value_i8_help);
	rz_warn_if_fail(show_value_i8_cd);

	RzCmdDesc *show_value_int_cd = rz_cmd_desc_argv_new(core->rcmd, perc_v_cd, "%vi", rz_show_value_int_handler, &show_value_int_help);
	rz_warn_if_fail(show_value_int_cd);

	RzCmdDesc *set_last_eval_expr_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%=", rz_set_last_eval_expr_handler, &set_last_eval_expr_help);
	rz_warn_if_fail(set_last_eval_expr_cd);

	RzCmdDesc *compare_and_set_core_num_value_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%==", rz_compare_and_set_core_num_value_handler, &compare_and_set_core_num_value_help);
	rz_warn_if_fail(compare_and_set_core_num_value_cd);

	RzCmdDesc *exec_cmd_if_core_num_value_positive_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%+", rz_exec_cmd_if_core_num_value_positive_handler, &exec_cmd_if_core_num_value_positive_help);
	rz_warn_if_fail(exec_cmd_if_core_num_value_positive_cd);

	RzCmdDesc *exec_cmd_if_core_num_value_negative_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%-", rz_exec_cmd_if_core_num_value_negative_handler, &exec_cmd_if_core_num_value_negative_help);
	rz_warn_if_fail(exec_cmd_if_core_num_value_negative_cd);

	RzCmdDesc *exec_cmd_if_core_num_value_zero_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%!", rz_exec_cmd_if_core_num_value_zero_handler, &exec_cmd_if_core_num_value_zero_help);
	rz_warn_if_fail(exec_cmd_if_core_num_value_zero_cd);

	RzCmdDesc *exec_cmd_if_core_num_value_nonzero_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%%", rz_exec_cmd_if_core_num_value_nonzero_handler, &exec_cmd_if_core_num_value_nonzero_help);
	rz_warn_if_fail(exec_cmd_if_core_num_value_nonzero_cd);

	RzCmdDesc *calculate_string_length_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_math_cd, "%l", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET, rz_calculate_string_length_handler, &calculate_string_length_help);
	rz_warn_if_fail(calculate_string_length_cd);

	RzCmdDesc *calc_expr_show_hex_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%X", rz_calc_expr_show_hex_handler, &calc_expr_show_hex_help);
	rz_warn_if_fail(calc_expr_show_hex_cd);

	RzCmdDesc *perc_x_cd = rz_cmd_desc_group_new(core->rcmd, cmd_math_cd, "%x", rz_ascii_to_hex_handler, &ascii_to_hex_help, &perc_x_help);
	rz_warn_if_fail(perc_x_cd);
	RzCmdDesc *numeric_expr_to_hex_cd = rz_cmd_desc_argv_new(core->rcmd, perc_x_cd, "%x+", rz_numeric_expr_to_hex_handler, &numeric_expr_to_hex_help);
	rz_warn_if_fail(numeric_expr_to_hex_cd);

	RzCmdDesc *hex_to_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, perc_x_cd, "%x-", rz_hex_to_ascii_handler, &hex_to_ascii_help);
	rz_warn_if_fail(hex_to_ascii_cd);

	RzCmdDesc *generate_sequence_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%s", rz_generate_sequence_handler, &generate_sequence_help);
	rz_warn_if_fail(generate_sequence_cd);

	RzCmdDesc *phys2virt_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%P", rz_phys2virt_handler, &phys2virt_help);
	rz_warn_if_fail(phys2virt_cd);

	RzCmdDesc *virt2phys_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%p", rz_virt2phys_handler, &virt2phys_help);
	rz_warn_if_fail(virt2phys_cd);

	RzCmdDesc *yank_hud_file_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%_", rz_yank_hud_file_handler, &yank_hud_file_help);
	rz_warn_if_fail(yank_hud_file_cd);

	RzCmdDesc *perc_i_cd = rz_cmd_desc_group_new(core->rcmd, cmd_math_cd, "%i", rz_input_prompt_handler, &input_prompt_help, &perc_i_help);
	rz_warn_if_fail(perc_i_cd);
	RzCmdDesc *input_prompt_echo_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%ie", rz_input_prompt_echo_handler, &input_prompt_echo_help);
	rz_warn_if_fail(input_prompt_echo_cd);

	RzCmdDesc *input_yesno_no_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%in", rz_input_yesno_no_handler, &input_yesno_no_help);
	rz_warn_if_fail(input_yesno_no_cd);

	RzCmdDesc *input_yesno_yes_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%iy", rz_input_yesno_yes_handler, &input_yesno_yes_help);
	rz_warn_if_fail(input_yesno_yes_cd);

	RzCmdDesc *input_any_key_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%ik", rz_input_any_key_handler, &input_any_key_help);
	rz_warn_if_fail(input_any_key_cd);

	RzCmdDesc *input_yank_hud_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%ip", rz_input_yank_hud_handler, &input_yank_hud_help);
	rz_warn_if_fail(input_yank_hud_cd);

	RzCmdDesc *input_msg_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%im", rz_input_msg_handler, &input_msg_help);
	rz_warn_if_fail(input_msg_cd);

	RzCmdDesc *input_conditional_cd = rz_cmd_desc_argv_new(core->rcmd, perc_i_cd, "%if", rz_input_conditional_handler, &input_conditional_help);
	rz_warn_if_fail(input_conditional_cd);

	RzCmdDesc *get_addr_references_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%w", rz_get_addr_references_handler, &get_addr_references_help);
	rz_warn_if_fail(get_addr_references_cd);

	RzCmdDesc *push_escaped_cd = rz_cmd_desc_argv_new(core->rcmd, root_cd, "<", rz_push_escaped_handler, &push_escaped_help);
	rz_warn_if_fail(push_escaped_cd);

	RzCmdDesc *cmd_analysis_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "a", NULL, NULL, &cmd_analysis_help);
	rz_warn_if_fail(cmd_analysis_cd);
	RzCmdDesc *aa_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "aa", rz_analyze_simple_handler, &analyze_simple_help, &aa_help);
	rz_warn_if_fail(aa_cd);
	RzCmdDesc *analyze_everything_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aaa", rz_analyze_everything_handler, &analyze_everything_help);
	rz_warn_if_fail(analyze_everything_cd);

	RzCmdDesc *analyze_everything_experimental_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aaaa", rz_analyze_everything_experimental_handler, &analyze_everything_experimental_help);
	rz_warn_if_fail(analyze_everything_experimental_cd);

	RzCmdDesc *aac_cd = rz_cmd_desc_group_new(core->rcmd, aa_cd, "aac", rz_analyze_all_function_calls_handler, &analyze_all_function_calls_help, &aac_help);
	rz_warn_if_fail(aac_cd);
	RzCmdDesc *analyze_all_function_calls_to_imports_cd = rz_cmd_desc_argv_new(core->rcmd, aac_cd, "aaci", rz_analyze_all_function_calls_to_imports_handler, &analyze_all_function_calls_to_imports_help);
	rz_warn_if_fail(analyze_all_function_calls_to_imports_cd);

	RzCmdDesc *analysis_recover_all_classes_from_bin_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aaC", rz_analysis_recover_all_classes_from_bin_handler, &analysis_recover_all_classes_from_bin_help);
	rz_warn_if_fail(analysis_recover_all_classes_from_bin_cd);

	RzCmdDesc *analyze_all_data_references_to_code_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aad", rz_analyze_all_data_references_to_code_handler, &analyze_all_data_references_to_code_help);
	rz_warn_if_fail(analyze_all_data_references_to_code_cd);

	RzCmdDesc *aae_cd = rz_cmd_desc_group_new(core->rcmd, aa_cd, "aae", rz_analysis_all_esil_handler, &analysis_all_esil_help, &aae_help);
	rz_warn_if_fail(aae_cd);
	RzCmdDesc *analysis_all_esil_functions_cd = rz_cmd_desc_argv_new(core->rcmd, aae_cd, "aaef", rz_analysis_all_esil_functions_handler, &analysis_all_esil_functions_help);
	rz_warn_if_fail(analysis_all_esil_functions_cd);

	RzCmdDesc *aaf_cd = rz_cmd_desc_group_new(core->rcmd, aa_cd, "aaf", rz_analyze_all_functions_handler, &analyze_all_functions_help, &aaf_help);
	rz_warn_if_fail(aaf_cd);
	RzCmdDesc *analyze_all_functions_esil_cd = rz_cmd_desc_argv_new(core->rcmd, aaf_cd, "aafe", rz_analyze_all_functions_esil_handler, &analyze_all_functions_esil_help);
	rz_warn_if_fail(analyze_all_functions_esil_cd);

	RzCmdDesc *analyze_all_consecutive_functions_in_section_cd = rz_cmd_desc_argv_new(core->rcmd, aaf_cd, "aafr", rz_analyze_all_consecutive_functions_in_section_handler, &analyze_all_consecutive_functions_in_section_help);
	rz_warn_if_fail(analyze_all_consecutive_functions_in_section_cd);

	RzCmdDesc *analyze_recursively_all_function_types_cd = rz_cmd_desc_argv_new(core->rcmd, aaf_cd, "aaft", rz_analyze_recursively_all_function_types_handler, &analyze_recursively_all_function_types_help);
	rz_warn_if_fail(analyze_recursively_all_function_types_cd);

	RzCmdDesc *print_analysis_details_cd = rz_cmd_desc_argv_state_new(core->rcmd, aa_cd, "aai", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_analysis_details_handler, &print_analysis_details_help);
	rz_warn_if_fail(print_analysis_details_cd);

	RzCmdDesc *analyze_all_unresolved_jumps_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aaj", rz_analyze_all_unresolved_jumps_handler, &analyze_all_unresolved_jumps_help);
	rz_warn_if_fail(analyze_all_unresolved_jumps_cd);

	RzCmdDesc *aal_cd = rz_cmd_desc_group_new(core->rcmd, aa_cd, "aal", NULL, NULL, &aal_help);
	rz_warn_if_fail(aal_cd);
	RzCmdDesc *recover_all_golang_functions_strings_cd = rz_cmd_desc_argv_new(core->rcmd, aal_cd, "aalg", rz_recover_all_golang_functions_strings_handler, &recover_all_golang_functions_strings_help);
	rz_warn_if_fail(recover_all_golang_functions_strings_cd);

	RzCmdDesc *analyze_all_objc_references_cd = rz_cmd_desc_argv_new(core->rcmd, aal_cd, "aalor", rz_analyze_all_objc_references_handler, &analyze_all_objc_references_help);
	rz_warn_if_fail(analyze_all_objc_references_cd);

	RzCmdDesc *analyze_all_objc_stubs_cd = rz_cmd_desc_argv_new(core->rcmd, aal_cd, "aalos", rz_analyze_all_objc_stubs_handler, &analyze_all_objc_stubs_help);
	rz_warn_if_fail(analyze_all_objc_stubs_cd);

	RzCmdDesc *aan_cd = rz_cmd_desc_group_new(core->rcmd, aa_cd, "aan", rz_autoname_all_functions_handler, &autoname_all_functions_help, &aan_help);
	rz_warn_if_fail(aan_cd);
	RzCmdDesc *autoname_all_functions_noreturn_cd = rz_cmd_desc_argv_new(core->rcmd, aan_cd, "aanr", rz_autoname_all_functions_noreturn_handler, &autoname_all_functions_noreturn_help);
	rz_warn_if_fail(autoname_all_functions_noreturn_cd);

	RzCmdDesc *analyze_all_preludes_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aap", rz_analyze_all_preludes_handler, &analyze_all_preludes_help);
	rz_warn_if_fail(analyze_all_preludes_cd);

	RzCmdDesc *analyze_xrefs_section_bytes_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aar", rz_analyze_xrefs_section_bytes_handler, &analyze_xrefs_section_bytes_help);
	rz_warn_if_fail(analyze_xrefs_section_bytes_cd);

	RzCmdDesc *analyze_symbols_entries_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aas", rz_analyze_symbols_entries_handler, &analyze_symbols_entries_help);
	rz_warn_if_fail(analyze_symbols_entries_cd);

	RzCmdDesc *analyze_symbols_entries_flags_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aaS", rz_analyze_symbols_entries_flags_handler, &analyze_symbols_entries_flags_help);
	rz_warn_if_fail(analyze_symbols_entries_flags_cd);

	RzCmdDesc *analyze_function_linked_offsets_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aat", rz_analyze_function_linked_offsets_handler, &analyze_function_linked_offsets_help);
	rz_warn_if_fail(analyze_function_linked_offsets_cd);

	RzCmdDesc *print_commands_after_traps_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aaT", rz_print_commands_after_traps_handler, &print_commands_after_traps_help);
	rz_warn_if_fail(print_commands_after_traps_cd);

	RzCmdDesc *print_areas_no_functions_cd = rz_cmd_desc_argv_new(core->rcmd, aa_cd, "aau", rz_print_areas_no_functions_handler, &print_areas_no_functions_help);
	rz_warn_if_fail(print_areas_no_functions_cd);

	RzCmdDesc *analyze_value_to_maps_cd = rz_cmd_desc_argv_state_new(core->rcmd, aa_cd, "aav", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_analyze_value_to_maps_handler, &analyze_value_to_maps_help);
	rz_warn_if_fail(analyze_value_to_maps_cd);

	RzCmdDesc *ad_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ad", rz_analysis_data_handler, &analysis_data_help, &ad_help);
	rz_warn_if_fail(ad_cd);
	RzCmdDesc *analysis_data_function_cd = rz_cmd_desc_argv_new(core->rcmd, ad_cd, "adf", rz_analysis_data_function_handler, &analysis_data_function_help);
	rz_warn_if_fail(analysis_data_function_cd);

	RzCmdDesc *analysis_data_function_gaps_cd = rz_cmd_desc_argv_new(core->rcmd, ad_cd, "adfg", rz_analysis_data_function_gaps_handler, &analysis_data_function_gaps_help);
	rz_warn_if_fail(analysis_data_function_gaps_cd);

	RzCmdDesc *analysis_data_kind_cd = rz_cmd_desc_argv_new(core->rcmd, ad_cd, "adk", rz_analysis_data_kind_handler, &analysis_data_kind_help);
	rz_warn_if_fail(analysis_data_kind_cd);

	RzCmdDesc *analysis_data_trampoline_cd = rz_cmd_desc_argv_new(core->rcmd, ad_cd, "adt", rz_analysis_data_trampoline_handler, &analysis_data_trampoline_help);
	rz_warn_if_fail(analysis_data_trampoline_cd);

	RzCmdDesc *af_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "af", rz_analysis_function_add_recu_handler, &analysis_function_add_recu_help, &af_help);
	rz_warn_if_fail(af_cd);
	RzCmdDesc *analysis_function_add_recu_force_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afr", rz_analysis_function_add_recu_handler, &analysis_function_add_recu_force_help);
	rz_warn_if_fail(analysis_function_add_recu_force_cd);

	RzCmdDesc *analysis_function_create_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "af+", rz_analysis_function_create_handler, &analysis_function_create_help);
	rz_warn_if_fail(analysis_function_create_cd);

	RzCmdDesc *analysis_function_del_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "af-", rz_analysis_function_del_handler, &analysis_function_del_help);
	rz_warn_if_fail(analysis_function_del_cd);

	RzCmdDesc *analysis_function_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "af-*", rz_analysis_function_del_all_handler, &analysis_function_del_all_help);
	rz_warn_if_fail(analysis_function_del_all_cd);

	RzCmdDesc *analysis_function_analyze_jmptable_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afj", rz_analysis_function_analyze_jmptable_handler, &analysis_function_analyze_jmptable_help);
	rz_warn_if_fail(analysis_function_analyze_jmptable_cd);

	RzCmdDesc *analysis_function_analyze_args_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afa", rz_analysis_function_analyze_args_handler, &analysis_function_analyze_args_help);
	rz_warn_if_fail(analysis_function_analyze_args_cd);

	RzCmdDesc *analysis_function_analyze_args_l_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afal", rz_analysis_function_analyze_args_handler, &analysis_function_analyze_args_l_help);
	rz_warn_if_fail(analysis_function_analyze_args_l_cd);

	RzCmdDesc *afb_cd = rz_cmd_desc_group_state_new(core->rcmd, af_cd, "afb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_analysis_function_blocks_list_handler, &analysis_function_blocks_list_help, &afb_help);
	rz_warn_if_fail(afb_cd);
	RzCmdDesc *analysis_function_blocks_add_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afb+", rz_analysis_function_blocks_add_handler, &analysis_function_blocks_add_help);
	rz_warn_if_fail(analysis_function_blocks_add_cd);

	RzCmdDesc *analysis_function_blocks_del_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afb-", rz_analysis_function_blocks_del_handler, &analysis_function_blocks_del_help);
	rz_warn_if_fail(analysis_function_blocks_del_cd);

	RzCmdDesc *analysis_function_blocks_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afb-*", rz_analysis_function_blocks_del_all_handler, &analysis_function_blocks_del_all_help);
	rz_warn_if_fail(analysis_function_blocks_del_all_cd);

	RzCmdDesc *analysis_function_blocks_edge_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afbe", rz_analysis_function_blocks_edge_handler, &analysis_function_blocks_edge_help);
	rz_warn_if_fail(analysis_function_blocks_edge_cd);

	RzCmdDesc *analysis_function_blocks_switch_type_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afbet", rz_analysis_function_blocks_switch_type_handler, &analysis_function_blocks_switch_type_help);
	rz_warn_if_fail(analysis_function_blocks_switch_type_cd);

	RzCmdDesc *analysis_function_returns_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afbr", rz_analysis_function_returns_handler, &analysis_function_returns_help);
	rz_warn_if_fail(analysis_function_returns_cd);

	RzCmdDesc *analysis_function_blocks_asciiart_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afb=", rz_analysis_function_blocks_asciiart_handler, &analysis_function_blocks_asciiart_help);
	rz_warn_if_fail(analysis_function_blocks_asciiart_cd);

	RzCmdDesc *analysis_function_blocks_info_cd = rz_cmd_desc_argv_state_new(core->rcmd, afb_cd, "afbi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_analysis_function_blocks_info_handler, &analysis_function_blocks_info_help);
	rz_warn_if_fail(analysis_function_blocks_info_cd);

	RzCmdDesc *analysis_function_blocks_color_cd = rz_cmd_desc_argv_new(core->rcmd, afb_cd, "afbc", rz_analysis_function_blocks_color_handler, &analysis_function_blocks_color_help);
	rz_warn_if_fail(analysis_function_blocks_color_cd);

	RzCmdDesc *analysis_function_setbits_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afB", rz_analysis_function_setbits_handler, &analysis_function_setbits_help);
	rz_warn_if_fail(analysis_function_setbits_cd);

	RzCmdDesc *afs_cd = rz_cmd_desc_group_modes_new(core->rcmd, af_cd, "afs", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_signature_handler, &analysis_function_signature_help, &afs_help);
	rz_warn_if_fail(afs_cd);
	RzCmdDesc *analysis_function_signature_bytes_cd = rz_cmd_desc_argv_state_new(core->rcmd, afs_cd, "afsb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_signature_bytes_handler, &analysis_function_signature_bytes_help);
	rz_warn_if_fail(analysis_function_signature_bytes_cd);

	RzCmdDesc *analysis_function_signature_editor_cd = rz_cmd_desc_argv_new(core->rcmd, afs_cd, "afs!", rz_analysis_function_signature_editor_handler, &analysis_function_signature_editor_help);
	rz_warn_if_fail(analysis_function_signature_editor_cd);

	RzCmdDesc *analysis_function_signature_type_cd = rz_cmd_desc_argv_new(core->rcmd, afs_cd, "afsr", rz_analysis_function_signature_type_handler, &analysis_function_signature_type_help);
	rz_warn_if_fail(analysis_function_signature_type_cd);

	RzCmdDesc *analysis_function_address_cd = rz_cmd_desc_argv_modes_new(core->rcmd, af_cd, "afo", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_address_handler, &analysis_function_address_help);
	rz_warn_if_fail(analysis_function_address_cd);

	RzCmdDesc *analysis_function_until_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afu", rz_analysis_function_until_handler, &analysis_function_until_help);
	rz_warn_if_fail(analysis_function_until_cd);

	RzCmdDesc *analysis_function_xrefs_cd = rz_cmd_desc_argv_state_new(core->rcmd, af_cd, "afx", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_xrefs_handler, &analysis_function_xrefs_help);
	rz_warn_if_fail(analysis_function_xrefs_cd);

	RzCmdDesc *analysis_function_stacksz_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afS", rz_analysis_function_stacksz_handler, &analysis_function_stacksz_help);
	rz_warn_if_fail(analysis_function_stacksz_cd);

	RzCmdDesc *afv_cd = rz_cmd_desc_group_new(core->rcmd, af_cd, "afv", NULL, NULL, &afv_help);
	rz_warn_if_fail(afv_cd);
	RzCmdDesc *analysis_function_vars_cd = rz_cmd_desc_argv_state_new(core->rcmd, afv_cd, "afvl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_LONG, rz_analysis_function_vars_handler, &analysis_function_vars_help);
	rz_warn_if_fail(analysis_function_vars_cd);

	RzCmdDesc *analysis_function_vars_dis_refs_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afv=", rz_analysis_function_vars_dis_refs_handler, &analysis_function_vars_dis_refs_help);
	rz_warn_if_fail(analysis_function_vars_dis_refs_cd);

	RzCmdDesc *analysis_function_vars_del_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afv-", rz_analysis_function_vars_del_handler, &analysis_function_vars_del_help);
	rz_warn_if_fail(analysis_function_vars_del_cd);

	RzCmdDesc *analysis_function_vars_detect_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afva", rz_analysis_function_vars_detect_handler, &analysis_function_vars_detect_help);
	rz_warn_if_fail(analysis_function_vars_detect_cd);

	RzCmdDesc *analysis_function_vars_display_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afvd", rz_analysis_function_vars_display_handler, &analysis_function_vars_display_help);
	rz_warn_if_fail(analysis_function_vars_display_cd);

	RzCmdDesc *analysis_function_vars_stackframe_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afvf", rz_analysis_function_vars_stackframe_handler, &analysis_function_vars_stackframe_help);
	rz_warn_if_fail(analysis_function_vars_stackframe_cd);

	RzCmdDesc *analysis_function_vars_rename_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afvn", rz_analysis_function_vars_rename_handler, &analysis_function_vars_rename_help);
	rz_warn_if_fail(analysis_function_vars_rename_cd);

	RzCmdDesc *analysis_function_vars_reads_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afvR", rz_analysis_function_vars_reads_handler, &analysis_function_vars_reads_help);
	rz_warn_if_fail(analysis_function_vars_reads_cd);

	RzCmdDesc *analysis_function_vars_writes_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afvW", rz_analysis_function_vars_writes_handler, &analysis_function_vars_writes_help);
	rz_warn_if_fail(analysis_function_vars_writes_cd);

	RzCmdDesc *analysis_function_vars_type_cd = rz_cmd_desc_argv_new(core->rcmd, afv_cd, "afvt", rz_analysis_function_vars_type_handler, &analysis_function_vars_type_help);
	rz_warn_if_fail(analysis_function_vars_type_cd);

	RzCmdDesc *afvx_cd = rz_cmd_desc_group_modes_new(core->rcmd, afv_cd, "afvx", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_vars_xrefs_handler, &analysis_function_vars_xrefs_help, &afvx_help);
	rz_warn_if_fail(afvx_cd);
	RzCmdDesc *analysis_function_vars_xrefs_args_cd = rz_cmd_desc_argv_modes_new(core->rcmd, afvx_cd, "afvxa", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_vars_xrefs_args_handler, &analysis_function_vars_xrefs_args_help);
	rz_warn_if_fail(analysis_function_vars_xrefs_args_cd);

	RzCmdDesc *analysis_function_vars_xrefs_vars_cd = rz_cmd_desc_argv_modes_new(core->rcmd, afvx_cd, "afvxv", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_vars_xrefs_vars_handler, &analysis_function_vars_xrefs_vars_help);
	rz_warn_if_fail(analysis_function_vars_xrefs_vars_cd);

	RzCmdDesc *afvs_cd = rz_cmd_desc_group_state_new(core->rcmd, afv_cd, "afvs", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_analysis_function_vars_stack_handler, &analysis_function_vars_stack_help, &afvs_help);
	rz_warn_if_fail(afvs_cd);
	RzCmdDesc *analysis_function_vars_stack_del_cd = rz_cmd_desc_argv_new(core->rcmd, afvs_cd, "afvs-", rz_analysis_function_vars_stack_del_handler, &analysis_function_vars_stack_del_help);
	rz_warn_if_fail(analysis_function_vars_stack_del_cd);

	RzCmdDesc *analysis_function_vars_stack_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, afvs_cd, "afvs-*", rz_analysis_function_vars_stack_del_all_handler, &analysis_function_vars_stack_del_all_help);
	rz_warn_if_fail(analysis_function_vars_stack_del_all_cd);

	RzCmdDesc *analysis_function_vars_stack_getref_cd = rz_cmd_desc_argv_new(core->rcmd, afvs_cd, "afvsg", rz_analysis_function_vars_stack_getref_handler, &analysis_function_vars_stack_getref_help);
	rz_warn_if_fail(analysis_function_vars_stack_getref_cd);

	RzCmdDesc *analysis_function_vars_stack_setref_cd = rz_cmd_desc_argv_new(core->rcmd, afvs_cd, "afvss", rz_analysis_function_vars_stack_setref_handler, &analysis_function_vars_stack_setref_help);
	rz_warn_if_fail(analysis_function_vars_stack_setref_cd);

	RzCmdDesc *afvr_cd = rz_cmd_desc_group_state_new(core->rcmd, afv_cd, "afvr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_analysis_function_vars_regs_handler, &analysis_function_vars_regs_help, &afvr_help);
	rz_warn_if_fail(afvr_cd);
	RzCmdDesc *analysis_function_vars_regs_del_cd = rz_cmd_desc_argv_new(core->rcmd, afvr_cd, "afvr-", rz_analysis_function_vars_regs_del_handler, &analysis_function_vars_regs_del_help);
	rz_warn_if_fail(analysis_function_vars_regs_del_cd);

	RzCmdDesc *analysis_function_vars_regs_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, afvr_cd, "afvr-*", rz_analysis_function_vars_regs_del_all_handler, &analysis_function_vars_regs_del_all_help);
	rz_warn_if_fail(analysis_function_vars_regs_del_all_cd);

	RzCmdDesc *analysis_function_vars_regs_getref_cd = rz_cmd_desc_argv_new(core->rcmd, afvr_cd, "afvrg", rz_analysis_function_vars_regs_getref_handler, &analysis_function_vars_regs_getref_help);
	rz_warn_if_fail(analysis_function_vars_regs_getref_cd);

	RzCmdDesc *analysis_function_vars_regs_setref_cd = rz_cmd_desc_argv_new(core->rcmd, afvr_cd, "afvrs", rz_analysis_function_vars_regs_setref_handler, &analysis_function_vars_regs_setref_help);
	rz_warn_if_fail(analysis_function_vars_regs_setref_cd);

	RzCmdDesc *afl_cd = rz_cmd_desc_group_state_new(core->rcmd, af_cd, "afl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE, rz_analysis_function_list_handler, &analysis_function_list_help, &afl_help);
	rz_warn_if_fail(afl_cd);
	RzCmdDesc *analysis_function_list_in_cd = rz_cmd_desc_argv_new(core->rcmd, afl_cd, "afl.", rz_analysis_function_list_in_handler, &analysis_function_list_in_help);
	rz_warn_if_fail(analysis_function_list_in_cd);

	RzCmdDesc *analysis_function_count_cd = rz_cmd_desc_argv_new(core->rcmd, afl_cd, "aflc", rz_analysis_function_count_handler, &analysis_function_count_help);
	rz_warn_if_fail(analysis_function_count_cd);

	RzCmdDesc *analysis_function_size_sum_cd = rz_cmd_desc_argv_new(core->rcmd, afl_cd, "afl+", rz_analysis_function_size_sum_handler, &analysis_function_size_sum_help);
	rz_warn_if_fail(analysis_function_size_sum_cd);

	RzCmdDesc *analysis_function_list_calls_cd = rz_cmd_desc_argv_state_new(core->rcmd, afl_cd, "aflm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_analysis_function_list_calls_handler, &analysis_function_list_calls_help);
	rz_warn_if_fail(analysis_function_list_calls_cd);

	RzCmdDesc *analysis_function_list_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, afl_cd, "afl=", rz_analysis_function_list_ascii_handler, &analysis_function_list_ascii_help);
	rz_warn_if_fail(analysis_function_list_ascii_cd);

	RzCmdDesc *afi_cd = rz_cmd_desc_group_state_new(core->rcmd, af_cd, "afi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_analysis_function_info_handler, &analysis_function_info_help, &afi_help);
	rz_warn_if_fail(afi_cd);
	RzCmdDesc *afii_cd = rz_cmd_desc_group_new(core->rcmd, afi_cd, "afii", rz_analysis_function_import_list_handler, &analysis_function_import_list_help, &afii_help);
	rz_warn_if_fail(afii_cd);
	RzCmdDesc *analysis_function_import_list_del_cd = rz_cmd_desc_argv_new(core->rcmd, afii_cd, "afii-", rz_analysis_function_import_list_del_handler, &analysis_function_import_list_del_help);
	rz_warn_if_fail(analysis_function_import_list_del_cd);

	RzCmdDesc *afis_cd = rz_cmd_desc_group_state_new(core->rcmd, afi_cd, "afis", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE, rz_analysis_function_opcode_stat_handler, &analysis_function_opcode_stat_help, &afis_help);
	rz_warn_if_fail(afis_cd);
	RzCmdDesc *analysis_function_all_opcode_stat_cd = rz_cmd_desc_argv_state_new(core->rcmd, afis_cd, "afisa", RZ_OUTPUT_MODE_TABLE, rz_analysis_function_all_opcode_stat_handler, &analysis_function_all_opcode_stat_help);
	rz_warn_if_fail(analysis_function_all_opcode_stat_cd);

	RzCmdDesc *afn_cd = rz_cmd_desc_group_new(core->rcmd, af_cd, "afn", rz_analysis_function_rename_handler, &analysis_function_rename_help, &afn_help);
	rz_warn_if_fail(afn_cd);
	RzCmdDesc *analysis_function_autoname_cd = rz_cmd_desc_argv_new(core->rcmd, afn_cd, "afna", rz_analysis_function_autoname_handler, &analysis_function_autoname_help);
	rz_warn_if_fail(analysis_function_autoname_cd);

	RzCmdDesc *analysis_function_strings_cd = rz_cmd_desc_argv_state_new(core->rcmd, afn_cd, "afns", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_strings_handler, &analysis_function_strings_help);
	rz_warn_if_fail(analysis_function_strings_cd);

	RzCmdDesc *analysis_function_type_matching_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "aft", rz_analysis_function_type_matching_handler, &analysis_function_type_matching_help);
	rz_warn_if_fail(analysis_function_type_matching_cd);

	RzCmdDesc *analysis_functions_map_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afM", rz_analysis_functions_map_handler, &analysis_functions_map_help);
	rz_warn_if_fail(analysis_functions_map_cd);

	RzCmdDesc *analysis_functions_merge_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afm", rz_analysis_functions_merge_handler, &analysis_functions_merge_help);
	rz_warn_if_fail(analysis_functions_merge_cd);

	RzCmdDesc *afc_cd = rz_cmd_desc_group_new(core->rcmd, af_cd, "afc", rz_analysis_function_cc_set_get_handler, &analysis_function_cc_set_get_help, &afc_help);
	rz_warn_if_fail(afc_cd);
	RzCmdDesc *analysis_function_cc_list_cd = rz_cmd_desc_argv_modes_new(core->rcmd, afc_cd, "afcl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_SDB, rz_analysis_function_cc_list_handler, &analysis_function_cc_list_help);
	rz_warn_if_fail(analysis_function_cc_list_cd);

	RzCmdDesc *analysis_function_cc_load_cd = rz_cmd_desc_argv_new(core->rcmd, afc_cd, "afco", rz_analysis_function_cc_load_handler, &analysis_function_cc_load_help);
	rz_warn_if_fail(analysis_function_cc_load_cd);

	RzCmdDesc *analysis_function_cc_reg_usage_cd = rz_cmd_desc_argv_state_new(core->rcmd, afc_cd, "afcr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_function_cc_reg_usage_handler, &analysis_function_cc_reg_usage_help);
	rz_warn_if_fail(analysis_function_cc_reg_usage_cd);

	RzCmdDesc *analysis_function_describe_offset_cd = rz_cmd_desc_argv_new(core->rcmd, af_cd, "afd", rz_analysis_function_describe_offset_handler, &analysis_function_describe_offset_help);
	rz_warn_if_fail(analysis_function_describe_offset_cd);

	RzCmdDesc *analysis_function_add_nodepth_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_analysis_cd, "aF", rz_analysis_function_add_nodepth_handler, &analysis_function_add_nodepth_help);
	rz_warn_if_fail(analysis_function_add_nodepth_cd);

	RzCmdDesc *analysis_appcall_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_analysis_cd, "aeC", rz_analysis_appcall_handler, &analysis_appcall_help);
	rz_warn_if_fail(analysis_appcall_cd);

	RzCmdDesc *aec_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "aec", rz_analysis_continue_until_except_handler, &analysis_continue_until_except_help, &aec_help);
	rz_warn_if_fail(aec_cd);
	RzCmdDesc *analysis_continue_until_breakpoint_cd = rz_cmd_desc_argv_new(core->rcmd, aec_cd, "aecb", rz_analysis_continue_until_breakpoint_handler, &analysis_continue_until_breakpoint_help);
	rz_warn_if_fail(analysis_continue_until_breakpoint_cd);

	RzCmdDesc *analysis_continue_until_syscall_cd = rz_cmd_desc_argv_new(core->rcmd, aec_cd, "aecs", rz_analysis_continue_until_syscall_handler, &analysis_continue_until_syscall_help);
	rz_warn_if_fail(analysis_continue_until_syscall_cd);

	RzCmdDesc *analysis_continue_until_call_cd = rz_cmd_desc_argv_new(core->rcmd, aec_cd, "aecc", rz_analysis_continue_until_call_handler, &analysis_continue_until_call_help);
	rz_warn_if_fail(analysis_continue_until_call_cd);

	RzCmdDesc *analysis_continue_until_addr_cd = rz_cmd_desc_argv_new(core->rcmd, aec_cd, "aecu", rz_analysis_continue_until_addr_handler, &analysis_continue_until_addr_help);
	rz_warn_if_fail(analysis_continue_until_addr_cd);

	RzCmdDesc *analysis_continue_until_esil_cd = rz_cmd_desc_argv_new(core->rcmd, aec_cd, "aecue", rz_analysis_continue_until_esil_handler, &analysis_continue_until_esil_help);
	rz_warn_if_fail(analysis_continue_until_esil_cd);

	RzCmdDesc *aei_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "aei", rz_analysis_esil_init_handler, &analysis_esil_init_help, &aei_help);
	rz_warn_if_fail(aei_cd);
	RzCmdDesc *analysis_esil_deinit_cd = rz_cmd_desc_argv_new(core->rcmd, aei_cd, "aei-", rz_analysis_esil_deinit_handler, &analysis_esil_deinit_help);
	rz_warn_if_fail(analysis_esil_deinit_cd);

	RzCmdDesc *analysis_esil_init_p_cd = rz_cmd_desc_argv_new(core->rcmd, aei_cd, "aeip", rz_analysis_esil_init_p_handler, &analysis_esil_init_p_help);
	rz_warn_if_fail(analysis_esil_init_p_cd);

	RzCmdDesc *aeim_cd = rz_cmd_desc_group_new(core->rcmd, aei_cd, "aeim", rz_analysis_esil_init_mem_handler, &analysis_esil_init_mem_help, &aeim_help);
	rz_warn_if_fail(aeim_cd);
	RzCmdDesc *analysis_esil_init_mem_remove_cd = rz_cmd_desc_argv_new(core->rcmd, aeim_cd, "aeim-", rz_analysis_esil_init_mem_remove_handler, &analysis_esil_init_mem_remove_help);
	rz_warn_if_fail(analysis_esil_init_mem_remove_cd);

	RzCmdDesc *analysis_esil_init_mem_p_cd = rz_cmd_desc_argv_new(core->rcmd, aeim_cd, "aeimp", rz_analysis_esil_init_mem_p_handler, &analysis_esil_init_mem_p_help);
	rz_warn_if_fail(analysis_esil_init_mem_p_cd);

	RzCmdDesc *aes_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "aes", rz_il_step_handler, &il_step_help, &aes_help);
	rz_warn_if_fail(aes_cd);
	RzCmdDesc *il_step_evaluate_cd = rz_cmd_desc_argv_new(core->rcmd, aes_cd, "aesp", rz_il_step_evaluate_handler, &il_step_evaluate_help);
	rz_warn_if_fail(il_step_evaluate_cd);

	RzCmdDesc *il_step_back_cd = rz_cmd_desc_argv_new(core->rcmd, aes_cd, "aesb", rz_il_step_back_handler, &il_step_back_help);
	rz_warn_if_fail(il_step_back_cd);

	RzCmdDesc *il_step_over_cd = rz_cmd_desc_argv_new(core->rcmd, aes_cd, "aeso", rz_il_step_over_handler, &il_step_over_help);
	rz_warn_if_fail(il_step_over_cd);

	RzCmdDesc *il_step_over_until_addr_cd = rz_cmd_desc_argv_new(core->rcmd, aes_cd, "aesou", rz_il_step_over_until_addr_handler, &il_step_over_until_addr_help);
	rz_warn_if_fail(il_step_over_until_addr_cd);

	RzCmdDesc *aess_cd = rz_cmd_desc_group_new(core->rcmd, aes_cd, "aess", rz_il_step_skip_handler, &il_step_skip_help, &aess_help);
	rz_warn_if_fail(aess_cd);
	RzCmdDesc *il_step_skip_until_addr_cd = rz_cmd_desc_argv_new(core->rcmd, aess_cd, "aessu", rz_il_step_skip_until_addr_handler, &il_step_skip_until_addr_help);
	rz_warn_if_fail(il_step_skip_until_addr_cd);

	RzCmdDesc *il_step_skip_until_expr_cd = rz_cmd_desc_argv_new(core->rcmd, aess_cd, "aessue", rz_il_step_skip_until_expr_handler, &il_step_skip_until_expr_help);
	rz_warn_if_fail(il_step_skip_until_expr_cd);

	RzCmdDesc *aesu_cd = rz_cmd_desc_group_new(core->rcmd, aes_cd, "aesu", rz_il_step_until_addr_handler, &il_step_until_addr_help, &aesu_help);
	rz_warn_if_fail(aesu_cd);
	RzCmdDesc *il_step_until_expr_cd = rz_cmd_desc_argv_new(core->rcmd, aesu_cd, "aesue", rz_il_step_until_expr_handler, &il_step_until_expr_help);
	rz_warn_if_fail(il_step_until_expr_cd);

	RzCmdDesc *il_step_until_opt_cd = rz_cmd_desc_argv_new(core->rcmd, aesu_cd, "aesuo", rz_il_step_until_opt_handler, &il_step_until_opt_help);
	rz_warn_if_fail(il_step_until_opt_cd);

	RzCmdDesc *aets_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "aets", NULL, NULL, &aets_help);
	rz_warn_if_fail(aets_cd);
	RzCmdDesc *il_trace_start_cd = rz_cmd_desc_argv_new(core->rcmd, aets_cd, "aets+", rz_il_trace_start_handler, &il_trace_start_help);
	rz_warn_if_fail(il_trace_start_cd);

	RzCmdDesc *il_trace_stop_cd = rz_cmd_desc_argv_new(core->rcmd, aets_cd, "aets-", rz_il_trace_stop_handler, &il_trace_stop_help);
	rz_warn_if_fail(il_trace_stop_cd);

	RzCmdDesc *aez_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "aez", NULL, NULL, &aez_help);
	rz_warn_if_fail(aez_cd);
	RzCmdDesc *il_vm_initialize_cd = rz_cmd_desc_argv_new(core->rcmd, aez_cd, "aezi", rz_il_vm_initialize_handler, &il_vm_initialize_help);
	rz_warn_if_fail(il_vm_initialize_cd);

	RzCmdDesc *il_vm_step_cd = rz_cmd_desc_argv_new(core->rcmd, aez_cd, "aezs", rz_il_vm_step_handler, &il_vm_step_help);
	rz_warn_if_fail(il_vm_step_cd);

	RzCmdDesc *il_vm_step_with_events_cd = rz_cmd_desc_argv_modes_new(core->rcmd, aez_cd, "aezse", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_il_vm_step_with_events_handler, &il_vm_step_with_events_help);
	rz_warn_if_fail(il_vm_step_with_events_cd);

	RzCmdDesc *il_vm_step_until_addr_cd = rz_cmd_desc_argv_new(core->rcmd, aez_cd, "aezsu", rz_il_vm_step_until_addr_handler, &il_vm_step_until_addr_help);
	rz_warn_if_fail(il_vm_step_until_addr_cd);

	RzCmdDesc *il_vm_step_until_addr_with_events_cd = rz_cmd_desc_argv_new(core->rcmd, aez_cd, "aezsue", rz_il_vm_step_until_addr_with_events_handler, &il_vm_step_until_addr_with_events_help);
	rz_warn_if_fail(il_vm_step_until_addr_with_events_cd);

	RzCmdDesc *il_vm_status_cd = rz_cmd_desc_argv_modes_new(core->rcmd, aez_cd, "aezv", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_il_vm_status_handler, &il_vm_status_help);
	rz_warn_if_fail(il_vm_status_cd);

	RzCmdDesc *ag_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ag", NULL, NULL, &ag_help);
	rz_warn_if_fail(ag_cd);
	RzCmdDesc *analysis_graph_dataref_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "aga", rz_analysis_graph_dataref_handler, &analysis_graph_dataref_help);
	rz_warn_if_fail(analysis_graph_dataref_cd);

	RzCmdDesc *analysis_graph_dataref_global_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agA", rz_analysis_graph_dataref_global_handler, &analysis_graph_dataref_global_help);
	rz_warn_if_fail(analysis_graph_dataref_global_cd);

	RzCmdDesc *analysis_graph_callgraph_function_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agc", rz_analysis_graph_callgraph_function_handler, &analysis_graph_callgraph_function_help);
	rz_warn_if_fail(analysis_graph_callgraph_function_cd);

	RzCmdDesc *analysis_graph_callgraph_global_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agC", rz_analysis_graph_callgraph_global_handler, &analysis_graph_callgraph_global_help);
	rz_warn_if_fail(analysis_graph_callgraph_global_cd);

	RzCmdDesc *analysis_graph_icfg_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agCi", rz_analysis_graph_icfg_handler, &analysis_graph_icfg_help);
	rz_warn_if_fail(analysis_graph_icfg_cd);

	RzCmdDesc *analysis_graph_cfg_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agF", rz_analysis_graph_cfg_handler, &analysis_graph_cfg_help);
	rz_warn_if_fail(analysis_graph_cfg_cd);

	RzCmdDesc *analysis_graph_bb_function_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agf", rz_analysis_graph_bb_function_handler, &analysis_graph_bb_function_help);
	rz_warn_if_fail(analysis_graph_bb_function_cd);

	RzCmdDesc *analysis_graph_imports_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agi", rz_analysis_graph_imports_handler, &analysis_graph_imports_help);
	rz_warn_if_fail(analysis_graph_imports_cd);

	RzCmdDesc *analysis_graph_refs_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agr", rz_analysis_graph_refs_handler, &analysis_graph_refs_help);
	rz_warn_if_fail(analysis_graph_refs_cd);

	RzCmdDesc *analysis_graph_refs_global_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agR", rz_analysis_graph_refs_global_handler, &analysis_graph_refs_global_help);
	rz_warn_if_fail(analysis_graph_refs_global_cd);

	RzCmdDesc *analysis_graph_normal_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "ags", rz_analysis_graph_normal_handler, &analysis_graph_normal_help);
	rz_warn_if_fail(analysis_graph_normal_cd);

	RzCmdDesc *analysis_graph_line_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agl", rz_analysis_graph_line_handler, &analysis_graph_line_help);
	rz_warn_if_fail(analysis_graph_line_cd);

	RzCmdDesc *analysis_graph_xrefs_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agx", rz_analysis_graph_xrefs_handler, &analysis_graph_xrefs_help);
	rz_warn_if_fail(analysis_graph_xrefs_cd);

	RzCmdDesc *analysis_graph_il_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agI", rz_analysis_graph_il_handler, &analysis_graph_il_help);
	rz_warn_if_fail(analysis_graph_il_cd);

	RzCmdDesc *analysis_graph_custom_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agg", rz_analysis_graph_custom_handler, &analysis_graph_custom_help);
	rz_warn_if_fail(analysis_graph_custom_cd);

	RzCmdDesc *analysis_graph_custom_clear_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "ag-", rz_analysis_graph_custom_clear_handler, &analysis_graph_custom_clear_help);
	rz_warn_if_fail(analysis_graph_custom_clear_cd);

	RzCmdDesc *agn_cd = rz_cmd_desc_group_new(core->rcmd, ag_cd, "agn", rz_analysis_graph_custom_node_add_handler, &analysis_graph_custom_node_add_help, &agn_help);
	rz_warn_if_fail(agn_cd);
	RzCmdDesc *analysis_graph_custom_node_remove_cd = rz_cmd_desc_argv_new(core->rcmd, agn_cd, "agn-", rz_analysis_graph_custom_node_remove_handler, &analysis_graph_custom_node_remove_help);
	rz_warn_if_fail(analysis_graph_custom_node_remove_cd);

	RzCmdDesc *age_cd = rz_cmd_desc_group_new(core->rcmd, ag_cd, "age", rz_analysis_graph_custom_edge_add_handler, &analysis_graph_custom_edge_add_help, &age_help);
	rz_warn_if_fail(age_cd);
	RzCmdDesc *analysis_graph_custom_edge_remove_cd = rz_cmd_desc_argv_new(core->rcmd, age_cd, "age-", rz_analysis_graph_custom_edge_remove_handler, &analysis_graph_custom_edge_remove_help);
	rz_warn_if_fail(analysis_graph_custom_edge_remove_cd);

	RzCmdDesc *analysis_graph_write_cd = rz_cmd_desc_argv_new(core->rcmd, ag_cd, "agw", rz_analysis_graph_write_handler, &analysis_graph_write_help);
	rz_warn_if_fail(analysis_graph_write_cd);

	RzCmdDesc *ar_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_analysis_cd, "ar", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_analysis_regs_handler, &analysis_regs_help, &ar_help);
	rz_warn_if_fail(ar_cd);
	RzCmdDesc *analysis_regs_columns_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "ar=", rz_analysis_regs_columns_handler, &analysis_regs_columns_help);
	rz_warn_if_fail(analysis_regs_columns_cd);

	RzCmdDesc *analysis_regs_references_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ar_cd, "arr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_regs_references_handler, &analysis_regs_references_help);
	rz_warn_if_fail(analysis_regs_references_cd);

	RzCmdDesc *analysis_regs_valgroup_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "ari", rz_analysis_regs_valgroup_handler, &analysis_regs_valgroup_help);
	rz_warn_if_fail(analysis_regs_valgroup_cd);

	RzCmdDesc *analysis_regs_args_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ar_cd, "arA", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_regs_args_handler, &analysis_regs_args_help);
	rz_warn_if_fail(analysis_regs_args_cd);

	RzCmdDesc *analysis_reg_cc_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "arcc", rz_analysis_reg_cc_handler, &analysis_reg_cc_help);
	rz_warn_if_fail(analysis_reg_cc_cd);

	RzCmdDesc *analysis_regs_diff_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "ard", rz_analysis_regs_diff_handler, &analysis_regs_diff_help);
	rz_warn_if_fail(analysis_regs_diff_cd);

	RzCmdDesc *analysis_regs_prev_cd = rz_cmd_desc_argv_state_new(core->rcmd, ar_cd, "aro", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_analysis_regs_prev_handler, &analysis_regs_prev_help);
	rz_warn_if_fail(analysis_regs_prev_cd);

	RzCmdDesc *analysis_regs_fpu_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "arF", rz_analysis_regs_fpu_handler, &analysis_regs_fpu_help);
	rz_warn_if_fail(analysis_regs_fpu_cd);

	RzCmdDesc *arf_cd = rz_cmd_desc_group_new(core->rcmd, ar_cd, "arf", rz_analysis_reg_flags_handler, &analysis_reg_flags_help, &arf_help);
	rz_warn_if_fail(arf_cd);
	RzCmdDesc *analysis_reg_flags_unset_cd = rz_cmd_desc_argv_new(core->rcmd, arf_cd, "arf-", rz_analysis_reg_flags_unset_handler, &analysis_reg_flags_unset_help);
	rz_warn_if_fail(analysis_reg_flags_unset_cd);

	RzCmdDesc *ara_cd = rz_cmd_desc_group_new(core->rcmd, ar_cd, "ara", rz_analysis_reg_arenas_handler, &analysis_reg_arenas_help, &ara_help);
	rz_warn_if_fail(ara_cd);
	RzCmdDesc *analysis_reg_arenas_push_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "ara+", rz_analysis_reg_arenas_push_handler, &analysis_reg_arenas_push_help);
	rz_warn_if_fail(analysis_reg_arenas_push_cd);

	RzCmdDesc *analysis_reg_arenas_pop_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "ara-", rz_analysis_reg_arenas_pop_handler, &analysis_reg_arenas_pop_help);
	rz_warn_if_fail(analysis_reg_arenas_pop_cd);

	RzCmdDesc *analysis_reg_arenas_stack_size_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "araS", rz_analysis_reg_arenas_stack_size_handler, &analysis_reg_arenas_stack_size_help);
	rz_warn_if_fail(analysis_reg_arenas_stack_size_cd);

	RzCmdDesc *analysis_reg_arenas_swap_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "aras", rz_analysis_reg_arenas_swap_handler, &analysis_reg_arenas_swap_help);
	rz_warn_if_fail(analysis_reg_arenas_swap_cd);

	RzCmdDesc *analysis_reg_arenas_zero_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "ara0", rz_analysis_reg_arenas_zero_handler, &analysis_reg_arenas_zero_help);
	rz_warn_if_fail(analysis_reg_arenas_zero_cd);

	RzCmdDesc *analysis_reg_arenas_hexdump_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "arab", rz_analysis_reg_arenas_hexdump_handler, &analysis_reg_arenas_hexdump_help);
	rz_warn_if_fail(analysis_reg_arenas_hexdump_cd);

	RzCmdDesc *analysis_reg_arenas_write_hex_cd = rz_cmd_desc_argv_new(core->rcmd, ara_cd, "araw", rz_analysis_reg_arenas_write_hex_handler, &analysis_reg_arenas_write_hex_help);
	rz_warn_if_fail(analysis_reg_arenas_write_hex_cd);

	RzCmdDesc *arp_cd = rz_cmd_desc_group_state_new(core->rcmd, ar_cd, "arp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_reg_profile_handler, &analysis_reg_profile_help, &arp_help);
	rz_warn_if_fail(arp_cd);
	RzCmdDesc *analysis_reg_profile_comments_cd = rz_cmd_desc_argv_new(core->rcmd, arp_cd, "arpc", rz_analysis_reg_profile_comments_handler, &analysis_reg_profile_comments_help);
	rz_warn_if_fail(analysis_reg_profile_comments_cd);

	RzCmdDesc *analysis_reg_profile_open_cd = rz_cmd_desc_argv_new(core->rcmd, arp_cd, "arpo", rz_analysis_reg_profile_open_handler, &analysis_reg_profile_open_help);
	rz_warn_if_fail(analysis_reg_profile_open_cd);

	RzCmdDesc *analysis_reg_profile_gdb_cd = rz_cmd_desc_argv_new(core->rcmd, arp_cd, "arpg", rz_analysis_reg_profile_gdb_handler, &analysis_reg_profile_gdb_help);
	rz_warn_if_fail(analysis_reg_profile_gdb_cd);

	RzCmdDesc *analysis_reg_cond_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "arc", rz_analysis_reg_cond_handler, &analysis_reg_cond_help);
	rz_warn_if_fail(analysis_reg_cond_cd);

	RzCmdDesc *analysis_reg_types_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "arT", rz_analysis_reg_types_handler, &analysis_reg_types_help);
	rz_warn_if_fail(analysis_reg_types_cd);

	RzCmdDesc *analysis_reg_roles_cd = rz_cmd_desc_argv_new(core->rcmd, ar_cd, "arR", rz_analysis_reg_roles_handler, &analysis_reg_roles_help);
	rz_warn_if_fail(analysis_reg_roles_cd);

	RzCmdDesc *ai_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_analysis_cd, "ai", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_info_show_handler, &analysis_info_show_help, &ai_help);
	rz_warn_if_fail(ai_cd);
	RzCmdDesc *aii_cd = rz_cmd_desc_group_state_new(core->rcmd, ai_cd, "aii", RZ_OUTPUT_MODE_STANDARD, rz_global_imports_handler, &global_imports_help, &aii_help);
	rz_warn_if_fail(aii_cd);
	RzCmdDesc *delete_global_imports_cd = rz_cmd_desc_argv_state_new(core->rcmd, aii_cd, "aii-", RZ_OUTPUT_MODE_STANDARD, rz_delete_global_imports_handler, &delete_global_imports_help);
	rz_warn_if_fail(delete_global_imports_cd);

	RzCmdDesc *av_cd = rz_cmd_desc_group_modes_new(core->rcmd, cmd_analysis_cd, "av", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_analysis_list_vtables_handler, &analysis_list_vtables_help, &av_help);
	rz_warn_if_fail(av_cd);
	RzCmdDesc *avg_cd = rz_cmd_desc_group_new(core->rcmd, av_cd, "avg", NULL, NULL, &avg_help);
	rz_warn_if_fail(avg_cd);
	RzCmdDesc *analysis_print_global_variable_cd = rz_cmd_desc_argv_state_new(core->rcmd, avg_cd, "avgl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_analysis_print_global_variable_handler, &analysis_print_global_variable_help);
	rz_warn_if_fail(analysis_print_global_variable_cd);

	RzCmdDesc *analysis_global_variable_add_cd = rz_cmd_desc_argv_new(core->rcmd, avg_cd, "avga", rz_analysis_global_variable_add_handler, &analysis_global_variable_add_help);
	rz_warn_if_fail(analysis_global_variable_add_cd);

	RzCmdDesc *analysis_global_variable_delete_byaddr_cd = rz_cmd_desc_argv_new(core->rcmd, avg_cd, "avgd", rz_analysis_global_variable_delete_byaddr_handler, &analysis_global_variable_delete_byaddr_help);
	rz_warn_if_fail(analysis_global_variable_delete_byaddr_cd);

	RzCmdDesc *analysis_global_variable_delete_byname_cd = rz_cmd_desc_argv_new(core->rcmd, avg_cd, "avgm", rz_analysis_global_variable_delete_byname_handler, &analysis_global_variable_delete_byname_help);
	rz_warn_if_fail(analysis_global_variable_delete_byname_cd);

	RzCmdDesc *analysis_global_variable_rename_cd = rz_cmd_desc_argv_new(core->rcmd, avg_cd, "avgn", rz_analysis_global_variable_rename_handler, &analysis_global_variable_rename_help);
	rz_warn_if_fail(analysis_global_variable_rename_cd);

	RzCmdDesc *analysis_global_variable_print_cd = rz_cmd_desc_argv_new(core->rcmd, avg_cd, "avgp", rz_analysis_global_variable_print_handler, &analysis_global_variable_print_help);
	rz_warn_if_fail(analysis_global_variable_print_cd);

	RzCmdDesc *analysis_global_variable_retype_cd = rz_cmd_desc_argv_new(core->rcmd, avg_cd, "avgt", rz_analysis_global_variable_retype_handler, &analysis_global_variable_retype_help);
	rz_warn_if_fail(analysis_global_variable_retype_cd);

	RzCmdDesc *analysis_global_variable_xrefs_cd = rz_cmd_desc_argv_state_new(core->rcmd, avg_cd, "avgx", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_RIZIN, rz_analysis_global_variable_xrefs_handler, &analysis_global_variable_xrefs_help);
	rz_warn_if_fail(analysis_global_variable_xrefs_cd);

	RzCmdDesc *analysis_print_rtti_cd = rz_cmd_desc_argv_modes_new(core->rcmd, av_cd, "avr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_print_rtti_handler, &analysis_print_rtti_help);
	rz_warn_if_fail(analysis_print_rtti_cd);

	RzCmdDesc *analysis_print_rtti_all_cd = rz_cmd_desc_argv_modes_new(core->rcmd, av_cd, "avra", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_print_rtti_all_handler, &analysis_print_rtti_all_help);
	rz_warn_if_fail(analysis_print_rtti_all_cd);

	RzCmdDesc *analysis_recover_rtti_all_cd = rz_cmd_desc_argv_new(core->rcmd, av_cd, "avrr", rz_analysis_recover_rtti_all_handler, &analysis_recover_rtti_all_help);
	rz_warn_if_fail(analysis_recover_rtti_all_cd);

	RzCmdDesc *analysis_rtti_demangle_class_name_cd = rz_cmd_desc_argv_new(core->rcmd, av_cd, "avrD", rz_analysis_rtti_demangle_class_name_handler, &analysis_rtti_demangle_class_name_help);
	rz_warn_if_fail(analysis_rtti_demangle_class_name_cd);

	RzCmdDesc *ax_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ax", rz_analysis_xrefs_set_0_handler, &analysis_xrefs_set_0_help, &ax_help);
	rz_warn_if_fail(ax_cd);
	RzCmdDesc *analysis_xrefs_set_c_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "axc", rz_analysis_xrefs_set_c_handler, &analysis_xrefs_set_c_help);
	rz_warn_if_fail(analysis_xrefs_set_c_cd);

	RzCmdDesc *analysis_xrefs_set_C_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "axC", rz_analysis_xrefs_set_C_handler, &analysis_xrefs_set_C_help);
	rz_warn_if_fail(analysis_xrefs_set_C_cd);

	RzCmdDesc *analysis_xrefs_set_d_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "axd", rz_analysis_xrefs_set_d_handler, &analysis_xrefs_set_d_help);
	rz_warn_if_fail(analysis_xrefs_set_d_cd);

	RzCmdDesc *analysis_xrefs_set_s_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "axs", rz_analysis_xrefs_set_s_handler, &analysis_xrefs_set_s_help);
	rz_warn_if_fail(analysis_xrefs_set_s_cd);

	RzCmdDesc *analysis_xrefs_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ax_cd, "axl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_RIZIN, rz_analysis_xrefs_list_handler, &analysis_xrefs_list_help);
	rz_warn_if_fail(analysis_xrefs_list_cd);

	RzCmdDesc *analysis_xrefs_to_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ax_cd, "axt", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_RIZIN, rz_analysis_xrefs_to_list_handler, &analysis_xrefs_to_list_help);
	rz_warn_if_fail(analysis_xrefs_to_list_cd);

	RzCmdDesc *analysis_xrefs_from_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ax_cd, "axf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_RIZIN, rz_analysis_xrefs_from_list_handler, &analysis_xrefs_from_list_help);
	rz_warn_if_fail(analysis_xrefs_from_list_cd);

	RzCmdDesc *analysis_xrefs_to_graph_cmd_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "axtg", rz_analysis_xrefs_to_graph_cmd_handler, &analysis_xrefs_to_graph_cmd_help);
	rz_warn_if_fail(analysis_xrefs_to_graph_cmd_cd);

	RzCmdDesc *analysis_xrefs_del_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "ax-", rz_analysis_xrefs_del_handler, &analysis_xrefs_del_help);
	rz_warn_if_fail(analysis_xrefs_del_cd);

	RzCmdDesc *analysis_xrefs_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "ax-*", rz_analysis_xrefs_del_all_handler, &analysis_xrefs_del_all_help);
	rz_warn_if_fail(analysis_xrefs_del_all_cd);

	RzCmdDesc *analysis_xrefs_copy_cd = rz_cmd_desc_argv_new(core->rcmd, ax_cd, "axm", rz_analysis_xrefs_copy_handler, &analysis_xrefs_copy_help);
	rz_warn_if_fail(analysis_xrefs_copy_cd);

	RzCmdDesc *analysis_xrefs_graph_cd = rz_cmd_desc_argv_state_new(core->rcmd, ax_cd, "axg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_analysis_xrefs_graph_handler, &analysis_xrefs_graph_help);
	rz_warn_if_fail(analysis_xrefs_graph_cd);

	RzCmdDesc *ah_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ah", NULL, NULL, &ah_help);
	rz_warn_if_fail(ah_cd);
	RzCmdDesc *analysis_hint_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ah_cd, "ahl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_analysis_hint_list_handler, &analysis_hint_list_help);
	rz_warn_if_fail(analysis_hint_list_cd);

	RzCmdDesc *analysis_hint_list_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, ah_cd, "ahl.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_analysis_hint_list_at_handler, &analysis_hint_list_at_help);
	rz_warn_if_fail(analysis_hint_list_at_cd);

	RzCmdDesc *analysis_hint_del_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ah-", rz_analysis_hint_del_handler, &analysis_hint_del_help);
	rz_warn_if_fail(analysis_hint_del_cd);

	RzCmdDesc *analysis_hint_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ah-*", rz_analysis_hint_del_all_handler, &analysis_hint_del_all_help);
	rz_warn_if_fail(analysis_hint_del_all_cd);

	RzCmdDesc *analysis_hint_set_arch_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "aha", rz_analysis_hint_set_arch_handler, &analysis_hint_set_arch_help);
	rz_warn_if_fail(analysis_hint_set_arch_cd);

	RzCmdDesc *analysis_hint_del_arch_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "aha-", rz_analysis_hint_del_arch_handler, &analysis_hint_del_arch_help);
	rz_warn_if_fail(analysis_hint_del_arch_cd);

	RzCmdDesc *analysis_hint_set_bits_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahb", rz_analysis_hint_set_bits_handler, &analysis_hint_set_bits_help);
	rz_warn_if_fail(analysis_hint_set_bits_cd);

	RzCmdDesc *analysis_hint_del_bits_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahb-", rz_analysis_hint_del_bits_handler, &analysis_hint_del_bits_help);
	rz_warn_if_fail(analysis_hint_del_bits_cd);

	RzCmdDesc *analysis_hint_set_high_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahh", rz_analysis_hint_set_high_handler, &analysis_hint_set_high_help);
	rz_warn_if_fail(analysis_hint_set_high_cd);

	RzCmdDesc *analysis_hint_del_high_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahh-", rz_analysis_hint_del_high_handler, &analysis_hint_del_high_help);
	rz_warn_if_fail(analysis_hint_del_high_cd);

	RzCmdDesc *analysis_hint_set_jump_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahc", rz_analysis_hint_set_jump_handler, &analysis_hint_set_jump_help);
	rz_warn_if_fail(analysis_hint_set_jump_cd);

	RzCmdDesc *analysis_hint_del_jump_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahc-", rz_analysis_hint_del_jump_handler, &analysis_hint_del_jump_help);
	rz_warn_if_fail(analysis_hint_del_jump_cd);

	RzCmdDesc *analysis_hint_set_esil_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahe", rz_analysis_hint_set_esil_handler, &analysis_hint_set_esil_help);
	rz_warn_if_fail(analysis_hint_set_esil_cd);

	RzCmdDesc *analysis_hint_del_esil_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahe-", rz_analysis_hint_del_esil_handler, &analysis_hint_del_esil_help);
	rz_warn_if_fail(analysis_hint_del_esil_cd);

	RzCmdDesc *analysis_hint_set_opcode_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahd", rz_analysis_hint_set_opcode_handler, &analysis_hint_set_opcode_help);
	rz_warn_if_fail(analysis_hint_set_opcode_cd);

	RzCmdDesc *analysis_hint_del_opcode_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahd-", rz_analysis_hint_del_opcode_handler, &analysis_hint_del_opcode_help);
	rz_warn_if_fail(analysis_hint_del_opcode_cd);

	RzCmdDesc *analysis_hint_set_size_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahs", rz_analysis_hint_set_size_handler, &analysis_hint_set_size_help);
	rz_warn_if_fail(analysis_hint_set_size_cd);

	RzCmdDesc *analysis_hint_del_size_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahs-", rz_analysis_hint_del_size_handler, &analysis_hint_del_size_help);
	rz_warn_if_fail(analysis_hint_del_size_cd);

	RzCmdDesc *analysis_hint_set_fail_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahf", rz_analysis_hint_set_fail_handler, &analysis_hint_set_fail_help);
	rz_warn_if_fail(analysis_hint_set_fail_cd);

	RzCmdDesc *analysis_hint_del_fail_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahf-", rz_analysis_hint_del_fail_handler, &analysis_hint_del_fail_help);
	rz_warn_if_fail(analysis_hint_del_fail_cd);

	RzCmdDesc *analysis_hint_set_stackframe_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahF", rz_analysis_hint_set_stackframe_handler, &analysis_hint_set_stackframe_help);
	rz_warn_if_fail(analysis_hint_set_stackframe_cd);

	RzCmdDesc *analysis_hint_del_stackframe_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahF-", rz_analysis_hint_del_stackframe_handler, &analysis_hint_del_stackframe_help);
	rz_warn_if_fail(analysis_hint_del_stackframe_cd);

	RzCmdDesc *analysis_hint_set_syntax_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahS", rz_analysis_hint_set_syntax_handler, &analysis_hint_set_syntax_help);
	rz_warn_if_fail(analysis_hint_set_syntax_cd);

	RzCmdDesc *analysis_hint_del_syntax_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahS-", rz_analysis_hint_del_syntax_handler, &analysis_hint_del_syntax_help);
	rz_warn_if_fail(analysis_hint_del_syntax_cd);

	RzCmdDesc *analysis_hint_set_ptr_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahp", rz_analysis_hint_set_ptr_handler, &analysis_hint_set_ptr_help);
	rz_warn_if_fail(analysis_hint_set_ptr_cd);

	RzCmdDesc *analysis_hint_del_ptr_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahp-", rz_analysis_hint_del_ptr_handler, &analysis_hint_del_ptr_help);
	rz_warn_if_fail(analysis_hint_del_ptr_cd);

	RzCmdDesc *analysis_hint_set_ret_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahr", rz_analysis_hint_set_ret_handler, &analysis_hint_set_ret_help);
	rz_warn_if_fail(analysis_hint_set_ret_cd);

	RzCmdDesc *analysis_hint_del_ret_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahr-", rz_analysis_hint_del_ret_handler, &analysis_hint_del_ret_help);
	rz_warn_if_fail(analysis_hint_del_ret_cd);

	RzCmdDesc *analysis_hint_set_val_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahv", rz_analysis_hint_set_val_handler, &analysis_hint_set_val_help);
	rz_warn_if_fail(analysis_hint_set_val_cd);

	RzCmdDesc *analysis_hint_del_val_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahv-", rz_analysis_hint_del_val_handler, &analysis_hint_del_val_help);
	rz_warn_if_fail(analysis_hint_del_val_cd);

	RzCmdDesc *analysis_hint_set_optype_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "aho", rz_analysis_hint_set_optype_handler, &analysis_hint_set_optype_help);
	rz_warn_if_fail(analysis_hint_set_optype_cd);

	RzCmdDesc *analysis_hint_del_optype_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "aho-", rz_analysis_hint_del_optype_handler, &analysis_hint_del_optype_help);
	rz_warn_if_fail(analysis_hint_del_optype_cd);

	RzCmdDesc *analysis_hint_set_immbase_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahi", rz_analysis_hint_set_immbase_handler, &analysis_hint_set_immbase_help);
	rz_warn_if_fail(analysis_hint_set_immbase_cd);

	RzCmdDesc *analysis_hint_del_immbase_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahi-", rz_analysis_hint_del_immbase_handler, &analysis_hint_del_immbase_help);
	rz_warn_if_fail(analysis_hint_del_immbase_cd);

	RzCmdDesc *analysis_hint_set_offset_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "aht", rz_analysis_hint_set_offset_handler, &analysis_hint_set_offset_help);
	rz_warn_if_fail(analysis_hint_set_offset_cd);

	RzCmdDesc *analysis_hint_del_offset_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "aht-", rz_analysis_hint_del_offset_handler, &analysis_hint_del_offset_help);
	rz_warn_if_fail(analysis_hint_del_offset_cd);

	RzCmdDesc *analysis_list_struct_offsets_cd = rz_cmd_desc_argv_new(core->rcmd, ah_cd, "ahts", rz_analysis_list_struct_offsets_handler, &analysis_list_struct_offsets_help);
	rz_warn_if_fail(analysis_list_struct_offsets_cd);

	RzCmdDesc *ac_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ac", rz_analysis_class_add_handler, &analysis_class_add_help, &ac_help);
	rz_warn_if_fail(ac_cd);
	RzCmdDesc *analysis_class_del_cd = rz_cmd_desc_argv_new(core->rcmd, ac_cd, "ac-", rz_analysis_class_del_handler, &analysis_class_del_help);
	rz_warn_if_fail(analysis_class_del_cd);

	RzCmdDesc *analysis_class_rename_cd = rz_cmd_desc_argv_new(core->rcmd, ac_cd, "acn", rz_analysis_class_rename_handler, &analysis_class_rename_help);
	rz_warn_if_fail(analysis_class_rename_cd);

	RzCmdDesc *analysis_class_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ac_cd, "acl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_analysis_class_list_handler, &analysis_class_list_help);
	rz_warn_if_fail(analysis_class_list_cd);

	RzCmdDesc *analysis_class_info_cd = rz_cmd_desc_argv_state_new(core->rcmd, ac_cd, "aci", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON, rz_analysis_class_info_handler, &analysis_class_info_help);
	rz_warn_if_fail(analysis_class_info_cd);

	RzCmdDesc *analysis_class_graph_cd = rz_cmd_desc_argv_new(core->rcmd, ac_cd, "acg", rz_analysis_class_graph_handler, &analysis_class_graph_help);
	rz_warn_if_fail(analysis_class_graph_cd);

	RzCmdDesc *acm_cd = rz_cmd_desc_group_new(core->rcmd, ac_cd, "acm", rz_analysis_class_method_add_handler, &analysis_class_method_add_help, &acm_help);
	rz_warn_if_fail(acm_cd);
	RzCmdDesc *analysis_class_method_del_cd = rz_cmd_desc_argv_new(core->rcmd, acm_cd, "acm-", rz_analysis_class_method_del_handler, &analysis_class_method_del_help);
	rz_warn_if_fail(analysis_class_method_del_cd);

	RzCmdDesc *analysis_class_method_rename_cd = rz_cmd_desc_argv_new(core->rcmd, acm_cd, "acmn", rz_analysis_class_method_rename_handler, &analysis_class_method_rename_help);
	rz_warn_if_fail(analysis_class_method_rename_cd);

	RzCmdDesc *acb_cd = rz_cmd_desc_group_new(core->rcmd, ac_cd, "acb", rz_analysis_class_base_add_handler, &analysis_class_base_add_help, &acb_help);
	rz_warn_if_fail(acb_cd);
	RzCmdDesc *analysis_class_base_del_cd = rz_cmd_desc_argv_new(core->rcmd, acb_cd, "acb-", rz_analysis_class_base_del_handler, &analysis_class_base_del_help);
	rz_warn_if_fail(analysis_class_base_del_cd);

	RzCmdDesc *analysis_class_base_list_cd = rz_cmd_desc_argv_new(core->rcmd, acb_cd, "acbl", rz_analysis_class_base_list_handler, &analysis_class_base_list_help);
	rz_warn_if_fail(analysis_class_base_list_cd);

	RzCmdDesc *acv_cd = rz_cmd_desc_group_new(core->rcmd, ac_cd, "acv", rz_analysis_class_vtable_add_handler, &analysis_class_vtable_add_help, &acv_help);
	rz_warn_if_fail(acv_cd);
	RzCmdDesc *analysis_class_vtable_del_cd = rz_cmd_desc_argv_new(core->rcmd, acv_cd, "acv-", rz_analysis_class_vtable_del_handler, &analysis_class_vtable_del_help);
	rz_warn_if_fail(analysis_class_vtable_del_cd);

	RzCmdDesc *analysis_class_vtable_list_cd = rz_cmd_desc_argv_new(core->rcmd, acv_cd, "acvl", rz_analysis_class_vtable_list_handler, &analysis_class_vtable_list_help);
	rz_warn_if_fail(analysis_class_vtable_list_cd);

	RzCmdDesc *analysis_class_vtable_lookup_cd = rz_cmd_desc_argv_new(core->rcmd, acv_cd, "acvf", rz_analysis_class_vtable_lookup_handler, &analysis_class_vtable_lookup_help);
	rz_warn_if_fail(analysis_class_vtable_lookup_cd);

	RzCmdDesc *analyze_bytes_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_analysis_cd, "a8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analyze_bytes_handler, &analyze_bytes_help);
	rz_warn_if_fail(analyze_bytes_cd);

	RzCmdDesc *aO_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_analysis_cd, "aO", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analyze_n_bytes_handler, &analyze_n_bytes_help, &aO_help);
	rz_warn_if_fail(aO_cd);
	RzCmdDesc *analyze_n_bytes_esil_cd = rz_cmd_desc_argv_new(core->rcmd, aO_cd, "aOe", rz_analyze_n_bytes_esil_handler, &analyze_n_bytes_esil_help);
	rz_warn_if_fail(analyze_n_bytes_esil_cd);

	RzCmdDesc *analyze_n_bytes_desc_cd = rz_cmd_desc_argv_new(core->rcmd, aO_cd, "aOd", rz_analyze_n_bytes_desc_handler, &analyze_n_bytes_desc_help);
	rz_warn_if_fail(analyze_n_bytes_desc_cd);

	RzCmdDesc *analyze_n_bytes_size_cd = rz_cmd_desc_argv_new(core->rcmd, aO_cd, "aOs", rz_analyze_n_bytes_size_handler, &analyze_n_bytes_size_help);
	rz_warn_if_fail(analyze_n_bytes_size_cd);

	RzCmdDesc *ao_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_analysis_cd, "ao", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analyze_n_ins_handler, &analyze_n_ins_help, &ao_help);
	rz_warn_if_fail(ao_cd);
	RzCmdDesc *analyze_n_ins_size_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aos", rz_analyze_n_ins_size_handler, &analyze_n_ins_size_help);
	rz_warn_if_fail(analyze_n_ins_size_cd);

	RzCmdDesc *analyze_n_ins_esil_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aoe", rz_analyze_n_ins_esil_handler, &analyze_n_ins_esil_help);
	rz_warn_if_fail(analyze_n_ins_esil_cd);

	RzCmdDesc *aoi_cd = rz_cmd_desc_group_new(core->rcmd, ao_cd, "aoi", rz_analyze_n_ins_il_handler, &analyze_n_ins_il_help, &aoi_help);
	rz_warn_if_fail(aoi_cd);
	RzCmdDesc *analyze_n_ins_il_pretty_cd = rz_cmd_desc_argv_new(core->rcmd, aoi_cd, "aoip", rz_analyze_n_ins_il_pretty_handler, &analyze_n_ins_il_pretty_help);
	rz_warn_if_fail(analyze_n_ins_il_pretty_cd);

	RzCmdDesc *analyze_opcode_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aod", rz_analyze_opcode_handler, &analyze_opcode_help);
	rz_warn_if_fail(analyze_opcode_cd);

	RzCmdDesc *display_opcode_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aoda", rz_display_opcode_handler, &display_opcode_help);
	rz_warn_if_fail(display_opcode_cd);

	RzCmdDesc *analyze_cycles_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aoc", rz_analyze_cycles_handler, &analyze_cycles_help);
	rz_warn_if_fail(analyze_cycles_cd);

	RzCmdDesc *convert_mne_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aom", rz_convert_mne_handler, &convert_mne_help);
	rz_warn_if_fail(convert_mne_cd);

	RzCmdDesc *list_mne_cd = rz_cmd_desc_argv_new(core->rcmd, ao_cd, "aoma", rz_list_mne_handler, &list_mne_help);
	rz_warn_if_fail(list_mne_cd);

	RzCmdDesc *analyse_name_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_analysis_cd, "an", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analyse_name_handler, &analyse_name_help);
	rz_warn_if_fail(analyse_name_cd);

	RzCmdDesc *ab_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ab", NULL, NULL, &ab_help);
	rz_warn_if_fail(ab_cd);
	RzCmdDesc *analysis_basic_block_info_cd = rz_cmd_desc_argv_state_new(core->rcmd, ab_cd, "abi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_analysis_basic_block_info_handler, &analysis_basic_block_info_help);
	rz_warn_if_fail(analysis_basic_block_info_cd);

	RzCmdDesc *analysis_basic_block_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ab_cd, "abl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET, rz_analysis_basic_block_list_handler, &analysis_basic_block_list_help);
	rz_warn_if_fail(analysis_basic_block_list_cd);

	RzCmdDesc *analysis_basic_block_find_paths_cd = rz_cmd_desc_argv_state_new(core->rcmd, ab_cd, "abt", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_basic_block_find_paths_handler, &analysis_basic_block_find_paths_help);
	rz_warn_if_fail(analysis_basic_block_find_paths_cd);

	RzCmdDesc *as_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "as", rz_analysis_syscall_show_handler, &analysis_syscall_show_help, &as_help);
	rz_warn_if_fail(as_cd);
	RzCmdDesc *analysis_syscall_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, as_cd, "asl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_syscall_print_handler, &analysis_syscall_print_help);
	rz_warn_if_fail(analysis_syscall_print_cd);

	RzCmdDesc *analysis_syscall_dump_assembly_cd = rz_cmd_desc_argv_new(core->rcmd, as_cd, "asca", rz_analysis_syscall_dump_assembly_handler, &analysis_syscall_dump_assembly_help);
	rz_warn_if_fail(analysis_syscall_dump_assembly_cd);

	RzCmdDesc *analysis_syscall_dump_c_cd = rz_cmd_desc_argv_new(core->rcmd, as_cd, "asc", rz_analysis_syscall_dump_c_handler, &analysis_syscall_dump_c_help);
	rz_warn_if_fail(analysis_syscall_dump_c_cd);

	RzCmdDesc *analysis_syscall_name_cd = rz_cmd_desc_argv_new(core->rcmd, as_cd, "asn", rz_analysis_syscall_name_handler, &analysis_syscall_name_help);
	rz_warn_if_fail(analysis_syscall_name_cd);

	RzCmdDesc *analysis_syscall_number_cd = rz_cmd_desc_argv_new(core->rcmd, as_cd, "asr", rz_analysis_syscall_number_handler, &analysis_syscall_number_help);
	rz_warn_if_fail(analysis_syscall_number_cd);

	RzCmdDesc *aL_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_analysis_cd, "aL", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_list_plugins_handler, &list_plugins_help, &aL_help);
	rz_warn_if_fail(aL_cd);
	RzCmdDesc *list_cpu_details_cd = rz_cmd_desc_argv_new(core->rcmd, aL_cd, "aLc", rz_list_cpu_details_handler, &list_cpu_details_help);
	rz_warn_if_fail(list_cpu_details_cd);

	RzCmdDesc *ae_cd = rz_cmd_desc_group_new(core->rcmd, cmd_analysis_cd, "ae", rz_analyze_esil_eval_expr_handler, &analyze_esil_eval_expr_help, &ae_help);
	rz_warn_if_fail(ae_cd);
	RzCmdDesc *analyze_esil_expr_help_cd = rz_cmd_desc_argv_new(core->rcmd, ae_cd, "aeH", rz_analyze_esil_expr_help_handler, &analyze_esil_expr_help_help);
	rz_warn_if_fail(analyze_esil_expr_help_cd);

	RzCmdDesc *analyze_esil_emulate_block_cd = rz_cmd_desc_argv_new(core->rcmd, ae_cd, "aeb", rz_analyze_esil_emulate_block_handler, &analyze_esil_emulate_block_help);
	rz_warn_if_fail(analyze_esil_emulate_block_cd);

	RzCmdDesc *analyze_esil_set_pc_cd = rz_cmd_desc_argv_new(core->rcmd, ae_cd, "aepc", rz_analyze_esil_set_pc_handler, &analyze_esil_set_pc_help);
	rz_warn_if_fail(analyze_esil_set_pc_cd);

	RzCmdDesc *aek_cd = rz_cmd_desc_group_new(core->rcmd, ae_cd, "aek", rz_analyze_esil_sdb_query_handler, &analyze_esil_sdb_query_help, &aek_help);
	rz_warn_if_fail(aek_cd);
	RzCmdDesc *analyze_esil_sdb_reset_cd = rz_cmd_desc_argv_new(core->rcmd, aek_cd, "aek-", rz_analyze_esil_sdb_reset_handler, &analyze_esil_sdb_reset_help);
	rz_warn_if_fail(analyze_esil_sdb_reset_cd);

	RzCmdDesc *analyze_esil_eval_opcode_expr_cd = rz_cmd_desc_argv_new(core->rcmd, ae_cd, "aex", rz_analyze_esil_eval_opcode_expr_handler, &analyze_esil_eval_opcode_expr_help);
	rz_warn_if_fail(analyze_esil_eval_opcode_expr_cd);

	RzCmdDesc *aef_cd = rz_cmd_desc_group_new(core->rcmd, ae_cd, "aef", rz_analyze_esil_emu_fcn_handler, &analyze_esil_emu_fcn_help, &aef_help);
	rz_warn_if_fail(aef_cd);
	RzCmdDesc *analyze_esil_emu_fcn_find_args_cd = rz_cmd_desc_argv_new(core->rcmd, aef_cd, "aefa", rz_analyze_esil_emu_fcn_find_args_handler, &analyze_esil_emu_fcn_find_args_help);
	rz_warn_if_fail(analyze_esil_emu_fcn_find_args_cd);

	RzCmdDesc *ael_cd = rz_cmd_desc_group_new(core->rcmd, ae_cd, "ael", NULL, NULL, &ael_help);
	rz_warn_if_fail(ael_cd);
	RzCmdDesc *analyze_esil_int_list_load_cd = rz_cmd_desc_argv_new(core->rcmd, ael_cd, "aeli", rz_analyze_esil_int_list_load_handler, &analyze_esil_int_list_load_help);
	rz_warn_if_fail(analyze_esil_int_list_load_cd);

	RzCmdDesc *analyze_esil_int_remove_cd = rz_cmd_desc_argv_new(core->rcmd, ael_cd, "aelir", rz_analyze_esil_int_remove_handler, &analyze_esil_int_remove_help);
	rz_warn_if_fail(analyze_esil_int_remove_cd);

	RzCmdDesc *aea_cd = rz_cmd_desc_group_modes_new(core->rcmd, ae_cd, "aea", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analyze_esil_insn_access_handler, &analyze_esil_insn_access_help, &aea_help);
	rz_warn_if_fail(aea_cd);

	RzCmdDesc *b_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "b", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_block_handler, &block_help, &b_help);
	rz_warn_if_fail(b_cd);
	RzCmdDesc *block_decrease_cd = rz_cmd_desc_argv_new(core->rcmd, b_cd, "b-", rz_block_decrease_handler, &block_decrease_help);
	rz_warn_if_fail(block_decrease_cd);

	RzCmdDesc *block_increase_cd = rz_cmd_desc_argv_new(core->rcmd, b_cd, "b+", rz_block_increase_handler, &block_increase_help);
	rz_warn_if_fail(block_increase_cd);

	RzCmdDesc *block_flag_cd = rz_cmd_desc_argv_new(core->rcmd, b_cd, "bf", rz_block_flag_handler, &block_flag_help);
	rz_warn_if_fail(block_flag_cd);

	RzCmdDesc *block_max_cd = rz_cmd_desc_argv_new(core->rcmd, b_cd, "bm", rz_block_max_handler, &block_max_help);
	rz_warn_if_fail(block_max_cd);

	RzCmdDesc *basefind_compute_cd = rz_cmd_desc_argv_state_new(core->rcmd, root_cd, "B", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_basefind_compute_handler, &basefind_compute_help);
	rz_warn_if_fail(basefind_compute_cd);
	rz_cmd_desc_set_default_mode(basefind_compute_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *c_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "c", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_cmp_string_handler, &cmd_cmp_string_help, &c_help);
	rz_warn_if_fail(c_cd);
	RzCmdDesc *cmd_cmp_bits_cd = rz_cmd_desc_argv_new(core->rcmd, c_cd, "c1", rz_cmd_cmp_bits_handler, &cmd_cmp_bits_help);
	rz_warn_if_fail(cmd_cmp_bits_cd);

	RzCmdDesc *cmd_cmp_addr_cd = rz_cmd_desc_argv_state_new(core->rcmd, c_cd, "ca", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_cmp_addr_handler, &cmd_cmp_addr_help);
	rz_warn_if_fail(cmd_cmp_addr_cd);

	RzCmdDesc *cmd_cmp_bytes_cd = rz_cmd_desc_argv_state_new(core->rcmd, c_cd, "cb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_cmp_bytes_handler, &cmd_cmp_bytes_help);
	rz_warn_if_fail(cmd_cmp_bytes_cd);

	RzCmdDesc *cmd_cmp_hex_block_cd = rz_cmd_desc_argv_new(core->rcmd, c_cd, "cc", rz_cmd_cmp_hex_block_handler, &cmd_cmp_hex_block_help);
	rz_warn_if_fail(cmd_cmp_hex_block_cd);

	RzCmdDesc *cmd_cmp_hex_diff_lines_cd = rz_cmd_desc_argv_new(core->rcmd, c_cd, "ccc", rz_cmd_cmp_hex_diff_lines_handler, &cmd_cmp_hex_diff_lines_help);
	rz_warn_if_fail(cmd_cmp_hex_diff_lines_cd);

	RzCmdDesc *cmd_cmp_disasm_cd = rz_cmd_desc_argv_new(core->rcmd, c_cd, "ccd", rz_cmd_cmp_disasm_handler, &cmd_cmp_disasm_help);
	rz_warn_if_fail(cmd_cmp_disasm_cd);

	RzCmdDesc *cmd_cmp_file_cd = rz_cmd_desc_argv_state_new(core->rcmd, c_cd, "cf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_cmp_file_handler, &cmd_cmp_file_help);
	rz_warn_if_fail(cmd_cmp_file_cd);

	RzCmdDesc *cu_cd = rz_cmd_desc_group_new(core->rcmd, c_cd, "cu", rz_cmd_cmp_unified_handler, &cmd_cmp_unified_help, &cu_help);
	rz_warn_if_fail(cu_cd);
	RzCmdDesc *cmd_cmp_unified1_cd = rz_cmd_desc_argv_new(core->rcmd, cu_cd, "cu1", rz_cmd_cmp_unified1_handler, &cmd_cmp_unified1_help);
	rz_warn_if_fail(cmd_cmp_unified1_cd);

	RzCmdDesc *cmd_cmp_unified2_cd = rz_cmd_desc_argv_new(core->rcmd, cu_cd, "cu2", rz_cmd_cmp_unified2_handler, &cmd_cmp_unified2_help);
	rz_warn_if_fail(cmd_cmp_unified2_cd);

	RzCmdDesc *cmd_cmp_unified4_cd = rz_cmd_desc_argv_new(core->rcmd, cu_cd, "cu4", rz_cmd_cmp_unified4_handler, &cmd_cmp_unified4_help);
	rz_warn_if_fail(cmd_cmp_unified4_cd);

	RzCmdDesc *cmd_cmp_unified8_cd = rz_cmd_desc_argv_new(core->rcmd, cu_cd, "cu8", rz_cmd_cmp_unified8_handler, &cmd_cmp_unified8_help);
	rz_warn_if_fail(cmd_cmp_unified8_cd);

	RzCmdDesc *cmd_cmp_unified_disasm_cd = rz_cmd_desc_argv_new(core->rcmd, cu_cd, "cud", rz_cmd_cmp_unified_disasm_handler, &cmd_cmp_unified_disasm_help);
	rz_warn_if_fail(cmd_cmp_unified_disasm_cd);

	RzCmdDesc *cw_cd = rz_cmd_desc_group_new(core->rcmd, c_cd, "cw", rz_cmd_cmp_add_memory_watcher_handler, &cmd_cmp_add_memory_watcher_help, &cw_help);
	rz_warn_if_fail(cw_cd);
	RzCmdDesc *cmd_cmp_list_compare_watchers_cd = rz_cmd_desc_argv_modes_new(core->rcmd, cw_cd, "cwl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_cmp_list_compare_watchers_handler, &cmd_cmp_list_compare_watchers_help);
	rz_warn_if_fail(cmd_cmp_list_compare_watchers_cd);

	RzCmdDesc *cmd_cmp_reset_watcher_cd = rz_cmd_desc_argv_new(core->rcmd, cw_cd, "cwr", rz_cmd_cmp_reset_watcher_handler, &cmd_cmp_reset_watcher_help);
	rz_warn_if_fail(cmd_cmp_reset_watcher_cd);

	RzCmdDesc *cmd_cmp_update_watcher_cd = rz_cmd_desc_argv_new(core->rcmd, cw_cd, "cwu", rz_cmd_cmp_update_watcher_handler, &cmd_cmp_update_watcher_help);
	rz_warn_if_fail(cmd_cmp_update_watcher_cd);

	RzCmdDesc *cmd_cmp_remove_watcher_cd = rz_cmd_desc_argv_new(core->rcmd, cw_cd, "cwx", rz_cmd_cmp_remove_watcher_handler, &cmd_cmp_remove_watcher_help);
	rz_warn_if_fail(cmd_cmp_remove_watcher_cd);

	RzCmdDesc *cmd_cmp_hexpair_string_cd = rz_cmd_desc_argv_state_new(core->rcmd, c_cd, "cx", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_cmp_hexpair_string_handler, &cmd_cmp_hexpair_string_help);
	rz_warn_if_fail(cmd_cmp_hexpair_string_cd);

	RzCmdDesc *cmd_cmp_hex_block_hexdiff_cd = rz_cmd_desc_argv_state_new(core->rcmd, c_cd, "cX", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_cmp_hex_block_hexdiff_handler, &cmd_cmp_hex_block_hexdiff_help);
	rz_warn_if_fail(cmd_cmp_hex_block_hexdiff_cd);

	RzCmdDesc *C_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "C", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_meta_list_handler, &meta_list_help, &C_help);
	rz_warn_if_fail(C_cd);
	RzCmdDesc *meta_list_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, C_cd, "C.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_meta_list_at_handler, &meta_list_at_help);
	rz_warn_if_fail(meta_list_at_cd);

	RzCmdDesc *meta_remove_cd = rz_cmd_desc_argv_new(core->rcmd, C_cd, "C-", rz_meta_remove_handler, &meta_remove_help);
	rz_warn_if_fail(meta_remove_cd);

	RzCmdDesc *meta_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, C_cd, "C-*", rz_meta_remove_all_handler, &meta_remove_all_help);
	rz_warn_if_fail(meta_remove_all_cd);

	RzCmdDesc *CC_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "CC", rz_comment_handler, &comment_help, &CC_help);
	rz_warn_if_fail(CC_cd);
	RzCmdDesc *comment_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, CC_cd, "CCl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_comment_list_handler, &comment_list_help);
	rz_warn_if_fail(comment_list_cd);

	RzCmdDesc *comment_at_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CC.", rz_comment_at_handler, &comment_at_help);
	rz_warn_if_fail(comment_at_cd);

	RzCmdDesc *comment_append_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CC+", rz_comment_append_handler, &comment_append_help);
	rz_warn_if_fail(comment_append_cd);

	RzCmdDesc *comment_remove_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CC-", rz_comment_remove_handler, &comment_remove_help);
	rz_warn_if_fail(comment_remove_cd);

	RzCmdDesc *comment_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CC-*", rz_comment_remove_all_handler, &comment_remove_all_help);
	rz_warn_if_fail(comment_remove_all_cd);

	RzCmdDesc *comment_filelink_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CCF", rz_comment_filelink_handler, &comment_filelink_help);
	rz_warn_if_fail(comment_filelink_cd);

	RzCmdDesc *comment_editor_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CCe", rz_comment_editor_handler, &comment_editor_help);
	rz_warn_if_fail(comment_editor_cd);

	RzCmdDesc *CCf_cd = rz_cmd_desc_group_state_new(core->rcmd, CC_cd, "CCf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_comment_function_list_handler, &comment_function_list_help, &CCf_help);
	rz_warn_if_fail(CCf_cd);
	RzCmdDesc *comment_function_remove_cd = rz_cmd_desc_argv_new(core->rcmd, CCf_cd, "CCf-", rz_comment_function_remove_handler, &comment_function_remove_help);
	rz_warn_if_fail(comment_function_remove_cd);

	RzCmdDesc *comment_function_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, CCf_cd, "CCf-*", rz_comment_function_remove_all_handler, &comment_function_remove_all_help);
	rz_warn_if_fail(comment_function_remove_all_cd);

	RzCmdDesc *comment_unique_cd = rz_cmd_desc_argv_new(core->rcmd, CC_cd, "CCu", rz_comment_unique_handler, &comment_unique_help);
	rz_warn_if_fail(comment_unique_cd);

	RzCmdDesc *CS_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "CS", rz_meta_space_handler, &meta_space_help, &CS_help);
	rz_warn_if_fail(CS_cd);
	RzCmdDesc *meta_space_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, CS_cd, "CSl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_meta_space_list_handler, &meta_space_list_help);
	rz_warn_if_fail(meta_space_list_cd);

	RzCmdDesc *meta_space_remove_cd = rz_cmd_desc_argv_new(core->rcmd, CS_cd, "CS-", rz_meta_space_remove_handler, &meta_space_remove_help);
	rz_warn_if_fail(meta_space_remove_cd);

	RzCmdDesc *meta_space_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, CS_cd, "CS-*", rz_meta_space_remove_all_handler, &meta_space_remove_all_help);
	rz_warn_if_fail(meta_space_remove_all_cd);

	RzCmdDesc *meta_space_rename_cd = rz_cmd_desc_argv_new(core->rcmd, CS_cd, "CSr", rz_meta_space_rename_handler, &meta_space_rename_help);
	rz_warn_if_fail(meta_space_rename_cd);

	RzCmdDesc *Cf_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Cf", rz_meta_format_handler, &meta_format_help, &Cf_help);
	rz_warn_if_fail(Cf_cd);
	RzCmdDesc *meta_format_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cf_cd, "Cfl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_format_list_handler, &meta_format_list_help);
	rz_warn_if_fail(meta_format_list_cd);

	RzCmdDesc *meta_format_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Cf_cd, "Cf-", rz_meta_format_remove_handler, &meta_format_remove_help);
	rz_warn_if_fail(meta_format_remove_cd);

	RzCmdDesc *meta_format_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, Cf_cd, "Cf-*", rz_meta_format_remove_all_handler, &meta_format_remove_all_help);
	rz_warn_if_fail(meta_format_remove_all_cd);

	RzCmdDesc *Cd_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Cd", rz_meta_data_handler, &meta_data_help, &Cd_help);
	rz_warn_if_fail(Cd_cd);
	RzCmdDesc *meta_data_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cd_cd, "Cdl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_data_list_handler, &meta_data_list_help);
	rz_warn_if_fail(meta_data_list_cd);

	RzCmdDesc *meta_data_at_cd = rz_cmd_desc_argv_new(core->rcmd, Cd_cd, "Cd.", rz_meta_data_at_handler, &meta_data_at_help);
	rz_warn_if_fail(meta_data_at_cd);

	RzCmdDesc *meta_data_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Cd_cd, "Cd-", rz_meta_data_remove_handler, &meta_data_remove_help);
	rz_warn_if_fail(meta_data_remove_cd);

	RzCmdDesc *meta_data_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, Cd_cd, "Cd-*", rz_meta_data_remove_all_handler, &meta_data_remove_all_help);
	rz_warn_if_fail(meta_data_remove_all_cd);

	RzCmdDesc *Ch_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Ch", rz_meta_hidden_handler, &meta_hidden_help, &Ch_help);
	rz_warn_if_fail(Ch_cd);
	RzCmdDesc *meta_hidden_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Ch_cd, "Chl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_hidden_list_handler, &meta_hidden_list_help);
	rz_warn_if_fail(meta_hidden_list_cd);

	RzCmdDesc *meta_hidden_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Ch_cd, "Ch-", rz_meta_hidden_remove_handler, &meta_hidden_remove_help);
	rz_warn_if_fail(meta_hidden_remove_cd);

	RzCmdDesc *meta_hidden_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, Ch_cd, "Ch-*", rz_meta_hidden_remove_all_handler, &meta_hidden_remove_all_help);
	rz_warn_if_fail(meta_hidden_remove_all_cd);

	RzCmdDesc *Cm_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Cm", rz_meta_magic_handler, &meta_magic_help, &Cm_help);
	rz_warn_if_fail(Cm_cd);
	RzCmdDesc *meta_magic_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cm_cd, "Cml", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_magic_list_handler, &meta_magic_list_help);
	rz_warn_if_fail(meta_magic_list_cd);

	RzCmdDesc *meta_magic_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Cm_cd, "Cm-", rz_meta_magic_remove_handler, &meta_magic_remove_help);
	rz_warn_if_fail(meta_magic_remove_cd);

	RzCmdDesc *meta_magic_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, Cm_cd, "Cm-*", rz_meta_magic_remove_all_handler, &meta_magic_remove_all_help);
	rz_warn_if_fail(meta_magic_remove_all_cd);

	RzCmdDesc *Cs_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Cs", rz_meta_string_handler, &meta_string_help, &Cs_help);
	rz_warn_if_fail(Cs_cd);
	RzCmdDesc *meta_string_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cs_cd, "Csl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_meta_string_list_handler, &meta_string_list_help);
	rz_warn_if_fail(meta_string_list_cd);

	RzCmdDesc *meta_string_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cs_cd, "Cs.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_QUIET, rz_meta_string_at_handler, &meta_string_at_help);
	rz_warn_if_fail(meta_string_at_cd);

	RzCmdDesc *meta_string_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "Cs-", rz_meta_string_remove_handler, &meta_string_remove_help);
	rz_warn_if_fail(meta_string_remove_cd);

	RzCmdDesc *meta_string_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "Cs-*", rz_meta_string_remove_all_handler, &meta_string_remove_all_help);
	rz_warn_if_fail(meta_string_remove_all_cd);

	RzCmdDesc *meta_string_pascal_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "Csp", rz_meta_string_pascal_handler, &meta_string_pascal_help);
	rz_warn_if_fail(meta_string_pascal_cd);

	RzCmdDesc *meta_string_utf8_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "Cs8", rz_meta_string_utf8_handler, &meta_string_utf8_help);
	rz_warn_if_fail(meta_string_utf8_cd);

	RzCmdDesc *meta_string_8bit_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "Csb", rz_meta_string_8bit_handler, &meta_string_8bit_help);
	rz_warn_if_fail(meta_string_8bit_cd);

	RzCmdDesc *meta_string_wide16_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "Csw", rz_meta_string_wide16_handler, &meta_string_wide16_help);
	rz_warn_if_fail(meta_string_wide16_cd);

	RzCmdDesc *meta_string_wide32_cd = rz_cmd_desc_argv_new(core->rcmd, Cs_cd, "CsW", rz_meta_string_wide32_handler, &meta_string_wide32_help);
	rz_warn_if_fail(meta_string_wide32_cd);

	RzCmdDesc *Ct_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Ct", rz_meta_type_handler, &meta_type_help, &Ct_help);
	rz_warn_if_fail(Ct_cd);
	RzCmdDesc *meta_type_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Ct_cd, "Ctl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_type_list_handler, &meta_type_list_help);
	rz_warn_if_fail(meta_type_list_cd);

	RzCmdDesc *meta_type_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Ct_cd, "Ct-", rz_meta_type_remove_handler, &meta_type_remove_help);
	rz_warn_if_fail(meta_type_remove_cd);

	RzCmdDesc *meta_type_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, Ct_cd, "Ct-*", rz_meta_type_remove_all_handler, &meta_type_remove_all_help);
	rz_warn_if_fail(meta_type_remove_all_cd);

	RzCmdDesc *meta_type_current_cd = rz_cmd_desc_argv_new(core->rcmd, Ct_cd, "Ct.", rz_meta_type_current_handler, &meta_type_current_help);
	rz_warn_if_fail(meta_type_current_cd);

	RzCmdDesc *Cv_cd = rz_cmd_desc_group_new(core->rcmd, C_cd, "Cv", rz_meta_var_comment_append_handler, &meta_var_comment_append_help, &Cv_help);
	rz_warn_if_fail(Cv_cd);
	RzCmdDesc *meta_var_comment_remove_cd = rz_cmd_desc_argv_new(core->rcmd, Cv_cd, "Cv-", rz_meta_var_comment_remove_handler, &meta_var_comment_remove_help);
	rz_warn_if_fail(meta_var_comment_remove_cd);

	RzCmdDesc *meta_var_comment_editor_cd = rz_cmd_desc_argv_new(core->rcmd, Cv_cd, "Cve", rz_meta_var_comment_editor_handler, &meta_var_comment_editor_help);
	rz_warn_if_fail(meta_var_comment_editor_cd);

	RzCmdDesc *meta_var_comment_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cv_cd, "Cvl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_var_comment_list_handler, &meta_var_comment_list_help);
	rz_warn_if_fail(meta_var_comment_list_cd);

	RzCmdDesc *meta_var_reg_comment_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cv_cd, "Cvr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_var_reg_comment_list_handler, &meta_var_reg_comment_list_help);
	rz_warn_if_fail(meta_var_reg_comment_list_cd);

	RzCmdDesc *meta_var_stack_comment_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, Cv_cd, "Cvs", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_meta_var_stack_comment_list_handler, &meta_var_stack_comment_list_help);
	rz_warn_if_fail(meta_var_stack_comment_list_cd);

	RzCmdDesc *d_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "d", NULL, NULL, &d_help);
	rz_warn_if_fail(d_cd);
	RzCmdDesc *db_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "db", rz_cmd_debug_add_bp_handler, &cmd_debug_add_bp_help, &db_help);
	rz_warn_if_fail(db_cd);
	RzCmdDesc *cmd_debug_list_bp_cd = rz_cmd_desc_argv_state_new(core->rcmd, db_cd, "dbl", RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_debug_list_bp_handler, &cmd_debug_list_bp_help);
	rz_warn_if_fail(cmd_debug_list_bp_cd);
	rz_cmd_desc_set_default_mode(cmd_debug_list_bp_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_debug_add_hw_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbH", rz_cmd_debug_add_hw_bp_handler, &cmd_debug_add_hw_bp_help);
	rz_warn_if_fail(cmd_debug_add_hw_bp_cd);

	RzCmdDesc *cmd_debug_remove_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "db-", rz_cmd_debug_remove_bp_handler, &cmd_debug_remove_bp_help);
	rz_warn_if_fail(cmd_debug_remove_bp_cd);

	RzCmdDesc *cmd_debug_remove_all_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "db-*", rz_cmd_debug_remove_all_bp_handler, &cmd_debug_remove_all_bp_help);
	rz_warn_if_fail(cmd_debug_remove_all_bp_cd);

	RzCmdDesc *cmd_debug_show_cur_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "db.", rz_cmd_debug_show_cur_bp_handler, &cmd_debug_show_cur_bp_help);
	rz_warn_if_fail(cmd_debug_show_cur_bp_cd);

	RzCmdDesc *cmd_debug_command_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbc", rz_cmd_debug_command_bp_handler, &cmd_debug_command_bp_help);
	rz_warn_if_fail(cmd_debug_command_bp_cd);

	RzCmdDesc *cmd_debug_add_cond_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbC", rz_cmd_debug_add_cond_bp_handler, &cmd_debug_add_cond_bp_help);
	rz_warn_if_fail(cmd_debug_add_cond_bp_cd);

	RzCmdDesc *cmd_debug_disable_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbd", rz_cmd_debug_disable_bp_handler, &cmd_debug_disable_bp_help);
	rz_warn_if_fail(cmd_debug_disable_bp_cd);

	RzCmdDesc *cmd_debug_enable_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbe", rz_cmd_debug_enable_bp_handler, &cmd_debug_enable_bp_help);
	rz_warn_if_fail(cmd_debug_enable_bp_cd);

	RzCmdDesc *cmd_debug_toggle_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbs", rz_cmd_debug_toggle_bp_handler, &cmd_debug_toggle_bp_help);
	rz_warn_if_fail(cmd_debug_toggle_bp_cd);

	RzCmdDesc *cmd_debug_add_bp_noreturn_func_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbf", rz_cmd_debug_add_bp_noreturn_func_handler, &cmd_debug_add_bp_noreturn_func_help);
	rz_warn_if_fail(cmd_debug_add_bp_noreturn_func_cd);

	RzCmdDesc *cmd_debug_add_bp_module_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbm", rz_cmd_debug_add_bp_module_handler, &cmd_debug_add_bp_module_help);
	rz_warn_if_fail(cmd_debug_add_bp_module_cd);

	RzCmdDesc *cmd_debug_name_bp_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbn", rz_cmd_debug_name_bp_handler, &cmd_debug_name_bp_help);
	rz_warn_if_fail(cmd_debug_name_bp_cd);

	RzCmdDesc *dbi_cd = rz_cmd_desc_group_new(core->rcmd, db_cd, "dbi", rz_cmd_debug_show_bp_index_handler, &cmd_debug_show_bp_index_help, &dbi_help);
	rz_warn_if_fail(dbi_cd);
	RzCmdDesc *cmd_debug_list_bp_indexes_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbil", rz_cmd_debug_list_bp_indexes_handler, &cmd_debug_list_bp_indexes_help);
	rz_warn_if_fail(cmd_debug_list_bp_indexes_cd);

	RzCmdDesc *cmd_debug_remove_bp_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbi-", rz_cmd_debug_remove_bp_index_handler, &cmd_debug_remove_bp_index_help);
	rz_warn_if_fail(cmd_debug_remove_bp_index_cd);

	RzCmdDesc *cmd_debug_set_expr_bp_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbix", rz_cmd_debug_set_expr_bp_index_handler, &cmd_debug_set_expr_bp_index_help);
	rz_warn_if_fail(cmd_debug_set_expr_bp_index_cd);

	RzCmdDesc *cmd_debug_run_command_bp_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbic", rz_cmd_debug_run_command_bp_index_handler, &cmd_debug_run_command_bp_index_help);
	rz_warn_if_fail(cmd_debug_run_command_bp_index_cd);

	RzCmdDesc *cmd_debug_enable_bp_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbie", rz_cmd_debug_enable_bp_index_handler, &cmd_debug_enable_bp_index_help);
	rz_warn_if_fail(cmd_debug_enable_bp_index_cd);

	RzCmdDesc *cmd_debug_disable_bp_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbid", rz_cmd_debug_disable_bp_index_handler, &cmd_debug_disable_bp_index_help);
	rz_warn_if_fail(cmd_debug_disable_bp_index_cd);

	RzCmdDesc *cmd_debug_toggle_bp_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbis", rz_cmd_debug_toggle_bp_index_handler, &cmd_debug_toggle_bp_index_help);
	rz_warn_if_fail(cmd_debug_toggle_bp_index_cd);

	RzCmdDesc *cmd_debug_enable_bp_trace_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbite", rz_cmd_debug_enable_bp_trace_index_handler, &cmd_debug_enable_bp_trace_index_help);
	rz_warn_if_fail(cmd_debug_enable_bp_trace_index_cd);

	RzCmdDesc *cmd_debug_disable_bp_trace_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbitd", rz_cmd_debug_disable_bp_trace_index_handler, &cmd_debug_disable_bp_trace_index_help);
	rz_warn_if_fail(cmd_debug_disable_bp_trace_index_cd);

	RzCmdDesc *cmd_debug_toggle_bp_trace_index_cd = rz_cmd_desc_argv_new(core->rcmd, dbi_cd, "dbits", rz_cmd_debug_toggle_bp_trace_index_handler, &cmd_debug_toggle_bp_trace_index_help);
	rz_warn_if_fail(cmd_debug_toggle_bp_trace_index_cd);

	RzCmdDesc *cmd_debug_bp_plugin_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbh", rz_cmd_debug_bp_plugin_handler, &cmd_debug_bp_plugin_help);
	rz_warn_if_fail(cmd_debug_bp_plugin_cd);

	RzCmdDesc *cmd_debug_remove_bp_plugin_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbh-", rz_cmd_debug_remove_bp_plugin_handler, &cmd_debug_remove_bp_plugin_help);
	rz_warn_if_fail(cmd_debug_remove_bp_plugin_cd);

	RzCmdDesc *dbt_cd = rz_cmd_desc_group_state_new(core->rcmd, db_cd, "dbt", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET, rz_cmd_debug_display_bt_handler, &cmd_debug_display_bt_help, &dbt_help);
	rz_warn_if_fail(dbt_cd);
	RzCmdDesc *cmd_debug_display_bt_oneline_cd = rz_cmd_desc_argv_new(core->rcmd, dbt_cd, "dbt=", rz_cmd_debug_display_bt_oneline_handler, &cmd_debug_display_bt_oneline_help);
	rz_warn_if_fail(cmd_debug_display_bt_oneline_cd);

	RzCmdDesc *cmd_debug_display_bt_local_vars_cd = rz_cmd_desc_argv_new(core->rcmd, dbt_cd, "dbtv", rz_cmd_debug_display_bt_local_vars_handler, &cmd_debug_display_bt_local_vars_help);
	rz_warn_if_fail(cmd_debug_display_bt_local_vars_cd);

	RzCmdDesc *cmd_debug_display_bt_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, dbt_cd, "dbta", rz_cmd_debug_display_bt_ascii_handler, &cmd_debug_display_bt_ascii_help);
	rz_warn_if_fail(cmd_debug_display_bt_ascii_cd);

	RzCmdDesc *cmd_debug_bt_enable_bp_trace_cd = rz_cmd_desc_argv_new(core->rcmd, dbt_cd, "dbte", rz_cmd_debug_bt_enable_bp_trace_handler, &cmd_debug_bt_enable_bp_trace_help);
	rz_warn_if_fail(cmd_debug_bt_enable_bp_trace_cd);

	RzCmdDesc *cmd_debug_bt_disable_bp_trace_cd = rz_cmd_desc_argv_new(core->rcmd, dbt_cd, "dbtd", rz_cmd_debug_bt_disable_bp_trace_handler, &cmd_debug_bt_disable_bp_trace_help);
	rz_warn_if_fail(cmd_debug_bt_disable_bp_trace_cd);

	RzCmdDesc *cmd_debug_bt_toggle_bp_trace_cd = rz_cmd_desc_argv_new(core->rcmd, dbt_cd, "dbts", rz_cmd_debug_bt_toggle_bp_trace_handler, &cmd_debug_bt_toggle_bp_trace_help);
	rz_warn_if_fail(cmd_debug_bt_toggle_bp_trace_cd);

	RzCmdDesc *cmd_debug_bp_set_expr_cur_offset_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbx", rz_cmd_debug_bp_set_expr_cur_offset_handler, &cmd_debug_bp_set_expr_cur_offset_help);
	rz_warn_if_fail(cmd_debug_bp_set_expr_cur_offset_cd);

	RzCmdDesc *cmd_debug_add_watchpoint_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbw", rz_cmd_debug_add_watchpoint_handler, &cmd_debug_add_watchpoint_help);
	rz_warn_if_fail(cmd_debug_add_watchpoint_cd);

	RzCmdDesc *cmd_debug_set_cond_bp_win_cd = rz_cmd_desc_argv_new(core->rcmd, db_cd, "dbW", rz_cmd_debug_set_cond_bp_win_handler, &cmd_debug_set_cond_bp_win_help);
	rz_warn_if_fail(cmd_debug_set_cond_bp_win_cd);

	RzCmdDesc *dc_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dc", rz_cmd_debug_continue_execution_handler, &cmd_debug_continue_execution_help, &dc_help);
	rz_warn_if_fail(dc_cd);
	RzCmdDesc *cmd_debug_continue_back_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcb", rz_cmd_debug_continue_back_handler, &cmd_debug_continue_back_help);
	rz_warn_if_fail(cmd_debug_continue_back_cd);

	RzCmdDesc *cmd_debug_continue_call_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcc", rz_cmd_debug_continue_call_handler, &cmd_debug_continue_call_help);
	rz_warn_if_fail(cmd_debug_continue_call_cd);

	RzCmdDesc *cmd_debug_continue_call_over_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcco", rz_cmd_debug_continue_call_over_handler, &cmd_debug_continue_call_over_help);
	rz_warn_if_fail(cmd_debug_continue_call_over_cd);

	RzCmdDesc *cmd_debug_continue_unknown_call_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dccu", rz_cmd_debug_continue_unknown_call_handler, &cmd_debug_continue_unknown_call_help);
	rz_warn_if_fail(cmd_debug_continue_unknown_call_cd);

	RzCmdDesc *cmd_debug_continue_exception_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dce", rz_cmd_debug_continue_exception_handler, &cmd_debug_continue_exception_help);
	rz_warn_if_fail(cmd_debug_continue_exception_cd);

	RzCmdDesc *cmd_debug_continue_fork_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcf", rz_cmd_debug_continue_fork_handler, &cmd_debug_continue_fork_help);
	rz_warn_if_fail(cmd_debug_continue_fork_cd);

	RzCmdDesc *cmd_debug_continue_send_signal_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dck", rz_cmd_debug_continue_send_signal_handler, &cmd_debug_continue_send_signal_help);
	rz_warn_if_fail(cmd_debug_continue_send_signal_cd);

	RzCmdDesc *cmd_debug_continue_mapped_io_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcp", rz_cmd_debug_continue_mapped_io_handler, &cmd_debug_continue_mapped_io_help);
	rz_warn_if_fail(cmd_debug_continue_mapped_io_cd);

	RzCmdDesc *cmd_debug_continue_ret_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcr", rz_cmd_debug_continue_ret_handler, &cmd_debug_continue_ret_help);
	rz_warn_if_fail(cmd_debug_continue_ret_cd);

	RzCmdDesc *cmd_debug_continue_syscall_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcs", rz_cmd_debug_continue_syscall_handler, &cmd_debug_continue_syscall_help);
	rz_warn_if_fail(cmd_debug_continue_syscall_cd);

	RzCmdDesc *cmd_debug_continue_traptrace_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dct", rz_cmd_debug_continue_traptrace_handler, &cmd_debug_continue_traptrace_help);
	rz_warn_if_fail(cmd_debug_continue_traptrace_cd);

	RzCmdDesc *cmd_debug_continue_until_cd = rz_cmd_desc_argv_new(core->rcmd, dc_cd, "dcu", rz_cmd_debug_continue_until_handler, &cmd_debug_continue_until_help);
	rz_warn_if_fail(cmd_debug_continue_until_cd);

	RzCmdDesc *dd_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dd", rz_cmd_debug_descriptor_open_handler, &cmd_debug_descriptor_open_help, &dd_help);
	rz_warn_if_fail(dd_cd);
	RzCmdDesc *cmd_debug_descriptor_close_cd = rz_cmd_desc_argv_new(core->rcmd, dd_cd, "dd-", rz_cmd_debug_descriptor_close_handler, &cmd_debug_descriptor_close_help);
	rz_warn_if_fail(cmd_debug_descriptor_close_cd);

	RzCmdDesc *cmd_debug_descriptor_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dd_cd, "ddl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_descriptor_list_handler, &cmd_debug_descriptor_list_help);
	rz_warn_if_fail(cmd_debug_descriptor_list_cd);

	RzCmdDesc *cmd_debug_descriptor_seek_cd = rz_cmd_desc_argv_new(core->rcmd, dd_cd, "dds", rz_cmd_debug_descriptor_seek_handler, &cmd_debug_descriptor_seek_help);
	rz_warn_if_fail(cmd_debug_descriptor_seek_cd);

	RzCmdDesc *cmd_debug_descriptor_dup_cd = rz_cmd_desc_argv_new(core->rcmd, dd_cd, "ddd", rz_cmd_debug_descriptor_dup_handler, &cmd_debug_descriptor_dup_help);
	rz_warn_if_fail(cmd_debug_descriptor_dup_cd);

	RzCmdDesc *cmd_debug_descriptor_read_cd = rz_cmd_desc_argv_new(core->rcmd, dd_cd, "ddr", rz_cmd_debug_descriptor_read_handler, &cmd_debug_descriptor_read_help);
	rz_warn_if_fail(cmd_debug_descriptor_read_cd);

	RzCmdDesc *cmd_debug_descriptor_write_cd = rz_cmd_desc_argv_new(core->rcmd, dd_cd, "ddw", rz_cmd_debug_descriptor_write_handler, &cmd_debug_descriptor_write_help);
	rz_warn_if_fail(cmd_debug_descriptor_write_cd);

	RzCmdDesc *de_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "de", rz_cmd_debug_esil_add_handler, &cmd_debug_esil_add_help, &de_help);
	rz_warn_if_fail(de_cd);
	RzCmdDesc *cmd_debug_esil_remove_cd = rz_cmd_desc_argv_new(core->rcmd, de_cd, "de-*", rz_cmd_debug_esil_remove_handler, &cmd_debug_esil_remove_help);
	rz_warn_if_fail(cmd_debug_esil_remove_cd);

	RzCmdDesc *cmd_debug_esil_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, de_cd, "del", RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_debug_esil_list_handler, &cmd_debug_esil_list_help);
	rz_warn_if_fail(cmd_debug_esil_list_cd);

	RzCmdDesc *cmd_debug_esil_continue_cd = rz_cmd_desc_argv_new(core->rcmd, de_cd, "dec", rz_cmd_debug_esil_continue_handler, &cmd_debug_esil_continue_help);
	rz_warn_if_fail(cmd_debug_esil_continue_cd);

	RzCmdDesc *cmd_debug_esil_step_cd = rz_cmd_desc_argv_new(core->rcmd, de_cd, "des", rz_cmd_debug_esil_step_handler, &cmd_debug_esil_step_help);
	rz_warn_if_fail(cmd_debug_esil_step_cd);

	RzCmdDesc *cmd_debug_esil_step_until_cd = rz_cmd_desc_argv_new(core->rcmd, de_cd, "desu", rz_cmd_debug_esil_step_until_handler, &cmd_debug_esil_step_until_help);
	rz_warn_if_fail(cmd_debug_esil_step_until_cd);

	RzCmdDesc *cmd_debug_core_dump_generate_cd = rz_cmd_desc_argv_new(core->rcmd, d_cd, "dg", rz_cmd_debug_core_dump_generate_handler, &cmd_debug_core_dump_generate_help);
	rz_warn_if_fail(cmd_debug_core_dump_generate_cd);

	RzCmdDesc *do_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "do", NULL, NULL, &do_help);
	rz_warn_if_fail(do_cd);
	RzCmdDesc *cmd_debug_process_profile_cd = rz_cmd_desc_argv_new(core->rcmd, do_cd, "dor", rz_cmd_debug_process_profile_handler, &cmd_debug_process_profile_help);
	rz_warn_if_fail(cmd_debug_process_profile_cd);

	RzCmdDesc *cmd_debug_process_profile_edit_cd = rz_cmd_desc_argv_new(core->rcmd, do_cd, "doe", rz_cmd_debug_process_profile_edit_handler, &cmd_debug_process_profile_edit_help);
	rz_warn_if_fail(cmd_debug_process_profile_edit_cd);

	RzCmdDesc *cmd_debug_process_close_cd = rz_cmd_desc_argv_new(core->rcmd, do_cd, "doc", rz_cmd_debug_process_close_handler, &cmd_debug_process_close_help);
	rz_warn_if_fail(cmd_debug_process_close_cd);

	RzCmdDesc *ds_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "ds", rz_cmd_debug_step_handler, &cmd_debug_step_help, &ds_help);
	rz_warn_if_fail(ds_cd);
	RzCmdDesc *cmd_debug_step_back_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dsb", rz_cmd_debug_step_back_handler, &cmd_debug_step_back_help);
	rz_warn_if_fail(cmd_debug_step_back_cd);

	RzCmdDesc *cmd_debug_step_frame_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dsf", rz_cmd_debug_step_frame_handler, &cmd_debug_step_frame_help);
	rz_warn_if_fail(cmd_debug_step_frame_cd);

	RzCmdDesc *cmd_debug_step_cond_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dsi", rz_cmd_debug_step_cond_handler, &cmd_debug_step_cond_help);
	rz_warn_if_fail(cmd_debug_step_cond_cd);

	RzCmdDesc *cmd_debug_step_line_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dsl", rz_cmd_debug_step_line_handler, &cmd_debug_step_line_help);
	rz_warn_if_fail(cmd_debug_step_line_cd);

	RzCmdDesc *cmd_debug_step_over_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dso", rz_cmd_debug_step_over_handler, &cmd_debug_step_over_help);
	rz_warn_if_fail(cmd_debug_step_over_cd);

	RzCmdDesc *cmd_debug_step_prog_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dsp", rz_cmd_debug_step_prog_handler, &cmd_debug_step_prog_help);
	rz_warn_if_fail(cmd_debug_step_prog_cd);

	RzCmdDesc *cmd_debug_step_skip_cd = rz_cmd_desc_argv_new(core->rcmd, ds_cd, "dss", rz_cmd_debug_step_skip_handler, &cmd_debug_step_skip_help);
	rz_warn_if_fail(cmd_debug_step_skip_cd);

	RzCmdDesc *dsu_cd = rz_cmd_desc_group_new(core->rcmd, ds_cd, "dsu", rz_cmd_debug_step_until_handler, &cmd_debug_step_until_help, &dsu_help);
	rz_warn_if_fail(dsu_cd);
	RzCmdDesc *cmd_debug_step_until_instr_cd = rz_cmd_desc_argv_new(core->rcmd, dsu_cd, "dsui", rz_cmd_debug_step_until_instr_handler, &cmd_debug_step_until_instr_help);
	rz_warn_if_fail(cmd_debug_step_until_instr_cd);

	RzCmdDesc *cmd_debug_step_until_instr_regex_cd = rz_cmd_desc_argv_new(core->rcmd, dsu_cd, "dsuir", rz_cmd_debug_step_until_instr_regex_handler, &cmd_debug_step_until_instr_regex_help);
	rz_warn_if_fail(cmd_debug_step_until_instr_regex_cd);

	RzCmdDesc *cmd_debug_step_until_optype_cd = rz_cmd_desc_argv_new(core->rcmd, dsu_cd, "dsuo", rz_cmd_debug_step_until_optype_handler, &cmd_debug_step_until_optype_help);
	rz_warn_if_fail(cmd_debug_step_until_optype_cd);

	RzCmdDesc *cmd_debug_step_until_esil_cd = rz_cmd_desc_argv_new(core->rcmd, dsu_cd, "dsue", rz_cmd_debug_step_until_esil_handler, &cmd_debug_step_until_esil_help);
	rz_warn_if_fail(cmd_debug_step_until_esil_cd);

	RzCmdDesc *cmd_debug_step_until_flag_cd = rz_cmd_desc_argv_new(core->rcmd, dsu_cd, "dsuf", rz_cmd_debug_step_until_flag_handler, &cmd_debug_step_until_flag_help);
	rz_warn_if_fail(cmd_debug_step_until_flag_cd);

	RzCmdDesc *dt_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dt", rz_cmd_debug_trace_handler, &cmd_debug_trace_help, &dt_help);
	rz_warn_if_fail(dt_cd);
	RzCmdDesc *cmd_debug_traces_cd = rz_cmd_desc_argv_state_new(core->rcmd, dt_cd, "dtl", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_debug_traces_handler, &cmd_debug_traces_help);
	rz_warn_if_fail(cmd_debug_traces_cd);

	RzCmdDesc *cmd_debug_traces_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, dt_cd, "dtl=", rz_cmd_debug_traces_ascii_handler, &cmd_debug_traces_ascii_help);
	rz_warn_if_fail(cmd_debug_traces_ascii_cd);

	RzCmdDesc *cmd_debug_trace_add_cd = rz_cmd_desc_argv_new(core->rcmd, dt_cd, "dt+", rz_cmd_debug_trace_add_handler, &cmd_debug_trace_add_help);
	rz_warn_if_fail(cmd_debug_trace_add_cd);

	RzCmdDesc *cmd_debug_trace_add_addrs_cd = rz_cmd_desc_argv_new(core->rcmd, dt_cd, "dt++", rz_cmd_debug_trace_add_addrs_handler, &cmd_debug_trace_add_addrs_help);
	rz_warn_if_fail(cmd_debug_trace_add_addrs_cd);

	RzCmdDesc *cmd_debug_traces_reset_cd = rz_cmd_desc_argv_new(core->rcmd, dt_cd, "dt-", rz_cmd_debug_traces_reset_handler, &cmd_debug_traces_reset_help);
	rz_warn_if_fail(cmd_debug_traces_reset_cd);

	RzCmdDesc *cmd_debug_trace_calls_cd = rz_cmd_desc_argv_new(core->rcmd, dt_cd, "dtc", rz_cmd_debug_trace_calls_handler, &cmd_debug_trace_calls_help);
	rz_warn_if_fail(cmd_debug_trace_calls_cd);

	RzCmdDesc *dte_cd = rz_cmd_desc_group_new(core->rcmd, dt_cd, "dte", rz_cmd_debug_trace_esil_handler, &cmd_debug_trace_esil_help, &dte_help);
	rz_warn_if_fail(dte_cd);
	RzCmdDesc *cmd_debug_trace_esils_cd = rz_cmd_desc_argv_new(core->rcmd, dte_cd, "dtel", rz_cmd_debug_trace_esils_handler, &cmd_debug_trace_esils_help);
	rz_warn_if_fail(cmd_debug_trace_esils_cd);

	RzCmdDesc *cmd_debug_traces_esil_delete_cd = rz_cmd_desc_argv_new(core->rcmd, dte_cd, "dte-*", rz_cmd_debug_traces_esil_delete_handler, &cmd_debug_traces_esil_delete_help);
	rz_warn_if_fail(cmd_debug_traces_esil_delete_cd);

	RzCmdDesc *cmd_debug_traces_esil_i_cd = rz_cmd_desc_argv_new(core->rcmd, dte_cd, "dtei", rz_cmd_debug_traces_esil_i_handler, &cmd_debug_traces_esil_i_help);
	rz_warn_if_fail(cmd_debug_traces_esil_i_cd);

	RzCmdDesc *dtg_cd = rz_cmd_desc_group_modes_new(core->rcmd, dt_cd, "dtg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_debug_trace_graph_handler, &cmd_debug_trace_graph_help, &dtg_help);
	rz_warn_if_fail(dtg_cd);
	RzCmdDesc *cmd_debug_trace_interactive_cd = rz_cmd_desc_argv_new(core->rcmd, dtg_cd, "dtgi", rz_cmd_debug_trace_interactive_handler, &cmd_debug_trace_interactive_help);
	rz_warn_if_fail(cmd_debug_trace_interactive_cd);

	RzCmdDesc *dts_cd = rz_cmd_desc_group_new(core->rcmd, dt_cd, "dts", NULL, NULL, &dts_help);
	rz_warn_if_fail(dts_cd);
	RzCmdDesc *cmd_debug_start_trace_session_cd = rz_cmd_desc_argv_new(core->rcmd, dts_cd, "dts+", rz_cmd_debug_start_trace_session_handler, &cmd_debug_start_trace_session_help);
	rz_warn_if_fail(cmd_debug_start_trace_session_cd);

	RzCmdDesc *cmd_debug_stop_trace_session_cd = rz_cmd_desc_argv_new(core->rcmd, dts_cd, "dts-", rz_cmd_debug_stop_trace_session_handler, &cmd_debug_stop_trace_session_help);
	rz_warn_if_fail(cmd_debug_stop_trace_session_cd);

	RzCmdDesc *cmd_debug_save_trace_session_cd = rz_cmd_desc_argv_new(core->rcmd, dts_cd, "dtst", rz_cmd_debug_save_trace_session_handler, &cmd_debug_save_trace_session_help);
	rz_warn_if_fail(cmd_debug_save_trace_session_cd);

	RzCmdDesc *cmd_debug_load_trace_session_cd = rz_cmd_desc_argv_new(core->rcmd, dts_cd, "dtsf", rz_cmd_debug_load_trace_session_handler, &cmd_debug_load_trace_session_help);
	rz_warn_if_fail(cmd_debug_load_trace_session_cd);

	RzCmdDesc *cmd_debug_list_trace_session_mmap_cd = rz_cmd_desc_argv_new(core->rcmd, dts_cd, "dtsm", rz_cmd_debug_list_trace_session_mmap_handler, &cmd_debug_list_trace_session_mmap_help);
	rz_warn_if_fail(cmd_debug_list_trace_session_mmap_cd);

	RzCmdDesc *cmd_debug_trace_tag_cd = rz_cmd_desc_argv_new(core->rcmd, dt_cd, "dtt", rz_cmd_debug_trace_tag_handler, &cmd_debug_trace_tag_help);
	rz_warn_if_fail(cmd_debug_trace_tag_cd);

	RzCmdDesc *debug_info_cd = rz_cmd_desc_argv_state_new(core->rcmd, d_cd, "di", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_debug_info_handler, &debug_info_help);
	rz_warn_if_fail(debug_info_cd);

	RzCmdDesc *dk_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dk", rz_cmd_debug_signal_handler, &cmd_debug_signal_help, &dk_help);
	rz_warn_if_fail(dk_cd);
	RzCmdDesc *cmd_debug_signal_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dk_cd, "dkl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_signal_list_handler, &cmd_debug_signal_list_help);
	rz_warn_if_fail(cmd_debug_signal_list_cd);

	RzCmdDesc *cmd_debug_signal_name_cd = rz_cmd_desc_argv_new(core->rcmd, dk_cd, "dkn", rz_cmd_debug_signal_name_handler, &cmd_debug_signal_name_help);
	rz_warn_if_fail(cmd_debug_signal_name_cd);

	RzCmdDesc *cmd_debug_signal_number_cd = rz_cmd_desc_argv_new(core->rcmd, dk_cd, "dkN", rz_cmd_debug_signal_number_handler, &cmd_debug_signal_number_help);
	rz_warn_if_fail(cmd_debug_signal_number_cd);

	RzCmdDesc *cmd_debug_signal_option_cd = rz_cmd_desc_argv_new(core->rcmd, dk_cd, "dko", rz_cmd_debug_signal_option_handler, &cmd_debug_signal_option_help);
	rz_warn_if_fail(cmd_debug_signal_option_cd);

	RzCmdDesc *dl_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dl", rz_cmd_debug_handler_set_handler, &cmd_debug_handler_set_help, &dl_help);
	rz_warn_if_fail(dl_cd);
	RzCmdDesc *cmd_debug_handler_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dl_cd, "dll", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_debug_handler_list_handler, &cmd_debug_handler_list_help);
	rz_warn_if_fail(cmd_debug_handler_list_cd);

	RzCmdDesc *dm_cd = rz_cmd_desc_group_state_new(core->rcmd, d_cd, "dm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_debug_list_maps_handler, &cmd_debug_list_maps_help, &dm_help);
	rz_warn_if_fail(dm_cd);
	RzCmdDesc *cmd_debug_allocate_maps_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dm+", rz_cmd_debug_allocate_maps_handler, &cmd_debug_allocate_maps_help);
	rz_warn_if_fail(cmd_debug_allocate_maps_cd);

	RzCmdDesc *cmd_debug_list_maps_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dm=", rz_cmd_debug_list_maps_ascii_handler, &cmd_debug_list_maps_ascii_help);
	rz_warn_if_fail(cmd_debug_list_maps_ascii_cd);

	RzCmdDesc *cmd_debug_map_current_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dm.", rz_cmd_debug_map_current_handler, &cmd_debug_map_current_help);
	rz_warn_if_fail(cmd_debug_map_current_cd);

	RzCmdDesc *dmm_cd = rz_cmd_desc_group_state_new(core->rcmd, dm_cd, "dmm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_cmd_debug_modules_handler, &cmd_debug_modules_help, &dmm_help);
	rz_warn_if_fail(dmm_cd);
	RzCmdDesc *cmd_debug_current_modules_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dmm_cd, "dmm.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_debug_current_modules_handler, &cmd_debug_current_modules_help);
	rz_warn_if_fail(cmd_debug_current_modules_cd);

	RzCmdDesc *cmd_debug_deallocate_map_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dm-", rz_cmd_debug_deallocate_map_handler, &cmd_debug_deallocate_map_help);
	rz_warn_if_fail(cmd_debug_deallocate_map_cd);

	RzCmdDesc *dmd_cd = rz_cmd_desc_group_new(core->rcmd, dm_cd, "dmd", rz_cmd_debug_dump_maps_handler, &cmd_debug_dump_maps_help, &dmd_help);
	rz_warn_if_fail(dmd_cd);
	RzCmdDesc *cmd_debug_dump_maps_all_cd = rz_cmd_desc_argv_new(core->rcmd, dmd_cd, "dmda", rz_cmd_debug_dump_maps_all_handler, &cmd_debug_dump_maps_all_help);
	rz_warn_if_fail(cmd_debug_dump_maps_all_cd);

	RzCmdDesc *cmd_debug_dump_maps_writable_cd = rz_cmd_desc_argv_new(core->rcmd, dmd_cd, "dmdw", rz_cmd_debug_dump_maps_writable_handler, &cmd_debug_dump_maps_writable_help);
	rz_warn_if_fail(cmd_debug_dump_maps_writable_cd);

	RzCmdDesc *dmh_cd = rz_cmd_desc_group_state_new(core->rcmd, dm_cd, "dmh", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_RIZIN, rz_cmd_heap_chunks_print_handler, &cmd_heap_chunks_print_help, &dmh_help);
	rz_warn_if_fail(dmh_cd);
	RzCmdDesc *cmd_arena_print_cd = rz_cmd_desc_argv_new(core->rcmd, dmh_cd, "dmha", rz_cmd_arena_print_handler, &cmd_arena_print_help);
	rz_warn_if_fail(cmd_arena_print_cd);

	RzCmdDesc *cmd_heap_bins_list_print_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dmh_cd, "dmhb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_GRAPH, rz_cmd_heap_bins_list_print_handler, &cmd_heap_bins_list_print_help);
	rz_warn_if_fail(cmd_heap_bins_list_print_cd);

	RzCmdDesc *cmd_heap_chunk_print_cd = rz_cmd_desc_argv_new(core->rcmd, dmh_cd, "dmhc", rz_cmd_heap_chunk_print_handler, &cmd_heap_chunk_print_help);
	rz_warn_if_fail(cmd_heap_chunk_print_cd);

	RzCmdDesc *cmd_heap_arena_bins_print_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dmh_cd, "dmhd", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_heap_arena_bins_print_handler, &cmd_heap_arena_bins_print_help);
	rz_warn_if_fail(cmd_heap_arena_bins_print_cd);

	RzCmdDesc *cmd_heap_fastbins_print_cd = rz_cmd_desc_argv_new(core->rcmd, dmh_cd, "dmhf", rz_cmd_heap_fastbins_print_handler, &cmd_heap_fastbins_print_help);
	rz_warn_if_fail(cmd_heap_fastbins_print_cd);

	RzCmdDesc *cmd_heap_chunks_graph_cd = rz_cmd_desc_argv_new(core->rcmd, dmh_cd, "dmhg", rz_cmd_heap_chunks_graph_handler, &cmd_heap_chunks_graph_help);
	rz_warn_if_fail(cmd_heap_chunks_graph_cd);

	RzCmdDesc *cmd_heap_info_print_cd = rz_cmd_desc_argv_new(core->rcmd, dmh_cd, "dmhi", rz_cmd_heap_info_print_handler, &cmd_heap_info_print_help);
	rz_warn_if_fail(cmd_heap_info_print_cd);

	RzCmdDesc *cmd_main_arena_print_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dmh_cd, "dmhm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_main_arena_print_handler, &cmd_main_arena_print_help);
	rz_warn_if_fail(cmd_main_arena_print_cd);

	RzCmdDesc *cmd_heap_tcache_print_cd = rz_cmd_desc_argv_new(core->rcmd, dmh_cd, "dmht", rz_cmd_heap_tcache_print_handler, &cmd_heap_tcache_print_help);
	rz_warn_if_fail(cmd_heap_tcache_print_cd);

	RzCmdDesc *dmi_cd = rz_cmd_desc_group_state_new(core->rcmd, dm_cd, "dmi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_debug_dmi_handler, &cmd_debug_dmi_help, &dmi_help);
	rz_warn_if_fail(dmi_cd);
	RzCmdDesc *cmd_debug_dmi_all_cd = rz_cmd_desc_argv_state_new(core->rcmd, dmi_cd, "dmia", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_debug_dmi_all_handler, &cmd_debug_dmi_all_help);
	rz_warn_if_fail(cmd_debug_dmi_all_cd);

	RzCmdDesc *cmd_debug_dmi_closest_cd = rz_cmd_desc_argv_state_new(core->rcmd, dmi_cd, "dmi.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_debug_dmi_closest_handler, &cmd_debug_dmi_closest_help);
	rz_warn_if_fail(cmd_debug_dmi_closest_cd);

	RzCmdDesc *cmd_debug_dml_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dml", rz_cmd_debug_dml_handler, &cmd_debug_dml_help);
	rz_warn_if_fail(cmd_debug_dml_cd);

	RzCmdDesc *debug_memory_permission_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dmp", rz_debug_memory_permission_handler, &debug_memory_permission_help);
	rz_warn_if_fail(debug_memory_permission_cd);

	RzCmdDesc *cmd_debug_dmL_cd = rz_cmd_desc_argv_new(core->rcmd, dm_cd, "dmL", rz_cmd_debug_dmL_handler, &cmd_debug_dmL_help);
	rz_warn_if_fail(cmd_debug_dmL_cd);

	RzCmdDesc *cmd_debug_dmS_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dm_cd, "dmS", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_debug_dmS_handler, &cmd_debug_dmS_help);
	rz_warn_if_fail(cmd_debug_dmS_cd);

	RzCmdDesc *dmw_cd = rz_cmd_desc_group_modes_new(core->rcmd, dm_cd, "dmw", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_debug_process_heaps_handler, &cmd_debug_process_heaps_help, &dmw_help);
	rz_warn_if_fail(dmw_cd);
	RzCmdDesc *cmd_debug_process_heap_block_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dmw_cd, "dmwb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_debug_process_heap_block_handler, &cmd_debug_process_heap_block_help);
	rz_warn_if_fail(cmd_debug_process_heap_block_cd);

	RzCmdDesc *cmd_debug_heap_block_flag_cd = rz_cmd_desc_argv_new(core->rcmd, dmw_cd, "dmwbf", rz_cmd_debug_heap_block_flag_handler, &cmd_debug_heap_block_flag_help);
	rz_warn_if_fail(cmd_debug_heap_block_flag_cd);

	RzCmdDesc *dmx_cd = rz_cmd_desc_group_new(core->rcmd, dm_cd, "dmx", NULL, NULL, &dmx_help);
	rz_warn_if_fail(dmx_cd);
	RzCmdDesc *cmd_debug_heap_jemalloc_a_cd = rz_cmd_desc_argv_new(core->rcmd, dmx_cd, "dmxa", rz_cmd_debug_heap_jemalloc_a_handler, &cmd_debug_heap_jemalloc_a_help);
	rz_warn_if_fail(cmd_debug_heap_jemalloc_a_cd);

	RzCmdDesc *cmd_debug_heap_jemalloc_b_cd = rz_cmd_desc_argv_new(core->rcmd, dmx_cd, "dmxb", rz_cmd_debug_heap_jemalloc_b_handler, &cmd_debug_heap_jemalloc_b_help);
	rz_warn_if_fail(cmd_debug_heap_jemalloc_b_cd);

	RzCmdDesc *cmd_debug_heap_jemalloc_c_cd = rz_cmd_desc_argv_new(core->rcmd, dmx_cd, "dmxc", rz_cmd_debug_heap_jemalloc_c_handler, &cmd_debug_heap_jemalloc_c_help);
	rz_warn_if_fail(cmd_debug_heap_jemalloc_c_cd);

	RzCmdDesc *dp_cd = rz_cmd_desc_group_state_new(core->rcmd, d_cd, "dp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_pid_list_handler, &cmd_debug_pid_list_help, &dp_help);
	rz_warn_if_fail(dp_cd);
	RzCmdDesc *cmd_debug_pid_attachable_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dp_cd, "dpl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_pid_attachable_list_handler, &cmd_debug_pid_attachable_list_help);
	rz_warn_if_fail(cmd_debug_pid_attachable_list_cd);

	RzCmdDesc *cmd_debug_pid_attach_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpa", rz_cmd_debug_pid_attach_handler, &cmd_debug_pid_attach_help);
	rz_warn_if_fail(cmd_debug_pid_attach_cd);

	RzCmdDesc *cmd_debug_pid_detach_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dp-", rz_cmd_debug_pid_detach_handler, &cmd_debug_pid_detach_help);
	rz_warn_if_fail(cmd_debug_pid_detach_cd);

	RzCmdDesc *cmd_debug_pid_select_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dp=", rz_cmd_debug_pid_select_handler, &cmd_debug_pid_select_help);
	rz_warn_if_fail(cmd_debug_pid_select_cd);

	RzCmdDesc *cmd_debug_pid_select_forked_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpc", rz_cmd_debug_pid_select_forked_handler, &cmd_debug_pid_select_forked_help);
	rz_warn_if_fail(cmd_debug_pid_select_forked_cd);

	RzCmdDesc *cmd_debug_pid_display_forked_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpc*", rz_cmd_debug_pid_display_forked_handler, &cmd_debug_pid_display_forked_help);
	rz_warn_if_fail(cmd_debug_pid_display_forked_cd);

	RzCmdDesc *cmd_debug_executable_path_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpe", rz_cmd_debug_executable_path_handler, &cmd_debug_executable_path_help);
	rz_warn_if_fail(cmd_debug_executable_path_cd);

	RzCmdDesc *cmd_debug_pid_attach_fd_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpf", rz_cmd_debug_pid_attach_fd_handler, &cmd_debug_pid_attach_fd_help);
	rz_warn_if_fail(cmd_debug_pid_attach_fd_cd);

	RzCmdDesc *cmd_debug_pid_signal_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpk", rz_cmd_debug_pid_signal_handler, &cmd_debug_pid_signal_help);
	rz_warn_if_fail(cmd_debug_pid_signal_cd);

	RzCmdDesc *cmd_debug_thread_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dp_cd, "dpT", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_thread_list_handler, &cmd_debug_thread_list_help);
	rz_warn_if_fail(cmd_debug_thread_list_cd);

	RzCmdDesc *cmd_debug_pid_thread_select_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpt=", rz_cmd_debug_pid_thread_select_handler, &cmd_debug_pid_thread_select_help);
	rz_warn_if_fail(cmd_debug_pid_thread_select_cd);

	RzCmdDesc *dr_cd = rz_cmd_desc_group_state_new(core->rcmd, d_cd, "dr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_debug_regs_handler, &debug_regs_help, &dr_help);
	rz_warn_if_fail(dr_cd);
	RzCmdDesc *debug_regs_columns_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "dr=", rz_debug_regs_columns_handler, &debug_regs_columns_help);
	rz_warn_if_fail(debug_regs_columns_cd);

	RzCmdDesc *debug_regs_references_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dr_cd, "drr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_debug_regs_references_handler, &debug_regs_references_help);
	rz_warn_if_fail(debug_regs_references_cd);

	RzCmdDesc *debug_regs_valgroup_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "dri", rz_debug_regs_valgroup_handler, &debug_regs_valgroup_help);
	rz_warn_if_fail(debug_regs_valgroup_cd);

	RzCmdDesc *debug_regs_args_cd = rz_cmd_desc_argv_modes_new(core->rcmd, dr_cd, "drA", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_debug_regs_args_handler, &debug_regs_args_help);
	rz_warn_if_fail(debug_regs_args_cd);

	RzCmdDesc *debug_reg_cc_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "drcc", rz_debug_reg_cc_handler, &debug_reg_cc_help);
	rz_warn_if_fail(debug_reg_cc_cd);

	RzCmdDesc *debug_regs_diff_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "drd", rz_debug_regs_diff_handler, &debug_regs_diff_help);
	rz_warn_if_fail(debug_regs_diff_cd);

	RzCmdDesc *debug_regs_prev_cd = rz_cmd_desc_argv_state_new(core->rcmd, dr_cd, "dro", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_debug_regs_prev_handler, &debug_regs_prev_help);
	rz_warn_if_fail(debug_regs_prev_cd);

	RzCmdDesc *debug_regs_fpu_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "drF", rz_debug_regs_fpu_handler, &debug_regs_fpu_help);
	rz_warn_if_fail(debug_regs_fpu_cd);

	RzCmdDesc *drf_cd = rz_cmd_desc_group_new(core->rcmd, dr_cd, "drf", rz_debug_reg_flags_handler, &debug_reg_flags_help, &drf_help);
	rz_warn_if_fail(drf_cd);
	RzCmdDesc *debug_reg_flags_unset_cd = rz_cmd_desc_argv_new(core->rcmd, drf_cd, "drf-", rz_debug_reg_flags_unset_handler, &debug_reg_flags_unset_help);
	rz_warn_if_fail(debug_reg_flags_unset_cd);

	RzCmdDesc *dra_cd = rz_cmd_desc_group_new(core->rcmd, dr_cd, "dra", rz_debug_reg_arenas_handler, &debug_reg_arenas_help, &dra_help);
	rz_warn_if_fail(dra_cd);
	RzCmdDesc *debug_reg_arenas_push_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "dra+", rz_debug_reg_arenas_push_handler, &debug_reg_arenas_push_help);
	rz_warn_if_fail(debug_reg_arenas_push_cd);

	RzCmdDesc *debug_reg_arenas_pop_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "dra-", rz_debug_reg_arenas_pop_handler, &debug_reg_arenas_pop_help);
	rz_warn_if_fail(debug_reg_arenas_pop_cd);

	RzCmdDesc *debug_reg_arenas_stack_size_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "draS", rz_debug_reg_arenas_stack_size_handler, &debug_reg_arenas_stack_size_help);
	rz_warn_if_fail(debug_reg_arenas_stack_size_cd);

	RzCmdDesc *debug_reg_arenas_swap_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "dras", rz_debug_reg_arenas_swap_handler, &debug_reg_arenas_swap_help);
	rz_warn_if_fail(debug_reg_arenas_swap_cd);

	RzCmdDesc *debug_reg_arenas_zero_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "dra0", rz_debug_reg_arenas_zero_handler, &debug_reg_arenas_zero_help);
	rz_warn_if_fail(debug_reg_arenas_zero_cd);

	RzCmdDesc *debug_reg_arenas_hexdump_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "drab", rz_debug_reg_arenas_hexdump_handler, &debug_reg_arenas_hexdump_help);
	rz_warn_if_fail(debug_reg_arenas_hexdump_cd);

	RzCmdDesc *debug_reg_arenas_write_hex_cd = rz_cmd_desc_argv_new(core->rcmd, dra_cd, "draw", rz_debug_reg_arenas_write_hex_handler, &debug_reg_arenas_write_hex_help);
	rz_warn_if_fail(debug_reg_arenas_write_hex_cd);

	RzCmdDesc *drp_cd = rz_cmd_desc_group_state_new(core->rcmd, dr_cd, "drp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_debug_reg_profile_handler, &debug_reg_profile_help, &drp_help);
	rz_warn_if_fail(drp_cd);
	RzCmdDesc *debug_reg_profile_comments_cd = rz_cmd_desc_argv_new(core->rcmd, drp_cd, "drpc", rz_debug_reg_profile_comments_handler, &debug_reg_profile_comments_help);
	rz_warn_if_fail(debug_reg_profile_comments_cd);

	RzCmdDesc *debug_reg_profile_open_cd = rz_cmd_desc_argv_new(core->rcmd, drp_cd, "drpo", rz_debug_reg_profile_open_handler, &debug_reg_profile_open_help);
	rz_warn_if_fail(debug_reg_profile_open_cd);

	RzCmdDesc *debug_reg_profile_gdb_cd = rz_cmd_desc_argv_new(core->rcmd, drp_cd, "drpg", rz_debug_reg_profile_gdb_handler, &debug_reg_profile_gdb_help);
	rz_warn_if_fail(debug_reg_profile_gdb_cd);

	RzCmdDesc *debug_reg_cond_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "drc", rz_debug_reg_cond_handler, &debug_reg_cond_help);
	rz_warn_if_fail(debug_reg_cond_cd);

	RzCmdDesc *debug_reg_types_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "drT", rz_debug_reg_types_handler, &debug_reg_types_help);
	rz_warn_if_fail(debug_reg_types_cd);

	RzCmdDesc *debug_reg_roles_cd = rz_cmd_desc_argv_new(core->rcmd, dr_cd, "drR", rz_debug_reg_roles_handler, &debug_reg_roles_help);
	rz_warn_if_fail(debug_reg_roles_cd);

	RzCmdDesc *drx_cd = rz_cmd_desc_group_new(core->rcmd, dr_cd, "drx", rz_debug_drx_handler, &debug_drx_help, &drx_help);
	rz_warn_if_fail(drx_cd);
	RzCmdDesc *debug_drx_unset_cd = rz_cmd_desc_argv_new(core->rcmd, drx_cd, "drx-", rz_debug_drx_unset_handler, &debug_drx_unset_help);
	rz_warn_if_fail(debug_drx_unset_cd);

	RzCmdDesc *cmd_debug_wait_cd = rz_cmd_desc_argv_new(core->rcmd, d_cd, "dw", rz_cmd_debug_wait_handler, &cmd_debug_wait_help);
	rz_warn_if_fail(cmd_debug_wait_cd);

	RzCmdDesc *dW_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dW", rz_cmd_debug_windows_list_handler, &cmd_debug_windows_list_help, &dW_help);
	rz_warn_if_fail(dW_cd);
	RzCmdDesc *cmd_debug_window_identify_cd = rz_cmd_desc_argv_new(core->rcmd, dW_cd, "dWi", rz_cmd_debug_window_identify_handler, &cmd_debug_window_identify_help);
	rz_warn_if_fail(cmd_debug_window_identify_cd);

	RzCmdDesc *dx_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dx", rz_cmd_debug_inject_opcode_handler, &cmd_debug_inject_opcode_help, &dx_help);
	rz_warn_if_fail(dx_cd);
	RzCmdDesc *cmd_debug_inject_assembly_cd = rz_cmd_desc_argv_new(core->rcmd, dx_cd, "dxa", rz_cmd_debug_inject_assembly_handler, &cmd_debug_inject_assembly_help);
	rz_warn_if_fail(cmd_debug_inject_assembly_cd);

	RzCmdDesc *cmd_debug_inject_egg_cd = rz_cmd_desc_argv_new(core->rcmd, dx_cd, "dxe", rz_cmd_debug_inject_egg_handler, &cmd_debug_inject_egg_help);
	rz_warn_if_fail(cmd_debug_inject_egg_cd);

	RzCmdDesc *cmd_debug_inject_opcode_restore_cd = rz_cmd_desc_argv_new(core->rcmd, dx_cd, "dxr", rz_cmd_debug_inject_opcode_restore_handler, &cmd_debug_inject_opcode_restore_help);
	rz_warn_if_fail(cmd_debug_inject_opcode_restore_cd);

	RzCmdDesc *cmd_debug_inject_syscall_cd = rz_cmd_desc_argv_new(core->rcmd, dx_cd, "dxs", rz_cmd_debug_inject_syscall_handler, &cmd_debug_inject_syscall_help);
	rz_warn_if_fail(cmd_debug_inject_syscall_cd);

	RzCmdDesc *e_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "e", rz_eval_getset_handler, &eval_getset_help, &e_help);
	rz_warn_if_fail(e_cd);
	RzCmdDesc *eval_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, e_cd, "el", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_LONG_JSON, rz_eval_list_handler, &eval_list_help);
	rz_warn_if_fail(eval_list_cd);

	RzCmdDesc *eval_reset_cd = rz_cmd_desc_argv_new(core->rcmd, e_cd, "e-", rz_eval_reset_handler, &eval_reset_help);
	rz_warn_if_fail(eval_reset_cd);

	RzCmdDesc *eval_bool_invert_cd = rz_cmd_desc_argv_new(core->rcmd, e_cd, "e!", rz_eval_bool_invert_handler, &eval_bool_invert_help);
	rz_warn_if_fail(eval_bool_invert_cd);

	RzCmdDesc *ec_cd = rz_cmd_desc_group_modes_new(core->rcmd, e_cd, "ec", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_cmd_eval_color_list_handler, &cmd_eval_color_list_help, &ec_help);
	rz_warn_if_fail(ec_cd);
	RzCmdDesc *cmd_eval_color_display_palette_css_cd = rz_cmd_desc_argv_new(core->rcmd, ec_cd, "ecc", rz_cmd_eval_color_display_palette_css_handler, &cmd_eval_color_display_palette_css_help);
	rz_warn_if_fail(cmd_eval_color_display_palette_css_cd);

	RzCmdDesc *cmd_eval_color_set_default_palette_cd = rz_cmd_desc_argv_new(core->rcmd, ec_cd, "ecd", rz_cmd_eval_color_set_default_palette_handler, &cmd_eval_color_set_default_palette_help);
	rz_warn_if_fail(cmd_eval_color_set_default_palette_cd);

	RzCmdDesc *ecH_cd = rz_cmd_desc_group_modes_new(core->rcmd, ec_cd, "ecH", RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_cmd_eval_color_highlight_list_handler, &cmd_eval_color_highlight_list_help, &ecH_help);
	rz_warn_if_fail(ecH_cd);
	RzCmdDesc *cmd_eval_color_highlight_current_instruction_cd = rz_cmd_desc_argv_new(core->rcmd, ecH_cd, "ecHi", rz_cmd_eval_color_highlight_current_instruction_handler, &cmd_eval_color_highlight_current_instruction_help);
	rz_warn_if_fail(cmd_eval_color_highlight_current_instruction_cd);

	RzCmdDesc *cmd_eval_color_highlight_instruction_word_cd = rz_cmd_desc_argv_new(core->rcmd, ecH_cd, "ecHw", rz_cmd_eval_color_highlight_instruction_word_handler, &cmd_eval_color_highlight_instruction_word_help);
	rz_warn_if_fail(cmd_eval_color_highlight_instruction_word_cd);

	RzCmdDesc *cmd_eval_color_highlight_list_current_cd = rz_cmd_desc_argv_new(core->rcmd, ecH_cd, "ecH.", rz_cmd_eval_color_highlight_list_current_handler, &cmd_eval_color_highlight_list_current_help);
	rz_warn_if_fail(cmd_eval_color_highlight_list_current_cd);

	RzCmdDesc *cmd_eval_color_highlight_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, ecH_cd, "ecH-*", rz_cmd_eval_color_highlight_remove_all_handler, &cmd_eval_color_highlight_remove_all_help);
	rz_warn_if_fail(cmd_eval_color_highlight_remove_all_cd);

	RzCmdDesc *cmd_eval_color_highlight_remove_current_cd = rz_cmd_desc_argv_new(core->rcmd, ecH_cd, "ecH-", rz_cmd_eval_color_highlight_remove_current_handler, &cmd_eval_color_highlight_remove_current_help);
	rz_warn_if_fail(cmd_eval_color_highlight_remove_current_cd);

	RzCmdDesc *cmd_eval_color_set_random_palette_cd = rz_cmd_desc_argv_new(core->rcmd, ec_cd, "ecr", rz_cmd_eval_color_set_random_palette_handler, &cmd_eval_color_set_random_palette_help);
	rz_warn_if_fail(cmd_eval_color_set_random_palette_cd);

	RzCmdDesc *cmd_eval_color_set_colorful_palette_cd = rz_cmd_desc_argv_new(core->rcmd, ec_cd, "ecs", rz_cmd_eval_color_set_colorful_palette_handler, &cmd_eval_color_set_colorful_palette_help);
	rz_warn_if_fail(cmd_eval_color_set_colorful_palette_cd);

	RzCmdDesc *eco_cd = rz_cmd_desc_group_state_new(core->rcmd, ec_cd, "eco", RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_eval_color_load_theme_handler, &cmd_eval_color_load_theme_help, &eco_help);
	rz_warn_if_fail(eco_cd);
	RzCmdDesc *cmd_eval_color_list_current_theme_cd = rz_cmd_desc_argv_new(core->rcmd, eco_cd, "eco.", rz_cmd_eval_color_list_current_theme_handler, &cmd_eval_color_list_current_theme_help);
	rz_warn_if_fail(cmd_eval_color_list_current_theme_cd);

	RzCmdDesc *cmd_eval_color_list_reload_current_cd = rz_cmd_desc_argv_new(core->rcmd, eco_cd, "ecoo", rz_cmd_eval_color_list_reload_current_handler, &cmd_eval_color_list_reload_current_help);
	rz_warn_if_fail(cmd_eval_color_list_reload_current_cd);

	RzCmdDesc *cmd_eval_color_load_previous_theme_cd = rz_cmd_desc_argv_new(core->rcmd, ec_cd, "ecp", rz_cmd_eval_color_load_previous_theme_handler, &cmd_eval_color_load_previous_theme_help);
	rz_warn_if_fail(cmd_eval_color_load_previous_theme_cd);

	RzCmdDesc *cmd_eval_color_load_next_theme_cd = rz_cmd_desc_argv_new(core->rcmd, ec_cd, "ecn", rz_cmd_eval_color_load_next_theme_handler, &cmd_eval_color_load_next_theme_help);
	rz_warn_if_fail(cmd_eval_color_load_next_theme_cd);

	RzCmdDesc *eval_editor_cd = rz_cmd_desc_argv_new(core->rcmd, e_cd, "ee", rz_eval_editor_handler, &eval_editor_help);
	rz_warn_if_fail(eval_editor_cd);

	RzCmdDesc *eval_readonly_cd = rz_cmd_desc_argv_new(core->rcmd, e_cd, "er", rz_eval_readonly_handler, &eval_readonly_help);
	rz_warn_if_fail(eval_readonly_cd);

	RzCmdDesc *eval_spaces_cd = rz_cmd_desc_argv_new(core->rcmd, e_cd, "es", rz_eval_spaces_handler, &eval_spaces_help);
	rz_warn_if_fail(eval_spaces_cd);

	RzCmdDesc *eval_type_cd = rz_cmd_desc_argv_new(core->rcmd, e_cd, "et", rz_eval_type_handler, &eval_type_help);
	rz_warn_if_fail(eval_type_cd);

	RzCmdDesc *f_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "f", rz_flag_add_handler, &flag_add_help, &f_help);
	rz_warn_if_fail(f_cd);
	RzCmdDesc *flag_append_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "f+", rz_flag_append_handler, &flag_append_help);
	rz_warn_if_fail(flag_append_cd);

	RzCmdDesc *f_dot__cd = rz_cmd_desc_group_new(core->rcmd, f_cd, "f.", rz_flag_local_add_handler, &flag_local_add_help, &f_dot__help);
	rz_warn_if_fail(f_dot__cd);
	RzCmdDesc *flag_local_remove_cd = rz_cmd_desc_argv_new(core->rcmd, f_dot__cd, "f.-", rz_flag_local_remove_handler, &flag_local_remove_help);
	rz_warn_if_fail(flag_local_remove_cd);

	RzCmdDesc *flag_local_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_dot__cd, "f.l", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_flag_local_list_handler, &flag_local_list_help);
	rz_warn_if_fail(flag_local_list_cd);

	RzCmdDesc *flag_local_list_all_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_dot__cd, "f.l*", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_flag_local_list_all_handler, &flag_local_list_all_help);
	rz_warn_if_fail(flag_local_list_all_cd);

	RzCmdDesc *flag_remove_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "f-", rz_flag_remove_handler, &flag_remove_help);
	rz_warn_if_fail(flag_remove_cd);

	RzCmdDesc *flag_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "f-*", rz_flag_remove_all_handler, &flag_remove_all_help);
	rz_warn_if_fail(flag_remove_all_cd);

	RzCmdDesc *flag_alias_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fa", rz_flag_alias_handler, &flag_alias_help);
	rz_warn_if_fail(flag_alias_cd);

	RzCmdDesc *flag_exists_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fe", rz_flag_exists_handler, &flag_exists_help);
	rz_warn_if_fail(flag_exists_cd);

	RzCmdDesc *flag_distance_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "ff", rz_flag_distance_handler, &flag_distance_help);
	rz_warn_if_fail(flag_distance_cd);

	RzCmdDesc *flag_graph_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_flag_graph_handler, &flag_graph_help);
	rz_warn_if_fail(flag_graph_cd);

	RzCmdDesc *flag_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_flag_range_handler, &flag_range_help);
	rz_warn_if_fail(flag_range_cd);

	RzCmdDesc *flag_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_flag_list_handler, &flag_list_help);
	rz_warn_if_fail(flag_list_cd);

	RzCmdDesc *flag_list_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fl.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_flag_list_at_handler, &flag_list_at_help);
	rz_warn_if_fail(flag_list_at_cd);

	RzCmdDesc *flag_length_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fL", rz_flag_length_handler, &flag_length_help);
	rz_warn_if_fail(flag_length_cd);

	RzCmdDesc *flag_realname_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fN", rz_flag_realname_handler, &flag_realname_help);
	rz_warn_if_fail(flag_realname_cd);

	RzCmdDesc *flag_list_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fl=", rz_flag_list_ascii_handler, &flag_list_ascii_help);
	rz_warn_if_fail(flag_list_ascii_cd);

	RzCmdDesc *flag_color_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fc", rz_flag_color_handler, &flag_color_help);
	rz_warn_if_fail(flag_color_cd);

	RzCmdDesc *flag_comment_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fC", rz_flag_comment_handler, &flag_comment_help);
	rz_warn_if_fail(flag_comment_cd);

	RzCmdDesc *fd_cd = rz_cmd_desc_group_state_new(core->rcmd, f_cd, "fd", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_flag_describe_handler, &flag_describe_help, &fd_help);
	rz_warn_if_fail(fd_cd);
	RzCmdDesc *flag_describe_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, fd_cd, "fd.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_flag_describe_at_handler, &flag_describe_at_help);
	rz_warn_if_fail(flag_describe_at_cd);

	RzCmdDesc *flag_describe_closest_cd = rz_cmd_desc_argv_new(core->rcmd, fd_cd, "fdw", rz_flag_describe_closest_handler, &flag_describe_closest_help);
	rz_warn_if_fail(flag_describe_closest_cd);

	RzCmdDesc *flag_move_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fm", rz_flag_move_handler, &flag_move_help);
	rz_warn_if_fail(flag_move_cd);

	RzCmdDesc *flag_ordinals_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fO", rz_flag_ordinals_handler, &flag_ordinals_help);
	rz_warn_if_fail(flag_ordinals_cd);

	RzCmdDesc *flag_rename_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fr", rz_flag_rename_handler, &flag_rename_help);
	rz_warn_if_fail(flag_rename_cd);

	RzCmdDesc *flag_relocate_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fR", rz_flag_relocate_handler, &flag_relocate_help);
	rz_warn_if_fail(flag_relocate_cd);

	RzCmdDesc *fs_cd = rz_cmd_desc_group_new(core->rcmd, f_cd, "fs", rz_flag_space_add_handler, &flag_space_add_help, &fs_help);
	rz_warn_if_fail(fs_cd);
	RzCmdDesc *flag_space_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, fs_cd, "fsl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_flag_space_list_handler, &flag_space_list_help);
	rz_warn_if_fail(flag_space_list_cd);

	RzCmdDesc *flag_space_remove_cd = rz_cmd_desc_argv_new(core->rcmd, fs_cd, "fs-", rz_flag_space_remove_handler, &flag_space_remove_help);
	rz_warn_if_fail(flag_space_remove_cd);

	RzCmdDesc *flag_space_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, fs_cd, "fs-*", rz_flag_space_remove_all_handler, &flag_space_remove_all_help);
	rz_warn_if_fail(flag_space_remove_all_cd);

	RzCmdDesc *flag_space_move_cd = rz_cmd_desc_argv_new(core->rcmd, fs_cd, "fsm", rz_flag_space_move_handler, &flag_space_move_help);
	rz_warn_if_fail(flag_space_move_cd);

	RzCmdDesc *flag_space_rename_cd = rz_cmd_desc_argv_new(core->rcmd, fs_cd, "fsr", rz_flag_space_rename_handler, &flag_space_rename_help);
	rz_warn_if_fail(flag_space_rename_cd);

	RzCmdDesc *fss_cd = rz_cmd_desc_group_new(core->rcmd, fs_cd, "fss", NULL, NULL, &fss_help);
	rz_warn_if_fail(fss_cd);
	RzCmdDesc *flag_space_stack_push_cd = rz_cmd_desc_argv_new(core->rcmd, fss_cd, "fss+", rz_flag_space_stack_push_handler, &flag_space_stack_push_help);
	rz_warn_if_fail(flag_space_stack_push_cd);

	RzCmdDesc *flag_space_stack_pop_cd = rz_cmd_desc_argv_new(core->rcmd, fss_cd, "fss-", rz_flag_space_stack_pop_handler, &flag_space_stack_pop_help);
	rz_warn_if_fail(flag_space_stack_pop_cd);

	RzCmdDesc *flag_space_stack_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, fss_cd, "fssl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_flag_space_stack_list_handler, &flag_space_stack_list_help);
	rz_warn_if_fail(flag_space_stack_list_cd);

	RzCmdDesc *ft_cd = rz_cmd_desc_group_new(core->rcmd, f_cd, "ft", rz_flag_tag_add_handler, &flag_tag_add_help, &ft_help);
	rz_warn_if_fail(ft_cd);
	RzCmdDesc *flag_tag_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ft_cd, "ftl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON, rz_flag_tag_list_handler, &flag_tag_list_help);
	rz_warn_if_fail(flag_tag_list_cd);

	RzCmdDesc *flag_tag_search_cd = rz_cmd_desc_argv_new(core->rcmd, ft_cd, "ftn", rz_flag_tag_search_handler, &flag_tag_search_help);
	rz_warn_if_fail(flag_tag_search_cd);

	RzCmdDesc *fz_cd = rz_cmd_desc_group_new(core->rcmd, f_cd, "fz", rz_flag_zone_add_handler, &flag_zone_add_help, &fz_help);
	rz_warn_if_fail(fz_cd);
	RzCmdDesc *flag_zone_remove_cd = rz_cmd_desc_argv_new(core->rcmd, fz_cd, "fz-", rz_flag_zone_remove_handler, &flag_zone_remove_help);
	rz_warn_if_fail(flag_zone_remove_cd);

	RzCmdDesc *flag_zone_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, fz_cd, "fz-*", rz_flag_zone_remove_all_handler, &flag_zone_remove_all_help);
	rz_warn_if_fail(flag_zone_remove_all_cd);

	RzCmdDesc *flag_zone_around_cd = rz_cmd_desc_argv_new(core->rcmd, fz_cd, "fz.", rz_flag_zone_around_handler, &flag_zone_around_help);
	rz_warn_if_fail(flag_zone_around_cd);

	RzCmdDesc *flag_zone_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, fz_cd, "fzl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_flag_zone_list_handler, &flag_zone_list_help);
	rz_warn_if_fail(flag_zone_list_cd);

	RzCmdDesc *flag_hexdump_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fx", rz_flag_hexdump_handler, &flag_hexdump_help);
	rz_warn_if_fail(flag_hexdump_cd);

	RzCmdDesc *F_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "F", NULL, NULL, &F_help);
	rz_warn_if_fail(F_cd);
	RzCmdDesc *flirt_create_cd = rz_cmd_desc_argv_new(core->rcmd, F_cd, "Fc", rz_flirt_create_handler, &flirt_create_help);
	rz_warn_if_fail(flirt_create_cd);

	RzCmdDesc *flirt_dump_cd = rz_cmd_desc_argv_new(core->rcmd, F_cd, "Fd", rz_flirt_dump_handler, &flirt_dump_help);
	rz_warn_if_fail(flirt_dump_cd);

	RzCmdDesc *flirt_scan_cd = rz_cmd_desc_argv_new(core->rcmd, F_cd, "Fs", rz_flirt_scan_handler, &flirt_scan_help);
	rz_warn_if_fail(flirt_scan_cd);

	RzCmdDesc *flirt_function_cd = rz_cmd_desc_argv_new(core->rcmd, F_cd, "Ff", rz_flirt_function_handler, &flirt_function_help);
	rz_warn_if_fail(flirt_function_cd);

	RzCmdDesc *apply_signatures_from_sigdb_cd = rz_cmd_desc_argv_new(core->rcmd, F_cd, "Fa", rz_apply_signatures_from_sigdb_handler, &apply_signatures_from_sigdb_help);
	rz_warn_if_fail(apply_signatures_from_sigdb_cd);

	RzCmdDesc *list_signatures_in_sigdb_cd = rz_cmd_desc_argv_state_new(core->rcmd, F_cd, "Fl", RZ_OUTPUT_MODE_TABLE, rz_list_signatures_in_sigdb_handler, &list_signatures_in_sigdb_help);
	rz_warn_if_fail(list_signatures_in_sigdb_cd);
	rz_cmd_desc_set_default_mode(list_signatures_in_sigdb_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *g_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "g", rz_egg_compile_handler, &egg_compile_help, &g_help);
	rz_warn_if_fail(g_cd);
	RzCmdDesc *egg_config_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gc", rz_egg_config_handler, &egg_config_help);
	rz_warn_if_fail(egg_config_cd);

	RzCmdDesc *egg_list_plugins_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gl", rz_egg_list_plugins_handler, &egg_list_plugins_help);
	rz_warn_if_fail(egg_list_plugins_cd);

	RzCmdDesc *egg_syscall_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gs", rz_egg_syscall_handler, &egg_syscall_help);
	rz_warn_if_fail(egg_syscall_cd);

	RzCmdDesc *egg_type_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gi", rz_egg_type_handler, &egg_type_help);
	rz_warn_if_fail(egg_type_cd);

	RzCmdDesc *egg_padding_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gp", rz_egg_padding_handler, &egg_padding_help);
	rz_warn_if_fail(egg_padding_cd);

	RzCmdDesc *egg_encoder_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "ge", rz_egg_encoder_handler, &egg_encoder_help);
	rz_warn_if_fail(egg_encoder_cd);

	RzCmdDesc *egg_reset_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gr", rz_egg_reset_handler, &egg_reset_help);
	rz_warn_if_fail(egg_reset_cd);

	RzCmdDesc *egg_show_config_cd = rz_cmd_desc_argv_new(core->rcmd, g_cd, "gS", rz_egg_show_config_handler, &egg_show_config_help);
	rz_warn_if_fail(egg_show_config_cd);

	RzCmdDesc *help_cd = rz_cmd_desc_argv_new(core->rcmd, root_cd, "help", rz_help_handler, &help_help);
	rz_warn_if_fail(help_cd);

	RzCmdDesc *H_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "H", rz_history_list_or_exec_handler, &history_list_or_exec_help, &H_help);
	rz_warn_if_fail(H_cd);
	RzCmdDesc *history_clear_cd = rz_cmd_desc_argv_new(core->rcmd, H_cd, "H-", rz_history_clear_handler, &history_clear_help);
	rz_warn_if_fail(history_clear_cd);

	RzCmdDesc *history_save_cd = rz_cmd_desc_argv_new(core->rcmd, H_cd, "H+", rz_history_save_handler, &history_save_help);
	rz_warn_if_fail(history_save_cd);

	RzCmdDesc *i_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "i", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_cmd_info_handler, &cmd_info_help, &i_help);
	rz_warn_if_fail(i_cd);
	rz_cmd_desc_set_default_mode(i_cd, RZ_OUTPUT_MODE_TABLE);
	RzCmdDesc *cmd_info_all_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ia", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_STANDARD, rz_cmd_info_all_handler, &cmd_info_all_help);
	rz_warn_if_fail(cmd_info_all_cd);

	RzCmdDesc *cmd_info_archs_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iA", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_archs_handler, &cmd_info_archs_help);
	rz_warn_if_fail(cmd_info_archs_cd);
	rz_cmd_desc_set_default_mode(cmd_info_archs_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *ic_cd = rz_cmd_desc_group_state_new(core->rcmd, i_cd, "ic", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_info_classes_handler, &cmd_info_classes_help, &ic_help);
	rz_warn_if_fail(ic_cd);
	rz_cmd_desc_set_default_mode(ic_cd, RZ_OUTPUT_MODE_TABLE);
	RzCmdDesc *cmd_info_class_as_source_cd = rz_cmd_desc_argv_new(core->rcmd, ic_cd, "icc", rz_cmd_info_class_as_source_handler, &cmd_info_class_as_source_help);
	rz_warn_if_fail(cmd_info_class_as_source_cd);

	RzCmdDesc *cmd_info_class_fields_cd = rz_cmd_desc_argv_state_new(core->rcmd, ic_cd, "icf", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST | RZ_OUTPUT_MODE_JSON, rz_cmd_info_class_fields_handler, &cmd_info_class_fields_help);
	rz_warn_if_fail(cmd_info_class_fields_cd);
	rz_cmd_desc_set_default_mode(cmd_info_class_fields_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_class_methods_cd = rz_cmd_desc_argv_state_new(core->rcmd, ic_cd, "icm", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST | RZ_OUTPUT_MODE_JSON, rz_cmd_info_class_methods_handler, &cmd_info_class_methods_help);
	rz_warn_if_fail(cmd_info_class_methods_cd);
	rz_cmd_desc_set_default_mode(cmd_info_class_methods_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_signature_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iC", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_signature_handler, &cmd_info_signature_help);
	rz_warn_if_fail(cmd_info_signature_cd);

	RzCmdDesc *id_cd = rz_cmd_desc_group_state_new(core->rcmd, i_cd, "id", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_cmd_info_dwarf_handler, &cmd_info_dwarf_help, &id_help);
	rz_warn_if_fail(id_cd);
	RzCmdDesc *idp_cd = rz_cmd_desc_group_state_new(core->rcmd, id_cd, "idp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_pdb_load_handler, &cmd_info_pdb_load_help, &idp_help);
	rz_warn_if_fail(idp_cd);
	RzCmdDesc *cmd_info_pdb_show_cd = rz_cmd_desc_argv_state_new(core->rcmd, idp_cd, "idpi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_cmd_info_pdb_show_handler, &cmd_info_pdb_show_help);
	rz_warn_if_fail(cmd_info_pdb_show_cd);

	RzCmdDesc *cmd_info_pdb_download_cd = rz_cmd_desc_argv_state_new(core->rcmd, idp_cd, "idpd", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_pdb_download_handler, &cmd_info_pdb_download_help);
	rz_warn_if_fail(cmd_info_pdb_download_cd);

	RzCmdDesc *cmd_pdb_extract_cd = rz_cmd_desc_argv_new(core->rcmd, idp_cd, "idpx", rz_cmd_pdb_extract_handler, &cmd_pdb_extract_help);
	rz_warn_if_fail(cmd_pdb_extract_cd);

	RzCmdDesc *iD_cd = rz_cmd_desc_group_new(core->rcmd, i_cd, "iD", rz_cmd_info_demangle_handler, &cmd_info_demangle_help, &iD_help);
	rz_warn_if_fail(iD_cd);
	RzCmdDesc *cmd_info_demangle_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, iD_cd, "iDl", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_demangle_list_handler, &cmd_info_demangle_list_help);
	rz_warn_if_fail(cmd_info_demangle_list_cd);
	rz_cmd_desc_set_default_mode(cmd_info_demangle_list_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_entry_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ie", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_entry_handler, &cmd_info_entry_help);
	rz_warn_if_fail(cmd_info_entry_cd);
	rz_cmd_desc_set_default_mode(cmd_info_entry_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_entryexits_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iee", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_entryexits_handler, &cmd_info_entryexits_help);
	rz_warn_if_fail(cmd_info_entryexits_cd);
	rz_cmd_desc_set_default_mode(cmd_info_entryexits_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *iE_cd = rz_cmd_desc_group_state_new(core->rcmd, i_cd, "iE", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_exports_handler, &cmd_info_exports_help, &iE_help);
	rz_warn_if_fail(iE_cd);
	rz_cmd_desc_set_default_mode(iE_cd, RZ_OUTPUT_MODE_TABLE);
	RzCmdDesc *cmd_info_cur_export_cd = rz_cmd_desc_argv_state_new(core->rcmd, iE_cd, "iE.", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_cur_export_handler, &cmd_info_cur_export_help);
	rz_warn_if_fail(cmd_info_cur_export_cd);
	rz_cmd_desc_set_default_mode(cmd_info_cur_export_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_fields_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ih", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_fields_handler, &cmd_info_fields_help);
	rz_warn_if_fail(cmd_info_fields_cd);
	rz_cmd_desc_set_default_mode(cmd_info_fields_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_headers_cd = rz_cmd_desc_argv_new(core->rcmd, i_cd, "iH", rz_cmd_info_headers_handler, &cmd_info_headers_help);
	rz_warn_if_fail(cmd_info_headers_cd);

	RzCmdDesc *cmd_info_imports_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ii", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_imports_handler, &cmd_info_imports_help);
	rz_warn_if_fail(cmd_info_imports_cd);
	rz_cmd_desc_set_default_mode(cmd_info_imports_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_binary_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iI", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_binary_handler, &cmd_info_binary_help);
	rz_warn_if_fail(cmd_info_binary_cd);
	rz_cmd_desc_set_default_mode(cmd_info_binary_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *ik_cd = rz_cmd_desc_group_new(core->rcmd, i_cd, "ik", rz_cmd_info_query_handler, &cmd_info_query_help, &ik_help);
	rz_warn_if_fail(ik_cd);
	RzCmdDesc *cmd_info_show_header_info_cd = rz_cmd_desc_argv_new(core->rcmd, ik_cd, "ik*", rz_cmd_info_show_header_info_handler, &cmd_info_show_header_info_help);
	rz_warn_if_fail(cmd_info_show_header_info_cd);

	RzCmdDesc *cmd_info_libs_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "il", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_libs_handler, &cmd_info_libs_help);
	rz_warn_if_fail(cmd_info_libs_cd);
	rz_cmd_desc_set_default_mode(cmd_info_libs_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_plugins_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iL", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_plugins_handler, &cmd_info_plugins_help);
	rz_warn_if_fail(cmd_info_plugins_cd);

	RzCmdDesc *cmd_info_memory_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "im", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_memory_handler, &cmd_info_memory_help);
	rz_warn_if_fail(cmd_info_memory_cd);
	rz_cmd_desc_set_default_mode(cmd_info_memory_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_main_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iM", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_main_handler, &cmd_info_main_help);
	rz_warn_if_fail(cmd_info_main_cd);
	rz_cmd_desc_set_default_mode(cmd_info_main_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_relocs_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ir", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_relocs_handler, &cmd_info_relocs_help);
	rz_warn_if_fail(cmd_info_relocs_cd);
	rz_cmd_desc_set_default_mode(cmd_info_relocs_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_resources_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iR", RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_STANDARD, rz_cmd_info_resources_handler, &cmd_info_resources_help);
	rz_warn_if_fail(cmd_info_resources_cd);

	RzCmdDesc *cmd_info_symbols_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "is", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_info_symbols_handler, &cmd_info_symbols_help);
	rz_warn_if_fail(cmd_info_symbols_cd);
	rz_cmd_desc_set_default_mode(cmd_info_symbols_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_cur_symbol_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "is.", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_cur_symbol_handler, &cmd_info_cur_symbol_help);
	rz_warn_if_fail(cmd_info_cur_symbol_cd);
	rz_cmd_desc_set_default_mode(cmd_info_cur_symbol_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_sections_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iS", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_info_sections_handler, &cmd_info_sections_help);
	rz_warn_if_fail(cmd_info_sections_cd);
	rz_cmd_desc_set_default_mode(cmd_info_sections_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_cur_section_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iS.", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_cmd_info_cur_section_handler, &cmd_info_cur_section_help);
	rz_warn_if_fail(cmd_info_cur_section_cd);
	rz_cmd_desc_set_default_mode(cmd_info_cur_section_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_section_bars_cd = rz_cmd_desc_argv_new(core->rcmd, i_cd, "iS=", rz_cmd_info_section_bars_handler, &cmd_info_section_bars_help);
	rz_warn_if_fail(cmd_info_section_bars_cd);

	RzCmdDesc *cmd_info_segments_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iSS", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_cmd_info_segments_handler, &cmd_info_segments_help);
	rz_warn_if_fail(cmd_info_segments_cd);
	rz_cmd_desc_set_default_mode(cmd_info_segments_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_cur_segment_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iSS.", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_cmd_info_cur_segment_handler, &cmd_info_cur_segment_help);
	rz_warn_if_fail(cmd_info_cur_segment_cd);
	rz_cmd_desc_set_default_mode(cmd_info_cur_segment_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_hashes_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iT", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_hashes_handler, &cmd_info_hashes_help);
	rz_warn_if_fail(cmd_info_hashes_cd);

	RzCmdDesc *cmd_info_versions_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iV", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_versions_handler, &cmd_info_versions_help);
	rz_warn_if_fail(cmd_info_versions_cd);

	RzCmdDesc *cmd_info_trycatch_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iw", RZ_OUTPUT_MODE_RIZIN, rz_cmd_info_trycatch_handler, &cmd_info_trycatch_help);
	rz_warn_if_fail(cmd_info_trycatch_cd);
	rz_cmd_desc_set_default_mode(cmd_info_trycatch_cd, RZ_OUTPUT_MODE_RIZIN);

	RzCmdDesc *cmd_info_sourcelines_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ix", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_sourcelines_handler, &cmd_info_sourcelines_help);
	rz_warn_if_fail(cmd_info_sourcelines_cd);

	RzCmdDesc *cmd_info_sourcelines_here_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ix.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_sourcelines_here_handler, &cmd_info_sourcelines_here_help);
	rz_warn_if_fail(cmd_info_sourcelines_here_cd);

	RzCmdDesc *cmd_info_source_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "ixf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_info_source_handler, &cmd_info_source_help);
	rz_warn_if_fail(cmd_info_source_cd);

	RzCmdDesc *iz_cd = rz_cmd_desc_group_state_new(core->rcmd, i_cd, "iz", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_info_strings_handler, &cmd_info_strings_help, &iz_help);
	rz_warn_if_fail(iz_cd);
	rz_cmd_desc_set_default_mode(iz_cd, RZ_OUTPUT_MODE_TABLE);
	RzCmdDesc *cmd_info_whole_strings_cd = rz_cmd_desc_argv_state_new(core->rcmd, iz_cd, "izz", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_info_whole_strings_handler, &cmd_info_whole_strings_help);
	rz_warn_if_fail(cmd_info_whole_strings_cd);
	rz_cmd_desc_set_default_mode(cmd_info_whole_strings_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_purge_string_cd = rz_cmd_desc_argv_new(core->rcmd, iz_cd, "iz-", rz_cmd_info_purge_string_handler, &cmd_info_purge_string_help);
	rz_warn_if_fail(cmd_info_purge_string_cd);

	RzCmdDesc *cmd_info_xrefs_strings_cd = rz_cmd_desc_argv_state_new(core->rcmd, iz_cd, "izx", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_info_xrefs_strings_handler, &cmd_info_xrefs_strings_help);
	rz_warn_if_fail(cmd_info_xrefs_strings_cd);
	rz_cmd_desc_set_default_mode(cmd_info_xrefs_strings_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *cmd_info_guess_size_cd = rz_cmd_desc_argv_state_new(core->rcmd, i_cd, "iZ", RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_cmd_info_guess_size_handler, &cmd_info_guess_size_help);
	rz_warn_if_fail(cmd_info_guess_size_cd);

	RzCmdDesc *k_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "k", rz_query_sdb_get_set_handler, &query_sdb_get_set_help, &k_help);
	rz_warn_if_fail(k_cd);
	RzCmdDesc *query_dump_json_cd = rz_cmd_desc_argv_new(core->rcmd, k_cd, "kj", rz_query_dump_json_handler, &query_dump_json_help);
	rz_warn_if_fail(query_dump_json_cd);

	RzCmdDesc *query_shell_sdb_cd = rz_cmd_desc_argv_new(core->rcmd, k_cd, "ks", rz_query_shell_sdb_handler, &query_shell_sdb_help);
	rz_warn_if_fail(query_shell_sdb_cd);

	RzCmdDesc *sdb_namespace_dump_cd = rz_cmd_desc_argv_new(core->rcmd, k_cd, "kd", rz_sdb_namespace_dump_handler, &sdb_namespace_dump_help);
	rz_warn_if_fail(sdb_namespace_dump_cd);

	RzCmdDesc *sdb_namespace_load_cd = rz_cmd_desc_argv_new(core->rcmd, k_cd, "ko", rz_sdb_namespace_load_handler, &sdb_namespace_load_help);
	rz_warn_if_fail(sdb_namespace_load_cd);

	RzCmdDesc *L_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "L", rz_plugins_load_handler, &plugins_load_help, &L_help);
	rz_warn_if_fail(L_cd);
	RzCmdDesc *plugins_unload_cd = rz_cmd_desc_argv_new(core->rcmd, L_cd, "L-", rz_plugins_unload_handler, &plugins_unload_help);
	rz_warn_if_fail(plugins_unload_cd);

	RzCmdDesc *plugins_lang_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Ll", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_lang_print_handler, &plugins_lang_print_help);
	rz_warn_if_fail(plugins_lang_print_cd);

	RzCmdDesc *La_cd = rz_cmd_desc_group_state_new(core->rcmd, L_cd, "La", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_asm_print_handler, &plugins_asm_print_help, &La_help);
	rz_warn_if_fail(La_cd);
	RzCmdDesc *plugins_asm_cpu_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, La_cd, "Lac", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_asm_cpu_print_handler, &plugins_asm_cpu_print_help);
	rz_warn_if_fail(plugins_asm_cpu_print_cd);

	RzCmdDesc *plugins_core_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lc", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_core_print_handler, &plugins_core_print_help);
	rz_warn_if_fail(plugins_core_print_cd);

	RzCmdDesc *plugins_crypto_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "LC", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_crypto_print_handler, &plugins_crypto_print_help);
	rz_warn_if_fail(plugins_crypto_print_cd);

	RzCmdDesc *plugins_debug_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Ld", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_debug_print_handler, &plugins_debug_print_help);
	rz_warn_if_fail(plugins_debug_print_cd);

	RzCmdDesc *plugins_hash_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lh", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_hash_print_handler, &plugins_hash_print_help);
	rz_warn_if_fail(plugins_hash_print_cd);

	RzCmdDesc *plugins_bin_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Li", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_bin_print_handler, &plugins_bin_print_help);
	rz_warn_if_fail(plugins_bin_print_cd);

	RzCmdDesc *plugins_io_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lo", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_io_print_handler, &plugins_io_print_help);
	rz_warn_if_fail(plugins_io_print_cd);

	RzCmdDesc *plugins_parser_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lp", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_parser_print_handler, &plugins_parser_print_help);
	rz_warn_if_fail(plugins_parser_print_cd);

	RzCmdDesc *plugins_demanglers_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "LD", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_demanglers_print_handler, &plugins_demanglers_print_help);
	rz_warn_if_fail(plugins_demanglers_print_cd);

	RzCmdDesc *o_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "o", rz_open_handler, &open_help, &o_help);
	rz_warn_if_fail(o_cd);
	RzCmdDesc *open_write_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "o+", rz_open_write_handler, &open_write_help);
	rz_warn_if_fail(open_write_cd);

	RzCmdDesc *open_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, o_cd, "ol", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_open_list_handler, &open_list_help);
	rz_warn_if_fail(open_list_cd);

	RzCmdDesc *open_show_current_cd = rz_cmd_desc_argv_state_new(core->rcmd, o_cd, "ol.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_open_show_current_handler, &open_show_current_help);
	rz_warn_if_fail(open_show_current_cd);

	RzCmdDesc *open_close_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "o-", rz_open_close_handler, &open_close_help);
	rz_warn_if_fail(open_close_cd);

	RzCmdDesc *open_close_all_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "o--", rz_open_close_all_handler, &open_close_all_help);
	rz_warn_if_fail(open_close_all_cd);

	RzCmdDesc *open_core_file_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "oc", rz_open_core_file_handler, &open_core_file_help);
	rz_warn_if_fail(open_core_file_cd);

	RzCmdDesc *open_malloc_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "oC", rz_open_malloc_handler, &open_malloc_help);
	rz_warn_if_fail(open_malloc_cd);

	RzCmdDesc *on_cd = rz_cmd_desc_group_new(core->rcmd, o_cd, "on", rz_open_nobin_handler, &open_nobin_help, &on_help);
	rz_warn_if_fail(on_cd);
	RzCmdDesc *open_nobin_write_cd = rz_cmd_desc_argv_new(core->rcmd, on_cd, "on+", rz_open_nobin_write_handler, &open_nobin_write_help);
	rz_warn_if_fail(open_nobin_write_cd);

	RzCmdDesc *oo_cd = rz_cmd_desc_group_new(core->rcmd, o_cd, "oo", rz_reopen_handler, &reopen_help, &oo_help);
	rz_warn_if_fail(oo_cd);
	RzCmdDesc *reopen_write_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oo+", rz_reopen_write_handler, &reopen_write_help);
	rz_warn_if_fail(reopen_write_cd);

	RzCmdDesc *reopen_binary_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oob", rz_reopen_binary_handler, &reopen_binary_help);
	rz_warn_if_fail(reopen_binary_cd);

	RzCmdDesc *reopen_core_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "ooc", rz_reopen_core_handler, &reopen_core_help);
	rz_warn_if_fail(reopen_core_cd);

	RzCmdDesc *ood_cd = rz_cmd_desc_group_new(core->rcmd, oo_cd, "ood", rz_reopen_debug_handler, &reopen_debug_help, &ood_help);
	rz_warn_if_fail(ood_cd);
	RzCmdDesc *reopen_debug_file_cd = rz_cmd_desc_argv_new(core->rcmd, ood_cd, "oodf", rz_reopen_debug_file_handler, &reopen_debug_file_help);
	rz_warn_if_fail(reopen_debug_file_cd);

	RzCmdDesc *reopen_debug_rzrun_cd = rz_cmd_desc_argv_new(core->rcmd, ood_cd, "oodr", rz_reopen_debug_rzrun_handler, &reopen_debug_rzrun_help);
	rz_warn_if_fail(reopen_debug_rzrun_cd);

	RzCmdDesc *reopen_malloc_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oom", rz_reopen_malloc_handler, &reopen_malloc_help);
	rz_warn_if_fail(reopen_malloc_cd);

	RzCmdDesc *reopen_nobin_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oon", rz_reopen_nobin_handler, &reopen_nobin_help);
	rz_warn_if_fail(reopen_nobin_cd);

	RzCmdDesc *reopen_nobin_write_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oon+", rz_reopen_nobin_write_handler, &reopen_nobin_write_help);
	rz_warn_if_fail(reopen_nobin_write_cd);

	RzCmdDesc *reopen_nobin_headers_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oonn", rz_reopen_nobin_headers_handler, &reopen_nobin_headers_help);
	rz_warn_if_fail(reopen_nobin_headers_cd);

	RzCmdDesc *reopen_nobin_write_headers_cd = rz_cmd_desc_argv_new(core->rcmd, oo_cd, "oonn+", rz_reopen_nobin_write_headers_handler, &reopen_nobin_write_headers_help);
	rz_warn_if_fail(reopen_nobin_write_headers_cd);

	RzCmdDesc *open_plugins_cd = rz_cmd_desc_argv_state_new(core->rcmd, o_cd, "oL", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_plugins_io_print_handler, &open_plugins_help);
	rz_warn_if_fail(open_plugins_cd);
	rz_cmd_desc_set_default_mode(open_plugins_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *open_list_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "o=", rz_open_list_ascii_handler, &open_list_ascii_help);
	rz_warn_if_fail(open_list_ascii_cd);

	RzCmdDesc *open_arch_bits_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "oa", rz_open_arch_bits_handler, &open_arch_bits_help);
	rz_warn_if_fail(open_arch_bits_cd);

	RzCmdDesc *ob_cd = rz_cmd_desc_group_new(core->rcmd, o_cd, "ob", rz_open_binary_select_id_handler, &open_binary_select_id_help, &ob_help);
	rz_warn_if_fail(ob_cd);
	RzCmdDesc *open_binary_select_fd_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "obo", rz_open_binary_select_fd_handler, &open_binary_select_fd_help);
	rz_warn_if_fail(open_binary_select_fd_cd);

	RzCmdDesc *open_binary_del_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "ob-", rz_open_binary_del_handler, &open_binary_del_help);
	rz_warn_if_fail(open_binary_del_cd);

	RzCmdDesc *open_binary_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "ob-*", rz_open_binary_del_all_handler, &open_binary_del_all_help);
	rz_warn_if_fail(open_binary_del_all_cd);

	RzCmdDesc *open_binary_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ob_cd, "obl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_open_binary_list_handler, &open_binary_list_help);
	rz_warn_if_fail(open_binary_list_cd);

	RzCmdDesc *open_binary_list_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "obl=", rz_open_binary_list_ascii_handler, &open_binary_list_ascii_help);
	rz_warn_if_fail(open_binary_list_ascii_cd);

	RzCmdDesc *open_binary_show_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "ob.", rz_open_binary_show_handler, &open_binary_show_help);
	rz_warn_if_fail(open_binary_show_cd);

	RzCmdDesc *open_binary_add_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "oba", rz_open_binary_add_handler, &open_binary_add_help);
	rz_warn_if_fail(open_binary_add_cd);

	RzCmdDesc *open_binary_file_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "obf", rz_open_binary_file_handler, &open_binary_file_help);
	rz_warn_if_fail(open_binary_file_cd);

	RzCmdDesc *open_binary_reload_cd = rz_cmd_desc_argv_new(core->rcmd, ob_cd, "obR", rz_open_binary_reload_handler, &open_binary_reload_help);
	rz_warn_if_fail(open_binary_reload_cd);

	RzCmdDesc *open_use_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "ou", rz_open_use_handler, &open_use_help);
	rz_warn_if_fail(open_use_cd);

	RzCmdDesc *op_cd = rz_cmd_desc_group_new(core->rcmd, o_cd, "op", rz_open_prioritize_handler, &open_prioritize_help, &op_help);
	rz_warn_if_fail(op_cd);
	RzCmdDesc *open_prioritize_next_cd = rz_cmd_desc_argv_new(core->rcmd, op_cd, "opn", rz_open_prioritize_next_handler, &open_prioritize_next_help);
	rz_warn_if_fail(open_prioritize_next_cd);

	RzCmdDesc *open_prioritize_prev_cd = rz_cmd_desc_argv_new(core->rcmd, op_cd, "opp", rz_open_prioritize_prev_handler, &open_prioritize_prev_help);
	rz_warn_if_fail(open_prioritize_prev_cd);

	RzCmdDesc *open_prioritize_next_rotate_cd = rz_cmd_desc_argv_new(core->rcmd, op_cd, "opr", rz_open_prioritize_next_rotate_handler, &open_prioritize_next_rotate_help);
	rz_warn_if_fail(open_prioritize_next_rotate_cd);

	RzCmdDesc *om_cd = rz_cmd_desc_group_new(core->rcmd, o_cd, "om", rz_open_maps_map_handler, &open_maps_map_help, &om_help);
	rz_warn_if_fail(om_cd);
	RzCmdDesc *open_maps_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, om_cd, "oml", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_open_maps_list_handler, &open_maps_list_help);
	rz_warn_if_fail(open_maps_list_cd);

	RzCmdDesc *open_maps_list_cur_cd = rz_cmd_desc_argv_state_new(core->rcmd, om_cd, "oml.", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_open_maps_list_cur_handler, &open_maps_list_cur_help);
	rz_warn_if_fail(open_maps_list_cur_cd);

	RzCmdDesc *open_maps_list_ascii_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "oml=", rz_open_maps_list_ascii_handler, &open_maps_list_ascii_help);
	rz_warn_if_fail(open_maps_list_ascii_cd);

	RzCmdDesc *open_maps_remove_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "om-", rz_open_maps_remove_handler, &open_maps_remove_help);
	rz_warn_if_fail(open_maps_remove_cd);

	RzCmdDesc *open_maps_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "om-*", rz_open_maps_remove_all_handler, &open_maps_remove_all_help);
	rz_warn_if_fail(open_maps_remove_all_cd);

	RzCmdDesc *open_maps_all_fd_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "oma", rz_open_maps_all_fd_handler, &open_maps_all_fd_help);
	rz_warn_if_fail(open_maps_all_fd_cd);

	RzCmdDesc *open_maps_relocate_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "omb", rz_open_maps_relocate_handler, &open_maps_relocate_help);
	rz_warn_if_fail(open_maps_relocate_cd);

	RzCmdDesc *open_maps_relocate_current_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "omb.", rz_open_maps_relocate_current_handler, &open_maps_relocate_current_help);
	rz_warn_if_fail(open_maps_relocate_current_cd);

	RzCmdDesc *open_maps_flags_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "omf", rz_open_maps_flags_handler, &open_maps_flags_help);
	rz_warn_if_fail(open_maps_flags_cd);

	RzCmdDesc *open_maps_flags_global_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "omfg", rz_open_maps_flags_global_handler, &open_maps_flags_global_help);
	rz_warn_if_fail(open_maps_flags_global_cd);

	RzCmdDesc *open_maps_map_fd_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "omm", rz_open_maps_map_fd_handler, &open_maps_map_fd_help);
	rz_warn_if_fail(open_maps_map_fd_cd);

	RzCmdDesc *omn_cd = rz_cmd_desc_group_new(core->rcmd, om_cd, "omn", rz_open_maps_name_handler, &open_maps_name_help, &omn_help);
	rz_warn_if_fail(omn_cd);
	RzCmdDesc *open_maps_name_del_cd = rz_cmd_desc_argv_new(core->rcmd, omn_cd, "omn-", rz_open_maps_name_del_handler, &open_maps_name_del_help);
	rz_warn_if_fail(open_maps_name_del_cd);

	RzCmdDesc *open_maps_name_id_cd = rz_cmd_desc_argv_new(core->rcmd, omn_cd, "omni", rz_open_maps_name_id_handler, &open_maps_name_id_help);
	rz_warn_if_fail(open_maps_name_id_cd);

	RzCmdDesc *open_maps_name_id_del_cd = rz_cmd_desc_argv_new(core->rcmd, omn_cd, "omni-", rz_open_maps_name_id_del_handler, &open_maps_name_id_del_help);
	rz_warn_if_fail(open_maps_name_id_del_cd);

	RzCmdDesc *open_maps_resize_cd = rz_cmd_desc_argv_new(core->rcmd, om_cd, "omr", rz_open_maps_resize_handler, &open_maps_resize_help);
	rz_warn_if_fail(open_maps_resize_cd);

	RzCmdDesc *omp_cd = rz_cmd_desc_group_new(core->rcmd, om_cd, "omp", rz_open_maps_prioritize_handler, &open_maps_prioritize_help, &omp_help);
	rz_warn_if_fail(omp_cd);
	RzCmdDesc *open_maps_prioritize_binid_cd = rz_cmd_desc_argv_new(core->rcmd, omp_cd, "ompb", rz_open_maps_prioritize_binid_handler, &open_maps_prioritize_binid_help);
	rz_warn_if_fail(open_maps_prioritize_binid_cd);

	RzCmdDesc *open_maps_deprioritize_cd = rz_cmd_desc_argv_new(core->rcmd, omp_cd, "ompd", rz_open_maps_deprioritize_handler, &open_maps_deprioritize_help);
	rz_warn_if_fail(open_maps_deprioritize_cd);

	RzCmdDesc *open_maps_prioritize_fd_cd = rz_cmd_desc_argv_new(core->rcmd, omp_cd, "ompf", rz_open_maps_prioritize_fd_handler, &open_maps_prioritize_fd_help);
	rz_warn_if_fail(open_maps_prioritize_fd_cd);

	RzCmdDesc *open_exchange_cd = rz_cmd_desc_argv_new(core->rcmd, o_cd, "ox", rz_open_exchange_handler, &open_exchange_help);
	rz_warn_if_fail(open_exchange_cd);

	RzCmdDesc *cmd_print_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "p", NULL, NULL, &cmd_print_help);
	rz_warn_if_fail(cmd_print_cd);
	RzCmdDesc *cmd_print_2bpp_tiles_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_cd, "p2", rz_cmd_print_2bpp_tiles_handler, &cmd_print_2bpp_tiles_help);
	rz_warn_if_fail(cmd_print_2bpp_tiles_cd);

	RzCmdDesc *p8_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_cd, "p8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_print_8bit_hexpair_handler, &cmd_print_8bit_hexpair_help, &p8_help);
	rz_warn_if_fail(p8_cd);
	RzCmdDesc *cmd_print_8bit_hexpair_function_cd = rz_cmd_desc_argv_new(core->rcmd, p8_cd, "p8f", rz_cmd_print_8bit_hexpair_function_handler, &cmd_print_8bit_hexpair_function_help);
	rz_warn_if_fail(cmd_print_8bit_hexpair_function_cd);

	RzCmdDesc *print_bitstream_cd = rz_cmd_desc_argv_modes_new(core->rcmd, cmd_print_cd, "pb", RZ_OUTPUT_MODE_STANDARD, rz_print_bitstream_handler, &print_bitstream_help);
	rz_warn_if_fail(print_bitstream_cd);

	RzCmdDesc *print_byte_bitstream_cd = rz_cmd_desc_argv_modes_new(core->rcmd, cmd_print_cd, "pB", RZ_OUTPUT_MODE_STANDARD, rz_print_byte_bitstream_handler, &print_byte_bitstream_help);
	rz_warn_if_fail(print_byte_bitstream_cd);

	RzCmdDesc *pa_cd = rz_cmd_desc_group_modes_new(core->rcmd, cmd_print_cd, "pa", RZ_OUTPUT_MODE_STANDARD, rz_hex_of_assembly_handler, &hex_of_assembly_help, &pa_help);
	rz_warn_if_fail(pa_cd);
	RzCmdDesc *esil_of_assembly_cd = rz_cmd_desc_argv_modes_new(core->rcmd, pa_cd, "pae", RZ_OUTPUT_MODE_STANDARD, rz_esil_of_assembly_handler, &esil_of_assembly_help);
	rz_warn_if_fail(esil_of_assembly_cd);

	RzCmdDesc *assembly_of_hex_cd = rz_cmd_desc_argv_modes_new(core->rcmd, pa_cd, "pad", RZ_OUTPUT_MODE_STANDARD, rz_assembly_of_hex_handler, &assembly_of_hex_help);
	rz_warn_if_fail(assembly_of_hex_cd);

	RzCmdDesc *esil_of_hex_cd = rz_cmd_desc_argv_modes_new(core->rcmd, pa_cd, "pade", RZ_OUTPUT_MODE_STANDARD, rz_esil_of_hex_handler, &esil_of_hex_help);
	rz_warn_if_fail(esil_of_hex_cd);

	RzCmdDesc *cmd_print_byte_array_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pc", rz_cmd_print_byte_array_c_cpp_bytes_handler, &cmd_print_byte_array_c_cpp_bytes_help, &cmd_print_byte_array_help);
	rz_warn_if_fail(cmd_print_byte_array_cd);
	RzCmdDesc *cmd_print_byte_array_c_cpp_half_word_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pch", rz_cmd_print_byte_array_c_cpp_half_word_handler, &cmd_print_byte_array_c_cpp_half_word_help);
	rz_warn_if_fail(cmd_print_byte_array_c_cpp_half_word_cd);

	RzCmdDesc *cmd_print_byte_array_c_cpp_word_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcw", rz_cmd_print_byte_array_c_cpp_word_handler, &cmd_print_byte_array_c_cpp_word_help);
	rz_warn_if_fail(cmd_print_byte_array_c_cpp_word_cd);

	RzCmdDesc *cmd_print_byte_array_c_cpp_double_word_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcd", rz_cmd_print_byte_array_c_cpp_double_word_handler, &cmd_print_byte_array_c_cpp_double_word_help);
	rz_warn_if_fail(cmd_print_byte_array_c_cpp_double_word_cd);

	RzCmdDesc *cmd_print_byte_array_asm_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pca", rz_cmd_print_byte_array_asm_handler, &cmd_print_byte_array_asm_help);
	rz_warn_if_fail(cmd_print_byte_array_asm_cd);

	RzCmdDesc *cmd_print_byte_array_with_inst_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcA", rz_cmd_print_byte_array_with_inst_handler, &cmd_print_byte_array_with_inst_help);
	rz_warn_if_fail(cmd_print_byte_array_with_inst_cd);

	RzCmdDesc *cmd_print_byte_array_bash_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcb", rz_cmd_print_byte_array_bash_handler, &cmd_print_byte_array_bash_help);
	rz_warn_if_fail(cmd_print_byte_array_bash_cd);

	RzCmdDesc *cmd_print_byte_array_golang_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcg", rz_cmd_print_byte_array_golang_handler, &cmd_print_byte_array_golang_help);
	rz_warn_if_fail(cmd_print_byte_array_golang_cd);

	RzCmdDesc *cmd_print_byte_array_java_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcJ", rz_cmd_print_byte_array_java_handler, &cmd_print_byte_array_java_help);
	rz_warn_if_fail(cmd_print_byte_array_java_cd);

	RzCmdDesc *cmd_print_byte_array_json_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcj", rz_cmd_print_byte_array_json_handler, &cmd_print_byte_array_json_help);
	rz_warn_if_fail(cmd_print_byte_array_json_cd);

	RzCmdDesc *cmd_print_byte_array_kotlin_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pck", rz_cmd_print_byte_array_kotlin_handler, &cmd_print_byte_array_kotlin_help);
	rz_warn_if_fail(cmd_print_byte_array_kotlin_cd);

	RzCmdDesc *cmd_print_byte_array_nodejs_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcn", rz_cmd_print_byte_array_nodejs_handler, &cmd_print_byte_array_nodejs_help);
	rz_warn_if_fail(cmd_print_byte_array_nodejs_cd);

	RzCmdDesc *cmd_print_byte_array_objc_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pco", rz_cmd_print_byte_array_objc_handler, &cmd_print_byte_array_objc_help);
	rz_warn_if_fail(cmd_print_byte_array_objc_cd);

	RzCmdDesc *cmd_print_byte_array_python_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcp", rz_cmd_print_byte_array_python_handler, &cmd_print_byte_array_python_help);
	rz_warn_if_fail(cmd_print_byte_array_python_cd);

	RzCmdDesc *cmd_print_byte_array_rust_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcr", rz_cmd_print_byte_array_rust_handler, &cmd_print_byte_array_rust_help);
	rz_warn_if_fail(cmd_print_byte_array_rust_cd);

	RzCmdDesc *cmd_print_byte_array_swift_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcs", rz_cmd_print_byte_array_swift_handler, &cmd_print_byte_array_swift_help);
	rz_warn_if_fail(cmd_print_byte_array_swift_cd);

	RzCmdDesc *cmd_print_byte_array_yara_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pcy", rz_cmd_print_byte_array_yara_handler, &cmd_print_byte_array_yara_help);
	rz_warn_if_fail(cmd_print_byte_array_yara_cd);

	RzCmdDesc *cmd_print_byte_array_rizin_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_byte_array_cd, "pc*", rz_cmd_print_byte_array_rizin_handler, &cmd_print_byte_array_rizin_help);
	rz_warn_if_fail(cmd_print_byte_array_rizin_cd);

	RzCmdDesc *cmd_disassembly_n_bytes_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_cd, "pD", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_cmd_disassembly_n_bytes_handler, &cmd_disassembly_n_bytes_help);
	rz_warn_if_fail(cmd_disassembly_n_bytes_cd);

	RzCmdDesc *pC_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pC", NULL, NULL, &pC_help);
	rz_warn_if_fail(pC_cd);
	RzCmdDesc *print_columns_disassembly_cd = rz_cmd_desc_argv_new(core->rcmd, pC_cd, "pCd", rz_print_columns_disassembly_handler, &print_columns_disassembly_help);
	rz_warn_if_fail(print_columns_disassembly_cd);

	RzCmdDesc *print_columns_debug_cd = rz_cmd_desc_argv_new(core->rcmd, pC_cd, "pCD", rz_print_columns_debug_handler, &print_columns_debug_help);
	rz_warn_if_fail(print_columns_debug_cd);

	RzCmdDesc *print_columns_hex_annotated_cd = rz_cmd_desc_argv_new(core->rcmd, pC_cd, "pCa", rz_print_columns_hex_annotated_handler, &print_columns_hex_annotated_help);
	rz_warn_if_fail(print_columns_hex_annotated_cd);

	RzCmdDesc *print_columns_hex_op_colored_cd = rz_cmd_desc_argv_new(core->rcmd, pC_cd, "pCA", rz_print_columns_hex_op_colored_handler, &print_columns_hex_op_colored_help);
	rz_warn_if_fail(print_columns_hex_op_colored_cd);

	RzCmdDesc *print_columns_hex_cd = rz_cmd_desc_argv_new(core->rcmd, pC_cd, "pCx", rz_print_columns_hex_handler, &print_columns_hex_help);
	rz_warn_if_fail(print_columns_hex_cd);

	RzCmdDesc *print_columns_hex_words_cd = rz_cmd_desc_argv_new(core->rcmd, pC_cd, "pCw", rz_print_columns_hex_words_handler, &print_columns_hex_words_help);
	rz_warn_if_fail(print_columns_hex_words_cd);

	RzCmdDesc *cmd_print_disassembly_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_cd, "pd", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_cmd_disassembly_n_instructions_handler, &cmd_disassembly_n_instructions_help, &cmd_print_disassembly_help);
	rz_warn_if_fail(cmd_print_disassembly_cd);
	RzCmdDesc *cmd_disassembly_all_opcodes_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_disassembly_cd, "pda", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_cmd_disassembly_all_possible_opcodes_handler, &cmd_disassembly_all_possible_opcodes_help, &cmd_disassembly_all_opcodes_help);
	rz_warn_if_fail(cmd_disassembly_all_opcodes_cd);
	RzCmdDesc *cmd_disassembly_all_possible_opcodes_treeview_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_disassembly_all_opcodes_cd, "pda=", rz_cmd_disassembly_all_possible_opcodes_treeview_handler, &cmd_disassembly_all_possible_opcodes_treeview_help);
	rz_warn_if_fail(cmd_disassembly_all_possible_opcodes_treeview_cd);

	RzCmdDesc *cmd_disasm_basic_block_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_disassembly_cd, "pdb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_disassembly_basic_block_handler, &cmd_disassembly_basic_block_help, &cmd_disasm_basic_block_help);
	rz_warn_if_fail(cmd_disasm_basic_block_cd);
	RzCmdDesc *cmd_disassembly_basic_block_as_text_json_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_disasm_basic_block_cd, "pdbJ", RZ_OUTPUT_MODE_STANDARD, rz_cmd_disassembly_basic_block_as_text_json_handler, &cmd_disassembly_basic_block_as_text_json_help);
	rz_warn_if_fail(cmd_disassembly_basic_block_as_text_json_cd);

	RzCmdDesc *cmd_comments_in_n_instructions_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_disassembly_cd, "pdC", rz_cmd_comments_in_n_instructions_handler, &cmd_comments_in_n_instructions_help);
	rz_warn_if_fail(cmd_comments_in_n_instructions_cd);

	RzCmdDesc *cmd_disassembly_n_instructions_with_flow_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_disassembly_cd, "pde", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_QUIETEST, rz_cmd_disassembly_n_instructions_with_flow_handler, &cmd_disassembly_n_instructions_with_flow_help);
	rz_warn_if_fail(cmd_disassembly_n_instructions_with_flow_cd);

	RzCmdDesc *cmd_disasm_func_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_disassembly_cd, "pdf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_disassembly_function_handler, &cmd_disassembly_function_help, &cmd_disasm_func_help);
	rz_warn_if_fail(cmd_disasm_func_cd);
	RzCmdDesc *cmd_disassembly_function_summary_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_disasm_func_cd, "pdfs", rz_cmd_disassembly_function_summary_handler, &cmd_disassembly_function_summary_help);
	rz_warn_if_fail(cmd_disassembly_function_summary_cd);

	RzCmdDesc *cmd_disassembly_n_instrs_as_text_json_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_disassembly_cd, "pdJ", RZ_OUTPUT_MODE_STANDARD, rz_cmd_disassembly_n_instrs_as_text_json_handler, &cmd_disassembly_n_instrs_as_text_json_help);
	rz_warn_if_fail(cmd_disassembly_n_instrs_as_text_json_cd);

	RzCmdDesc *cmd_disassembly_all_methods_class_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_disassembly_cd, "pdk", rz_cmd_disassembly_all_methods_class_handler, &cmd_disassembly_all_methods_class_help);
	rz_warn_if_fail(cmd_disassembly_all_methods_class_cd);

	RzCmdDesc *cmd_sizes_of_n_instructions_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_disassembly_cd, "pdl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_sizes_of_n_instructions_handler, &cmd_sizes_of_n_instructions_help);
	rz_warn_if_fail(cmd_sizes_of_n_instructions_cd);

	RzCmdDesc *cmd_disassemble_ropchain_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_disassembly_cd, "pdp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_cmd_disassemble_ropchain_handler, &cmd_disassemble_ropchain_help);
	rz_warn_if_fail(cmd_disassemble_ropchain_cd);

	RzCmdDesc *cmd_disassemble_recursive_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_disassembly_cd, "pdr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_disassemble_recursively_handler, &cmd_disassemble_recursively_help, &cmd_disassemble_recursive_help);
	rz_warn_if_fail(cmd_disassemble_recursive_cd);
	RzCmdDesc *cmd_disassemble_recursively_from_current_block_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_disassemble_recursive_cd, "pdr.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_disassemble_recursively_from_current_block_handler, &cmd_disassemble_recursively_from_current_block_help);
	rz_warn_if_fail(cmd_disassemble_recursively_from_current_block_cd);

	RzCmdDesc *cmd_disassemble_recursively_no_function_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_disassembly_cd, "pdR", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_cmd_disassemble_recursively_no_function_handler, &cmd_disassemble_recursively_no_function_help);
	rz_warn_if_fail(cmd_disassemble_recursively_no_function_cd);

	RzCmdDesc *cmd_disassemble_summarize_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_disassembly_cd, "pds", rz_cmd_disassemble_summarize_n_bytes_handler, &cmd_disassemble_summarize_n_bytes_help, &cmd_disassemble_summarize_help);
	rz_warn_if_fail(cmd_disassemble_summarize_cd);
	RzCmdDesc *cmd_disassemble_summarize_function_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_disassemble_summarize_cd, "pdsf", rz_cmd_disassemble_summarize_function_handler, &cmd_disassemble_summarize_function_help);
	rz_warn_if_fail(cmd_disassemble_summarize_function_cd);

	RzCmdDesc *cmd_disassemble_summarize_block_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_disassemble_summarize_cd, "pdsb", rz_cmd_disassemble_summarize_block_handler, &cmd_disassemble_summarize_block_help);
	rz_warn_if_fail(cmd_disassemble_summarize_block_cd);

	RzCmdDesc *pf_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_cd, "pf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET, rz_cmd_print_format_handler, &cmd_print_format_help, &pf_help);
	rz_warn_if_fail(pf_cd);
	RzCmdDesc *cmd_print_format_delete_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pf-", rz_cmd_print_format_delete_handler, &cmd_print_format_delete_help);
	rz_warn_if_fail(cmd_print_format_delete_cd);

	RzCmdDesc *cmd_print_format_delete_all_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pf-*", rz_cmd_print_format_delete_all_handler, &cmd_print_format_delete_all_help);
	rz_warn_if_fail(cmd_print_format_delete_all_cd);

	RzCmdDesc *cmd_print_format_c_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfc", rz_cmd_print_format_c_handler, &cmd_print_format_c_help);
	rz_warn_if_fail(cmd_print_format_c_cd);

	RzCmdDesc *cmd_print_format_dot_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfd", rz_cmd_print_format_dot_handler, &cmd_print_format_dot_help);
	rz_warn_if_fail(cmd_print_format_dot_cd);

	RzCmdDesc *cmd_print_format_named_dot_cd = rz_cmd_desc_argv_state_new(core->rcmd, pf_cd, "pf.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET, rz_cmd_print_format_named_dot_handler, &cmd_print_format_named_dot_help);
	rz_warn_if_fail(cmd_print_format_named_dot_cd);

	RzCmdDesc *cmd_print_format_named_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfn", rz_cmd_print_format_named_handler, &cmd_print_format_named_help);
	rz_warn_if_fail(cmd_print_format_named_cd);

	RzCmdDesc *cmd_print_format_file_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfo", rz_cmd_print_format_file_handler, &cmd_print_format_file_help);
	rz_warn_if_fail(cmd_print_format_file_cd);

	RzCmdDesc *cmd_print_format_size_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfs", rz_cmd_print_format_size_handler, &cmd_print_format_size_help);
	rz_warn_if_fail(cmd_print_format_size_cd);

	RzCmdDesc *cmd_print_format_value_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfv", rz_cmd_print_format_value_handler, &cmd_print_format_value_help);
	rz_warn_if_fail(cmd_print_format_value_cd);

	RzCmdDesc *cmd_print_format_write_cd = rz_cmd_desc_argv_new(core->rcmd, pf_cd, "pfw", rz_cmd_print_format_write_handler, &cmd_print_format_write_help);
	rz_warn_if_fail(cmd_print_format_write_cd);

	RzCmdDesc *pF_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pF", NULL, NULL, &pF_help);
	rz_warn_if_fail(pF_cd);
	RzCmdDesc *cmd_print_asn1_cd = rz_cmd_desc_argv_modes_new(core->rcmd, pF_cd, "pFa", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET, rz_cmd_print_asn1_handler, &cmd_print_asn1_help);
	rz_warn_if_fail(cmd_print_asn1_cd);

	RzCmdDesc *cmd_print_protobuf_cd = rz_cmd_desc_group_new(core->rcmd, pF_cd, "pFb", rz_cmd_print_protobuf_standard_handler, &cmd_print_protobuf_standard_help, &cmd_print_protobuf_help);
	rz_warn_if_fail(cmd_print_protobuf_cd);
	RzCmdDesc *cmd_print_protobuf_verbose_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_protobuf_cd, "pFbv", rz_cmd_print_protobuf_verbose_handler, &cmd_print_protobuf_verbose_help);
	rz_warn_if_fail(cmd_print_protobuf_verbose_cd);

	RzCmdDesc *cmd_print_pkcs7_cd = rz_cmd_desc_argv_state_new(core->rcmd, pF_cd, "pFp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_print_pkcs7_handler, &cmd_print_pkcs7_help);
	rz_warn_if_fail(cmd_print_pkcs7_cd);

	RzCmdDesc *cmd_print_x509_cd = rz_cmd_desc_argv_state_new(core->rcmd, pF_cd, "pFx", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_print_x509_handler, &cmd_print_x509_help);
	rz_warn_if_fail(cmd_print_x509_cd);

	RzCmdDesc *cmd_print_axml_cd = rz_cmd_desc_argv_new(core->rcmd, pF_cd, "pFA", rz_cmd_print_axml_handler, &cmd_print_axml_help);
	rz_warn_if_fail(cmd_print_axml_cd);

	RzCmdDesc *cmd_print_gadget_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pg", rz_cmd_print_gadget_add_handler, &cmd_print_gadget_add_help, &cmd_print_gadget_help);
	rz_warn_if_fail(cmd_print_gadget_cd);
	RzCmdDesc *cmd_print_gadget_print_as_rizin_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_gadget_cd, "pg*", rz_cmd_print_gadget_print_as_rizin_handler, &cmd_print_gadget_print_as_rizin_help);
	rz_warn_if_fail(cmd_print_gadget_print_as_rizin_cd);

	RzCmdDesc *cmd_print_gadget_remove_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_gadget_cd, "pg-*", rz_cmd_print_gadget_remove_handler, &cmd_print_gadget_remove_help);
	rz_warn_if_fail(cmd_print_gadget_remove_cd);

	RzCmdDesc *cmd_print_gadget_move_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_gadget_cd, "pgm", rz_cmd_print_gadget_move_handler, &cmd_print_gadget_move_help);
	rz_warn_if_fail(cmd_print_gadget_move_cd);

	RzCmdDesc *cmd_print_default_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "ph", rz_cmd_print_hash_cfg_handler, &cmd_print_hash_cfg_help, &cmd_print_default_help);
	rz_warn_if_fail(cmd_print_default_cd);
	RzCmdDesc *cmd_print_hash_cfg_algo_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_print_default_cd, "phl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_print_hash_cfg_algo_list_handler, &cmd_print_hash_cfg_algo_list_help);
	rz_warn_if_fail(cmd_print_hash_cfg_algo_list_cd);

	RzCmdDesc *pi_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pi", rz_print_instr_handler, &print_instr_help, &pi_help);
	rz_warn_if_fail(pi_cd);
	RzCmdDesc *print_instr_opcodes_cd = rz_cmd_desc_argv_new(core->rcmd, pi_cd, "pia", rz_print_instr_opcodes_handler, &print_instr_opcodes_help);
	rz_warn_if_fail(print_instr_opcodes_cd);

	RzCmdDesc *print_instr_block_cd = rz_cmd_desc_argv_new(core->rcmd, pi_cd, "pib", rz_print_instr_block_handler, &print_instr_block_help);
	rz_warn_if_fail(print_instr_block_cd);

	RzCmdDesc *print_instr_esil_cd = rz_cmd_desc_argv_new(core->rcmd, pi_cd, "pie", rz_print_instr_esil_handler, &print_instr_esil_help);
	rz_warn_if_fail(print_instr_esil_cd);

	RzCmdDesc *print_instr_function_cd = rz_cmd_desc_argv_state_new(core->rcmd, pi_cd, "pif", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_instr_function_handler, &print_instr_function_help);
	rz_warn_if_fail(print_instr_function_cd);

	RzCmdDesc *print_calls_function_cd = rz_cmd_desc_argv_state_new(core->rcmd, pi_cd, "pifc", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_calls_function_handler, &print_calls_function_help);
	rz_warn_if_fail(print_calls_function_cd);

	RzCmdDesc *print_instr_recursive_cd = rz_cmd_desc_argv_state_new(core->rcmd, pi_cd, "pir", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_instr_recursive_handler, &print_instr_recursive_help);
	rz_warn_if_fail(print_instr_recursive_cd);

	RzCmdDesc *print_instr_recursive_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, pi_cd, "pir.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_instr_recursive_at_handler, &print_instr_recursive_at_help);
	rz_warn_if_fail(print_instr_recursive_at_cd);

	RzCmdDesc *print_instr_until_cd = rz_cmd_desc_argv_state_new(core->rcmd, pi_cd, "piu", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET, rz_print_instr_until_handler, &print_instr_until_help);
	rz_warn_if_fail(print_instr_until_cd);

	RzCmdDesc *assembly_of_hex_alias_cd = rz_cmd_desc_argv_modes_new(core->rcmd, pi_cd, "pix", RZ_OUTPUT_MODE_STANDARD, rz_assembly_of_hex_alias_handler, &assembly_of_hex_alias_help);
	rz_warn_if_fail(assembly_of_hex_alias_cd);

	RzCmdDesc *pI_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pI", rz_print_instructions_handler, &print_instructions_help, &pI_help);
	rz_warn_if_fail(pI_cd);
	RzCmdDesc *print_instructions_function_cd = rz_cmd_desc_argv_new(core->rcmd, pI_cd, "pIf", rz_print_instructions_function_handler, &print_instructions_function_help);
	rz_warn_if_fail(print_instructions_function_cd);

	RzCmdDesc *print_current_block_json_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_cd, "pj", rz_print_current_block_json_handler, &print_current_block_json_help);
	rz_warn_if_fail(print_current_block_json_cd);

	RzCmdDesc *print_function_rzil_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_cd, "plf", rz_print_function_rzil_handler, &print_function_rzil_help);
	rz_warn_if_fail(print_function_rzil_cd);

	RzCmdDesc *pp_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pp", NULL, NULL, &pp_help);
	rz_warn_if_fail(pp_cd);
	RzCmdDesc *print_pattern0_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "pp0", rz_print_pattern0_handler, &print_pattern0_help);
	rz_warn_if_fail(print_pattern0_cd);

	RzCmdDesc *print_pattern1_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "pp1", rz_print_pattern1_handler, &print_pattern1_help);
	rz_warn_if_fail(print_pattern1_cd);

	RzCmdDesc *print_pattern2_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "pp2", rz_print_pattern2_handler, &print_pattern2_help);
	rz_warn_if_fail(print_pattern2_cd);

	RzCmdDesc *print_pattern4_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "pp4", rz_print_pattern4_handler, &print_pattern4_help);
	rz_warn_if_fail(print_pattern4_cd);

	RzCmdDesc *print_pattern8_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "pp8", rz_print_pattern8_handler, &print_pattern8_help);
	rz_warn_if_fail(print_pattern8_cd);

	RzCmdDesc *print_pattern_latin_alphabet_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "ppa", rz_print_pattern_latin_alphabet_handler, &print_pattern_latin_alphabet_help);
	rz_warn_if_fail(print_pattern_latin_alphabet_cd);

	RzCmdDesc *print_pattern_debrujin_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "ppd", rz_print_pattern_debrujin_handler, &print_pattern_debrujin_help);
	rz_warn_if_fail(print_pattern_debrujin_cd);

	RzCmdDesc *print_pattern_oxff_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "ppf", rz_print_pattern_oxff_handler, &print_pattern_oxff_help);
	rz_warn_if_fail(print_pattern_oxff_cd);

	RzCmdDesc *print_pattern_num_cd = rz_cmd_desc_argv_new(core->rcmd, pp_cd, "ppn", rz_print_pattern_num_handler, &print_pattern_num_help);
	rz_warn_if_fail(print_pattern_num_cd);

	RzCmdDesc *cmd_print_timestamp_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pt", rz_cmd_print_timestamp_unix_handler, &cmd_print_timestamp_unix_help, &cmd_print_timestamp_help);
	rz_warn_if_fail(cmd_print_timestamp_cd);
	RzCmdDesc *cmd_print_timestamp_current_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_timestamp_cd, "pt.", rz_cmd_print_timestamp_current_handler, &cmd_print_timestamp_current_help);
	rz_warn_if_fail(cmd_print_timestamp_current_cd);

	RzCmdDesc *cmd_print_timestamp_dos_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_timestamp_cd, "ptd", rz_cmd_print_timestamp_dos_handler, &cmd_print_timestamp_dos_help);
	rz_warn_if_fail(cmd_print_timestamp_dos_cd);

	RzCmdDesc *cmd_print_timestamp_hfs_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_timestamp_cd, "pth", rz_cmd_print_timestamp_hfs_handler, &cmd_print_timestamp_hfs_help);
	rz_warn_if_fail(cmd_print_timestamp_hfs_cd);

	RzCmdDesc *cmd_print_timestamp_ntfs_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_timestamp_cd, "ptn", rz_cmd_print_timestamp_ntfs_handler, &cmd_print_timestamp_ntfs_help);
	rz_warn_if_fail(cmd_print_timestamp_ntfs_cd);

	RzCmdDesc *print_key_randomart_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_cd, "pk", rz_print_key_randomart_handler, &print_key_randomart_help);
	rz_warn_if_fail(print_key_randomart_cd);

	RzCmdDesc *print_key_mosaic_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_print_cd, "pK", rz_print_key_mosaic_handler, &print_key_mosaic_help);
	rz_warn_if_fail(print_key_mosaic_cd);

	RzCmdDesc *cmd_print_magic_cd = rz_cmd_desc_argv_modes_new(core->rcmd, cmd_print_cd, "pm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_print_magic_handler, &cmd_print_magic_help);
	rz_warn_if_fail(cmd_print_magic_cd);

	RzCmdDesc *po_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "po", NULL, NULL, &po_help);
	rz_warn_if_fail(po_cd);
	RzCmdDesc *print_operation_2swap_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "po2", rz_print_operation_2swap_handler, &print_operation_2swap_help);
	rz_warn_if_fail(print_operation_2swap_cd);

	RzCmdDesc *print_operation_4swap_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "po4", rz_print_operation_4swap_handler, &print_operation_4swap_help);
	rz_warn_if_fail(print_operation_4swap_cd);

	RzCmdDesc *print_operation_8swap_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "po8", rz_print_operation_8swap_handler, &print_operation_8swap_help);
	rz_warn_if_fail(print_operation_8swap_cd);

	RzCmdDesc *print_operation_add_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "poa", rz_print_operation_add_handler, &print_operation_add_help);
	rz_warn_if_fail(print_operation_add_cd);

	RzCmdDesc *print_operation_and_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "poA", rz_print_operation_and_handler, &print_operation_and_help);
	rz_warn_if_fail(print_operation_and_cd);

	RzCmdDesc *print_operation_div_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "pod", rz_print_operation_div_handler, &print_operation_div_help);
	rz_warn_if_fail(print_operation_div_cd);

	RzCmdDesc *print_operation_shl_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "pol", rz_print_operation_shl_handler, &print_operation_shl_help);
	rz_warn_if_fail(print_operation_shl_cd);

	RzCmdDesc *print_operation_mul_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "pom", rz_print_operation_mul_handler, &print_operation_mul_help);
	rz_warn_if_fail(print_operation_mul_cd);

	RzCmdDesc *print_operation_or_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "poo", rz_print_operation_or_handler, &print_operation_or_help);
	rz_warn_if_fail(print_operation_or_cd);

	RzCmdDesc *print_operation_shr_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "por", rz_print_operation_shr_handler, &print_operation_shr_help);
	rz_warn_if_fail(print_operation_shr_cd);

	RzCmdDesc *print_operation_sub_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "pos", rz_print_operation_sub_handler, &print_operation_sub_help);
	rz_warn_if_fail(print_operation_sub_cd);

	RzCmdDesc *print_operation_xor_cd = rz_cmd_desc_argv_new(core->rcmd, po_cd, "pox", rz_print_operation_xor_handler, &print_operation_xor_help);
	rz_warn_if_fail(print_operation_xor_cd);

	RzCmdDesc *pr_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pr", rz_cmd_print_raw_handler, &cmd_print_raw_help, &pr_help);
	rz_warn_if_fail(pr_cd);
	RzCmdDesc *cmd_print_raw_colors_cd = rz_cmd_desc_argv_new(core->rcmd, pr_cd, "prc", rz_cmd_print_raw_colors_handler, &cmd_print_raw_colors_help);
	rz_warn_if_fail(cmd_print_raw_colors_cd);

	RzCmdDesc *prg_cd = rz_cmd_desc_group_new(core->rcmd, pr_cd, "prg", rz_cmd_print_raw_gunzip_handler, &cmd_print_raw_gunzip_help, &prg_help);
	rz_warn_if_fail(prg_cd);
	RzCmdDesc *cmd_print_raw_gunzip_verbose_cd = rz_cmd_desc_argv_new(core->rcmd, prg_cd, "prgv", rz_cmd_print_raw_gunzip_verbose_handler, &cmd_print_raw_gunzip_verbose_help);
	rz_warn_if_fail(cmd_print_raw_gunzip_verbose_cd);

	RzCmdDesc *cmd_print_raw_printable_cd = rz_cmd_desc_argv_new(core->rcmd, pr_cd, "prx", rz_cmd_print_raw_printable_handler, &cmd_print_raw_printable_help);
	rz_warn_if_fail(cmd_print_raw_printable_cd);

	RzCmdDesc *cmd_print_raw_string_cd = rz_cmd_desc_argv_new(core->rcmd, pr_cd, "prz", rz_cmd_print_raw_string_handler, &cmd_print_raw_string_help);
	rz_warn_if_fail(cmd_print_raw_string_cd);

	RzCmdDesc *ps_cd = rz_cmd_desc_group_modes_new(core->rcmd, cmd_print_cd, "ps", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_string_handler, &print_string_help, &ps_help);
	rz_warn_if_fail(ps_cd);
	RzCmdDesc *print_string_as_libcpp_string_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "ps+", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_string_as_libcpp_string_handler, &print_string_as_libcpp_string_help);
	rz_warn_if_fail(print_string_as_libcpp_string_cd);

	RzCmdDesc *print_strings_current_block_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psb", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET, rz_print_strings_current_block_handler, &print_strings_current_block_help);
	rz_warn_if_fail(print_strings_current_block_cd);

	RzCmdDesc *print_string_c_cpp_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psc", RZ_OUTPUT_MODE_STANDARD, rz_print_string_c_cpp_handler, &print_string_c_cpp_help);
	rz_warn_if_fail(print_string_c_cpp_cd);

	RzCmdDesc *print_first_string_current_block_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psi", RZ_OUTPUT_MODE_STANDARD, rz_print_first_string_current_block_handler, &print_first_string_current_block_help);
	rz_warn_if_fail(print_first_string_current_block_cd);

	RzCmdDesc *print_pascal_string_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_pascal_string_handler, &print_pascal_string_help);
	rz_warn_if_fail(print_pascal_string_cd);

	RzCmdDesc *print_string_wrap_width_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "pss", RZ_OUTPUT_MODE_STANDARD, rz_print_string_wrap_width_handler, &print_string_wrap_width_help);
	rz_warn_if_fail(print_string_wrap_width_cd);

	RzCmdDesc *print_utf8_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psu", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_utf8_handler, &print_utf8_help);
	rz_warn_if_fail(print_utf8_cd);

	RzCmdDesc *print_utf16be_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_utf16be_handler, &print_utf16be_help);
	rz_warn_if_fail(print_utf16be_cd);

	RzCmdDesc *print_utf32be_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psM", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_utf32be_handler, &print_utf32be_help);
	rz_warn_if_fail(print_utf32be_cd);

	RzCmdDesc *print_string_escaped_newlines_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psn", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_string_escaped_newlines_handler, &print_string_escaped_newlines_help);
	rz_warn_if_fail(print_string_escaped_newlines_cd);

	RzCmdDesc *print_utf16le_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psw", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_utf16le_handler, &print_utf16le_help);
	rz_warn_if_fail(print_utf16le_cd);

	RzCmdDesc *print_utf32le_cd = rz_cmd_desc_argv_modes_new(core->rcmd, ps_cd, "psW", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_utf32le_handler, &print_utf32le_help);
	rz_warn_if_fail(print_utf32le_cd);

	RzCmdDesc *pv_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_cd, "pv", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_print_value_handler, &print_value_help, &pv_help);
	rz_warn_if_fail(pv_cd);
	RzCmdDesc *print_value1_cd = rz_cmd_desc_argv_state_new(core->rcmd, pv_cd, "pv1", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_print_value1_handler, &print_value1_help);
	rz_warn_if_fail(print_value1_cd);

	RzCmdDesc *print_value2_cd = rz_cmd_desc_argv_state_new(core->rcmd, pv_cd, "pv2", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_print_value2_handler, &print_value2_help);
	rz_warn_if_fail(print_value2_cd);

	RzCmdDesc *print_value4_cd = rz_cmd_desc_argv_state_new(core->rcmd, pv_cd, "pv4", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_print_value4_handler, &print_value4_help);
	rz_warn_if_fail(print_value4_cd);

	RzCmdDesc *print_value8_cd = rz_cmd_desc_argv_state_new(core->rcmd, pv_cd, "pv8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_print_value8_handler, &print_value8_help);
	rz_warn_if_fail(print_value8_cd);

	RzCmdDesc *px_cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_cd, "px", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_handler, &print_hexdump_help, &px_help);
	rz_warn_if_fail(px_cd);
	RzCmdDesc *print_hexdump_format_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxF", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_format_handler, &print_hexdump_format_help);
	rz_warn_if_fail(print_hexdump_format_cd);

	RzCmdDesc *print_hexdump_annotated_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxa", rz_print_hexdump_annotated_handler, &print_hexdump_annotated_help);
	rz_warn_if_fail(print_hexdump_annotated_cd);

	RzCmdDesc *print_op_analysis_color_map_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxA", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG, rz_print_op_analysis_color_map_handler, &print_op_analysis_color_map_help);
	rz_warn_if_fail(print_op_analysis_color_map_cd);

	RzCmdDesc *print_hexdump_bits_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxb", rz_print_hexdump_bits_handler, &print_hexdump_bits_help);
	rz_warn_if_fail(print_hexdump_bits_cd);

	RzCmdDesc *print_hexdump_comments_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxc", rz_print_hexdump_comments_handler, &print_hexdump_comments_help);
	rz_warn_if_fail(print_hexdump_comments_cd);

	RzCmdDesc *pxd_cd = rz_cmd_desc_group_state_new(core->rcmd, px_cd, "pxd", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_signed_integer_handler, &print_hexdump_signed_integer_help, &pxd_help);
	rz_warn_if_fail(pxd_cd);
	RzCmdDesc *print_hexdump_signed_integer2_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxd_cd, "pxdh", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_signed_integer2_handler, &print_hexdump_signed_integer2_help);
	rz_warn_if_fail(print_hexdump_signed_integer2_cd);

	RzCmdDesc *print_hexdump_signed_integer4_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxd_cd, "pxdw", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_signed_integer4_handler, &print_hexdump_signed_integer4_help);
	rz_warn_if_fail(print_hexdump_signed_integer4_cd);

	RzCmdDesc *print_hexdump_signed_integer8_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxd_cd, "pxdq", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_signed_integer8_handler, &print_hexdump_signed_integer8_help);
	rz_warn_if_fail(print_hexdump_signed_integer8_cd);

	RzCmdDesc *print_hexdump_emoji_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxe", rz_print_hexdump_emoji_handler, &print_hexdump_emoji_help);
	rz_warn_if_fail(print_hexdump_emoji_cd);

	RzCmdDesc *print_hexdump_function_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxf", rz_print_hexdump_function_handler, &print_hexdump_function_help);
	rz_warn_if_fail(print_hexdump_function_cd);

	RzCmdDesc *print_hexdump_hexii_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxi", rz_print_hexdump_hexii_handler, &print_hexdump_hexii_help);
	rz_warn_if_fail(print_hexdump_hexii_cd);

	RzCmdDesc *pxr_cd = rz_cmd_desc_group_state_new(core->rcmd, px_cd, "pxr", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN, rz_print_hexword_references_handler, &print_hexword_references_help, &pxr_help);
	rz_warn_if_fail(pxr_cd);
	RzCmdDesc *print_hexword_references_1_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxr_cd, "pxr1", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN, rz_print_hexword_references_1_handler, &print_hexword_references_1_help);
	rz_warn_if_fail(print_hexword_references_1_cd);

	RzCmdDesc *print_hexword_references_2_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxr_cd, "pxr2", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN, rz_print_hexword_references_2_handler, &print_hexword_references_2_help);
	rz_warn_if_fail(print_hexword_references_2_cd);

	RzCmdDesc *print_hexword_references_4_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxr_cd, "pxr4", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN, rz_print_hexword_references_4_handler, &print_hexword_references_4_help);
	rz_warn_if_fail(print_hexword_references_4_cd);

	RzCmdDesc *print_hexword_references_8_cd = rz_cmd_desc_argv_state_new(core->rcmd, pxr_cd, "pxr8", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN, rz_print_hexword_references_8_handler, &print_hexword_references_8_help);
	rz_warn_if_fail(print_hexword_references_8_cd);

	RzCmdDesc *print_hexdump_sparse_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxs", rz_print_hexdump_sparse_handler, &print_hexdump_sparse_help);
	rz_warn_if_fail(print_hexdump_sparse_cd);

	RzCmdDesc *print_delta_pointer_table_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxt", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_delta_pointer_table_handler, &print_delta_pointer_table_help);
	rz_warn_if_fail(print_delta_pointer_table_cd);

	RzCmdDesc *print_hexdump_hexless_bytes_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxx", rz_print_hexdump_hexless_bytes_handler, &print_hexdump_hexless_bytes_help);
	rz_warn_if_fail(print_hexdump_hexless_bytes_cd);

	RzCmdDesc *print_hexdump_hexless_words_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxX", rz_print_hexdump_hexless_words_handler, &print_hexdump_hexless_words_help);
	rz_warn_if_fail(print_hexdump_hexless_words_cd);

	RzCmdDesc *print_hexdump_hexpair_bytes_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "px0", rz_print_hexdump_hexpair_bytes_handler, &print_hexdump_hexpair_bytes_help);
	rz_warn_if_fail(print_hexdump_hexpair_bytes_cd);

	RzCmdDesc *print_hexdump_hex2_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxh", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_hex2_handler, &print_hexdump_hex2_help);
	rz_warn_if_fail(print_hexdump_hex2_cd);

	RzCmdDesc *print_hexdump_hex2l_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxH", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_hex2l_handler, &print_hexdump_hex2l_help);
	rz_warn_if_fail(print_hexdump_hex2l_cd);

	RzCmdDesc *print_hexdump_hex4_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxw", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_hex4_handler, &print_hexdump_hex4_help);
	rz_warn_if_fail(print_hexdump_hex4_cd);

	RzCmdDesc *print_hexdump_hex4l_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxW", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_hex4l_handler, &print_hexdump_hex4l_help);
	rz_warn_if_fail(print_hexdump_hex4l_cd);

	RzCmdDesc *print_hexdump_hex8_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxq", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_hex8_handler, &print_hexdump_hex8_help);
	rz_warn_if_fail(print_hexdump_hex8_cd);

	RzCmdDesc *print_hexdump_hex8l_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxQ", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_hex8l_handler, &print_hexdump_hex8l_help);
	rz_warn_if_fail(print_hexdump_hex8l_cd);

	RzCmdDesc *print_hexdump_oct_cd = rz_cmd_desc_argv_new(core->rcmd, px_cd, "pxo", rz_print_hexdump_oct_handler, &print_hexdump_oct_help);
	rz_warn_if_fail(print_hexdump_oct_cd);

	RzCmdDesc *print_hexdump_n_lines_cd = rz_cmd_desc_argv_state_new(core->rcmd, px_cd, "pxl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_n_lines_handler, &print_hexdump_n_lines_help);
	rz_warn_if_fail(print_hexdump_n_lines_cd);

	RzCmdDesc *p6_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "p6", NULL, NULL, &p6_help);
	rz_warn_if_fail(p6_cd);
	RzCmdDesc *cmd_base64_encode_cd = rz_cmd_desc_argv_modes_new(core->rcmd, p6_cd, "p6e", RZ_OUTPUT_MODE_STANDARD, rz_cmd_base64_encode_handler, &cmd_base64_encode_help);
	rz_warn_if_fail(cmd_base64_encode_cd);

	RzCmdDesc *cmd_base64_decode_cd = rz_cmd_desc_argv_modes_new(core->rcmd, p6_cd, "p6d", RZ_OUTPUT_MODE_STANDARD, rz_cmd_base64_decode_handler, &cmd_base64_decode_help);
	rz_warn_if_fail(cmd_base64_decode_cd);

	RzCmdDesc *pu_cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "pu", rz_print_url_encode_handler, &print_url_encode_help, &pu_help);
	rz_warn_if_fail(pu_cd);
	RzCmdDesc *print_url_encode_wide_cd = rz_cmd_desc_argv_new(core->rcmd, pu_cd, "puw", rz_print_url_encode_wide_handler, &print_url_encode_wide_help);
	rz_warn_if_fail(print_url_encode_wide_cd);

	RzCmdDesc *print_url_encode_zero_cd = rz_cmd_desc_argv_new(core->rcmd, pu_cd, "pu0", rz_print_url_encode_zero_handler, &print_url_encode_zero_help);
	rz_warn_if_fail(print_url_encode_zero_cd);

	RzCmdDesc *p_minus__cd = rz_cmd_desc_group_state_new(core->rcmd, cmd_print_cd, "p-", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_minus_handler, &print_minus_help, &p_minus__help);
	rz_warn_if_fail(p_minus__cd);
	RzCmdDesc *print_minus_entropy_cd = rz_cmd_desc_argv_new(core->rcmd, p_minus__cd, "p-e", rz_print_minus_entropy_handler, &print_minus_entropy_help);
	rz_warn_if_fail(print_minus_entropy_cd);

	RzCmdDesc *print_minus_table_cd = rz_cmd_desc_argv_state_new(core->rcmd, p_minus__cd, "p-h", RZ_OUTPUT_MODE_TABLE, rz_print_minus_table_handler, &print_minus_table_help);
	rz_warn_if_fail(print_minus_table_cd);
	rz_cmd_desc_set_default_mode(print_minus_table_cd, RZ_OUTPUT_MODE_TABLE);

	RzCmdDesc *p_equal__cd = rz_cmd_desc_group_new(core->rcmd, cmd_print_cd, "p=", rz_print_equal_handler, &print_equal_help, &p_equal__help);
	rz_warn_if_fail(p_equal__cd);
	RzCmdDesc *print_equal_d_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=d", rz_print_equal_d_handler, &print_equal_d_help);
	rz_warn_if_fail(print_equal_d_cd);

	RzCmdDesc *print_equal_two_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=2", rz_print_equal_two_handler, &print_equal_two_help);
	rz_warn_if_fail(print_equal_two_cd);

	RzCmdDesc *print_equal_0x00_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=0", rz_print_equal_0x00_handler, &print_equal_0x00_help);
	rz_warn_if_fail(print_equal_0x00_cd);

	RzCmdDesc *print_equal_0xff_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=F", rz_print_equal_0xff_handler, &print_equal_0xff_help);
	rz_warn_if_fail(print_equal_0xff_cd);

	RzCmdDesc *print_equal_bbs_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=a", rz_print_equal_bbs_handler, &print_equal_bbs_help);
	rz_warn_if_fail(print_equal_bbs_cd);

	RzCmdDesc *print_equal_stats_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=A", rz_print_equal_stats_handler, &print_equal_stats_help);
	rz_warn_if_fail(print_equal_stats_cd);

	RzCmdDesc *print_equal_call_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=c", rz_print_equal_call_handler, &print_equal_call_help);
	rz_warn_if_fail(print_equal_call_cd);

	RzCmdDesc *print_equal_entropy_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=e", rz_print_equal_entropy_handler, &print_equal_entropy_help);
	rz_warn_if_fail(print_equal_entropy_cd);

	RzCmdDesc *print_rising_and_falling_entropy_cd = rz_cmd_desc_argv_state_new(core->rcmd, p_equal__cd, "p=r", RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_TABLE, rz_print_rising_and_falling_entropy_handler, &print_rising_and_falling_entropy_help);
	rz_warn_if_fail(print_rising_and_falling_entropy_cd);

	RzCmdDesc *print_equal_invalid_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=i", rz_print_equal_invalid_handler, &print_equal_invalid_help);
	rz_warn_if_fail(print_equal_invalid_cd);

	RzCmdDesc *print_equal_jump_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=j", rz_print_equal_jump_handler, &print_equal_jump_help);
	rz_warn_if_fail(print_equal_jump_cd);

	RzCmdDesc *print_equal_m_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=m", rz_print_equal_m_handler, &print_equal_m_help);
	rz_warn_if_fail(print_equal_m_cd);

	RzCmdDesc *print_equal_printable_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=p", rz_print_equal_printable_handler, &print_equal_printable_help);
	rz_warn_if_fail(print_equal_printable_cd);

	RzCmdDesc *print_equal_priv_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=s", rz_print_equal_priv_handler, &print_equal_priv_help);
	rz_warn_if_fail(print_equal_priv_cd);

	RzCmdDesc *print_equal_z_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__cd, "p=z", rz_print_equal_z_handler, &print_equal_z_help);
	rz_warn_if_fail(print_equal_z_cd);

	RzCmdDesc *p_equal__equal__cd = rz_cmd_desc_group_new(core->rcmd, p_equal__cd, "p==", rz_print_equal_equal_handler, &print_equal_equal_help, &p_equal__equal__help);
	rz_warn_if_fail(p_equal__equal__cd);
	RzCmdDesc *print_equal_equal_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal__cd, "p==v", rz_print_equal_equal_visual_handler, &print_equal_equal_visual_help);
	rz_warn_if_fail(print_equal_equal_visual_cd);

	RzCmdDesc *p_equal__equal_0_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==0", rz_print_equal_equal_0x00_handler, &print_equal_equal_0x00_help, &p_equal__equal_0_help);
	rz_warn_if_fail(p_equal__equal_0_cd);
	RzCmdDesc *print_equal_equal_0x00_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_0_cd, "p==0v", rz_print_equal_equal_0x00_visual_handler, &print_equal_equal_0x00_visual_help);
	rz_warn_if_fail(print_equal_equal_0x00_visual_cd);

	RzCmdDesc *p_equal__equal_F_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==F", rz_print_equal_equal_0xff_handler, &print_equal_equal_0xff_help, &p_equal__equal_F_help);
	rz_warn_if_fail(p_equal__equal_F_cd);
	RzCmdDesc *print_equal_equal_0xff_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_F_cd, "p==Fv", rz_print_equal_equal_0xff_visual_handler, &print_equal_equal_0xff_visual_help);
	rz_warn_if_fail(print_equal_equal_0xff_visual_cd);

	RzCmdDesc *p_equal__equal_a_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==a", rz_print_equal_equal_bbs_handler, &print_equal_equal_bbs_help, &p_equal__equal_a_help);
	rz_warn_if_fail(p_equal__equal_a_cd);
	RzCmdDesc *print_equal_equal_bbs_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_a_cd, "p==av", rz_print_equal_equal_bbs_visual_handler, &print_equal_equal_bbs_visual_help);
	rz_warn_if_fail(print_equal_equal_bbs_visual_cd);

	RzCmdDesc *p_equal__equal_A_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==A", rz_print_equal_equal_stats_handler, &print_equal_equal_stats_help, &p_equal__equal_A_help);
	rz_warn_if_fail(p_equal__equal_A_cd);
	RzCmdDesc *print_equal_equal_stats_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_A_cd, "p==Av", rz_print_equal_equal_stats_visual_handler, &print_equal_equal_stats_visual_help);
	rz_warn_if_fail(print_equal_equal_stats_visual_cd);

	RzCmdDesc *p_equal__equal_c_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==c", rz_print_equal_equal_call_handler, &print_equal_equal_call_help, &p_equal__equal_c_help);
	rz_warn_if_fail(p_equal__equal_c_cd);
	RzCmdDesc *print_equal_equal_call_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_c_cd, "p==cv", rz_print_equal_equal_call_visual_handler, &print_equal_equal_call_visual_help);
	rz_warn_if_fail(print_equal_equal_call_visual_cd);

	RzCmdDesc *p_equal__equal_e_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==e", rz_print_equal_equal_entropy_handler, &print_equal_equal_entropy_help, &p_equal__equal_e_help);
	rz_warn_if_fail(p_equal__equal_e_cd);
	RzCmdDesc *print_equal_equal_entropy_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_e_cd, "p==ev", rz_print_equal_equal_entropy_visual_handler, &print_equal_equal_entropy_visual_help);
	rz_warn_if_fail(print_equal_equal_entropy_visual_cd);

	RzCmdDesc *p_equal__equal_i_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==i", rz_print_equal_equal_invalid_handler, &print_equal_equal_invalid_help, &p_equal__equal_i_help);
	rz_warn_if_fail(p_equal__equal_i_cd);
	RzCmdDesc *print_equal_equal_invalid_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_i_cd, "p==iv", rz_print_equal_equal_invalid_visual_handler, &print_equal_equal_invalid_visual_help);
	rz_warn_if_fail(print_equal_equal_invalid_visual_cd);

	RzCmdDesc *p_equal__equal_j_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==j", rz_print_equal_equal_jump_handler, &print_equal_equal_jump_help, &p_equal__equal_j_help);
	rz_warn_if_fail(p_equal__equal_j_cd);
	RzCmdDesc *print_equal_equal_jump_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_j_cd, "p==jv", rz_print_equal_equal_jump_visual_handler, &print_equal_equal_jump_visual_help);
	rz_warn_if_fail(print_equal_equal_jump_visual_cd);

	RzCmdDesc *p_equal__equal_m_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==m", rz_print_equal_equal_m_handler, &print_equal_equal_m_help, &p_equal__equal_m_help);
	rz_warn_if_fail(p_equal__equal_m_cd);
	RzCmdDesc *print_equal_equal_m_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_m_cd, "p==mv", rz_print_equal_equal_m_visual_handler, &print_equal_equal_m_visual_help);
	rz_warn_if_fail(print_equal_equal_m_visual_cd);

	RzCmdDesc *p_equal__equal_p_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==p", rz_print_equal_equal_printable_handler, &print_equal_equal_printable_help, &p_equal__equal_p_help);
	rz_warn_if_fail(p_equal__equal_p_cd);
	RzCmdDesc *print_equal_equal_printable_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_p_cd, "p==pv", rz_print_equal_equal_printable_visual_handler, &print_equal_equal_printable_visual_help);
	rz_warn_if_fail(print_equal_equal_printable_visual_cd);

	RzCmdDesc *p_equal__equal_s_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==s", rz_print_equal_equal_priv_handler, &print_equal_equal_priv_help, &p_equal__equal_s_help);
	rz_warn_if_fail(p_equal__equal_s_cd);
	RzCmdDesc *print_equal_equal_priv_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_s_cd, "p==sv", rz_print_equal_equal_priv_visual_handler, &print_equal_equal_priv_visual_help);
	rz_warn_if_fail(print_equal_equal_priv_visual_cd);

	RzCmdDesc *p_equal__equal_z_cd = rz_cmd_desc_group_new(core->rcmd, p_equal__equal__cd, "p==z", rz_print_equal_equal_z_handler, &print_equal_equal_z_help, &p_equal__equal_z_help);
	rz_warn_if_fail(p_equal__equal_z_cd);
	RzCmdDesc *print_equal_equal_z_visual_cd = rz_cmd_desc_argv_new(core->rcmd, p_equal__equal_z_cd, "p==zv", rz_print_equal_equal_z_visual_handler, &print_equal_equal_z_visual_help);
	rz_warn_if_fail(print_equal_equal_z_visual_cd);

	RzCmdDesc *P_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "P", NULL, NULL, &P_help);
	rz_warn_if_fail(P_cd);
	RzCmdDesc *project_save_cd = rz_cmd_desc_argv_new(core->rcmd, P_cd, "Ps", rz_project_save_handler, &project_save_help);
	rz_warn_if_fail(project_save_cd);

	RzCmdDesc *project_open_cd = rz_cmd_desc_argv_new(core->rcmd, P_cd, "Po", rz_project_open_handler, &project_open_help);
	rz_warn_if_fail(project_open_cd);

	RzCmdDesc *project_open_no_bin_io_cd = rz_cmd_desc_argv_new(core->rcmd, P_cd, "Poo", rz_project_open_no_bin_io_handler, &project_open_no_bin_io_help);
	rz_warn_if_fail(project_open_no_bin_io_cd);

	RzCmdDesc *q_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "q", rz_cmd_quit_handler, &cmd_quit_help, &q_help);
	rz_warn_if_fail(q_cd);
	RzCmdDesc *cmd_force_quit_cd = rz_cmd_desc_argv_new(core->rcmd, q_cd, "q!", rz_cmd_force_quit_handler, &cmd_force_quit_help);
	rz_warn_if_fail(cmd_force_quit_cd);

	RzCmdDesc *cmd_force_quit_without_history_cd = rz_cmd_desc_argv_new(core->rcmd, q_cd, "q!!", rz_cmd_force_quit_without_history_handler, &cmd_force_quit_without_history_help);
	rz_warn_if_fail(cmd_force_quit_without_history_cd);

	RzCmdDesc *quit_with_preference_cd = rz_cmd_desc_inner_new(core->rcmd, q_cd, "q", &quit_with_preference_help);
	rz_warn_if_fail(quit_with_preference_cd);
	RzCmdDesc *qy_cd = rz_cmd_desc_group_new(core->rcmd, quit_with_preference_cd, "qy", NULL, NULL, &qy_help);
	rz_warn_if_fail(qy_cd);
	RzCmdDesc *quit_kill_save_cd = rz_cmd_desc_argv_new(core->rcmd, qy_cd, "qyy", rz_quit_kill_save_handler, &quit_kill_save_help);
	rz_warn_if_fail(quit_kill_save_cd);

	RzCmdDesc *quit_kill_nosave_cd = rz_cmd_desc_argv_new(core->rcmd, qy_cd, "qyn", rz_quit_kill_nosave_handler, &quit_kill_nosave_help);
	rz_warn_if_fail(quit_kill_nosave_cd);

	RzCmdDesc *qn_cd = rz_cmd_desc_group_new(core->rcmd, quit_with_preference_cd, "qn", NULL, NULL, &qn_help);
	rz_warn_if_fail(qn_cd);
	RzCmdDesc *quit_nokill_nosave_cd = rz_cmd_desc_argv_new(core->rcmd, qn_cd, "qnn", rz_quit_nokill_nosave_handler, &quit_nokill_nosave_help);
	rz_warn_if_fail(quit_nokill_nosave_cd);

	RzCmdDesc *quit_nokill_save_cd = rz_cmd_desc_argv_new(core->rcmd, qn_cd, "qny", rz_quit_nokill_save_handler, &quit_nokill_save_help);
	rz_warn_if_fail(quit_nokill_save_cd);

	RzCmdDesc *r_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "r", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_resize_handler, &resize_help, &r_help);
	rz_warn_if_fail(r_cd);
	RzCmdDesc *resize_remove_cd = rz_cmd_desc_argv_new(core->rcmd, r_cd, "r-", rz_resize_remove_handler, &resize_remove_help);
	rz_warn_if_fail(resize_remove_cd);

	RzCmdDesc *resize_insert_cd = rz_cmd_desc_argv_new(core->rcmd, r_cd, "r+", rz_resize_insert_handler, &resize_insert_help);
	rz_warn_if_fail(resize_insert_cd);

	RzCmdDesc *rebase_cd = rz_cmd_desc_argv_new(core->rcmd, r_cd, "rb", rz_rebase_handler, &rebase_help);
	rz_warn_if_fail(rebase_cd);

	RzCmdDesc *resize_human_cd = rz_cmd_desc_argv_new(core->rcmd, r_cd, "rh", rz_resize_human_handler, &resize_human_help);
	rz_warn_if_fail(resize_human_cd);

	RzCmdDesc *s_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "s", rz_seek_handler, &seek_help, &s_help);
	rz_warn_if_fail(s_cd);
	RzCmdDesc *seek_padded_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "spad", rz_seek_padded_handler, &seek_padded_help);
	rz_warn_if_fail(seek_padded_cd);

	RzCmdDesc *seek_base_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "s.", rz_seek_base_handler, &seek_base_help);
	rz_warn_if_fail(seek_base_cd);

	RzCmdDesc *seek_delta_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sd", rz_seek_delta_handler, &seek_delta_help);
	rz_warn_if_fail(seek_delta_cd);

	RzCmdDesc *seek_blocksize_backward_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "s--", rz_seek_blocksize_backward_handler, &seek_blocksize_backward_help);
	rz_warn_if_fail(seek_blocksize_backward_cd);

	RzCmdDesc *seek_blocksize_forward_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "s++", rz_seek_blocksize_forward_handler, &seek_blocksize_forward_help);
	rz_warn_if_fail(seek_blocksize_forward_cd);

	RzCmdDesc *sh_cd = rz_cmd_desc_group_state_new(core->rcmd, s_cd, "sh", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_seek_history_list_handler, &seek_history_list_help, &sh_help);
	rz_warn_if_fail(sh_cd);
	RzCmdDesc *seek_redo_cd = rz_cmd_desc_argv_new(core->rcmd, sh_cd, "shr", rz_seek_redo_handler, &seek_redo_help);
	rz_warn_if_fail(seek_redo_cd);

	RzCmdDesc *seek_undo_cd = rz_cmd_desc_argv_new(core->rcmd, sh_cd, "shu", rz_seek_undo_handler, &seek_undo_help);
	rz_warn_if_fail(seek_undo_cd);

	RzCmdDesc *seek_undo_reset_cd = rz_cmd_desc_argv_new(core->rcmd, sh_cd, "sh-", rz_seek_undo_reset_handler, &seek_undo_reset_help);
	rz_warn_if_fail(seek_undo_reset_cd);

	RzCmdDesc *seek_asz_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sa", rz_seek_asz_handler, &seek_asz_help);
	rz_warn_if_fail(seek_asz_cd);

	RzCmdDesc *seek_basicblock_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sb", rz_seek_basicblock_handler, &seek_basicblock_help);
	rz_warn_if_fail(seek_basicblock_cd);

	RzCmdDesc *seek_function_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sf", rz_seek_function_handler, &seek_function_help);
	rz_warn_if_fail(seek_function_cd);

	RzCmdDesc *seek_function_current_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sf.", rz_seek_function_current_handler, &seek_function_current_help);
	rz_warn_if_fail(seek_function_current_cd);

	RzCmdDesc *seek_begin_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sg", rz_seek_begin_handler, &seek_begin_help);
	rz_warn_if_fail(seek_begin_cd);

	RzCmdDesc *seek_end_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sG", rz_seek_end_handler, &seek_end_help);
	rz_warn_if_fail(seek_end_cd);

	RzCmdDesc *seek_next_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sn", rz_seek_next_handler, &seek_next_help);
	rz_warn_if_fail(seek_next_cd);

	RzCmdDesc *seek_prev_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sp", rz_seek_prev_handler, &seek_prev_help);
	rz_warn_if_fail(seek_prev_cd);

	RzCmdDesc *seek_opcode_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "so", rz_seek_opcode_handler, &seek_opcode_help);
	rz_warn_if_fail(seek_opcode_cd);

	RzCmdDesc *seek_register_cd = rz_cmd_desc_argv_new(core->rcmd, s_cd, "sr", rz_seek_register_handler, &seek_register_help);
	rz_warn_if_fail(seek_register_cd);

	RzCmdDesc *t_cd = rz_cmd_desc_group_modes_new(core->rcmd, root_cd, "t", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_type_handler, &type_help, &t_help);
	rz_warn_if_fail(t_cd);
	RzCmdDesc *type_del_cd = rz_cmd_desc_argv_new(core->rcmd, t_cd, "t-", rz_type_del_handler, &type_del_help);
	rz_warn_if_fail(type_del_cd);

	RzCmdDesc *type_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, t_cd, "t-*", rz_type_del_all_handler, &type_del_all_help);
	rz_warn_if_fail(type_del_all_cd);

	RzCmdDesc *tc_cd = rz_cmd_desc_group_new(core->rcmd, t_cd, "tc", rz_type_list_c_handler, &type_list_c_help, &tc_help);
	rz_warn_if_fail(tc_cd);
	RzCmdDesc *type_list_c_nl_cd = rz_cmd_desc_argv_new(core->rcmd, tc_cd, "tcd", rz_type_list_c_nl_handler, &type_list_c_nl_help);
	rz_warn_if_fail(type_list_c_nl_cd);

	RzCmdDesc *tcc_cd = rz_cmd_desc_group_modes_new(core->rcmd, tc_cd, "tcc", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_SDB | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON, rz_type_cc_list_handler, &type_cc_list_help, &tcc_help);
	rz_warn_if_fail(tcc_cd);
	RzCmdDesc *type_cc_del_cd = rz_cmd_desc_argv_new(core->rcmd, tcc_cd, "tcc-", rz_type_cc_del_handler, &type_cc_del_help);
	rz_warn_if_fail(type_cc_del_cd);

	RzCmdDesc *type_cc_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, tcc_cd, "tcc-*", rz_type_cc_del_all_handler, &type_cc_del_all_help);
	rz_warn_if_fail(type_cc_del_all_cd);

	RzCmdDesc *type_define_cd = rz_cmd_desc_argv_new(core->rcmd, t_cd, "td", rz_type_define_handler, &type_define_help);
	rz_warn_if_fail(type_define_cd);

	RzCmdDesc *te_cd = rz_cmd_desc_group_modes_new(core->rcmd, t_cd, "te", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_type_list_enum_handler, &type_list_enum_help, &te_help);
	rz_warn_if_fail(te_cd);
	RzCmdDesc *type_enum_bitfield_cd = rz_cmd_desc_argv_new(core->rcmd, te_cd, "teb", rz_type_enum_bitfield_handler, &type_enum_bitfield_help);
	rz_warn_if_fail(type_enum_bitfield_cd);

	RzCmdDesc *type_enum_c_cd = rz_cmd_desc_argv_new(core->rcmd, te_cd, "tec", rz_type_enum_c_handler, &type_enum_c_help);
	rz_warn_if_fail(type_enum_c_cd);

	RzCmdDesc *type_enum_c_nl_cd = rz_cmd_desc_argv_new(core->rcmd, te_cd, "ted", rz_type_enum_c_nl_handler, &type_enum_c_nl_help);
	rz_warn_if_fail(type_enum_c_nl_cd);

	RzCmdDesc *type_enum_find_cd = rz_cmd_desc_argv_new(core->rcmd, te_cd, "tef", rz_type_enum_find_handler, &type_enum_find_help);
	rz_warn_if_fail(type_enum_find_cd);

	RzCmdDesc *tf_cd = rz_cmd_desc_group_modes_new(core->rcmd, t_cd, "tf", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_type_list_function_handler, &type_list_function_help, &tf_help);
	rz_warn_if_fail(tf_cd);
	RzCmdDesc *type_function_del_cd = rz_cmd_desc_argv_new(core->rcmd, tf_cd, "tf-", rz_type_function_del_handler, &type_function_del_help);
	rz_warn_if_fail(type_function_del_cd);

	RzCmdDesc *type_function_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, tf_cd, "tf-*", rz_type_function_del_all_handler, &type_function_del_all_help);
	rz_warn_if_fail(type_function_del_all_cd);

	RzCmdDesc *type_function_cc_cd = rz_cmd_desc_argv_new(core->rcmd, tf_cd, "tfc", rz_type_function_cc_handler, &type_function_cc_help);
	rz_warn_if_fail(type_function_cc_cd);

	RzCmdDesc *tn_cd = rz_cmd_desc_group_modes_new(core->rcmd, t_cd, "tn", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_type_list_noreturn_handler, &type_list_noreturn_help, &tn_help);
	rz_warn_if_fail(tn_cd);
	RzCmdDesc *type_noreturn_del_cd = rz_cmd_desc_argv_new(core->rcmd, tn_cd, "tn-", rz_type_noreturn_del_handler, &type_noreturn_del_help);
	rz_warn_if_fail(type_noreturn_del_cd);

	RzCmdDesc *type_noreturn_del_all_cd = rz_cmd_desc_argv_new(core->rcmd, tn_cd, "tn-*", rz_type_noreturn_del_all_handler, &type_noreturn_del_all_help);
	rz_warn_if_fail(type_noreturn_del_all_cd);

	RzCmdDesc *to_cd = rz_cmd_desc_group_new(core->rcmd, t_cd, "to", rz_type_open_file_handler, &type_open_file_help, &to_help);
	rz_warn_if_fail(to_cd);
	RzCmdDesc *type_open_editor_cd = rz_cmd_desc_argv_new(core->rcmd, to_cd, "toe", rz_type_open_editor_handler, &type_open_editor_help);
	rz_warn_if_fail(type_open_editor_cd);

	RzCmdDesc *type_open_sdb_cd = rz_cmd_desc_argv_new(core->rcmd, to_cd, "tos", rz_type_open_sdb_handler, &type_open_sdb_help);
	rz_warn_if_fail(type_open_sdb_cd);

	RzCmdDesc *tp_cd = rz_cmd_desc_group_new(core->rcmd, t_cd, "tp", rz_type_print_handler, &type_print_help, &tp_help);
	rz_warn_if_fail(tp_cd);
	RzCmdDesc *type_print_value_cd = rz_cmd_desc_argv_new(core->rcmd, tp_cd, "tpv", rz_type_print_value_handler, &type_print_value_help);
	rz_warn_if_fail(type_print_value_cd);

	RzCmdDesc *type_print_hexstring_cd = rz_cmd_desc_argv_new(core->rcmd, tp_cd, "tpx", rz_type_print_hexstring_handler, &type_print_hexstring_help);
	rz_warn_if_fail(type_print_hexstring_cd);

	RzCmdDesc *ts_cd = rz_cmd_desc_group_modes_new(core->rcmd, t_cd, "ts", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_type_list_structure_handler, &type_list_structure_help, &ts_help);
	rz_warn_if_fail(ts_cd);
	RzCmdDesc *type_structure_c_cd = rz_cmd_desc_argv_new(core->rcmd, ts_cd, "tsc", rz_type_structure_c_handler, &type_structure_c_help);
	rz_warn_if_fail(type_structure_c_cd);

	RzCmdDesc *type_structure_c_nl_cd = rz_cmd_desc_argv_new(core->rcmd, ts_cd, "tsd", rz_type_structure_c_nl_handler, &type_structure_c_nl_help);
	rz_warn_if_fail(type_structure_c_nl_cd);

	RzCmdDesc *tt_cd = rz_cmd_desc_group_modes_new(core->rcmd, t_cd, "tt", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_type_list_typedef_handler, &type_list_typedef_help, &tt_help);
	rz_warn_if_fail(tt_cd);
	RzCmdDesc *type_typedef_c_cd = rz_cmd_desc_argv_new(core->rcmd, tt_cd, "ttc", rz_type_typedef_c_handler, &type_typedef_c_help);
	rz_warn_if_fail(type_typedef_c_cd);

	RzCmdDesc *tu_cd = rz_cmd_desc_group_modes_new(core->rcmd, t_cd, "tu", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_LONG, rz_type_list_union_handler, &type_list_union_help, &tu_help);
	rz_warn_if_fail(tu_cd);
	RzCmdDesc *type_union_c_cd = rz_cmd_desc_argv_new(core->rcmd, tu_cd, "tuc", rz_type_union_c_handler, &type_union_c_help);
	rz_warn_if_fail(type_union_c_cd);

	RzCmdDesc *type_union_c_nl_cd = rz_cmd_desc_argv_new(core->rcmd, tu_cd, "tud", rz_type_union_c_nl_handler, &type_union_c_nl_help);
	rz_warn_if_fail(type_union_c_nl_cd);

	RzCmdDesc *tx_cd = rz_cmd_desc_group_new(core->rcmd, t_cd, "tx", rz_type_xrefs_list_handler, &type_xrefs_list_help, &tx_help);
	rz_warn_if_fail(tx_cd);
	RzCmdDesc *type_xrefs_function_cd = rz_cmd_desc_argv_new(core->rcmd, tx_cd, "txf", rz_type_xrefs_function_handler, &type_xrefs_function_help);
	rz_warn_if_fail(type_xrefs_function_cd);

	RzCmdDesc *type_xrefs_graph_cd = rz_cmd_desc_argv_new(core->rcmd, tx_cd, "txg", rz_type_xrefs_graph_handler, &type_xrefs_graph_help);
	rz_warn_if_fail(type_xrefs_graph_cd);

	RzCmdDesc *type_xrefs_list_all_cd = rz_cmd_desc_argv_new(core->rcmd, tx_cd, "txl", rz_type_xrefs_list_all_handler, &type_xrefs_list_all_help);
	rz_warn_if_fail(type_xrefs_list_all_cd);

	RzCmdDesc *V_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "V", rz_interactive_visual_handler, &interactive_visual_help, &V_help);
	rz_warn_if_fail(V_cd);
	RzCmdDesc *interactive_visual_help_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "VH", rz_interactive_visual_help_handler, &interactive_visual_help_help);
	rz_warn_if_fail(interactive_visual_help_cd);

	RzCmdDesc *interactive_visual_help_detail_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "VHH", rz_interactive_visual_help_detail_handler, &interactive_visual_help_detail_help);
	rz_warn_if_fail(interactive_visual_help_detail_cd);

	RzCmdDesc *interactive_visual_disas_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "Vp", rz_interactive_visual_disas_handler, &interactive_visual_disas_help);
	rz_warn_if_fail(interactive_visual_disas_cd);

	RzCmdDesc *interactive_visual_emu_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "Vpp", rz_interactive_visual_emu_handler, &interactive_visual_emu_help);
	rz_warn_if_fail(interactive_visual_emu_cd);

	RzCmdDesc *interactive_visual_management_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "Vv", rz_interactive_visual_management_handler, &interactive_visual_management_help);
	rz_warn_if_fail(interactive_visual_management_cd);

	RzCmdDesc *interactive_visual_config_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "Ve", rz_interactive_visual_config_handler, &interactive_visual_config_help);
	rz_warn_if_fail(interactive_visual_config_cd);

	RzCmdDesc *interactive_visual_graph_cd = rz_cmd_desc_argv_new(core->rcmd, V_cd, "VV", rz_interactive_visual_graph_handler, &interactive_visual_graph_help);
	rz_warn_if_fail(interactive_visual_graph_cd);

	RzCmdDesc *v_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "v", rz_interactive_panel_handler, &interactive_panel_help, &v_help);
	rz_warn_if_fail(v_cd);
	RzCmdDesc *interactive_panel_load_cd = rz_cmd_desc_argv_new(core->rcmd, v_cd, "vl", rz_interactive_panel_load_handler, &interactive_panel_load_help);
	rz_warn_if_fail(interactive_panel_load_cd);

	RzCmdDesc *interactive_panel_store_cd = rz_cmd_desc_argv_new(core->rcmd, v_cd, "vs", rz_interactive_panel_store_handler, &interactive_panel_store_help);
	rz_warn_if_fail(interactive_panel_store_cd);

	RzCmdDesc *w_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "w", rz_write_handler, &write_help, &w_help);
	rz_warn_if_fail(w_cd);
	RzCmdDesc *wB_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wB", rz_write_bits_handler, &write_bits_help, &wB_help);
	rz_warn_if_fail(wB_cd);
	RzCmdDesc *write_unset_bits_cd = rz_cmd_desc_argv_new(core->rcmd, wB_cd, "wB-", rz_write_unset_bits_handler, &write_unset_bits_help);
	rz_warn_if_fail(write_unset_bits_cd);

	RzCmdDesc *wv_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wv", rz_write_value_handler, &write_value_help, &wv_help);
	rz_warn_if_fail(wv_cd);
	RzCmdDesc *write_value1_cd = rz_cmd_desc_argv_new(core->rcmd, wv_cd, "wv1", rz_write_value1_handler, &write_value1_help);
	rz_warn_if_fail(write_value1_cd);

	RzCmdDesc *write_value2_cd = rz_cmd_desc_argv_new(core->rcmd, wv_cd, "wv2", rz_write_value2_handler, &write_value2_help);
	rz_warn_if_fail(write_value2_cd);

	RzCmdDesc *write_value4_cd = rz_cmd_desc_argv_new(core->rcmd, wv_cd, "wv4", rz_write_value4_handler, &write_value4_help);
	rz_warn_if_fail(write_value4_cd);

	RzCmdDesc *write_value8_cd = rz_cmd_desc_argv_new(core->rcmd, wv_cd, "wv8", rz_write_value8_handler, &write_value8_help);
	rz_warn_if_fail(write_value8_cd);

	RzCmdDesc *write_zero_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "w0", rz_write_zero_handler, &write_zero_help);
	rz_warn_if_fail(write_zero_cd);

	RzCmdDesc *write_incdec_cd = rz_cmd_desc_inner_new(core->rcmd, w_cd, "w", &write_incdec_help);
	rz_warn_if_fail(write_incdec_cd);
	RzCmdDesc *w1_cd = rz_cmd_desc_group_new(core->rcmd, write_incdec_cd, "w1", NULL, NULL, &w1_help);
	rz_warn_if_fail(w1_cd);
	RzCmdDesc *write_1_inc_cd = rz_cmd_desc_argv_new(core->rcmd, w1_cd, "w1+", rz_write_1_inc_handler, &write_1_inc_help);
	rz_warn_if_fail(write_1_inc_cd);

	RzCmdDesc *write_1_dec_cd = rz_cmd_desc_argv_new(core->rcmd, w1_cd, "w1-", rz_write_1_dec_handler, &write_1_dec_help);
	rz_warn_if_fail(write_1_dec_cd);

	RzCmdDesc *w2_cd = rz_cmd_desc_group_new(core->rcmd, write_incdec_cd, "w2", NULL, NULL, &w2_help);
	rz_warn_if_fail(w2_cd);
	RzCmdDesc *write_2_inc_cd = rz_cmd_desc_argv_new(core->rcmd, w2_cd, "w2+", rz_write_2_inc_handler, &write_2_inc_help);
	rz_warn_if_fail(write_2_inc_cd);

	RzCmdDesc *write_2_dec_cd = rz_cmd_desc_argv_new(core->rcmd, w2_cd, "w2-", rz_write_2_dec_handler, &write_2_dec_help);
	rz_warn_if_fail(write_2_dec_cd);

	RzCmdDesc *w4_cd = rz_cmd_desc_group_new(core->rcmd, write_incdec_cd, "w4", NULL, NULL, &w4_help);
	rz_warn_if_fail(w4_cd);
	RzCmdDesc *write_4_inc_cd = rz_cmd_desc_argv_new(core->rcmd, w4_cd, "w4+", rz_write_4_inc_handler, &write_4_inc_help);
	rz_warn_if_fail(write_4_inc_cd);

	RzCmdDesc *write_4_dec_cd = rz_cmd_desc_argv_new(core->rcmd, w4_cd, "w4-", rz_write_4_dec_handler, &write_4_dec_help);
	rz_warn_if_fail(write_4_dec_cd);

	RzCmdDesc *w8_cd = rz_cmd_desc_group_new(core->rcmd, write_incdec_cd, "w8", NULL, NULL, &w8_help);
	rz_warn_if_fail(w8_cd);
	RzCmdDesc *write_8_inc_cd = rz_cmd_desc_argv_new(core->rcmd, w8_cd, "w8+", rz_write_8_inc_handler, &write_8_inc_help);
	rz_warn_if_fail(write_8_inc_cd);

	RzCmdDesc *write_8_dec_cd = rz_cmd_desc_argv_new(core->rcmd, w8_cd, "w8-", rz_write_8_dec_handler, &write_8_dec_help);
	rz_warn_if_fail(write_8_dec_cd);

	RzCmdDesc *w6_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "w6", NULL, NULL, &w6_help);
	rz_warn_if_fail(w6_cd);
	RzCmdDesc *write_base64_decode_cd = rz_cmd_desc_argv_new(core->rcmd, w6_cd, "w6d", rz_write_base64_decode_handler, &write_base64_decode_help);
	rz_warn_if_fail(write_base64_decode_cd);

	RzCmdDesc *write_base64_encode_cd = rz_cmd_desc_argv_new(core->rcmd, w6_cd, "w6e", rz_write_base64_encode_handler, &write_base64_encode_help);
	rz_warn_if_fail(write_base64_encode_cd);

	RzCmdDesc *we_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "we", NULL, NULL, &we_help);
	rz_warn_if_fail(we_cd);
	RzCmdDesc *write_extend_zero_cd = rz_cmd_desc_argv_new(core->rcmd, we_cd, "wen", rz_write_extend_zero_handler, &write_extend_zero_help);
	rz_warn_if_fail(write_extend_zero_cd);

	RzCmdDesc *write_extend_shift_cd = rz_cmd_desc_argv_new(core->rcmd, we_cd, "wes", rz_write_extend_shift_handler, &write_extend_shift_help);
	rz_warn_if_fail(write_extend_shift_cd);

	RzCmdDesc *write_extend_hexbytes_cd = rz_cmd_desc_argv_new(core->rcmd, we_cd, "wex", rz_write_extend_hexbytes_handler, &write_extend_hexbytes_help);
	rz_warn_if_fail(write_extend_hexbytes_cd);

	RzCmdDesc *write_unified_patch_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "wu", rz_write_unified_patch_handler, &write_unified_patch_help);
	rz_warn_if_fail(write_unified_patch_cd);

	RzCmdDesc *write_random_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "wr", rz_write_random_handler, &write_random_help);
	rz_warn_if_fail(write_random_cd);

	RzCmdDesc *wc_cd = rz_cmd_desc_group_state_new(core->rcmd, w_cd, "wc", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_RIZIN, rz_write_cache_list_handler, &write_cache_list_help, &wc_help);
	rz_warn_if_fail(wc_cd);
	RzCmdDesc *write_cache_remove_cd = rz_cmd_desc_argv_new(core->rcmd, wc_cd, "wc-", rz_write_cache_remove_handler, &write_cache_remove_help);
	rz_warn_if_fail(write_cache_remove_cd);

	RzCmdDesc *write_cache_remove_all_cd = rz_cmd_desc_argv_new(core->rcmd, wc_cd, "wc-*", rz_write_cache_remove_all_handler, &write_cache_remove_all_help);
	rz_warn_if_fail(write_cache_remove_all_cd);

	RzCmdDesc *write_cache_commit_cd = rz_cmd_desc_argv_new(core->rcmd, wc_cd, "wc+", rz_write_cache_commit_handler, &write_cache_commit_help);
	rz_warn_if_fail(write_cache_commit_cd);

	RzCmdDesc *write_cache_commit_all_cd = rz_cmd_desc_argv_new(core->rcmd, wc_cd, "wci", rz_write_cache_commit_all_handler, &write_cache_commit_all_help);
	rz_warn_if_fail(write_cache_commit_all_cd);

	RzCmdDesc *write_pcache_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, wc_cd, "wcp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_write_pcache_list_handler, &write_pcache_list_help);
	rz_warn_if_fail(write_pcache_list_cd);

	RzCmdDesc *write_pcache_commit_cd = rz_cmd_desc_argv_new(core->rcmd, wc_cd, "wcpi", rz_write_pcache_commit_handler, &write_pcache_commit_help);
	rz_warn_if_fail(write_pcache_commit_cd);

	RzCmdDesc *write_zero_string_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "wz", rz_write_zero_string_handler, &write_zero_string_help);
	rz_warn_if_fail(write_zero_string_cd);

	RzCmdDesc *wf_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wf", rz_write_from_io_handler, &write_from_io_help, &wf_help);
	rz_warn_if_fail(wf_cd);
	RzCmdDesc *write_from_io_xchg_cd = rz_cmd_desc_argv_new(core->rcmd, wf_cd, "wfx", rz_write_from_io_xchg_handler, &write_from_io_xchg_help);
	rz_warn_if_fail(write_from_io_xchg_cd);

	RzCmdDesc *write_from_file_cd = rz_cmd_desc_argv_new(core->rcmd, wf_cd, "wff", rz_write_from_file_handler, &write_from_file_help);
	rz_warn_if_fail(write_from_file_cd);

	RzCmdDesc *write_from_socket_cd = rz_cmd_desc_argv_new(core->rcmd, wf_cd, "wfs", rz_write_from_socket_handler, &write_from_socket_help);
	rz_warn_if_fail(write_from_socket_cd);

	RzCmdDesc *write_wide_string_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "ww", rz_write_wide_string_handler, &write_wide_string_help);
	rz_warn_if_fail(write_wide_string_cd);

	RzCmdDesc *wx_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wx", rz_write_hex_handler, &write_hex_help, &wx_help);
	rz_warn_if_fail(wx_cd);
	RzCmdDesc *write_hex_from_file_cd = rz_cmd_desc_argv_new(core->rcmd, wx_cd, "wxf", rz_write_hex_from_file_handler, &write_hex_from_file_help);
	rz_warn_if_fail(write_hex_from_file_cd);

	RzCmdDesc *wa_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wa", rz_write_assembly_handler, &write_assembly_help, &wa_help);
	rz_warn_if_fail(wa_cd);
	RzCmdDesc *write_assembly_inside_cd = rz_cmd_desc_argv_new(core->rcmd, wa_cd, "wai", rz_write_assembly_inside_handler, &write_assembly_inside_help);
	rz_warn_if_fail(write_assembly_inside_cd);

	RzCmdDesc *write_assembly_file_cd = rz_cmd_desc_argv_new(core->rcmd, wa_cd, "waf", rz_write_assembly_file_handler, &write_assembly_file_help);
	rz_warn_if_fail(write_assembly_file_cd);

	RzCmdDesc *write_assembly_opcode_cd = rz_cmd_desc_argv_new(core->rcmd, wa_cd, "wao", rz_write_assembly_opcode_handler, &write_assembly_opcode_help);
	rz_warn_if_fail(write_assembly_opcode_cd);

	RzCmdDesc *write_block_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "wb", rz_write_block_handler, &write_block_help);
	rz_warn_if_fail(write_block_cd);

	RzCmdDesc *wm_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wm", rz_write_mask_set_handler, &write_mask_set_help, &wm_help);
	rz_warn_if_fail(wm_cd);
	RzCmdDesc *write_mask_reset_cd = rz_cmd_desc_argv_new(core->rcmd, wm_cd, "wm-", rz_write_mask_reset_handler, &write_mask_reset_help);
	rz_warn_if_fail(write_mask_reset_cd);

	RzCmdDesc *wo_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wo", NULL, NULL, &wo_help);
	rz_warn_if_fail(wo_cd);
	RzCmdDesc *write_op_2byteswap_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wo2", rz_write_op_2byteswap_handler, &write_op_2byteswap_help);
	rz_warn_if_fail(write_op_2byteswap_cd);

	RzCmdDesc *write_op_4byteswap_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wo4", rz_write_op_4byteswap_handler, &write_op_4byteswap_help);
	rz_warn_if_fail(write_op_4byteswap_cd);

	RzCmdDesc *write_op_8byteswap_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wo8", rz_write_op_8byteswap_handler, &write_op_8byteswap_help);
	rz_warn_if_fail(write_op_8byteswap_cd);

	RzCmdDesc *write_op_add_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "woa", rz_write_op_add_handler, &write_op_add_help);
	rz_warn_if_fail(write_op_add_cd);

	RzCmdDesc *write_op_and_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "woA", rz_write_op_and_handler, &write_op_and_help);
	rz_warn_if_fail(write_op_and_cd);

	RzCmdDesc *write_op_div_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wod", rz_write_op_div_handler, &write_op_div_help);
	rz_warn_if_fail(write_op_div_cd);

	RzCmdDesc *write_op_shl_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wol", rz_write_op_shl_handler, &write_op_shl_help);
	rz_warn_if_fail(write_op_shl_cd);

	RzCmdDesc *write_op_mul_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wom", rz_write_op_mul_handler, &write_op_mul_help);
	rz_warn_if_fail(write_op_mul_cd);

	RzCmdDesc *write_op_or_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "woo", rz_write_op_or_handler, &write_op_or_help);
	rz_warn_if_fail(write_op_or_cd);

	RzCmdDesc *write_op_shr_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wor", rz_write_op_shr_handler, &write_op_shr_help);
	rz_warn_if_fail(write_op_shr_cd);

	RzCmdDesc *write_op_sub_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wos", rz_write_op_sub_handler, &write_op_sub_help);
	rz_warn_if_fail(write_op_sub_cd);

	RzCmdDesc *write_op_xor_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "wox", rz_write_op_xor_handler, &write_op_xor_help);
	rz_warn_if_fail(write_op_xor_cd);

	RzCmdDesc *write_op_sequence_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "woe", rz_write_op_sequence_handler, &write_op_sequence_help);
	rz_warn_if_fail(write_op_sequence_cd);

	RzCmdDesc *write_op_decrypt_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "woD", rz_write_op_decrypt_handler, &write_op_decrypt_help);
	rz_warn_if_fail(write_op_decrypt_cd);

	RzCmdDesc *write_op_encrypt_cd = rz_cmd_desc_argv_new(core->rcmd, wo_cd, "woE", rz_write_op_encrypt_handler, &write_op_encrypt_help);
	rz_warn_if_fail(write_op_encrypt_cd);

	RzCmdDesc *wD_cd = rz_cmd_desc_group_new(core->rcmd, w_cd, "wD", rz_write_debruijn_handler, &write_debruijn_help, &wD_help);
	rz_warn_if_fail(wD_cd);
	RzCmdDesc *write_debruijn_find_cd = rz_cmd_desc_argv_new(core->rcmd, wD_cd, "wD/", rz_write_debruijn_find_handler, &write_debruijn_find_help);
	rz_warn_if_fail(write_debruijn_find_cd);

	RzCmdDesc *write_duplicate_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "wd", rz_write_duplicate_handler, &write_duplicate_help);
	rz_warn_if_fail(write_duplicate_cd);

	RzCmdDesc *write_length_string_cd = rz_cmd_desc_argv_new(core->rcmd, w_cd, "ws", rz_write_length_string_handler, &write_length_string_help);
	rz_warn_if_fail(write_length_string_cd);

	RzCmdDesc *print_hexdump_alias_cd = rz_cmd_desc_argv_state_new(core->rcmd, root_cd, "x", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_print_hexdump_alias_handler, &print_hexdump_alias_help);
	rz_warn_if_fail(print_hexdump_alias_cd);

	RzCmdDesc *print_hexdump_comments_alias_cd = rz_cmd_desc_argv_new(core->rcmd, root_cd, "xc", rz_print_hexdump_comments_alias_handler, &print_hexdump_comments_alias_help);
	rz_warn_if_fail(print_hexdump_comments_alias_cd);

	RzCmdDesc *y_cd = rz_cmd_desc_group_state_new(core->rcmd, root_cd, "y", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_yank_handler, &yank_help, &y_help);
	rz_warn_if_fail(y_cd);
	RzCmdDesc *yank_editor_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "ye", rz_yank_editor_handler, &yank_editor_help);
	rz_warn_if_fail(yank_editor_cd);

	RzCmdDesc *yank_file_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yf", rz_yank_file_handler, &yank_file_help);
	rz_warn_if_fail(yank_file_cd);

	RzCmdDesc *yank_whole_file_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yfa", rz_yank_whole_file_handler, &yank_whole_file_help);
	rz_warn_if_fail(yank_whole_file_cd);

	RzCmdDesc *yank_print_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yp", rz_yank_print_handler, &yank_print_help);
	rz_warn_if_fail(yank_print_cd);

	RzCmdDesc *yank_string_print_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "ys", rz_yank_string_print_handler, &yank_string_print_help);
	rz_warn_if_fail(yank_string_print_cd);

	RzCmdDesc *yank_to_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yt", rz_yank_to_handler, &yank_to_help);
	rz_warn_if_fail(yank_to_cd);

	RzCmdDesc *yank_hexpairs_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "ywx", rz_yank_hexpairs_handler, &yank_hexpairs_help);
	rz_warn_if_fail(yank_hexpairs_cd);

	RzCmdDesc *yank_hex_print_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yx", rz_yank_hex_print_handler, &yank_hex_print_help);
	rz_warn_if_fail(yank_hex_print_cd);

	RzCmdDesc *yank_paste_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yy", rz_yank_paste_handler, &yank_paste_help);
	rz_warn_if_fail(yank_paste_cd);

	RzCmdDesc *yank_string_cd = rz_cmd_desc_argv_new(core->rcmd, y_cd, "yz", rz_yank_string_handler, &yank_string_help);
	rz_warn_if_fail(yank_string_cd);

	RzCmdDesc *tmp_modifiers_cd = rz_cmd_desc_fake_new(core->rcmd, root_cd, "@", &tmp_modifiers_help);
	rz_warn_if_fail(tmp_modifiers_cd);

	RzCmdDesc *iterators_cd = rz_cmd_desc_fake_new(core->rcmd, root_cd, "@@", &iterators_help);
	rz_warn_if_fail(iterators_cd);

	RzCmdDesc *redirection_cd = rz_cmd_desc_fake_new(core->rcmd, root_cd, ">", &redirection_help);
	rz_warn_if_fail(redirection_cd);

	RzCmdDesc *pipe_cd = rz_cmd_desc_fake_new(core->rcmd, root_cd, "|", &pipe_help);
	rz_warn_if_fail(pipe_cd);

	RzCmdDesc *grep_cd = rz_cmd_desc_fake_new(core->rcmd, root_cd, "~", &grep_help);
	rz_warn_if_fail(grep_cd);

	RzCmdDesc *specifiers_cd = rz_cmd_desc_fake_new(core->rcmd, root_cd, ":", &specifiers_help);
	rz_warn_if_fail(specifiers_cd);

	RzCmdDesc *shell_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "shell", NULL, NULL, &shell_help);
	rz_warn_if_fail(shell_cd);
	RzCmdDesc *cmd_shell_ascii_table_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "ascii", rz_cmd_shell_ascii_table_handler, &cmd_shell_ascii_table_help);
	rz_warn_if_fail(cmd_shell_ascii_table_cd);

	RzCmdDesc *cmd_shell_date_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "date", rz_cmd_shell_date_handler, &cmd_shell_date_help);
	rz_warn_if_fail(cmd_shell_date_cd);

	RzCmdDesc *cmd_shell_diff_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "diff", rz_cmd_shell_diff_handler, &cmd_shell_diff_help);
	rz_warn_if_fail(cmd_shell_diff_cd);

	RzCmdDesc *cmd_shell_env_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "env", rz_cmd_shell_env_handler, &cmd_shell_env_help);
	rz_warn_if_fail(cmd_shell_env_cd);

	RzCmdDesc *cmd_shell_exit_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "exit", rz_cmd_shell_exit_handler, &cmd_shell_exit_help);
	rz_warn_if_fail(cmd_shell_exit_cd);

	RzCmdDesc *cmd_shell_ls_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "ls", rz_cmd_shell_ls_handler, &cmd_shell_ls_help);
	rz_warn_if_fail(cmd_shell_ls_cd);

	RzCmdDesc *cmd_shell_rm_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "rm", rz_cmd_shell_rm_handler, &cmd_shell_rm_help);
	rz_warn_if_fail(cmd_shell_rm_cd);

	RzCmdDesc *cmd_shell_sleep_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "sleep", rz_cmd_shell_sleep_handler, &cmd_shell_sleep_help);
	rz_warn_if_fail(cmd_shell_sleep_cd);

	RzCmdDesc *cmd_shell_uniq_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "uniq", rz_cmd_shell_uniq_handler, &cmd_shell_uniq_help);
	rz_warn_if_fail(cmd_shell_uniq_cd);

	RzCmdDesc *cmd_shell_uname_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "uname", rz_cmd_shell_uname_handler, &cmd_shell_uname_help);
	rz_warn_if_fail(cmd_shell_uname_cd);

	RzCmdDesc *cmd_shell_echo_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "echo", rz_cmd_shell_echo_handler, &cmd_shell_echo_help);
	rz_warn_if_fail(cmd_shell_echo_cd);

	RzCmdDesc *cmd_shell_clippy_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "clippy", rz_cmd_shell_clippy_handler, &cmd_shell_clippy_help);
	rz_warn_if_fail(cmd_shell_clippy_cd);

	RzCmdDesc *cmd_shell_cp_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "cp", rz_cmd_shell_cp_handler, &cmd_shell_cp_help);
	rz_warn_if_fail(cmd_shell_cp_cd);

	RzCmdDesc *cmd_shell_cd_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "cd", rz_cmd_shell_cd_handler, &cmd_shell_cd_help);
	rz_warn_if_fail(cmd_shell_cd_cd);

	RzCmdDesc *cmd_shell_cat_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "cat", rz_cmd_shell_cat_handler, &cmd_shell_cat_help);
	rz_warn_if_fail(cmd_shell_cat_cd);

	RzCmdDesc *cmd_shell_mv_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "mv", rz_cmd_shell_mv_handler, &cmd_shell_mv_help);
	rz_warn_if_fail(cmd_shell_mv_cd);

	RzCmdDesc *cmd_shell_mkdir_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "mkdir", rz_cmd_shell_mkdir_handler, &cmd_shell_mkdir_help);
	rz_warn_if_fail(cmd_shell_mkdir_cd);

	RzCmdDesc *cmd_shell_pwd_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "pwd", rz_cmd_shell_pwd_handler, &cmd_shell_pwd_help);
	rz_warn_if_fail(cmd_shell_pwd_cd);

	RzCmdDesc *cmd_shell_sort_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "sort", rz_cmd_shell_sort_handler, &cmd_shell_sort_help);
	rz_warn_if_fail(cmd_shell_sort_cd);

	RzCmdDesc *cmd_shell_clear_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "clear", rz_cmd_shell_clear_handler, &cmd_shell_clear_help);
	rz_warn_if_fail(cmd_shell_clear_cd);

	RzCmdDesc *cmd_shell_cls_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "cls", rz_cmd_shell_clear_handler, &cmd_shell_cls_help);
	rz_warn_if_fail(cmd_shell_cls_cd);

	RzCmdDesc *cmd_shell_flush_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "flush", rz_cmd_shell_flush_handler, &cmd_shell_flush_help);
	rz_warn_if_fail(cmd_shell_flush_cd);

	RzCmdDesc *cmd_shell_which_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "which", rz_cmd_shell_which_handler, &cmd_shell_which_help);
	rz_warn_if_fail(cmd_shell_which_cd);

	RzCmdDesc *cmd_shell_fortune_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "fortune", rz_cmd_shell_fortune_handler, &cmd_shell_fortune_help);
	rz_warn_if_fail(cmd_shell_fortune_cd);

	RzCmdDesc *cmd_shell_pkill_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "pkill", rz_cmd_shell_pkill_handler, &cmd_shell_pkill_help);
	rz_warn_if_fail(cmd_shell_pkill_cd);

	RzCmdDesc *ver_cd = rz_cmd_desc_group_state_new(core->rcmd, shell_cd, "ver", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_show_version_info_handler, &show_version_info_help, &ver_help);
	rz_warn_if_fail(ver_cd);
	RzCmdDesc *show_version_numeric_cd = rz_cmd_desc_argv_new(core->rcmd, ver_cd, "vernum", rz_show_version_numeric_handler, &show_version_numeric_help);
	rz_warn_if_fail(show_version_numeric_cd);

	RzCmdDesc *show_version_major_cd = rz_cmd_desc_argv_new(core->rcmd, ver_cd, "vermajor", rz_show_version_major_handler, &show_version_major_help);
	rz_warn_if_fail(show_version_major_cd);

	RzCmdDesc *show_version_minor_cd = rz_cmd_desc_argv_new(core->rcmd, ver_cd, "verminor", rz_show_version_minor_handler, &show_version_minor_help);
	rz_warn_if_fail(show_version_minor_cd);

	RzCmdDesc *show_version_patch_cd = rz_cmd_desc_argv_new(core->rcmd, ver_cd, "verpatch", rz_show_version_patch_handler, &show_version_patch_help);
	rz_warn_if_fail(show_version_patch_cd);

	RzCmdDesc *calculate_command_time_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "time", rz_calculate_command_time_handler, &calculate_command_time_help);
	rz_warn_if_fail(calculate_command_time_cd);

	RzCmdDesc *print_init_time_values_cd = rz_cmd_desc_argv_new(core->rcmd, shell_cd, "inittime", rz_print_init_time_values_handler, &print_init_time_values_help);
	rz_warn_if_fail(print_init_time_values_cd);
	rz_cmd_batch_end(core->rcmd);
}
