/*
** Automatically generated from `mdprof_test.m'
** by the Mercury compiler,
** version 22.01.9-beta-2026-08-29
** configured for x86_64-pc-linux-gnu.
** Do not edit.
**
** The autoconfigured grade settings governing
** the generation of this C file were
**
** TAG_BITS=2
** UNBOXED_FLOAT=no
** UNBOXED_INT64S=no
** PREGENERATED_DIST=yes
** HIGHLEVEL_CODE=yes
**
** END_OF_C_GRADE_INFO
*/


// :- module mdprof_test.
// :- implementation.

/*
INIT mercury__mdprof_test__init
ENDINIT
*/

#include "mdprof_test.mih"


#include "array.mih"
#include "assoc_list.mih"
#include "bimap.mih"
#include "bitmap.mih"
#include "bool.mih"
#include "builtin.mih"
#include "char.mih"
#include "conf.mih"
#include "construct.mih"
#include "deconstruct.mih"
#include "dump.mih"
#include "enum.mih"
#include "exclude.mih"
#include "getopt.mih"
#include "int.mih"
#include "io.mih"
#include "library.mih"
#include "list.mih"
#include "map.mih"
#include "maybe.mih"
#include "mdbcomp.mih"
#include "measurement_units.mih"
#include "measurements.mih"
#include "ops.mih"
#include "pair.mih"
#include "pretty_printer.mih"
#include "private_builtin.mih"
#include "profile.mih"
#include "query.mih"
#include "random.mih"
#include "require.mih"
#include "set.mih"
#include "set_ordlist.mih"
#include "startup.mih"
#include "stream.mih"
#include "string.mih"
#include "term.mih"
#include "time.mih"
#include "tree234.mih"
#include "type_desc.mih"
#include "unit.mih"
#include "univ.mih"
#include "mdbcomp.goal_path.mih"
#include "mdbcomp.prim_data.mih"
#include "mdbcomp.program_representation.mih"
#include "mdbcomp.rtti_access.mih"
#include "mdbcomp.sym_name.mih"
#include "string.format.mih"
#include "string.parse_util.mih"



struct mdprof_test__main_2_p_0_4_env_0_s {
  MR_Box * mdprof_test__main_2_p_0_4_env_0__wrapper_arg_1;
  MR_Box * mdprof_test__main_2_p_0_4_env_0__wrapper_arg_2;
  MR_Cont mdprof_test__main_2_p_0_4_env_0__cont;
  void * mdprof_test__main_2_p_0_4_env_0__cont_env_ptr;
  MR_Word mdprof_test__main_2_p_0_4_env_0__conv3_HeadVar__1_1;
  MR_Word mdprof_test__main_2_p_0_4_env_0__conv2_HeadVar__2_2;
};


static const MR_FA_PseudoTypeInfo_Struct2 mdprof_test__tree234__pti_tree234_2__plain_mdprof_test__type_ctor_info_option_0__plain_getopt__type_ctor_info_option_data_0;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_0;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_1;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_2;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_3;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_4;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_5;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_6;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_7;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_8;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_9;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_10;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_11;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_12;

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_ordinal_ordered_option_0[13];

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_name_ordered_option_0[13];

static const MR_Integer mdprof_test__mdprof_test__functor_number_map_option_0[13];

static const MR_FA_TypeInfo_Struct2 mdprof_test__tree234__ti_tree234_2mdprof_test__type_ctor_info_option_0getopt__type_ctor_info_option_data_0;

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_options_0_0;

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_ordinal_ordered_options_0[1];

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_name_ordered_options_0[1];

static const MR_Integer mdprof_test__mdprof_test__functor_number_map_options_0[1];

static void MR_CALL 
mdprof_test____Compare____options_0_0(
  MR_Word * HeadVar__1_1);

static void MR_CALL 
mdprof_test__f_85_110_117_115_101_100_65_114_103_115_95_95_112_114_101_100_95_95_95_95_67_111_109_112_97_114_101_95_95_95_109_100_112_114_111_102_95_116_101_115_116_95_95_111_112_116_105_111_110_115_95_48_95_95_91_50_44_32_51_93_95_48_3_p_0(
  MR_Word * HeadVar__1_1);

static MR_bool MR_CALL 
mdprof_test____Unify____options_0_0(void);

static void MR_CALL 
mdprof_test____Compare____option_table_0_0(
  MR_Word * HeadVar__1_1,
  MR_Word HeadVar__2_2,
  MR_Word HeadVar__3_3);

static MR_bool MR_CALL 
mdprof_test____Unify____option_table_0_0(
  MR_Word HeadVar__1_1,
  MR_Word HeadVar__2_2);

static void MR_CALL 
mdprof_test____Compare____option_0_0(
  MR_Word * HeadVar__1_1,
  MR_Word HeadVar__2_2,
  MR_Word HeadVar__3_3);

static MR_bool MR_CALL 
mdprof_test____Unify____option_0_0(
  MR_Word HeadVar__2_1,
  MR_Word HeadVar__2_2);

static void MR_CALL 
mdprof_test__defaults_2_p_0(
  MR_Word * HeadVar__1_1,
  MR_Word * HeadVar__2_2,
  MR_Cont cont,
  void * cont_env_ptr);

static MR_bool MR_CALL 
mdprof_test__long_2_p_0(
  MR_String HeadVar__1_1,
  MR_Word * HeadVar__2_2);

static MR_bool MR_CALL 
mdprof_test__short_2_p_0(
  MR_Char HeadVar__1_1,
  MR_Word * HeadVar__2_2);

static void MR_CALL 
mdprof_test__verify_profile_2_6_p_0(
  MR_Word ErrorStream_7,
  MR_String ProgName_8,
  MR_Word Options_9,
  MR_String FileName_10);

static void MR_CALL 
main_2_p_0_3(
  void * env_ptr_arg);

static void MR_CALL 
main_2_p_0_4(
  MR_Box closure_arg,
  MR_Box * wrapper_arg_1,
  MR_Box * wrapper_arg_2,
  MR_Cont cont,
  void * cont_env_ptr);

static MR_bool MR_CALL 
main_2_p_0_2(
  MR_Box closure_arg,
  MR_Box wrapper_arg_1,
  MR_Box * wrapper_arg_2);

static MR_bool MR_CALL 
main_2_p_0_1(
  MR_Box closure_arg,
  MR_Box wrapper_arg_1,
  MR_Box * wrapper_arg_2);

static void MR_CALL 
mdprof_test__verify_profile_6_p_0_1(
  MR_Box closure_arg,
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box * wrapper_arg_3);

static void MR_CALL 
mdprof_test__verify_profile_6_p_0(
  MR_Word ErrorStream_7,
  MR_String ProgName_8,
  MR_Word Args0_9,
  MR_Word Options_10);

static void MR_CALL 
mdprof_test__main_2_6_p_0(
  MR_Word ErrorStream_7,
  MR_String ProgName_8,
  MR_Word Args_9,
  MR_Word Options_10);

static void MR_CALL 
mdprof_test__test_server_5_p_0(
  MR_Word Pref_6,
  MR_Word Deep_7,
  MR_Word Options_8);

static void MR_CALL 
mdprof_test__test_recursion_types_histogram_5_p_0(
  MR_Word Pref_6,
  MR_Word Deep_7,
  MR_Word Options_8);

static void MR_CALL 
mdprof_test__test_procrep_dynamic_coverages_7_p_0(
  MR_Integer Cur_8,
  MR_Integer Max_9,
  MR_Word Pref_10,
  MR_Word Deep_11,
  MR_Word Options_12);

static void MR_CALL 
mdprof_test__test_procrep_static_coverages_7_p_0(
  MR_Integer Cur_8,
  MR_Integer Max_9,
  MR_Word Pref_10,
  MR_Word Deep_11,
  MR_Word Options_12);

static void MR_CALL 
mdprof_test__write_test_html_6_p_0(
  MR_Word Options_7,
  MR_String BaseName_8,
  MR_Integer Num_9,
  MR_String HTML_10);

static void MR_CALL 
mdprof_test__write_help_message_4_p_0(
  MR_Word OutputStream_5,
  MR_String ProgName_6);

static MR_bool MR_CALL 
mdprof_test____Unify____option_0_0_10001(
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2);

static void MR_CALL 
mdprof_test____Compare____option_0_0_10001(
  MR_Box * wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box wrapper_arg_3);

static MR_bool MR_CALL 
mdprof_test____Unify____option_table_0_0_10001(
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2);

static void MR_CALL 
mdprof_test____Compare____option_table_0_0_10001(
  MR_Box * wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box wrapper_arg_3);

static MR_bool MR_CALL 
mdprof_test____Unify____options_0_0_10001(
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2);

static void MR_CALL 
mdprof_test____Compare____options_0_0_10001(
  MR_Box * wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box wrapper_arg_3);


static /* final */ const MR_Box mdprof_test_scalar_common_1[5][3];

static /* final */ const MR_Box mdprof_test_scalar_common_2[3][2];

static /* final */ const MR_Box mdprof_test_scalar_common_3[3][1];

static /* final */ const MR_Box mdprof_test_scalar_common_4[1][9];

static /* final */ const MR_Box mdprof_test_scalar_common_5[3][5];


/* sealed */ struct mdprof_test__vector_common_type_6_0_s {
  const MR_String mdprof_test__vector_common_type_6_0__vct_6_f_0;
  const MR_Word mdprof_test__vector_common_type_6_0__vct_6_f_1;
};

static /* final */ const struct mdprof_test__vector_common_type_6_0_s mdprof_test_vector_common_6[64];

/* sealed */ struct mdprof_test__vector_common_type_7_0_s {
  const MR_Word mdprof_test__vector_common_type_7_0__vct_7_f_0;
  const MR_Word mdprof_test__vector_common_type_7_0__vct_7_f_1;
};

static /* final */ const struct mdprof_test__vector_common_type_7_0_s mdprof_test_vector_common_7[13];



static /* final */ const MR_Box mdprof_test_scalar_common_1[5][3] = {
  /* row 0 */
  {
    ((MR_Box) (&mercury__tree234__tree234__type_ctor_info_tree234_2)),
    ((MR_Box) (&mdprof_test__mdprof_test__type_ctor_info_option_0)),
    ((MR_Box) (&mercury__getopt__getopt__type_ctor_info_option_data_0))
  },
  /* row 1 */
  {
    ((MR_Box) (&mdprof_test_scalar_common_5[0])),
    ((MR_Box) (main_2_p_0_1)),
    ((MR_Box) ((MR_Integer) 0))
  },
  /* row 2 */
  {
    ((MR_Box) (&mdprof_test_scalar_common_5[1])),
    ((MR_Box) (main_2_p_0_2)),
    ((MR_Box) ((MR_Integer) 0))
  },
  /* row 3 */
  {
    ((MR_Box) (&mdprof_test_scalar_common_5[2])),
    ((MR_Box) (main_2_p_0_4)),
    ((MR_Box) ((MR_Integer) 0))
  },
  /* row 4 */
  {
    ((MR_Box) (&mdprof_test_scalar_common_1[1])),
    ((MR_Box) (&mdprof_test_scalar_common_1[2])),
    ((MR_Box) (&mdprof_test_scalar_common_1[3]))
  },
};

static /* final */ const MR_Box mdprof_test_scalar_common_2[3][2] = {
  /* row 0 */
  {
    ((MR_Box) ((MR_String) "Deep.data")),
    ((MR_Box) ((MR_Unsigned) 0U))
  },
  /* row 1 */
  {
    ((MR_Box) (MR_Word) ((MR_Unsigned) 3U)),
    ((MR_Box) ((MR_Unsigned) 0U))
  },
  /* row 2 */
  {
    ((MR_Box) (MR_Word) ((MR_Unsigned) 0U)),
    ((MR_Box) ((MR_String) "deep_test"))
  },
};

static /* final */ const MR_Box mdprof_test_scalar_common_3[3][1] = {
  /* row 0 */
  {
    (MR_Box) (((((MR_Unsigned) 0U << 4)) | (((((MR_Unsigned) 0U << 3)) | (((((MR_Unsigned) 1U << 2)) | (((MR_Unsigned) 0U << 1))))))))
  },
  /* row 1 */
  {
    (MR_Box) ((MR_Unsigned) 0U)
  },
  /* row 2 */
  {
    (MR_Box) ((MR_Unsigned) 1U)
  },
};

static /* final */ const MR_Box mdprof_test_scalar_common_4[1][9] = {
  /* row 0 */
  {
    NULL,
    ((MR_Box) (NULL)),
    ((MR_Box) ((MR_Integer) 6)),
    ((MR_Box) (&mercury__io__io__type_ctor_info_output_stream_0)),
    ((MR_Box) (&mercury__builtin__builtin__type_ctor_info_string_0)),
    ((MR_Box) (&mdprof_test__tree234__pti_tree234_2__plain_mdprof_test__type_ctor_info_option_0__plain_getopt__type_ctor_info_option_data_0)),
    ((MR_Box) (&mercury__builtin__builtin__type_ctor_info_string_0)),
    ((MR_Box) (&mercury__io__io__type_ctor_info_state_0)),
    ((MR_Box) (&mercury__io__io__type_ctor_info_state_0))
  },
};

static /* final */ const MR_Box mdprof_test_scalar_common_5[3][5] = {
  /* row 0 */
  {
    NULL,
    ((MR_Box) (NULL)),
    ((MR_Box) ((MR_Integer) 2)),
    ((MR_Box) (&mercury__builtin__builtin__type_ctor_info_character_0)),
    ((MR_Box) (&mdprof_test__mdprof_test__type_ctor_info_option_0))
  },
  /* row 1 */
  {
    NULL,
    ((MR_Box) (NULL)),
    ((MR_Box) ((MR_Integer) 2)),
    ((MR_Box) (&mercury__builtin__builtin__type_ctor_info_string_0)),
    ((MR_Box) (&mdprof_test__mdprof_test__type_ctor_info_option_0))
  },
  /* row 2 */
  {
    NULL,
    ((MR_Box) (NULL)),
    ((MR_Box) ((MR_Integer) 2)),
    ((MR_Box) (&mdprof_test__mdprof_test__type_ctor_info_option_0)),
    ((MR_Box) (&mercury__getopt__getopt__type_ctor_info_option_data_0))
  },
};


static /* final */ const struct mdprof_test__vector_common_type_6_0_s mdprof_test_vector_common_6[64] = {
  /* row 0 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 1 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 2 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 3 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 4 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 5 */
  {
    (MR_String) "version",
    (MR_Integer) 8
  },
  /* row 6 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 7 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 8 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 9 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 10 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 11 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 12 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 13 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 14 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 15 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 16 */
  {
    (MR_String) "test",
    (MR_Integer) 5
  },
  /* row 17 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 18 */
  {
    (MR_String) "recursion-types-histogram",
    (MR_Integer) 12
  },
  /* row 19 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 20 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 21 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 22 */
  {
    (MR_String) "static-procrep-coverage",
    (MR_Integer) 10
  },
  /* row 23 */
  {
    (MR_String) "dump-options",
    (MR_Integer) 2
  },
  /* row 24 */
  {
    (MR_String) "test-dir",
    (MR_Integer) 6
  },
  /* row 25 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 26 */
  {
    (MR_String) "dynamic-procrep-coverage",
    (MR_Integer) 11
  },
  /* row 27 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 28 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 29 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 30 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 31 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 32 */
  {
    (MR_String) "compress",
    (MR_Integer) 3
  },
  /* row 33 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 34 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 35 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 36 */
  {
    (MR_String) "canonical-clique",
    (MR_Integer) 0
  },
  /* row 37 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 38 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 39 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 40 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 41 */
  {
    (MR_String) "verify-profile",
    (MR_Integer) 9
  },
  /* row 42 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 43 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 44 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 45 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 46 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 47 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 48 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 49 */
  {
    (MR_String) "verbose",
    (MR_Integer) 7
  },
  /* row 50 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 51 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 52 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 53 */
  {
    (MR_String) "help",
    (MR_Integer) 4
  },
  /* row 54 */
  {
    (MR_String) "dump",
    (MR_Integer) 1
  },
  /* row 55 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 56 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 57 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 58 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 59 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 60 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 61 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 62 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
  /* row 63 */
  {
    NULL,
    (MR_Word) ((MR_Integer) 0)
  },
};

static /* final */ const struct mdprof_test__vector_common_type_7_0_s mdprof_test_vector_common_7[13] = {
  /* row 0 */
  {
    (MR_Integer) 0,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 1 */
  {
    (MR_Integer) 3,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[2]))
  },
  /* row 2 */
  {
    (MR_Integer) 1,
    (MR_Word) (MR_mkword(MR_mktag(3), &mdprof_test_scalar_common_2[1]))
  },
  /* row 3 */
  {
    (MR_Integer) 2,
    (MR_Word) (MR_mkword(MR_mktag(3), &mdprof_test_scalar_common_2[1]))
  },
  /* row 4 */
  {
    (MR_Integer) 4,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 5 */
  {
    (MR_Integer) 5,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 6 */
  {
    (MR_Integer) 6,
    (MR_Word) (MR_mkword(MR_mktag(3), &mdprof_test_scalar_common_2[2]))
  },
  /* row 7 */
  {
    (MR_Integer) 7,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 8 */
  {
    (MR_Integer) 8,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 9 */
  {
    (MR_Integer) 9,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 10 */
  {
    (MR_Integer) 10,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 11 */
  {
    (MR_Integer) 11,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
  /* row 12 */
  {
    (MR_Integer) 12,
    (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_3[1]))
  },
};


#include "array.mh"
#include "bitmap.mh"
#include "io.mh"
#include "profile.mh"
#include "string.mh"
#include "time.mh"
#include "mdbcomp.program_representation.mh"
#include "mdbcomp.rtti_access.mh"



static const MR_FA_PseudoTypeInfo_Struct2 mdprof_test__tree234__pti_tree234_2__plain_mdprof_test__type_ctor_info_option_0__plain_getopt__type_ctor_info_option_data_0 = {
  &mercury__tree234__tree234__type_ctor_info_tree234_2,
  {
    (MR_PseudoTypeInfo) (&mdprof_test__mdprof_test__type_ctor_info_option_0),
    (MR_PseudoTypeInfo) (&mercury__getopt__getopt__type_ctor_info_option_data_0)
  }
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_0 = {
  (MR_String) "canonical_clique",
  INT32_C(0)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_1 = {
  (MR_String) "dump",
  INT32_C(1)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_2 = {
  (MR_String) "dump_options",
  INT32_C(2)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_3 = {
  (MR_String) "compress",
  INT32_C(3)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_4 = {
  (MR_String) "help",
  INT32_C(4)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_5 = {
  (MR_String) "test",
  INT32_C(5)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_6 = {
  (MR_String) "test_dir",
  INT32_C(6)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_7 = {
  (MR_String) "verbose",
  INT32_C(7)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_8 = {
  (MR_String) "version",
  INT32_C(8)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_9 = {
  (MR_String) "verify_profile",
  INT32_C(9)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_10 = {
  (MR_String) "static_procrep_coverage",
  INT32_C(10)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_11 = {
  (MR_String) "dynamic_procrep_coverage",
  INT32_C(11)
};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_option_0_12 = {
  (MR_String) "recursion_types_histogram",
  INT32_C(12)
};

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_ordinal_ordered_option_0[13] = {
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_0,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_1,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_2,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_3,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_4,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_5,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_6,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_7,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_8,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_9,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_10,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_11,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_12
};

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_name_ordered_option_0[13] = {
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_0,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_3,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_1,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_2,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_11,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_4,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_12,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_10,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_5,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_6,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_7,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_9,
  &mdprof_test__mdprof_test__enum_functor_desc_option_0_8
};

static const MR_Integer mdprof_test__mdprof_test__functor_number_map_option_0[13] = {
  (MR_Integer) 0,
  (MR_Integer) 2,
  (MR_Integer) 3,
  (MR_Integer) 1,
  (MR_Integer) 5,
  (MR_Integer) 8,
  (MR_Integer) 9,
  (MR_Integer) 10,
  (MR_Integer) 12,
  (MR_Integer) 11,
  (MR_Integer) 7,
  (MR_Integer) 4,
  (MR_Integer) 6
};

const MR_TypeCtorInfo_Struct mdprof_test__mdprof_test__type_ctor_info_option_0 = {
  (MR_Integer) 0,
  UINT8_C(18),
  INT8_C(-1),
  MR_TYPECTOR_REP_ENUM,
  ((MR_Box) (mdprof_test____Unify____option_0_0_10001)),
  ((MR_Box) (mdprof_test____Compare____option_0_0_10001)),
  (MR_String) "mdprof_test",
  (MR_String) "option",
  {     mdprof_test__mdprof_test__enum_name_ordered_option_0 },
  {     mdprof_test__mdprof_test__enum_ordinal_ordered_option_0 },
  (MR_Integer) 13,
  UINT16_C(12),
  mdprof_test__mdprof_test__functor_number_map_option_0,

};

static const MR_FA_TypeInfo_Struct2 mdprof_test__tree234__ti_tree234_2mdprof_test__type_ctor_info_option_0getopt__type_ctor_info_option_data_0 = {
  &mercury__tree234__tree234__type_ctor_info_tree234_2,
  {
    (MR_TypeInfo) (&mdprof_test__mdprof_test__type_ctor_info_option_0),
    (MR_TypeInfo) (&mercury__getopt__getopt__type_ctor_info_option_data_0)
  }
};

const MR_TypeCtorInfo_Struct mdprof_test__mdprof_test__type_ctor_info_option_table_0 = {
  (MR_Integer) 0,
  UINT8_C(18),
  INT8_C(-1),
  MR_TYPECTOR_REP_EQUIV_GROUND,
  ((MR_Box) (mdprof_test____Unify____option_table_0_0_10001)),
  ((MR_Box) (mdprof_test____Compare____option_table_0_0_10001)),
  (MR_String) "mdprof_test",
  (MR_String) "option_table",
  {     NULL },
  {     (MR_PseudoTypeInfo) (&mdprof_test__tree234__ti_tree234_2mdprof_test__type_ctor_info_option_0getopt__type_ctor_info_option_data_0) },
  (MR_Integer) -1,
  UINT16_C(0),
  NULL,

};

static const MR_EnumFunctorDesc mdprof_test__mdprof_test__enum_functor_desc_options_0_0 = {
  (MR_String) "options",
  INT32_C(0)
};

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_ordinal_ordered_options_0[1] = {
  &mdprof_test__mdprof_test__enum_functor_desc_options_0_0
};

static const MR_EnumFunctorDescPtr mdprof_test__mdprof_test__enum_name_ordered_options_0[1] = {
  &mdprof_test__mdprof_test__enum_functor_desc_options_0_0
};

static const MR_Integer mdprof_test__mdprof_test__functor_number_map_options_0[1] = {
  (MR_Integer) 0
};

const MR_TypeCtorInfo_Struct mdprof_test__mdprof_test__type_ctor_info_options_0 = {
  (MR_Integer) 0,
  UINT8_C(18),
  INT8_C(-1),
  MR_TYPECTOR_REP_DUMMY,
  ((MR_Box) (mdprof_test____Unify____options_0_0_10001)),
  ((MR_Box) (mdprof_test____Compare____options_0_0_10001)),
  (MR_String) "mdprof_test",
  (MR_String) "options",
  {     mdprof_test__mdprof_test__enum_name_ordered_options_0 },
  {     mdprof_test__mdprof_test__enum_ordinal_ordered_options_0 },
  (MR_Integer) 1,
  UINT16_C(12),
  mdprof_test__mdprof_test__functor_number_map_options_0,

};

static void MR_CALL 
mdprof_test____Compare____options_0_0(
  MR_Word * HeadVar__1_1)
{
  mdprof_test__f_85_110_117_115_101_100_65_114_103_115_95_95_112_114_101_100_95_95_95_95_67_111_109_112_97_114_101_95_95_95_109_100_112_114_111_102_95_116_101_115_116_95_95_111_112_116_105_111_110_115_95_48_95_95_91_50_44_32_51_93_95_48_3_p_0(HeadVar__1_1);
}

static void MR_CALL 
mdprof_test__f_85_110_117_115_101_100_65_114_103_115_95_95_112_114_101_100_95_95_95_95_67_111_109_112_97_114_101_95_95_95_109_100_112_114_111_102_95_116_101_115_116_95_95_111_112_116_105_111_110_115_95_48_95_95_91_50_44_32_51_93_95_48_3_p_0(
  MR_Word * HeadVar__1_1)
{
  *HeadVar__1_1 = (MR_Integer) 0;
}

static MR_bool MR_CALL 
mdprof_test____Unify____options_0_0(void)
{
  return MR_TRUE;
}

static void MR_CALL 
mdprof_test____Compare____option_table_0_0(
  MR_Word * HeadVar__1_1,
  MR_Word HeadVar__2_2,
  MR_Word HeadVar__3_3)
{
  {
    MR_Word Cast_HeadVar1_4 = HeadVar__2_2;
    MR_Word Cast_HeadVar2_5 = HeadVar__3_3;

    mercury__builtin__compare_3_p_0((MR_Word) (&mdprof_test_scalar_common_1[0]), HeadVar__1_1, ((MR_Box) (Cast_HeadVar1_4)), ((MR_Box) (Cast_HeadVar2_5)));
  }
}

static MR_bool MR_CALL 
mdprof_test____Unify____option_table_0_0(
  MR_Word HeadVar__1_1,
  MR_Word HeadVar__2_2)
{
  {
    MR_bool succeeded;
    MR_Word Cast_HeadVar1_3 = HeadVar__1_1;
    MR_Word Cast_HeadVar2_4 = HeadVar__2_2;

    succeeded = mercury__builtin__unify_2_p_0((MR_Word) (&mdprof_test_scalar_common_1[0]), ((MR_Box) (Cast_HeadVar1_3)), ((MR_Box) (Cast_HeadVar2_4)));
    return succeeded;
  }
}

static void MR_CALL 
mdprof_test____Compare____option_0_0(
  MR_Word * HeadVar__1_1,
  MR_Word HeadVar__2_2,
  MR_Word HeadVar__3_3)
{
  {
    MR_bool succeeded;
    MR_Integer Cast_HeadVar1_4 = (MR_Integer) (HeadVar__2_2);
    MR_Integer Cast_HeadVar2_5 = (MR_Integer) (HeadVar__3_3);

    succeeded = (Cast_HeadVar1_4 < Cast_HeadVar2_5);
    if (succeeded)
      *HeadVar__1_1 = (MR_Integer) 1;
    else
    {
      succeeded = (Cast_HeadVar1_4 > Cast_HeadVar2_5);
      if (succeeded)
        *HeadVar__1_1 = (MR_Integer) 2;
      else
        *HeadVar__1_1 = (MR_Integer) 0;
    }
  }
}

static MR_bool MR_CALL 
mdprof_test____Unify____option_0_0(
  MR_Word HeadVar__2_1,
  MR_Word HeadVar__2_2)
{
  {
    MR_bool succeeded = (HeadVar__2_1 == HeadVar__2_2);

    return succeeded;
  }
}

static void MR_CALL 
mdprof_test__defaults_2_p_0(
  MR_Word * HeadVar__1_1,
  MR_Word * HeadVar__2_2,
  MR_Cont cont,
  void * cont_env_ptr)
{
  {
    MR_Integer slot_0 = (MR_Integer) 0;

    do
    {
      *HeadVar__1_1 = ((&mdprof_test_vector_common_7[0 + slot_0]))->mdprof_test__vector_common_type_7_0__vct_7_f_0;
      *HeadVar__2_2 = ((&mdprof_test_vector_common_7[0 + slot_0]))->mdprof_test__vector_common_type_7_0__vct_7_f_1;
      cont(cont_env_ptr);
      slot_0 = (MR_Integer) ((MR_Unsigned) slot_0 + (MR_Unsigned) 1);
    }
    while ((slot_0 < (MR_Integer) 13));
  }
}

static MR_bool MR_CALL 
mdprof_test__long_2_p_0(
  MR_String HeadVar__1_1,
  MR_Word * HeadVar__2_2)
{
  {
    MR_bool succeeded;
    MR_Integer slot_0 = ((MR_hash_string5(HeadVar__1_1)) & (MR_Integer) 63);
    MR_String str_1 = ((&mdprof_test_vector_common_6[0 + slot_0]))->mdprof_test__vector_common_type_6_0__vct_6_f_0;

    // hashed string simple lookup switch
    ;
    // compute the hash value of the input string
    ;
    // no collisions; no hash chain loop
    ;
    // lookup the string for this hash slot
    ;
    // did we find a match?
    ;
    if ((((str_1 != NULL)) && ((strcmp(str_1, HeadVar__1_1) == 0))))
    {
      // we found a match; look up the results
      ;
      *HeadVar__2_2 = ((&mdprof_test_vector_common_6[0 + slot_0]))->mdprof_test__vector_common_type_6_0__vct_6_f_1;
      succeeded = MR_TRUE;
      // jump out of search loop
      ;
      goto label_0;
    }
    succeeded = MR_FALSE;
  label_0:;
    return succeeded;
  }
}

static MR_bool MR_CALL 
mdprof_test__short_2_p_0(
  MR_Char HeadVar__1_1,
  MR_Word * HeadVar__2_2)
{
  {
    MR_bool succeeded;

    switch (HeadVar__1_1) {
      default:
        succeeded = MR_FALSE;
        break;
      case (MR_Char) 68:
        {
          *HeadVar__2_2 = (MR_Integer) 2;
          succeeded = MR_TRUE;
        }
        break;
      case (MR_Char) 84:
        {
          *HeadVar__2_2 = (MR_Integer) 5;
          succeeded = MR_TRUE;
        }
        break;
      case (MR_Char) 99:
        {
          *HeadVar__2_2 = (MR_Integer) 0;
          succeeded = MR_TRUE;
        }
        break;
      case (MR_Char) 100:
        {
          *HeadVar__2_2 = (MR_Integer) 1;
          succeeded = MR_TRUE;
        }
        break;
      case (MR_Char) 118:
        {
          *HeadVar__2_2 = (MR_Integer) 7;
          succeeded = MR_TRUE;
        }
        break;
    }
    return succeeded;
  }
}

static void MR_CALL 
mdprof_test__verify_profile_2_6_p_0(
  MR_Word ErrorStream_7,
  MR_String ProgName_8,
  MR_Word Options_9,
  MR_String FileName_10)
{
  {
    MR_Word Canonical_12;
    MR_String ScriptName_14;
    MR_Word Res_15;
    MR_Word Var_24;

    mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_9, ((MR_Box) ((MR_Integer) 0)), &Canonical_12);
    conf__script_name_3_p_0(&ScriptName_14);
    Var_24 = dump__default_dump_options_0_f_0();
    startup__read_and_startup_10_p_0((MR_String) "dummy_server", ScriptName_14, FileName_10, Canonical_12, (MR_Word) ((MR_Unsigned) 0U), (MR_Word) ((MR_Unsigned) 0U), Var_24, &Res_15);
    if (((MR_tag((MR_Word) Res_15)) == (MR_Integer) 1))
    {
      MR_String Error_17 = ((MR_String) ((MR_hl_field(MR_mktag(1), Res_15, (MR_Integer) 0))));

      mercury__io__set_exit_status_3_p_0((MR_Integer) 1);
      mercury__io__write_string_4_p_0(ErrorStream_7, ProgName_8);
      mercury__io__write_string_4_p_0(ErrorStream_7, (MR_String) ": error reading ");
      mercury__io__write_string_4_p_0(ErrorStream_7, FileName_10);
      mercury__io__write_string_4_p_0(ErrorStream_7, (MR_String) ": ");
      mercury__io__write_string_4_p_0(ErrorStream_7, Error_17);
      mercury__io__write_string_4_p_0(ErrorStream_7, (MR_String) "\n");
    }
  }
}

static void MR_CALL 
main_2_p_0_3(
  void * env_ptr_arg)
{
  {
    struct mdprof_test__main_2_p_0_4_env_0_s * env_ptr = (struct mdprof_test__main_2_p_0_4_env_0_s *) (env_ptr_arg);

    *((env_ptr)->mdprof_test__main_2_p_0_4_env_0__wrapper_arg_1) = ((MR_Box) ((env_ptr)->mdprof_test__main_2_p_0_4_env_0__conv3_HeadVar__1_1));
    *((env_ptr)->mdprof_test__main_2_p_0_4_env_0__wrapper_arg_2) = ((MR_Box) ((env_ptr)->mdprof_test__main_2_p_0_4_env_0__conv2_HeadVar__2_2));
    ((env_ptr)->mdprof_test__main_2_p_0_4_env_0__cont)((env_ptr)->mdprof_test__main_2_p_0_4_env_0__cont_env_ptr);
  }
}

static void MR_CALL 
main_2_p_0_4(
  MR_Box closure_arg,
  MR_Box * wrapper_arg_1,
  MR_Box * wrapper_arg_2,
  MR_Cont cont,
  void * cont_env_ptr)
{
  {
    struct mdprof_test__main_2_p_0_4_env_0_s env;

    (env).mdprof_test__main_2_p_0_4_env_0__wrapper_arg_1 = wrapper_arg_1;
    (env).mdprof_test__main_2_p_0_4_env_0__wrapper_arg_2 = wrapper_arg_2;
    (env).mdprof_test__main_2_p_0_4_env_0__cont = cont;
    (env).mdprof_test__main_2_p_0_4_env_0__cont_env_ptr = cont_env_ptr;
    {
      MR_Box closure = closure_arg;

      mdprof_test__defaults_2_p_0(&(env).mdprof_test__main_2_p_0_4_env_0__conv3_HeadVar__1_1, &(env).mdprof_test__main_2_p_0_4_env_0__conv2_HeadVar__2_2, main_2_p_0_3, &env);
    }
  }
}

static MR_bool MR_CALL 
main_2_p_0_2(
  MR_Box closure_arg,
  MR_Box wrapper_arg_1,
  MR_Box * wrapper_arg_2)
{
  {
    MR_bool succeeded;
    MR_Box closure = closure_arg;
    MR_Word conv1_HeadVar__2_2;

    succeeded = mdprof_test__long_2_p_0(((MR_String) (wrapper_arg_1)), &conv1_HeadVar__2_2);
    if (succeeded)
    {
      *wrapper_arg_2 = ((MR_Box) (conv1_HeadVar__2_2));
      succeeded = MR_TRUE;
    }
    return succeeded;
  }
}

static MR_bool MR_CALL 
main_2_p_0_1(
  MR_Box closure_arg,
  MR_Box wrapper_arg_1,
  MR_Box * wrapper_arg_2)
{
  {
    MR_bool succeeded;
    MR_Box closure = closure_arg;
    MR_Word conv0_HeadVar__2_2;

    succeeded = mdprof_test__short_2_p_0(((MR_Char) (MR_Word) wrapper_arg_1), &conv0_HeadVar__2_2);
    if (succeeded)
    {
      *wrapper_arg_2 = ((MR_Box) (conv0_HeadVar__2_2));
      succeeded = MR_TRUE;
    }
    return succeeded;
  }
}

void MR_CALL 
main_2_p_0(void)
{
  {
    MR_bool succeeded;
    MR_String ProgName_4;
    MR_Word Args0_5;
    MR_Word Args_6;
    MR_Word MaybeOptions_7;
    MR_Word StdOut_8;
    MR_Word StdErr_9;

    mercury__io__progname_base_4_p_0((MR_String) "mdprof_test", &ProgName_4);
    mercury__io__command_line_arguments_3_p_0(&Args0_5);
    mercury__getopt__process_options_4_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), (MR_Word) (MR_mkword(MR_mktag(2), &mdprof_test_scalar_common_1[4])), Args0_5, &Args_6, &MaybeOptions_7);
    mercury__io__stdout_stream_3_p_0(&StdOut_8);
    mercury__io__stderr_stream_3_p_0(&StdErr_9);
    if (((MR_tag((MR_Word) MaybeOptions_7)) == (MR_Integer) 1))
    {
      MR_Word Error_14 = ((MR_Word) ((MR_hl_field(MR_mktag(1), MaybeOptions_7, (MR_Integer) 0))));
      MR_String Msg_15;

      Msg_15 = mercury__getopt__option_error_to_string_1_f_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Error_14);
      mercury__io__set_exit_status_3_p_0((MR_Integer) 1);
      mercury__io__write_string_4_p_0(StdErr_9, ProgName_4);
      mercury__io__write_string_4_p_0(StdErr_9, (MR_String) ": error parsing options: ");
      mercury__io__write_string_4_p_0(StdErr_9, Msg_15);
      mercury__io__write_string_4_p_0(StdErr_9, (MR_String) "\n");
    }
    else
    {
      MR_Word Options_10 = ((MR_Word) ((MR_hl_field(MR_mktag(0), MaybeOptions_7, (MR_Integer) 0))));
      MR_Word Help_11;
      MR_Word Version_12;
      MR_Word Verify_13;

      mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 4)), &Help_11);
      mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 8)), &Version_12);
      mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 9)), &Verify_13);
      switch (Help_11) {
        default: /*NOTREACHED*/ MR_assert(0);
        case (MR_Integer) 0:
          {
          }
          break;
        case (MR_Integer) 1:
          mdprof_test__write_help_message_4_p_0(StdOut_8, ProgName_4);
          break;
      }
      switch (Version_12) {
        default: /*NOTREACHED*/ MR_assert(0);
        case (MR_Integer) 0:
          {
          }
          break;
        case (MR_Integer) 1:
          {
            MR_String Version_60;
            MR_String Fullarch_61;

            mercury__library__version_2_p_0(&Version_60, &Fullarch_61);
            mercury__io__write_string_4_p_0(StdOut_8, ProgName_4);
            mercury__io__write_string_4_p_0(StdOut_8, (MR_String) ": Mercury deep profiler\n");
            mercury__io__write_string_4_p_0(StdOut_8, (MR_String) "version: ");
            mercury__io__write_string_4_p_0(StdOut_8, Version_60);
            mercury__io__write_string_4_p_0(StdOut_8, (MR_String) ", on ");
            mercury__io__write_string_4_p_0(StdOut_8, Fullarch_61);
            mercury__io__write_string_4_p_0(StdOut_8, (MR_String) ".\n");
          }
          break;
      }
      succeeded = (Help_11 == (MR_Integer) 0);
      if (succeeded)
        succeeded = (Version_12 == (MR_Integer) 0);
      if (succeeded)
        switch (Verify_13) {
          default: /*NOTREACHED*/ MR_assert(0);
          case (MR_Integer) 0:
            mdprof_test__main_2_6_p_0(StdErr_9, ProgName_4, Args_6, Options_10);
            break;
          case (MR_Integer) 1:
            mdprof_test__verify_profile_6_p_0(StdErr_9, ProgName_4, Args_6, Options_10);
            break;
        }
    }
  }
}

static void MR_CALL 
mdprof_test__verify_profile_6_p_0_1(
  MR_Box closure_arg,
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box * wrapper_arg_3)
{
  {
    MR_Box closure = closure_arg;

    mdprof_test__verify_profile_2_6_p_0(((MR_Word) ((MR_hl_field(MR_mktag(0), closure, (MR_Integer) 3)))), ((MR_String) ((MR_hl_field(MR_mktag(0), closure, (MR_Integer) 4)))), ((MR_Word) ((MR_hl_field(MR_mktag(0), closure, (MR_Integer) 5)))), ((MR_String) (wrapper_arg_1)));
  }
}

static void MR_CALL 
mdprof_test__verify_profile_6_p_0(
  MR_Word ErrorStream_7,
  MR_String ProgName_8,
  MR_Word Args0_9,
  MR_Word Options_10)
{
  {
    MR_Word Args_12;
    MR_Word Var_19;
    MR_Box conv0_STATE_VARIABLE_IO_16;

    if ((Args0_9 == (MR_Word) ((MR_Unsigned) 0U)))
      Args_12 = (MR_Word) (MR_mkword(MR_mktag(1), &mdprof_test_scalar_common_2[0]));
    else
      Args_12 = Args0_9;
    {
      Var_19 = (MR_Word) MR_new_object(MR_Word, (6 * sizeof(MR_Word)), NULL, NULL);
      MR_hl_field(MR_mktag(0), Var_19, 0) = ((MR_Box) (&mdprof_test_scalar_common_4[0]));
      MR_hl_field(MR_mktag(0), Var_19, 1) = ((MR_Box) (mdprof_test__verify_profile_6_p_0_1));
      MR_hl_field(MR_mktag(0), Var_19, 2) = ((MR_Box) ((MR_Integer) 3));
      MR_hl_field(MR_mktag(0), Var_19, 3) = ((MR_Box) (ErrorStream_7));
      MR_hl_field(MR_mktag(0), Var_19, 4) = ((MR_Box) (ProgName_8));
      MR_hl_field(MR_mktag(0), Var_19, 5) = ((MR_Box) (Options_10));
    }
    mercury__list__foldl_4_p_2((MR_Word) (&mercury__builtin__builtin__type_ctor_info_string_0), (MR_Word) (&mercury__io__io__type_ctor_info_state_0), Var_19, Args_12, ((MR_Box) ((MR_Integer) 0)), &conv0_STATE_VARIABLE_IO_16);
  }
}

static void MR_CALL 
mdprof_test__main_2_6_p_0(
  MR_Word ErrorStream_7,
  MR_String ProgName_8,
  MR_Word Args_9,
  MR_Word Options_10)
{
  {
    MR_bool succeeded = (Args_9 != (MR_Word) ((MR_Unsigned) 0U));
    MR_String FileName_12;
    MR_Word Var_28;

    if (succeeded)
    {
      FileName_12 = ((MR_String) ((MR_hl_field(MR_mktag(1), Args_9, (MR_Integer) 0))));
      Var_28 = ((MR_Word) ((MR_hl_field(MR_mktag(1), Args_9, (MR_Integer) 1))));
      succeeded = (Var_28 == (MR_Word) ((MR_Unsigned) 0U));
    }
    if (succeeded)
    {
      MR_Word Canonical_13;
      MR_Word Verbose_14;
      MR_Word DumpStages_15;
      MR_Word DumpArrayOptionsStr_16;
      MR_Word DumpOptions_17;
      MR_String Machine_18;
      MR_String ScriptName_19;
      MR_Word MaybeOutput_20;
      MR_Word StartupResult_22;

      mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 0)), &Canonical_13);
      mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 7)), &Verbose_14);
      mercury__getopt__lookup_accumulating_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 1)), &DumpStages_15);
      mercury__getopt__lookup_accumulating_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 2)), &DumpArrayOptionsStr_16);
      dump__dump_array_options_to_dump_options_2_p_0(DumpArrayOptionsStr_16, &DumpOptions_17);
      conf__server_name_port_3_p_0(&Machine_18);
      conf__script_name_3_p_0(&ScriptName_19);
      switch (Verbose_14) {
        default: /*NOTREACHED*/ MR_assert(0);
        case (MR_Integer) 0:
          MaybeOutput_20 = (MR_Word) ((MR_Unsigned) 0U);
          break;
        case (MR_Integer) 1:
          {
            MR_Word Stdout_21;

            mercury__io__stdout_stream_3_p_0(&Stdout_21);
            {
              MaybeOutput_20 = (MR_Word) MR_mkword(MR_mktag(1), MR_new_object(MR_Word, (1 * sizeof(MR_Word)), NULL, NULL));
              MR_hl_field(MR_mktag(1), MaybeOutput_20, 0) = ((MR_Box) (Stdout_21));
            }
          }
          break;
      }
      startup__read_and_startup_10_p_0(Machine_18, ScriptName_19, FileName_12, Canonical_13, MaybeOutput_20, DumpStages_15, DumpOptions_17, &StartupResult_22);
      if (((MR_tag((MR_Word) StartupResult_22)) == (MR_Integer) 1))
      {
        MR_String Error_25 = ((MR_String) ((MR_hl_field(MR_mktag(1), StartupResult_22, (MR_Integer) 0))));

        mercury__io__set_exit_status_3_p_0((MR_Integer) 1);
        mercury__io__write_string_4_p_0(ErrorStream_7, ProgName_8);
        mercury__io__write_string_4_p_0(ErrorStream_7, (MR_String) ": error reading ");
        mercury__io__write_string_4_p_0(ErrorStream_7, FileName_12);
        mercury__io__write_string_4_p_0(ErrorStream_7, (MR_String) ": ");
        mercury__io__write_string_4_p_0(ErrorStream_7, Error_25);
        mercury__io__write_string_4_p_0(ErrorStream_7, (MR_String) "\n");
      }
      else
      {
        MR_Word Deep_23 = ((MR_Word) ((MR_hl_field(MR_mktag(0), StartupResult_22, (MR_Integer) 0))));
        MR_Word Test_24;

        mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_10, ((MR_Box) ((MR_Integer) 5)), &Test_24);
        switch (Test_24) {
          default: /*NOTREACHED*/ MR_assert(0);
          case (MR_Integer) 0:
            {
            }
            break;
          case (MR_Integer) 1:
            {
              MR_Word Var_49;

              Var_49 = query__default_preferences_1_f_0(Deep_23);
              mdprof_test__test_server_5_p_0(Var_49, Deep_23, Options_10);
            }
            break;
        }
      }
    }
    else
    {
      mercury__io__set_exit_status_3_p_0((MR_Integer) 1);
      mdprof_test__write_help_message_4_p_0(ErrorStream_7, ProgName_8);
    }
  }
}

static void MR_CALL 
mdprof_test__test_server_5_p_0(
  MR_Word Pref_6,
  MR_Word Deep_7,
  MR_Word Options_8)
{
  {
    MR_String DirName_10;
    MR_String Cmd_11;
    MR_Word StaticProcrepCoverage_13;
    MR_Word DynamicProcrepCoverage_15;
    MR_Word RecTypesHistogram_17;
    MR_String Var_100;
    MR_String Var_101;
    MR_Word Var_12;

    mercury__getopt__lookup_string_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_8, ((MR_Box) ((MR_Integer) 6)), &DirName_10);
    Var_100 = mercury__string__f_43_43_2_f_0((MR_String) " || mkdir -p ", DirName_10);
    Var_101 = mercury__string__f_43_43_2_f_0(DirName_10, Var_100);
    Cmd_11 = mercury__string__f_43_43_2_f_0((MR_String) "test -d ", Var_101);
    mercury__io__call_system_4_p_0(Cmd_11, &Var_12);
    mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_8, ((MR_Box) ((MR_Integer) 10)), &StaticProcrepCoverage_13);
    switch (StaticProcrepCoverage_13) {
      default: /*NOTREACHED*/ MR_assert(0);
      case (MR_Integer) 0:
        {
        }
        break;
      case (MR_Integer) 1:
        {
          MR_Integer NumProcStatics_14;
          MR_ArrayPtr Var_29 = ((MR_ArrayPtr) ((MR_hl_field(MR_mktag(0), Deep_7, (MR_Integer) 8))));

          mercury__array__max_2_p_0((MR_Word) (&profile__profile__type_ctor_info_proc_static_0), (MR_ArrayPtr) (Var_29), &NumProcStatics_14);
          mdprof_test__test_procrep_static_coverages_7_p_0((MR_Integer) 1, NumProcStatics_14, Pref_6, Deep_7, Options_8);
        }
        break;
    }
    mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_8, ((MR_Box) ((MR_Integer) 11)), &DynamicProcrepCoverage_15);
    switch (DynamicProcrepCoverage_15) {
      default: /*NOTREACHED*/ MR_assert(0);
      case (MR_Integer) 0:
        {
        }
        break;
      case (MR_Integer) 1:
        {
          MR_Integer NumProcDynamics_16;
          MR_ArrayPtr Var_33 = ((MR_ArrayPtr) ((MR_hl_field(MR_mktag(0), Deep_7, (MR_Integer) 6))));

          mercury__array__max_2_p_0((MR_Word) (&profile__profile__type_ctor_info_proc_dynamic_0), (MR_ArrayPtr) (Var_33), &NumProcDynamics_16);
          mdprof_test__test_procrep_dynamic_coverages_7_p_0((MR_Integer) 1, NumProcDynamics_16, Pref_6, Deep_7, Options_8);
        }
        break;
    }
    mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_8, ((MR_Box) ((MR_Integer) 12)), &RecTypesHistogram_17);
    switch (RecTypesHistogram_17) {
      default: /*NOTREACHED*/ MR_assert(0);
      case (MR_Integer) 0:
        {
        }
        break;
      case (MR_Integer) 1:
        mdprof_test__test_recursion_types_histogram_5_p_0(Pref_6, Deep_7, Options_8);
        break;
    }
  }
}

static void MR_CALL 
mdprof_test__test_recursion_types_histogram_5_p_0(
  MR_Word Pref_6,
  MR_Word Deep_7,
  MR_Word Options_8)
{
  {
    MR_String HTML_10;

    query__try_exec_4_p_0((MR_Word) ((MR_Unsigned) 12U), Pref_6, Deep_7, &HTML_10);
    mdprof_test__write_test_html_6_p_0(Options_8, (MR_String) "recursion_types_histogram", (MR_Integer) 1, HTML_10);
  }
}

static void MR_CALL 
mdprof_test__test_procrep_dynamic_coverages_7_p_0(
  MR_Integer Cur_8,
  MR_Integer Max_9,
  MR_Word Pref_10,
  MR_Word Deep_11,
  MR_Word Options_12)
{
  while (MR_TRUE)
  {
    MR_bool succeeded = (Cur_8 <= Max_9);

    // setup for model_det tailcalls optimized into a loop
    ;
    if (succeeded)
    {
      MR_String HTML_14;
      MR_Word Var_17;
      MR_Word Var_18 = (MR_Word) (Cur_8);
      MR_Integer Var_21;
      MR_Integer next_value_of_Cur_8;

      {
        Var_17 = (MR_Word) MR_mkword(MR_mktag(3), MR_new_object(MR_Word, (2 * sizeof(MR_Word)), NULL, NULL));
        MR_hl_field(MR_mktag(3), Var_17, 0) = ((MR_Box) ((MR_Unsigned) 5U));
        MR_hl_field(MR_mktag(3), Var_17, 1) = ((MR_Box) (Var_18));
      }
      query__try_exec_4_p_0(Var_17, Pref_10, Deep_11, &HTML_14);
      mdprof_test__write_test_html_6_p_0(Options_12, (MR_String) "procrep_static_coverage", Cur_8, HTML_14);
      Var_21 = (MR_Integer) ((MR_Unsigned) Cur_8 + (MR_Unsigned) 1);
      // direct tailcall eliminated
      ;
      next_value_of_Cur_8 = Var_21;
      Cur_8 = next_value_of_Cur_8;
      continue;
    }
    break;
  }
}

static void MR_CALL 
mdprof_test__test_procrep_static_coverages_7_p_0(
  MR_Integer Cur_8,
  MR_Integer Max_9,
  MR_Word Pref_10,
  MR_Word Deep_11,
  MR_Word Options_12)
{
  while (MR_TRUE)
  {
    MR_bool succeeded = (Cur_8 <= Max_9);

    // setup for model_det tailcalls optimized into a loop
    ;
    if (succeeded)
    {
      MR_String HTML_14;
      MR_Word Var_17;
      MR_Word Var_18 = (MR_Word) (Cur_8);
      MR_Integer Var_21;
      MR_Integer next_value_of_Cur_8;

      {
        Var_17 = (MR_Word) MR_mkword(MR_mktag(3), MR_new_object(MR_Word, (2 * sizeof(MR_Word)), NULL, NULL));
        MR_hl_field(MR_mktag(3), Var_17, 0) = ((MR_Box) ((MR_Unsigned) 4U));
        MR_hl_field(MR_mktag(3), Var_17, 1) = ((MR_Box) (Var_18));
      }
      query__try_exec_4_p_0(Var_17, Pref_10, Deep_11, &HTML_14);
      mdprof_test__write_test_html_6_p_0(Options_12, (MR_String) "procrep_dynamic_coverage", Cur_8, HTML_14);
      Var_21 = (MR_Integer) ((MR_Unsigned) Cur_8 + (MR_Unsigned) 1);
      // direct tailcall eliminated
      ;
      next_value_of_Cur_8 = Var_21;
      Cur_8 = next_value_of_Cur_8;
      continue;
    }
    break;
  }
}

static void MR_CALL 
mdprof_test__write_test_html_6_p_0(
  MR_Word Options_7,
  MR_String BaseName_8,
  MR_Integer Num_9,
  MR_String HTML_10)
{
  {
    MR_bool succeeded;
    MR_Integer Bunch_12;
    MR_String DirName_13;
    MR_String BunchName_14;
    MR_String FileName_17;
    MR_Word Res_18;
    MR_Integer Var_27 = (MR_Integer) ((MR_Unsigned) Num_9 - (MR_Unsigned) 1);
    MR_String Var_68;
    MR_String Var_77;
    MR_String Var_78;
    MR_String Var_80;
    MR_String Var_86;
    MR_String Var_94;
    MR_String Var_96;
    MR_String Var_97;
    MR_String Var_99;
    MR_Integer Var_39;
    MR_Integer Var_40;

    Bunch_12 = mercury__int__f_47_47_2_f_0(Var_27, (MR_Integer) 1000);
    mercury__getopt__lookup_string_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_7, ((MR_Box) ((MR_Integer) 6)), &DirName_13);
    mercury__string__format__format_signed_int_component_width_noprec_4_p_0((MR_Word) (&mdprof_test_scalar_common_3[0]), (MR_Integer) 4, Bunch_12, &Var_68);
    Var_77 = mercury__string__f_43_43_2_f_0((MR_String) "_", Var_68);
    Var_78 = mercury__string__f_43_43_2_f_0(BaseName_8, Var_77);
    Var_80 = mercury__string__f_43_43_2_f_0((MR_String) "/", Var_78);
    BunchName_14 = mercury__string__f_43_43_2_f_0(DirName_13, Var_80);
    Var_40 = (MR_Integer) ((MR_Unsigned) Num_9 - (MR_Unsigned) 1);
    Var_39 = mercury__int__rem_2_f_0(Var_40, (MR_Integer) 1000);
    succeeded = (Var_39 == (MR_Integer) 0);
    if (succeeded)
    {
      MR_String Cmd_15;
      MR_String Var_82;
      MR_String Var_83;
      MR_Word Var_16;

      Var_82 = mercury__string__f_43_43_2_f_0((MR_String) " || mkdir -p ", BunchName_14);
      Var_83 = mercury__string__f_43_43_2_f_0(BunchName_14, Var_82);
      Cmd_15 = mercury__string__f_43_43_2_f_0((MR_String) "test -d ", Var_83);
      mercury__io__call_system_4_p_0(Cmd_15, &Var_16);
    }
    mercury__string__format__format_signed_int_component_width_noprec_4_p_0((MR_Word) (&mdprof_test_scalar_common_3[0]), (MR_Integer) 6, Num_9, &Var_86);
    Var_94 = mercury__string__f_43_43_2_f_0(Var_86, (MR_String) ".html");
    Var_96 = mercury__string__f_43_43_2_f_0((MR_String) "_", Var_94);
    Var_97 = mercury__string__f_43_43_2_f_0(BaseName_8, Var_96);
    Var_99 = mercury__string__f_43_43_2_f_0((MR_String) "/", Var_97);
    FileName_17 = mercury__string__f_43_43_2_f_0(BunchName_14, Var_99);
    mercury__io__open_output_4_p_0(FileName_17, &Res_18);
    if (((MR_tag((MR_Word) Res_18)) == (MR_Integer) 1))
    {
      MR_Word Err_23 = ((MR_Word) ((MR_hl_field(MR_mktag(1), Res_18, (MR_Integer) 0))));
      MR_String ErrMsg_24;

      mercury__io__error_message_2_p_0(Err_23, &ErrMsg_24);
      {
        mercury__require__error_1_p_0(ErrMsg_24);
        return;
      }
    }
    else
    {
      MR_Word Stream_19 = ((MR_Word) ((MR_hl_field(MR_mktag(0), Res_18, (MR_Integer) 0))));
      MR_Word Compress_20;

      mercury__io__write_string_4_p_0(Stream_19, HTML_10);
      mercury__io__close_output_3_p_0(Stream_19);
      mercury__getopt__lookup_bool_option_3_p_0((MR_Word) (&mdprof_test__mdprof_test__type_ctor_info_option_0), Options_7, ((MR_Box) ((MR_Integer) 3)), &Compress_20);
      switch (Compress_20) {
        default: /*NOTREACHED*/ MR_assert(0);
        case (MR_Integer) 0:
          {
          }
          break;
        case (MR_Integer) 1:
          {
            MR_String GzipCmd_21;
            MR_Word Var_22;

            GzipCmd_21 = mercury__string__f_43_43_2_f_0((MR_String) "gzip ", FileName_17);
            mercury__io__call_system_4_p_0(GzipCmd_21, &Var_22);
          }
          break;
      }
    }
  }
}

static void MR_CALL 
mdprof_test__write_help_message_4_p_0(
  MR_Word OutputStream_5,
  MR_String ProgName_6)
{
  {
    MR_String Var_15;
    MR_String Var_18;
    MR_String Var_20;
    MR_String Var_22;
    MR_String Var_24;
    MR_String Var_26;
    MR_String Var_28;
    MR_String Var_30;
    MR_String Var_32;
    MR_String Var_34;
    MR_String Var_36;
    MR_String Var_38;
    MR_String Var_40;
    MR_String Var_42;
    MR_String Var_44;
    MR_String Var_46;
    MR_String Var_48;
    MR_String Var_50;
    MR_String Var_52;

    mercury__io__write_string_4_p_0(OutputStream_5, (MR_String) "Usage: ");
    mercury__io__write_string_4_p_0(OutputStream_5, ProgName_6);
    mercury__io__write_string_4_p_0(OutputStream_5, (MR_String) " [<options>] <filename>\n");
    Var_52 = mercury__string__f_43_43_2_f_0((MR_String) "--recursion-types-histogram\n", (MR_String) "\t\t\tRun the recursion types histogram query\n");
    Var_50 = mercury__string__f_43_43_2_f_0((MR_String) "\t\t\tRun the procrep coverage query on every static procedure\n", Var_52);
    Var_48 = mercury__string__f_43_43_2_f_0((MR_String) "--procrep-coverage\n", Var_50);
    Var_46 = mercury__string__f_43_43_2_f_0((MR_String) "\t\t\tDon\'t compress the resulting files, this speeds the test.\n", Var_48);
    Var_44 = mercury__string__f_43_43_2_f_0((MR_String) "--no-compress\n", Var_46);
    Var_42 = mercury__string__f_43_43_2_f_0((MR_String) "\t\t\tPut the generated web pages into <dirname>.\n", Var_44);
    Var_40 = mercury__string__f_43_43_2_f_0((MR_String) "--test-dir <dirname>\n", Var_42);
    Var_38 = mercury__string__f_43_43_2_f_0((MR_String) "You may also specify the following options:.\n", Var_40);
    Var_36 = mercury__string__f_43_43_2_f_0((MR_String) "\n", Var_38);
    Var_34 = mercury__string__f_43_43_2_f_0((MR_String) "\t\t\tdata file.\n", Var_36);
    Var_32 = mercury__string__f_43_43_2_f_0((MR_String) "\t\t\tVerify that <filename> is a well-formed deep profiling\n", Var_34);
    Var_30 = mercury__string__f_43_43_2_f_0((MR_String) "--verify-profile\n", Var_32);
    Var_28 = mercury__string__f_43_43_2_f_0((MR_String) "\t\t\tpossible web pages of the popular types.\n", Var_30);
    Var_26 = mercury__string__f_43_43_2_f_0((MR_String) "--test      Test the deep profiler, generating all\n", Var_28);
    Var_24 = mercury__string__f_43_43_2_f_0((MR_String) "--verbose   Generate progress messages during startup.\n", Var_26);
    Var_22 = mercury__string__f_43_43_2_f_0((MR_String) "--version   Report the program\'s version number.\n", Var_24);
    Var_20 = mercury__string__f_43_43_2_f_0((MR_String) "--help      Generate this help message.\n", Var_22);
    Var_18 = mercury__string__f_43_43_2_f_0((MR_String) "You should specify one of the following options:\n", Var_20);
    Var_15 = mercury__string__f_43_43_2_f_0((MR_String) "<filename> must name a deep profiling data file.\n", Var_18);
    mercury__io__write_string_4_p_0(OutputStream_5, Var_15);
  }
}

static MR_bool MR_CALL 
mdprof_test____Unify____option_0_0_10001(
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2)
{
  {
    MR_bool succeeded;

    succeeded = mdprof_test____Unify____option_0_0(((MR_Word) (wrapper_arg_1)), ((MR_Word) (wrapper_arg_2)));
    return succeeded;
  }
}

static void MR_CALL 
mdprof_test____Compare____option_0_0_10001(
  MR_Box * wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box wrapper_arg_3)
{
  {
    MR_Word conv0_HeadVar__1_1;

    mdprof_test____Compare____option_0_0(&conv0_HeadVar__1_1, ((MR_Word) (wrapper_arg_2)), ((MR_Word) (wrapper_arg_3)));
    *wrapper_arg_1 = ((MR_Box) (conv0_HeadVar__1_1));
  }
}

static MR_bool MR_CALL 
mdprof_test____Unify____option_table_0_0_10001(
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2)
{
  {
    MR_bool succeeded;

    succeeded = mdprof_test____Unify____option_table_0_0(((MR_Word) (wrapper_arg_1)), ((MR_Word) (wrapper_arg_2)));
    return succeeded;
  }
}

static void MR_CALL 
mdprof_test____Compare____option_table_0_0_10001(
  MR_Box * wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box wrapper_arg_3)
{
  {
    MR_Word conv0_HeadVar__1_1;

    mdprof_test____Compare____option_table_0_0(&conv0_HeadVar__1_1, ((MR_Word) (wrapper_arg_2)), ((MR_Word) (wrapper_arg_3)));
    *wrapper_arg_1 = ((MR_Box) (conv0_HeadVar__1_1));
  }
}

static MR_bool MR_CALL 
mdprof_test____Unify____options_0_0_10001(
  MR_Box wrapper_arg_1,
  MR_Box wrapper_arg_2)
{
  {
    MR_bool succeeded;

    succeeded = mdprof_test____Unify____options_0_0();
    return succeeded;
  }
}

static void MR_CALL 
mdprof_test____Compare____options_0_0_10001(
  MR_Box * wrapper_arg_1,
  MR_Box wrapper_arg_2,
  MR_Box wrapper_arg_3)
{
  {
    MR_Word conv0_HeadVar__1_1;

    mdprof_test____Compare____options_0_0(&conv0_HeadVar__1_1);
    *wrapper_arg_1 = ((MR_Box) (conv0_HeadVar__1_1));
  }
}

void mercury__mdprof_test__init(void)
{
}

void mercury__mdprof_test__init_type_tables(void)
{
	static MR_bool initialised = MR_FALSE;
	if (initialised) return;
	initialised = MR_TRUE;

	MR_register_type_ctor_info(&mdprof_test__mdprof_test__type_ctor_info_option_0);
	MR_register_type_ctor_info(&mdprof_test__mdprof_test__type_ctor_info_option_table_0);
	MR_register_type_ctor_info(&mdprof_test__mdprof_test__type_ctor_info_options_0);
}

void mercury__mdprof_test__init_debugger(void)
{
	MR_fatal_error("debugger initialization in MLDS grade");
}

// Ensure everything is compiled with the same grade.
const char *mercury__mdprof_test__grade_check(void)
{
    return &MR_GRADE_VAR;
}

// :- end_module mdprof_test.
