/*
** This code was automatically generated by mkinit - do not edit.
**
** Grade: hlc.gc.pregen
** Input files:
**
** analysis_utils.c
** apply_exclusion.c
** array_util.c
** callgraph.c
** canonical.c
** cliques.c
** conf.c
** coverage.c
** create_report.c
** dense_bitset.c
** display.c
** display_report.c
** dump.c
** exclude.c
** html_format.c
** io_combinator.c
** mdbcomp.c
** mdbcomp.feedback.c
** mdbcomp.feedback.automatic_parallelism.c
** mdbcomp.goal_path.c
** mdbcomp.prim_data.c
** mdbcomp.program_representation.c
** mdbcomp.rtti_access.c
** mdbcomp.shared_utilities.c
** mdbcomp.slice_and_dice.c
** mdbcomp.trace_counts.c
** mdprof_test.c
** measurement_units.c
** measurements.c
** message.c
** profile.c
** program_representation_utils.c
** query.c
** read_profile.c
** recursion_patterns.c
** report.c
** startup.c
** top_procs.c
** util.c
** var_use_analysis.c
** ../library/mer_std.init
** ../runtime/mer_rt.init
*/
#define _BSD_SOURCE
#include <stddef.h>
#ifdef MR_PROFILE_SBRK
#include <unistd.h>
#endif
#include "mercury_init.h"
#include "mercury_grade.h"
#ifdef MR_WIN32
  #include "mercury_windows.h"
#endif

#define MR_TRACE_ENABLED 0
#if MR_TRACE_ENABLED
  #define MR_MAY_NEED_INITIALIZATION
#endif

/*
** Work around a bug in the Solaris 2.X (X<=4) linker;
** on these machines, init_gc must be statically linked.
*/

#ifdef MR_CONSERVATIVE_GC
static void init_gc(void)
{
   GC_INIT();
}
#endif


#if defined(MR_MAY_NEED_INITIALIZATION)

static void init_modules_0(void)
{
	{ extern void mercury__analysis_utils__init(void);
	  mercury__analysis_utils__init(); }
	{ extern void mercury__apply_exclusion__init(void);
	  mercury__apply_exclusion__init(); }
	{ extern void mercury__array_util__init(void);
	  mercury__array_util__init(); }
	{ extern void mercury__callgraph__init(void);
	  mercury__callgraph__init(); }
	{ extern void mercury__canonical__init(void);
	  mercury__canonical__init(); }
	{ extern void mercury__cliques__init(void);
	  mercury__cliques__init(); }
	{ extern void mercury__conf__init(void);
	  mercury__conf__init(); }
	{ extern void mercury__coverage__init(void);
	  mercury__coverage__init(); }
	{ extern void mercury__create_report__init(void);
	  mercury__create_report__init(); }
	{ extern void mercury__dense_bitset__init(void);
	  mercury__dense_bitset__init(); }
	{ extern void mercury__display__init(void);
	  mercury__display__init(); }
	{ extern void mercury__display_report__init(void);
	  mercury__display_report__init(); }
	{ extern void mercury__dump__init(void);
	  mercury__dump__init(); }
	{ extern void mercury__exclude__init(void);
	  mercury__exclude__init(); }
	{ extern void mercury__html_format__init(void);
	  mercury__html_format__init(); }
	{ extern void mercury__io_combinator__init(void);
	  mercury__io_combinator__init(); }
	{ extern void mercury__mdbcomp__init(void);
	  mercury__mdbcomp__init(); }
	{ extern void mercury__mdbcomp__feedback__init(void);
	  mercury__mdbcomp__feedback__init(); }
	{ extern void mercury__mdbcomp__feedback__automatic_parallelism__init(void);
	  mercury__mdbcomp__feedback__automatic_parallelism__init(); }
	{ extern void mercury__mdbcomp__goal_path__init(void);
	  mercury__mdbcomp__goal_path__init(); }
	{ extern void mercury__mdbcomp__prim_data__init(void);
	  mercury__mdbcomp__prim_data__init(); }
	{ extern void mercury__mdbcomp__program_representation__init(void);
	  mercury__mdbcomp__program_representation__init(); }
	{ extern void mercury__mdbcomp__rtti_access__init(void);
	  mercury__mdbcomp__rtti_access__init(); }
	{ extern void mercury__mdbcomp__shared_utilities__init(void);
	  mercury__mdbcomp__shared_utilities__init(); }
	{ extern void mercury__mdbcomp__slice_and_dice__init(void);
	  mercury__mdbcomp__slice_and_dice__init(); }
	{ extern void mercury__mdbcomp__trace_counts__init(void);
	  mercury__mdbcomp__trace_counts__init(); }
	{ extern void mercury__mdprof_test__init(void);
	  mercury__mdprof_test__init(); }
	{ extern void mercury__measurement_units__init(void);
	  mercury__measurement_units__init(); }
	{ extern void mercury__measurements__init(void);
	  mercury__measurements__init(); }
	{ extern void mercury__message__init(void);
	  mercury__message__init(); }
	{ extern void mercury__profile__init(void);
	  mercury__profile__init(); }
	{ extern void mercury__program_representation_utils__init(void);
	  mercury__program_representation_utils__init(); }
	{ extern void mercury__query__init(void);
	  mercury__query__init(); }
	{ extern void mercury__read_profile__init(void);
	  mercury__read_profile__init(); }
	{ extern void mercury__recursion_patterns__init(void);
	  mercury__recursion_patterns__init(); }
	{ extern void mercury__report__init(void);
	  mercury__report__init(); }
	{ extern void mercury__startup__init(void);
	  mercury__startup__init(); }
	{ extern void mercury__top_procs__init(void);
	  mercury__top_procs__init(); }
	{ extern void mercury__util__init(void);
	  mercury__util__init(); }
	{ extern void mercury__var_use_analysis__init(void);
	  mercury__var_use_analysis__init(); }
}

static void init_modules_1(void)
{
	{ extern void mercury__array__init(void);
	  mercury__array__init(); }
	{ extern void mercury__array2d__init(void);
	  mercury__array2d__init(); }
	{ extern void mercury__assoc_list__init(void);
	  mercury__assoc_list__init(); }
	{ extern void mercury__backjump__init(void);
	  mercury__backjump__init(); }
	{ extern void mercury__bag__init(void);
	  mercury__bag__init(); }
	{ extern void mercury__benchmarking__init(void);
	  mercury__benchmarking__init(); }
	{ extern void mercury__bimap__init(void);
	  mercury__bimap__init(); }
	{ extern void mercury__bit_buffer__init(void);
	  mercury__bit_buffer__init(); }
	{ extern void mercury__bit_buffer__read__init(void);
	  mercury__bit_buffer__read__init(); }
	{ extern void mercury__bit_buffer__write__init(void);
	  mercury__bit_buffer__write__init(); }
	{ extern void mercury__bitmap__init(void);
	  mercury__bitmap__init(); }
	{ extern void mercury__bool__init(void);
	  mercury__bool__init(); }
	{ extern void mercury__bt_array__init(void);
	  mercury__bt_array__init(); }
	{ extern void mercury__builtin__init(void);
	  mercury__builtin__init(); }
	{ extern void mercury__calendar__init(void);
	  mercury__calendar__init(); }
	{ extern void mercury__char__init(void);
	  mercury__char__init(); }
	{ extern void mercury__construct__init(void);
	  mercury__construct__init(); }
	{ extern void mercury__cord__init(void);
	  mercury__cord__init(); }
	{ extern void mercury__counter__init(void);
	  mercury__counter__init(); }
	{ extern void mercury__deconstruct__init(void);
	  mercury__deconstruct__init(); }
	{ extern void mercury__digraph__init(void);
	  mercury__digraph__init(); }
	{ extern void mercury__dir__init(void);
	  mercury__dir__init(); }
	{ extern void mercury__enum__init(void);
	  mercury__enum__init(); }
	{ extern void mercury__eqvclass__init(void);
	  mercury__eqvclass__init(); }
	{ extern void mercury__erlang_builtin__init(void);
	  mercury__erlang_builtin__init(); }
	{ extern void mercury__erlang_rtti_implementation__init(void);
	  mercury__erlang_rtti_implementation__init(); }
	{ extern void mercury__exception__init(void);
	  mercury__exception__init(); }
	{ extern void mercury__fat_sparse_bitset__init(void);
	  mercury__fat_sparse_bitset__init(); }
	{ extern void mercury__float__init(void);
	  mercury__float__init(); }
	{ extern void mercury__gc__init(void);
	  mercury__gc__init(); }
	{ extern void mercury__getopt__init(void);
	  mercury__getopt__init(); }
	{ extern void mercury__getopt_io__init(void);
	  mercury__getopt_io__init(); }
	{ extern void mercury__hash_table__init(void);
	  mercury__hash_table__init(); }
	{ extern void mercury__injection__init(void);
	  mercury__injection__init(); }
	{ extern void mercury__int__init(void);
	  mercury__int__init(); }
	{ extern void mercury__integer__init(void);
	  mercury__integer__init(); }
	{ extern void mercury__io__init(void);
	  mercury__io__init(); }
	{ extern void mercury__lazy__init(void);
	  mercury__lazy__init(); }
	{ extern void mercury__lexer__init(void);
	  mercury__lexer__init(); }
	{ extern void mercury__library__init(void);
	  mercury__library__init(); }
}

static void init_modules_2(void)
{
	{ extern void mercury__list__init(void);
	  mercury__list__init(); }
	{ extern void mercury__map__init(void);
	  mercury__map__init(); }
	{ extern void mercury__math__init(void);
	  mercury__math__init(); }
	{ extern void mercury__maybe__init(void);
	  mercury__maybe__init(); }
	{ extern void mercury__mer_std__init(void);
	  mercury__mer_std__init(); }
	{ extern void mercury__multi_map__init(void);
	  mercury__multi_map__init(); }
	{ extern void mercury__mutvar__init(void);
	  mercury__mutvar__init(); }
	{ extern void mercury__ops__init(void);
	  mercury__ops__init(); }
	{ extern void mercury__pair__init(void);
	  mercury__pair__init(); }
	{ extern void mercury__par_builtin__init(void);
	  mercury__par_builtin__init(); }
	{ extern void mercury__parser__init(void);
	  mercury__parser__init(); }
	{ extern void mercury__parsing_utils__init(void);
	  mercury__parsing_utils__init(); }
	{ extern void mercury__pprint__init(void);
	  mercury__pprint__init(); }
	{ extern void mercury__pqueue__init(void);
	  mercury__pqueue__init(); }
	{ extern void mercury__pretty_printer__init(void);
	  mercury__pretty_printer__init(); }
	{ extern void mercury__private_builtin__init(void);
	  mercury__private_builtin__init(); }
	{ extern void mercury__profiling_builtin__init(void);
	  mercury__profiling_builtin__init(); }
	{ extern void mercury__prolog__init(void);
	  mercury__prolog__init(); }
	{ extern void mercury__queue__init(void);
	  mercury__queue__init(); }
	{ extern void mercury__random__init(void);
	  mercury__random__init(); }
	{ extern void mercury__rational__init(void);
	  mercury__rational__init(); }
	{ extern void mercury__rbtree__init(void);
	  mercury__rbtree__init(); }
	{ extern void mercury__region_builtin__init(void);
	  mercury__region_builtin__init(); }
	{ extern void mercury__require__init(void);
	  mercury__require__init(); }
	{ extern void mercury__robdd__init(void);
	  mercury__robdd__init(); }
	{ extern void mercury__rtree__init(void);
	  mercury__rtree__init(); }
	{ extern void mercury__rtti_implementation__init(void);
	  mercury__rtti_implementation__init(); }
	{ extern void mercury__set__init(void);
	  mercury__set__init(); }
	{ extern void mercury__set_bbbtree__init(void);
	  mercury__set_bbbtree__init(); }
	{ extern void mercury__set_ctree234__init(void);
	  mercury__set_ctree234__init(); }
	{ extern void mercury__set_ordlist__init(void);
	  mercury__set_ordlist__init(); }
	{ extern void mercury__set_tree234__init(void);
	  mercury__set_tree234__init(); }
	{ extern void mercury__set_unordlist__init(void);
	  mercury__set_unordlist__init(); }
	{ extern void mercury__solutions__init(void);
	  mercury__solutions__init(); }
	{ extern void mercury__sparse_bitset__init(void);
	  mercury__sparse_bitset__init(); }
	{ extern void mercury__stack__init(void);
	  mercury__stack__init(); }
	{ extern void mercury__std_util__init(void);
	  mercury__std_util__init(); }
	{ extern void mercury__stm_builtin__init(void);
	  mercury__stm_builtin__init(); }
	{ extern void mercury__store__init(void);
	  mercury__store__init(); }
	{ extern void mercury__stream__init(void);
	  mercury__stream__init(); }
}

static void init_modules_3(void)
{
	{ extern void mercury__stream__string_writer__init(void);
	  mercury__stream__string_writer__init(); }
	{ extern void mercury__string__init(void);
	  mercury__string__init(); }
	{ extern void mercury__string__builder__init(void);
	  mercury__string__builder__init(); }
	{ extern void mercury__table_builtin__init(void);
	  mercury__table_builtin__init(); }
	{ extern void mercury__table_statistics__init(void);
	  mercury__table_statistics__init(); }
	{ extern void mercury__term__init(void);
	  mercury__term__init(); }
	{ extern void mercury__term_io__init(void);
	  mercury__term_io__init(); }
	{ extern void mercury__term_size_prof_builtin__init(void);
	  mercury__term_size_prof_builtin__init(); }
	{ extern void mercury__term_to_xml__init(void);
	  mercury__term_to_xml__init(); }
	{ extern void mercury__test_bitset__init(void);
	  mercury__test_bitset__init(); }
	{ extern void mercury__thread__init(void);
	  mercury__thread__init(); }
	{ extern void mercury__thread__channel__init(void);
	  mercury__thread__channel__init(); }
	{ extern void mercury__thread__mvar__init(void);
	  mercury__thread__mvar__init(); }
	{ extern void mercury__thread__semaphore__init(void);
	  mercury__thread__semaphore__init(); }
	{ extern void mercury__time__init(void);
	  mercury__time__init(); }
	{ extern void mercury__tree234__init(void);
	  mercury__tree234__init(); }
	{ extern void mercury__tree_bitset__init(void);
	  mercury__tree_bitset__init(); }
	{ extern void mercury__type_desc__init(void);
	  mercury__type_desc__init(); }
	{ extern void mercury__unit__init(void);
	  mercury__unit__init(); }
	{ extern void mercury__univ__init(void);
	  mercury__univ__init(); }
	{ extern void mercury__varset__init(void);
	  mercury__varset__init(); }
	{ extern void mercury__version_array__init(void);
	  mercury__version_array__init(); }
	{ extern void mercury__version_array2d__init(void);
	  mercury__version_array2d__init(); }
	{ extern void mercury__version_bitmap__init(void);
	  mercury__version_bitmap__init(); }
	{ extern void mercury__version_hash_table__init(void);
	  mercury__version_hash_table__init(); }
	{ extern void mercury__version_store__init(void);
	  mercury__version_store__init(); }
	{ extern void mercury_sys_init_backjumps_init(void);
	  mercury_sys_init_backjumps_init(); }
	{ extern void mercury_sys_init_exceptions_init(void);
	  mercury_sys_init_exceptions_init(); }
	{ extern void mercury_sys_init_par_builtin_modules_init(void);
	  mercury_sys_init_par_builtin_modules_init(); }
	{ extern void mercury_sys_init_lc_init(void);
	  mercury_sys_init_lc_init(); }
	{ extern void mercury_sys_init_stm_builtin_modules_init(void);
	  mercury_sys_init_stm_builtin_modules_init(); }
	{ extern void mercury_sys_init_thread_modules_init(void);
	  mercury_sys_init_thread_modules_init(); }
	{ extern void mercury_sys_init_semaphore_modules_init(void);
	  mercury_sys_init_semaphore_modules_init(); }
	{ extern void mercury_sys_init_mercury_builtin_types_init(void);
	  mercury_sys_init_mercury_builtin_types_init(); }
	{ extern void mercury_sys_init_scheduler_wrapper_init(void);
	  mercury_sys_init_scheduler_wrapper_init(); }
	{ extern void mercury_sys_init_engine_init(void);
	  mercury_sys_init_engine_init(); }
	{ extern void mercury_sys_init_call_init(void);
	  mercury_sys_init_call_init(); }
	{ extern void mercury_sys_init_mmsc_modules_init(void);
	  mercury_sys_init_mmsc_modules_init(); }
	{ extern void mercury_sys_init_mmos_modules_init(void);
	  mercury_sys_init_mmos_modules_init(); }
	{ extern void mercury_sys_init_runtime_profiling_builtin_module_init(void);
	  mercury_sys_init_runtime_profiling_builtin_module_init(); }
}

static void init_modules_4(void)
{
	{ extern void mercury_sys_init_stacks_init(void);
	  mercury_sys_init_stacks_init(); }
	{ extern void mercury_sys_init_table_modules_init(void);
	  mercury_sys_init_table_modules_init(); }
	{ extern void mercury_sys_init_trace_init(void);
	  mercury_sys_init_trace_init(); }
	{ extern void mercury_sys_init_wrapper_init(void);
	  mercury_sys_init_wrapper_init(); }
}

#endif


static void init_modules(void)
{
#if defined(MR_MAY_NEED_INITIALIZATION)
	init_modules_0();
	init_modules_1();
	init_modules_2();
	init_modules_3();
	init_modules_4();
#endif
}

static void init_modules_type_tables_0(void)
{
	{ extern void mercury__analysis_utils__init_type_tables(void);
	  mercury__analysis_utils__init_type_tables(); }
	{ extern void mercury__apply_exclusion__init_type_tables(void);
	  mercury__apply_exclusion__init_type_tables(); }
	{ extern void mercury__array_util__init_type_tables(void);
	  mercury__array_util__init_type_tables(); }
	{ extern void mercury__callgraph__init_type_tables(void);
	  mercury__callgraph__init_type_tables(); }
	{ extern void mercury__canonical__init_type_tables(void);
	  mercury__canonical__init_type_tables(); }
	{ extern void mercury__cliques__init_type_tables(void);
	  mercury__cliques__init_type_tables(); }
	{ extern void mercury__conf__init_type_tables(void);
	  mercury__conf__init_type_tables(); }
	{ extern void mercury__coverage__init_type_tables(void);
	  mercury__coverage__init_type_tables(); }
	{ extern void mercury__create_report__init_type_tables(void);
	  mercury__create_report__init_type_tables(); }
	{ extern void mercury__dense_bitset__init_type_tables(void);
	  mercury__dense_bitset__init_type_tables(); }
	{ extern void mercury__display__init_type_tables(void);
	  mercury__display__init_type_tables(); }
	{ extern void mercury__display_report__init_type_tables(void);
	  mercury__display_report__init_type_tables(); }
	{ extern void mercury__dump__init_type_tables(void);
	  mercury__dump__init_type_tables(); }
	{ extern void mercury__exclude__init_type_tables(void);
	  mercury__exclude__init_type_tables(); }
	{ extern void mercury__html_format__init_type_tables(void);
	  mercury__html_format__init_type_tables(); }
	{ extern void mercury__io_combinator__init_type_tables(void);
	  mercury__io_combinator__init_type_tables(); }
	{ extern void mercury__mdbcomp__init_type_tables(void);
	  mercury__mdbcomp__init_type_tables(); }
	{ extern void mercury__mdbcomp__feedback__init_type_tables(void);
	  mercury__mdbcomp__feedback__init_type_tables(); }
	{ extern void mercury__mdbcomp__feedback__automatic_parallelism__init_type_tables(void);
	  mercury__mdbcomp__feedback__automatic_parallelism__init_type_tables(); }
	{ extern void mercury__mdbcomp__goal_path__init_type_tables(void);
	  mercury__mdbcomp__goal_path__init_type_tables(); }
	{ extern void mercury__mdbcomp__prim_data__init_type_tables(void);
	  mercury__mdbcomp__prim_data__init_type_tables(); }
	{ extern void mercury__mdbcomp__program_representation__init_type_tables(void);
	  mercury__mdbcomp__program_representation__init_type_tables(); }
	{ extern void mercury__mdbcomp__rtti_access__init_type_tables(void);
	  mercury__mdbcomp__rtti_access__init_type_tables(); }
	{ extern void mercury__mdbcomp__shared_utilities__init_type_tables(void);
	  mercury__mdbcomp__shared_utilities__init_type_tables(); }
	{ extern void mercury__mdbcomp__slice_and_dice__init_type_tables(void);
	  mercury__mdbcomp__slice_and_dice__init_type_tables(); }
	{ extern void mercury__mdbcomp__trace_counts__init_type_tables(void);
	  mercury__mdbcomp__trace_counts__init_type_tables(); }
	{ extern void mercury__mdprof_test__init_type_tables(void);
	  mercury__mdprof_test__init_type_tables(); }
	{ extern void mercury__measurement_units__init_type_tables(void);
	  mercury__measurement_units__init_type_tables(); }
	{ extern void mercury__measurements__init_type_tables(void);
	  mercury__measurements__init_type_tables(); }
	{ extern void mercury__message__init_type_tables(void);
	  mercury__message__init_type_tables(); }
	{ extern void mercury__profile__init_type_tables(void);
	  mercury__profile__init_type_tables(); }
	{ extern void mercury__program_representation_utils__init_type_tables(void);
	  mercury__program_representation_utils__init_type_tables(); }
	{ extern void mercury__query__init_type_tables(void);
	  mercury__query__init_type_tables(); }
	{ extern void mercury__read_profile__init_type_tables(void);
	  mercury__read_profile__init_type_tables(); }
	{ extern void mercury__recursion_patterns__init_type_tables(void);
	  mercury__recursion_patterns__init_type_tables(); }
	{ extern void mercury__report__init_type_tables(void);
	  mercury__report__init_type_tables(); }
	{ extern void mercury__startup__init_type_tables(void);
	  mercury__startup__init_type_tables(); }
	{ extern void mercury__top_procs__init_type_tables(void);
	  mercury__top_procs__init_type_tables(); }
	{ extern void mercury__util__init_type_tables(void);
	  mercury__util__init_type_tables(); }
	{ extern void mercury__var_use_analysis__init_type_tables(void);
	  mercury__var_use_analysis__init_type_tables(); }
}

static void init_modules_type_tables_1(void)
{
	{ extern void mercury__array__init_type_tables(void);
	  mercury__array__init_type_tables(); }
	{ extern void mercury__array2d__init_type_tables(void);
	  mercury__array2d__init_type_tables(); }
	{ extern void mercury__assoc_list__init_type_tables(void);
	  mercury__assoc_list__init_type_tables(); }
	{ extern void mercury__backjump__init_type_tables(void);
	  mercury__backjump__init_type_tables(); }
	{ extern void mercury__bag__init_type_tables(void);
	  mercury__bag__init_type_tables(); }
	{ extern void mercury__benchmarking__init_type_tables(void);
	  mercury__benchmarking__init_type_tables(); }
	{ extern void mercury__bimap__init_type_tables(void);
	  mercury__bimap__init_type_tables(); }
	{ extern void mercury__bit_buffer__init_type_tables(void);
	  mercury__bit_buffer__init_type_tables(); }
	{ extern void mercury__bit_buffer__read__init_type_tables(void);
	  mercury__bit_buffer__read__init_type_tables(); }
	{ extern void mercury__bit_buffer__write__init_type_tables(void);
	  mercury__bit_buffer__write__init_type_tables(); }
	{ extern void mercury__bitmap__init_type_tables(void);
	  mercury__bitmap__init_type_tables(); }
	{ extern void mercury__bool__init_type_tables(void);
	  mercury__bool__init_type_tables(); }
	{ extern void mercury__bt_array__init_type_tables(void);
	  mercury__bt_array__init_type_tables(); }
	{ extern void mercury__builtin__init_type_tables(void);
	  mercury__builtin__init_type_tables(); }
	{ extern void mercury__calendar__init_type_tables(void);
	  mercury__calendar__init_type_tables(); }
	{ extern void mercury__char__init_type_tables(void);
	  mercury__char__init_type_tables(); }
	{ extern void mercury__construct__init_type_tables(void);
	  mercury__construct__init_type_tables(); }
	{ extern void mercury__cord__init_type_tables(void);
	  mercury__cord__init_type_tables(); }
	{ extern void mercury__counter__init_type_tables(void);
	  mercury__counter__init_type_tables(); }
	{ extern void mercury__deconstruct__init_type_tables(void);
	  mercury__deconstruct__init_type_tables(); }
	{ extern void mercury__digraph__init_type_tables(void);
	  mercury__digraph__init_type_tables(); }
	{ extern void mercury__dir__init_type_tables(void);
	  mercury__dir__init_type_tables(); }
	{ extern void mercury__enum__init_type_tables(void);
	  mercury__enum__init_type_tables(); }
	{ extern void mercury__eqvclass__init_type_tables(void);
	  mercury__eqvclass__init_type_tables(); }
	{ extern void mercury__erlang_builtin__init_type_tables(void);
	  mercury__erlang_builtin__init_type_tables(); }
	{ extern void mercury__erlang_rtti_implementation__init_type_tables(void);
	  mercury__erlang_rtti_implementation__init_type_tables(); }
	{ extern void mercury__exception__init_type_tables(void);
	  mercury__exception__init_type_tables(); }
	{ extern void mercury__fat_sparse_bitset__init_type_tables(void);
	  mercury__fat_sparse_bitset__init_type_tables(); }
	{ extern void mercury__float__init_type_tables(void);
	  mercury__float__init_type_tables(); }
	{ extern void mercury__gc__init_type_tables(void);
	  mercury__gc__init_type_tables(); }
	{ extern void mercury__getopt__init_type_tables(void);
	  mercury__getopt__init_type_tables(); }
	{ extern void mercury__getopt_io__init_type_tables(void);
	  mercury__getopt_io__init_type_tables(); }
	{ extern void mercury__hash_table__init_type_tables(void);
	  mercury__hash_table__init_type_tables(); }
	{ extern void mercury__injection__init_type_tables(void);
	  mercury__injection__init_type_tables(); }
	{ extern void mercury__int__init_type_tables(void);
	  mercury__int__init_type_tables(); }
	{ extern void mercury__integer__init_type_tables(void);
	  mercury__integer__init_type_tables(); }
	{ extern void mercury__io__init_type_tables(void);
	  mercury__io__init_type_tables(); }
	{ extern void mercury__lazy__init_type_tables(void);
	  mercury__lazy__init_type_tables(); }
	{ extern void mercury__lexer__init_type_tables(void);
	  mercury__lexer__init_type_tables(); }
	{ extern void mercury__library__init_type_tables(void);
	  mercury__library__init_type_tables(); }
}

static void init_modules_type_tables_2(void)
{
	{ extern void mercury__list__init_type_tables(void);
	  mercury__list__init_type_tables(); }
	{ extern void mercury__map__init_type_tables(void);
	  mercury__map__init_type_tables(); }
	{ extern void mercury__math__init_type_tables(void);
	  mercury__math__init_type_tables(); }
	{ extern void mercury__maybe__init_type_tables(void);
	  mercury__maybe__init_type_tables(); }
	{ extern void mercury__mer_std__init_type_tables(void);
	  mercury__mer_std__init_type_tables(); }
	{ extern void mercury__multi_map__init_type_tables(void);
	  mercury__multi_map__init_type_tables(); }
	{ extern void mercury__mutvar__init_type_tables(void);
	  mercury__mutvar__init_type_tables(); }
	{ extern void mercury__ops__init_type_tables(void);
	  mercury__ops__init_type_tables(); }
	{ extern void mercury__pair__init_type_tables(void);
	  mercury__pair__init_type_tables(); }
	{ extern void mercury__par_builtin__init_type_tables(void);
	  mercury__par_builtin__init_type_tables(); }
	{ extern void mercury__parser__init_type_tables(void);
	  mercury__parser__init_type_tables(); }
	{ extern void mercury__parsing_utils__init_type_tables(void);
	  mercury__parsing_utils__init_type_tables(); }
	{ extern void mercury__pprint__init_type_tables(void);
	  mercury__pprint__init_type_tables(); }
	{ extern void mercury__pqueue__init_type_tables(void);
	  mercury__pqueue__init_type_tables(); }
	{ extern void mercury__pretty_printer__init_type_tables(void);
	  mercury__pretty_printer__init_type_tables(); }
	{ extern void mercury__private_builtin__init_type_tables(void);
	  mercury__private_builtin__init_type_tables(); }
	{ extern void mercury__profiling_builtin__init_type_tables(void);
	  mercury__profiling_builtin__init_type_tables(); }
	{ extern void mercury__prolog__init_type_tables(void);
	  mercury__prolog__init_type_tables(); }
	{ extern void mercury__queue__init_type_tables(void);
	  mercury__queue__init_type_tables(); }
	{ extern void mercury__random__init_type_tables(void);
	  mercury__random__init_type_tables(); }
	{ extern void mercury__rational__init_type_tables(void);
	  mercury__rational__init_type_tables(); }
	{ extern void mercury__rbtree__init_type_tables(void);
	  mercury__rbtree__init_type_tables(); }
	{ extern void mercury__region_builtin__init_type_tables(void);
	  mercury__region_builtin__init_type_tables(); }
	{ extern void mercury__require__init_type_tables(void);
	  mercury__require__init_type_tables(); }
	{ extern void mercury__robdd__init_type_tables(void);
	  mercury__robdd__init_type_tables(); }
	{ extern void mercury__rtree__init_type_tables(void);
	  mercury__rtree__init_type_tables(); }
	{ extern void mercury__rtti_implementation__init_type_tables(void);
	  mercury__rtti_implementation__init_type_tables(); }
	{ extern void mercury__set__init_type_tables(void);
	  mercury__set__init_type_tables(); }
	{ extern void mercury__set_bbbtree__init_type_tables(void);
	  mercury__set_bbbtree__init_type_tables(); }
	{ extern void mercury__set_ctree234__init_type_tables(void);
	  mercury__set_ctree234__init_type_tables(); }
	{ extern void mercury__set_ordlist__init_type_tables(void);
	  mercury__set_ordlist__init_type_tables(); }
	{ extern void mercury__set_tree234__init_type_tables(void);
	  mercury__set_tree234__init_type_tables(); }
	{ extern void mercury__set_unordlist__init_type_tables(void);
	  mercury__set_unordlist__init_type_tables(); }
	{ extern void mercury__solutions__init_type_tables(void);
	  mercury__solutions__init_type_tables(); }
	{ extern void mercury__sparse_bitset__init_type_tables(void);
	  mercury__sparse_bitset__init_type_tables(); }
	{ extern void mercury__stack__init_type_tables(void);
	  mercury__stack__init_type_tables(); }
	{ extern void mercury__std_util__init_type_tables(void);
	  mercury__std_util__init_type_tables(); }
	{ extern void mercury__stm_builtin__init_type_tables(void);
	  mercury__stm_builtin__init_type_tables(); }
	{ extern void mercury__store__init_type_tables(void);
	  mercury__store__init_type_tables(); }
	{ extern void mercury__stream__init_type_tables(void);
	  mercury__stream__init_type_tables(); }
}

static void init_modules_type_tables_3(void)
{
	{ extern void mercury__stream__string_writer__init_type_tables(void);
	  mercury__stream__string_writer__init_type_tables(); }
	{ extern void mercury__string__init_type_tables(void);
	  mercury__string__init_type_tables(); }
	{ extern void mercury__string__builder__init_type_tables(void);
	  mercury__string__builder__init_type_tables(); }
	{ extern void mercury__table_builtin__init_type_tables(void);
	  mercury__table_builtin__init_type_tables(); }
	{ extern void mercury__table_statistics__init_type_tables(void);
	  mercury__table_statistics__init_type_tables(); }
	{ extern void mercury__term__init_type_tables(void);
	  mercury__term__init_type_tables(); }
	{ extern void mercury__term_io__init_type_tables(void);
	  mercury__term_io__init_type_tables(); }
	{ extern void mercury__term_size_prof_builtin__init_type_tables(void);
	  mercury__term_size_prof_builtin__init_type_tables(); }
	{ extern void mercury__term_to_xml__init_type_tables(void);
	  mercury__term_to_xml__init_type_tables(); }
	{ extern void mercury__test_bitset__init_type_tables(void);
	  mercury__test_bitset__init_type_tables(); }
	{ extern void mercury__thread__init_type_tables(void);
	  mercury__thread__init_type_tables(); }
	{ extern void mercury__thread__channel__init_type_tables(void);
	  mercury__thread__channel__init_type_tables(); }
	{ extern void mercury__thread__mvar__init_type_tables(void);
	  mercury__thread__mvar__init_type_tables(); }
	{ extern void mercury__thread__semaphore__init_type_tables(void);
	  mercury__thread__semaphore__init_type_tables(); }
	{ extern void mercury__time__init_type_tables(void);
	  mercury__time__init_type_tables(); }
	{ extern void mercury__tree234__init_type_tables(void);
	  mercury__tree234__init_type_tables(); }
	{ extern void mercury__tree_bitset__init_type_tables(void);
	  mercury__tree_bitset__init_type_tables(); }
	{ extern void mercury__type_desc__init_type_tables(void);
	  mercury__type_desc__init_type_tables(); }
	{ extern void mercury__unit__init_type_tables(void);
	  mercury__unit__init_type_tables(); }
	{ extern void mercury__univ__init_type_tables(void);
	  mercury__univ__init_type_tables(); }
	{ extern void mercury__varset__init_type_tables(void);
	  mercury__varset__init_type_tables(); }
	{ extern void mercury__version_array__init_type_tables(void);
	  mercury__version_array__init_type_tables(); }
	{ extern void mercury__version_array2d__init_type_tables(void);
	  mercury__version_array2d__init_type_tables(); }
	{ extern void mercury__version_bitmap__init_type_tables(void);
	  mercury__version_bitmap__init_type_tables(); }
	{ extern void mercury__version_hash_table__init_type_tables(void);
	  mercury__version_hash_table__init_type_tables(); }
	{ extern void mercury__version_store__init_type_tables(void);
	  mercury__version_store__init_type_tables(); }
	{ extern void mercury_sys_init_backjumps_init_type_tables(void);
	  mercury_sys_init_backjumps_init_type_tables(); }
	{ extern void mercury_sys_init_exceptions_init_type_tables(void);
	  mercury_sys_init_exceptions_init_type_tables(); }
	{ extern void mercury_sys_init_par_builtin_modules_init_type_tables(void);
	  mercury_sys_init_par_builtin_modules_init_type_tables(); }
	{ extern void mercury_sys_init_lc_init_type_tables(void);
	  mercury_sys_init_lc_init_type_tables(); }
	{ extern void mercury_sys_init_stm_builtin_modules_init_type_tables(void);
	  mercury_sys_init_stm_builtin_modules_init_type_tables(); }
	{ extern void mercury_sys_init_thread_modules_init_type_tables(void);
	  mercury_sys_init_thread_modules_init_type_tables(); }
	{ extern void mercury_sys_init_semaphore_modules_init_type_tables(void);
	  mercury_sys_init_semaphore_modules_init_type_tables(); }
	{ extern void mercury_sys_init_mercury_builtin_types_init_type_tables(void);
	  mercury_sys_init_mercury_builtin_types_init_type_tables(); }
	{ extern void mercury_sys_init_scheduler_wrapper_init_type_tables(void);
	  mercury_sys_init_scheduler_wrapper_init_type_tables(); }
	{ extern void mercury_sys_init_engine_init_type_tables(void);
	  mercury_sys_init_engine_init_type_tables(); }
	{ extern void mercury_sys_init_call_init_type_tables(void);
	  mercury_sys_init_call_init_type_tables(); }
	{ extern void mercury_sys_init_mmsc_modules_init_type_tables(void);
	  mercury_sys_init_mmsc_modules_init_type_tables(); }
	{ extern void mercury_sys_init_mmos_modules_init_type_tables(void);
	  mercury_sys_init_mmos_modules_init_type_tables(); }
	{ extern void mercury_sys_init_runtime_profiling_builtin_module_init_type_tables(void);
	  mercury_sys_init_runtime_profiling_builtin_module_init_type_tables(); }
}

static void init_modules_type_tables_4(void)
{
	{ extern void mercury_sys_init_stacks_init_type_tables(void);
	  mercury_sys_init_stacks_init_type_tables(); }
	{ extern void mercury_sys_init_table_modules_init_type_tables(void);
	  mercury_sys_init_table_modules_init_type_tables(); }
	{ extern void mercury_sys_init_trace_init_type_tables(void);
	  mercury_sys_init_trace_init_type_tables(); }
	{ extern void mercury_sys_init_wrapper_init_type_tables(void);
	  mercury_sys_init_wrapper_init_type_tables(); }
}


static void init_modules_type_tables(void)
{
	init_modules_type_tables_0();
	init_modules_type_tables_1();
	init_modules_type_tables_2();
	init_modules_type_tables_3();
	init_modules_type_tables_4();
}

#if defined(MR_MAY_NEED_INITIALIZATION)

static void init_modules_debugger_0(void)
{
	{ extern void mercury__analysis_utils__init_debugger(void);
	  mercury__analysis_utils__init_debugger(); }
	{ extern void mercury__apply_exclusion__init_debugger(void);
	  mercury__apply_exclusion__init_debugger(); }
	{ extern void mercury__array_util__init_debugger(void);
	  mercury__array_util__init_debugger(); }
	{ extern void mercury__callgraph__init_debugger(void);
	  mercury__callgraph__init_debugger(); }
	{ extern void mercury__canonical__init_debugger(void);
	  mercury__canonical__init_debugger(); }
	{ extern void mercury__cliques__init_debugger(void);
	  mercury__cliques__init_debugger(); }
	{ extern void mercury__conf__init_debugger(void);
	  mercury__conf__init_debugger(); }
	{ extern void mercury__coverage__init_debugger(void);
	  mercury__coverage__init_debugger(); }
	{ extern void mercury__create_report__init_debugger(void);
	  mercury__create_report__init_debugger(); }
	{ extern void mercury__dense_bitset__init_debugger(void);
	  mercury__dense_bitset__init_debugger(); }
	{ extern void mercury__display__init_debugger(void);
	  mercury__display__init_debugger(); }
	{ extern void mercury__display_report__init_debugger(void);
	  mercury__display_report__init_debugger(); }
	{ extern void mercury__dump__init_debugger(void);
	  mercury__dump__init_debugger(); }
	{ extern void mercury__exclude__init_debugger(void);
	  mercury__exclude__init_debugger(); }
	{ extern void mercury__html_format__init_debugger(void);
	  mercury__html_format__init_debugger(); }
	{ extern void mercury__io_combinator__init_debugger(void);
	  mercury__io_combinator__init_debugger(); }
	{ extern void mercury__mdbcomp__init_debugger(void);
	  mercury__mdbcomp__init_debugger(); }
	{ extern void mercury__mdbcomp__feedback__init_debugger(void);
	  mercury__mdbcomp__feedback__init_debugger(); }
	{ extern void mercury__mdbcomp__feedback__automatic_parallelism__init_debugger(void);
	  mercury__mdbcomp__feedback__automatic_parallelism__init_debugger(); }
	{ extern void mercury__mdbcomp__goal_path__init_debugger(void);
	  mercury__mdbcomp__goal_path__init_debugger(); }
	{ extern void mercury__mdbcomp__prim_data__init_debugger(void);
	  mercury__mdbcomp__prim_data__init_debugger(); }
	{ extern void mercury__mdbcomp__program_representation__init_debugger(void);
	  mercury__mdbcomp__program_representation__init_debugger(); }
	{ extern void mercury__mdbcomp__rtti_access__init_debugger(void);
	  mercury__mdbcomp__rtti_access__init_debugger(); }
	{ extern void mercury__mdbcomp__shared_utilities__init_debugger(void);
	  mercury__mdbcomp__shared_utilities__init_debugger(); }
	{ extern void mercury__mdbcomp__slice_and_dice__init_debugger(void);
	  mercury__mdbcomp__slice_and_dice__init_debugger(); }
	{ extern void mercury__mdbcomp__trace_counts__init_debugger(void);
	  mercury__mdbcomp__trace_counts__init_debugger(); }
	{ extern void mercury__mdprof_test__init_debugger(void);
	  mercury__mdprof_test__init_debugger(); }
	{ extern void mercury__measurement_units__init_debugger(void);
	  mercury__measurement_units__init_debugger(); }
	{ extern void mercury__measurements__init_debugger(void);
	  mercury__measurements__init_debugger(); }
	{ extern void mercury__message__init_debugger(void);
	  mercury__message__init_debugger(); }
	{ extern void mercury__profile__init_debugger(void);
	  mercury__profile__init_debugger(); }
	{ extern void mercury__program_representation_utils__init_debugger(void);
	  mercury__program_representation_utils__init_debugger(); }
	{ extern void mercury__query__init_debugger(void);
	  mercury__query__init_debugger(); }
	{ extern void mercury__read_profile__init_debugger(void);
	  mercury__read_profile__init_debugger(); }
	{ extern void mercury__recursion_patterns__init_debugger(void);
	  mercury__recursion_patterns__init_debugger(); }
	{ extern void mercury__report__init_debugger(void);
	  mercury__report__init_debugger(); }
	{ extern void mercury__startup__init_debugger(void);
	  mercury__startup__init_debugger(); }
	{ extern void mercury__top_procs__init_debugger(void);
	  mercury__top_procs__init_debugger(); }
	{ extern void mercury__util__init_debugger(void);
	  mercury__util__init_debugger(); }
	{ extern void mercury__var_use_analysis__init_debugger(void);
	  mercury__var_use_analysis__init_debugger(); }
}

static void init_modules_debugger_1(void)
{
	{ extern void mercury__array__init_debugger(void);
	  mercury__array__init_debugger(); }
	{ extern void mercury__array2d__init_debugger(void);
	  mercury__array2d__init_debugger(); }
	{ extern void mercury__assoc_list__init_debugger(void);
	  mercury__assoc_list__init_debugger(); }
	{ extern void mercury__backjump__init_debugger(void);
	  mercury__backjump__init_debugger(); }
	{ extern void mercury__bag__init_debugger(void);
	  mercury__bag__init_debugger(); }
	{ extern void mercury__benchmarking__init_debugger(void);
	  mercury__benchmarking__init_debugger(); }
	{ extern void mercury__bimap__init_debugger(void);
	  mercury__bimap__init_debugger(); }
	{ extern void mercury__bit_buffer__init_debugger(void);
	  mercury__bit_buffer__init_debugger(); }
	{ extern void mercury__bit_buffer__read__init_debugger(void);
	  mercury__bit_buffer__read__init_debugger(); }
	{ extern void mercury__bit_buffer__write__init_debugger(void);
	  mercury__bit_buffer__write__init_debugger(); }
	{ extern void mercury__bitmap__init_debugger(void);
	  mercury__bitmap__init_debugger(); }
	{ extern void mercury__bool__init_debugger(void);
	  mercury__bool__init_debugger(); }
	{ extern void mercury__bt_array__init_debugger(void);
	  mercury__bt_array__init_debugger(); }
	{ extern void mercury__builtin__init_debugger(void);
	  mercury__builtin__init_debugger(); }
	{ extern void mercury__calendar__init_debugger(void);
	  mercury__calendar__init_debugger(); }
	{ extern void mercury__char__init_debugger(void);
	  mercury__char__init_debugger(); }
	{ extern void mercury__construct__init_debugger(void);
	  mercury__construct__init_debugger(); }
	{ extern void mercury__cord__init_debugger(void);
	  mercury__cord__init_debugger(); }
	{ extern void mercury__counter__init_debugger(void);
	  mercury__counter__init_debugger(); }
	{ extern void mercury__deconstruct__init_debugger(void);
	  mercury__deconstruct__init_debugger(); }
	{ extern void mercury__digraph__init_debugger(void);
	  mercury__digraph__init_debugger(); }
	{ extern void mercury__dir__init_debugger(void);
	  mercury__dir__init_debugger(); }
	{ extern void mercury__enum__init_debugger(void);
	  mercury__enum__init_debugger(); }
	{ extern void mercury__eqvclass__init_debugger(void);
	  mercury__eqvclass__init_debugger(); }
	{ extern void mercury__erlang_builtin__init_debugger(void);
	  mercury__erlang_builtin__init_debugger(); }
	{ extern void mercury__erlang_rtti_implementation__init_debugger(void);
	  mercury__erlang_rtti_implementation__init_debugger(); }
	{ extern void mercury__exception__init_debugger(void);
	  mercury__exception__init_debugger(); }
	{ extern void mercury__fat_sparse_bitset__init_debugger(void);
	  mercury__fat_sparse_bitset__init_debugger(); }
	{ extern void mercury__float__init_debugger(void);
	  mercury__float__init_debugger(); }
	{ extern void mercury__gc__init_debugger(void);
	  mercury__gc__init_debugger(); }
	{ extern void mercury__getopt__init_debugger(void);
	  mercury__getopt__init_debugger(); }
	{ extern void mercury__getopt_io__init_debugger(void);
	  mercury__getopt_io__init_debugger(); }
	{ extern void mercury__hash_table__init_debugger(void);
	  mercury__hash_table__init_debugger(); }
	{ extern void mercury__injection__init_debugger(void);
	  mercury__injection__init_debugger(); }
	{ extern void mercury__int__init_debugger(void);
	  mercury__int__init_debugger(); }
	{ extern void mercury__integer__init_debugger(void);
	  mercury__integer__init_debugger(); }
	{ extern void mercury__io__init_debugger(void);
	  mercury__io__init_debugger(); }
	{ extern void mercury__lazy__init_debugger(void);
	  mercury__lazy__init_debugger(); }
	{ extern void mercury__lexer__init_debugger(void);
	  mercury__lexer__init_debugger(); }
	{ extern void mercury__library__init_debugger(void);
	  mercury__library__init_debugger(); }
}

static void init_modules_debugger_2(void)
{
	{ extern void mercury__list__init_debugger(void);
	  mercury__list__init_debugger(); }
	{ extern void mercury__map__init_debugger(void);
	  mercury__map__init_debugger(); }
	{ extern void mercury__math__init_debugger(void);
	  mercury__math__init_debugger(); }
	{ extern void mercury__maybe__init_debugger(void);
	  mercury__maybe__init_debugger(); }
	{ extern void mercury__mer_std__init_debugger(void);
	  mercury__mer_std__init_debugger(); }
	{ extern void mercury__multi_map__init_debugger(void);
	  mercury__multi_map__init_debugger(); }
	{ extern void mercury__mutvar__init_debugger(void);
	  mercury__mutvar__init_debugger(); }
	{ extern void mercury__ops__init_debugger(void);
	  mercury__ops__init_debugger(); }
	{ extern void mercury__pair__init_debugger(void);
	  mercury__pair__init_debugger(); }
	{ extern void mercury__par_builtin__init_debugger(void);
	  mercury__par_builtin__init_debugger(); }
	{ extern void mercury__parser__init_debugger(void);
	  mercury__parser__init_debugger(); }
	{ extern void mercury__parsing_utils__init_debugger(void);
	  mercury__parsing_utils__init_debugger(); }
	{ extern void mercury__pprint__init_debugger(void);
	  mercury__pprint__init_debugger(); }
	{ extern void mercury__pqueue__init_debugger(void);
	  mercury__pqueue__init_debugger(); }
	{ extern void mercury__pretty_printer__init_debugger(void);
	  mercury__pretty_printer__init_debugger(); }
	{ extern void mercury__private_builtin__init_debugger(void);
	  mercury__private_builtin__init_debugger(); }
	{ extern void mercury__profiling_builtin__init_debugger(void);
	  mercury__profiling_builtin__init_debugger(); }
	{ extern void mercury__prolog__init_debugger(void);
	  mercury__prolog__init_debugger(); }
	{ extern void mercury__queue__init_debugger(void);
	  mercury__queue__init_debugger(); }
	{ extern void mercury__random__init_debugger(void);
	  mercury__random__init_debugger(); }
	{ extern void mercury__rational__init_debugger(void);
	  mercury__rational__init_debugger(); }
	{ extern void mercury__rbtree__init_debugger(void);
	  mercury__rbtree__init_debugger(); }
	{ extern void mercury__region_builtin__init_debugger(void);
	  mercury__region_builtin__init_debugger(); }
	{ extern void mercury__require__init_debugger(void);
	  mercury__require__init_debugger(); }
	{ extern void mercury__robdd__init_debugger(void);
	  mercury__robdd__init_debugger(); }
	{ extern void mercury__rtree__init_debugger(void);
	  mercury__rtree__init_debugger(); }
	{ extern void mercury__rtti_implementation__init_debugger(void);
	  mercury__rtti_implementation__init_debugger(); }
	{ extern void mercury__set__init_debugger(void);
	  mercury__set__init_debugger(); }
	{ extern void mercury__set_bbbtree__init_debugger(void);
	  mercury__set_bbbtree__init_debugger(); }
	{ extern void mercury__set_ctree234__init_debugger(void);
	  mercury__set_ctree234__init_debugger(); }
	{ extern void mercury__set_ordlist__init_debugger(void);
	  mercury__set_ordlist__init_debugger(); }
	{ extern void mercury__set_tree234__init_debugger(void);
	  mercury__set_tree234__init_debugger(); }
	{ extern void mercury__set_unordlist__init_debugger(void);
	  mercury__set_unordlist__init_debugger(); }
	{ extern void mercury__solutions__init_debugger(void);
	  mercury__solutions__init_debugger(); }
	{ extern void mercury__sparse_bitset__init_debugger(void);
	  mercury__sparse_bitset__init_debugger(); }
	{ extern void mercury__stack__init_debugger(void);
	  mercury__stack__init_debugger(); }
	{ extern void mercury__std_util__init_debugger(void);
	  mercury__std_util__init_debugger(); }
	{ extern void mercury__stm_builtin__init_debugger(void);
	  mercury__stm_builtin__init_debugger(); }
	{ extern void mercury__store__init_debugger(void);
	  mercury__store__init_debugger(); }
	{ extern void mercury__stream__init_debugger(void);
	  mercury__stream__init_debugger(); }
}

static void init_modules_debugger_3(void)
{
	{ extern void mercury__stream__string_writer__init_debugger(void);
	  mercury__stream__string_writer__init_debugger(); }
	{ extern void mercury__string__init_debugger(void);
	  mercury__string__init_debugger(); }
	{ extern void mercury__string__builder__init_debugger(void);
	  mercury__string__builder__init_debugger(); }
	{ extern void mercury__table_builtin__init_debugger(void);
	  mercury__table_builtin__init_debugger(); }
	{ extern void mercury__table_statistics__init_debugger(void);
	  mercury__table_statistics__init_debugger(); }
	{ extern void mercury__term__init_debugger(void);
	  mercury__term__init_debugger(); }
	{ extern void mercury__term_io__init_debugger(void);
	  mercury__term_io__init_debugger(); }
	{ extern void mercury__term_size_prof_builtin__init_debugger(void);
	  mercury__term_size_prof_builtin__init_debugger(); }
	{ extern void mercury__term_to_xml__init_debugger(void);
	  mercury__term_to_xml__init_debugger(); }
	{ extern void mercury__test_bitset__init_debugger(void);
	  mercury__test_bitset__init_debugger(); }
	{ extern void mercury__thread__init_debugger(void);
	  mercury__thread__init_debugger(); }
	{ extern void mercury__thread__channel__init_debugger(void);
	  mercury__thread__channel__init_debugger(); }
	{ extern void mercury__thread__mvar__init_debugger(void);
	  mercury__thread__mvar__init_debugger(); }
	{ extern void mercury__thread__semaphore__init_debugger(void);
	  mercury__thread__semaphore__init_debugger(); }
	{ extern void mercury__time__init_debugger(void);
	  mercury__time__init_debugger(); }
	{ extern void mercury__tree234__init_debugger(void);
	  mercury__tree234__init_debugger(); }
	{ extern void mercury__tree_bitset__init_debugger(void);
	  mercury__tree_bitset__init_debugger(); }
	{ extern void mercury__type_desc__init_debugger(void);
	  mercury__type_desc__init_debugger(); }
	{ extern void mercury__unit__init_debugger(void);
	  mercury__unit__init_debugger(); }
	{ extern void mercury__univ__init_debugger(void);
	  mercury__univ__init_debugger(); }
	{ extern void mercury__varset__init_debugger(void);
	  mercury__varset__init_debugger(); }
	{ extern void mercury__version_array__init_debugger(void);
	  mercury__version_array__init_debugger(); }
	{ extern void mercury__version_array2d__init_debugger(void);
	  mercury__version_array2d__init_debugger(); }
	{ extern void mercury__version_bitmap__init_debugger(void);
	  mercury__version_bitmap__init_debugger(); }
	{ extern void mercury__version_hash_table__init_debugger(void);
	  mercury__version_hash_table__init_debugger(); }
	{ extern void mercury__version_store__init_debugger(void);
	  mercury__version_store__init_debugger(); }
}

#endif


static void init_modules_debugger(void)
{
#if defined(MR_MAY_NEED_INITIALIZATION)
	init_modules_debugger_0();
	init_modules_debugger_1();
	init_modules_debugger_2();
	init_modules_debugger_3();
#endif
}

#if defined(MR_RECORD_TERM_SIZES)

static void init_modules_complexity_procs_0(void)
{
	{ extern void mercury__analysis_utils__init_complexity_procs(void);
	  mercury__analysis_utils__init_complexity_procs(); }
	{ extern void mercury__apply_exclusion__init_complexity_procs(void);
	  mercury__apply_exclusion__init_complexity_procs(); }
	{ extern void mercury__array_util__init_complexity_procs(void);
	  mercury__array_util__init_complexity_procs(); }
	{ extern void mercury__callgraph__init_complexity_procs(void);
	  mercury__callgraph__init_complexity_procs(); }
	{ extern void mercury__canonical__init_complexity_procs(void);
	  mercury__canonical__init_complexity_procs(); }
	{ extern void mercury__cliques__init_complexity_procs(void);
	  mercury__cliques__init_complexity_procs(); }
	{ extern void mercury__conf__init_complexity_procs(void);
	  mercury__conf__init_complexity_procs(); }
	{ extern void mercury__coverage__init_complexity_procs(void);
	  mercury__coverage__init_complexity_procs(); }
	{ extern void mercury__create_report__init_complexity_procs(void);
	  mercury__create_report__init_complexity_procs(); }
	{ extern void mercury__dense_bitset__init_complexity_procs(void);
	  mercury__dense_bitset__init_complexity_procs(); }
	{ extern void mercury__display__init_complexity_procs(void);
	  mercury__display__init_complexity_procs(); }
	{ extern void mercury__display_report__init_complexity_procs(void);
	  mercury__display_report__init_complexity_procs(); }
	{ extern void mercury__dump__init_complexity_procs(void);
	  mercury__dump__init_complexity_procs(); }
	{ extern void mercury__exclude__init_complexity_procs(void);
	  mercury__exclude__init_complexity_procs(); }
	{ extern void mercury__html_format__init_complexity_procs(void);
	  mercury__html_format__init_complexity_procs(); }
	{ extern void mercury__io_combinator__init_complexity_procs(void);
	  mercury__io_combinator__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__init_complexity_procs(void);
	  mercury__mdbcomp__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__feedback__init_complexity_procs(void);
	  mercury__mdbcomp__feedback__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__feedback__automatic_parallelism__init_complexity_procs(void);
	  mercury__mdbcomp__feedback__automatic_parallelism__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__goal_path__init_complexity_procs(void);
	  mercury__mdbcomp__goal_path__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__prim_data__init_complexity_procs(void);
	  mercury__mdbcomp__prim_data__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__program_representation__init_complexity_procs(void);
	  mercury__mdbcomp__program_representation__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__rtti_access__init_complexity_procs(void);
	  mercury__mdbcomp__rtti_access__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__shared_utilities__init_complexity_procs(void);
	  mercury__mdbcomp__shared_utilities__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__slice_and_dice__init_complexity_procs(void);
	  mercury__mdbcomp__slice_and_dice__init_complexity_procs(); }
	{ extern void mercury__mdbcomp__trace_counts__init_complexity_procs(void);
	  mercury__mdbcomp__trace_counts__init_complexity_procs(); }
	{ extern void mercury__mdprof_test__init_complexity_procs(void);
	  mercury__mdprof_test__init_complexity_procs(); }
	{ extern void mercury__measurement_units__init_complexity_procs(void);
	  mercury__measurement_units__init_complexity_procs(); }
	{ extern void mercury__measurements__init_complexity_procs(void);
	  mercury__measurements__init_complexity_procs(); }
	{ extern void mercury__message__init_complexity_procs(void);
	  mercury__message__init_complexity_procs(); }
	{ extern void mercury__profile__init_complexity_procs(void);
	  mercury__profile__init_complexity_procs(); }
	{ extern void mercury__program_representation_utils__init_complexity_procs(void);
	  mercury__program_representation_utils__init_complexity_procs(); }
	{ extern void mercury__query__init_complexity_procs(void);
	  mercury__query__init_complexity_procs(); }
	{ extern void mercury__read_profile__init_complexity_procs(void);
	  mercury__read_profile__init_complexity_procs(); }
	{ extern void mercury__recursion_patterns__init_complexity_procs(void);
	  mercury__recursion_patterns__init_complexity_procs(); }
	{ extern void mercury__report__init_complexity_procs(void);
	  mercury__report__init_complexity_procs(); }
	{ extern void mercury__startup__init_complexity_procs(void);
	  mercury__startup__init_complexity_procs(); }
	{ extern void mercury__top_procs__init_complexity_procs(void);
	  mercury__top_procs__init_complexity_procs(); }
	{ extern void mercury__util__init_complexity_procs(void);
	  mercury__util__init_complexity_procs(); }
	{ extern void mercury__var_use_analysis__init_complexity_procs(void);
	  mercury__var_use_analysis__init_complexity_procs(); }
}

static void init_modules_complexity_procs_1(void)
{
	{ extern void mercury__array__init_complexity_procs(void);
	  mercury__array__init_complexity_procs(); }
	{ extern void mercury__array2d__init_complexity_procs(void);
	  mercury__array2d__init_complexity_procs(); }
	{ extern void mercury__assoc_list__init_complexity_procs(void);
	  mercury__assoc_list__init_complexity_procs(); }
	{ extern void mercury__backjump__init_complexity_procs(void);
	  mercury__backjump__init_complexity_procs(); }
	{ extern void mercury__bag__init_complexity_procs(void);
	  mercury__bag__init_complexity_procs(); }
	{ extern void mercury__benchmarking__init_complexity_procs(void);
	  mercury__benchmarking__init_complexity_procs(); }
	{ extern void mercury__bimap__init_complexity_procs(void);
	  mercury__bimap__init_complexity_procs(); }
	{ extern void mercury__bit_buffer__init_complexity_procs(void);
	  mercury__bit_buffer__init_complexity_procs(); }
	{ extern void mercury__bit_buffer__read__init_complexity_procs(void);
	  mercury__bit_buffer__read__init_complexity_procs(); }
	{ extern void mercury__bit_buffer__write__init_complexity_procs(void);
	  mercury__bit_buffer__write__init_complexity_procs(); }
	{ extern void mercury__bitmap__init_complexity_procs(void);
	  mercury__bitmap__init_complexity_procs(); }
	{ extern void mercury__bool__init_complexity_procs(void);
	  mercury__bool__init_complexity_procs(); }
	{ extern void mercury__bt_array__init_complexity_procs(void);
	  mercury__bt_array__init_complexity_procs(); }
	{ extern void mercury__builtin__init_complexity_procs(void);
	  mercury__builtin__init_complexity_procs(); }
	{ extern void mercury__calendar__init_complexity_procs(void);
	  mercury__calendar__init_complexity_procs(); }
	{ extern void mercury__char__init_complexity_procs(void);
	  mercury__char__init_complexity_procs(); }
	{ extern void mercury__construct__init_complexity_procs(void);
	  mercury__construct__init_complexity_procs(); }
	{ extern void mercury__cord__init_complexity_procs(void);
	  mercury__cord__init_complexity_procs(); }
	{ extern void mercury__counter__init_complexity_procs(void);
	  mercury__counter__init_complexity_procs(); }
	{ extern void mercury__deconstruct__init_complexity_procs(void);
	  mercury__deconstruct__init_complexity_procs(); }
	{ extern void mercury__digraph__init_complexity_procs(void);
	  mercury__digraph__init_complexity_procs(); }
	{ extern void mercury__dir__init_complexity_procs(void);
	  mercury__dir__init_complexity_procs(); }
	{ extern void mercury__enum__init_complexity_procs(void);
	  mercury__enum__init_complexity_procs(); }
	{ extern void mercury__eqvclass__init_complexity_procs(void);
	  mercury__eqvclass__init_complexity_procs(); }
	{ extern void mercury__erlang_builtin__init_complexity_procs(void);
	  mercury__erlang_builtin__init_complexity_procs(); }
	{ extern void mercury__erlang_rtti_implementation__init_complexity_procs(void);
	  mercury__erlang_rtti_implementation__init_complexity_procs(); }
	{ extern void mercury__exception__init_complexity_procs(void);
	  mercury__exception__init_complexity_procs(); }
	{ extern void mercury__fat_sparse_bitset__init_complexity_procs(void);
	  mercury__fat_sparse_bitset__init_complexity_procs(); }
	{ extern void mercury__float__init_complexity_procs(void);
	  mercury__float__init_complexity_procs(); }
	{ extern void mercury__gc__init_complexity_procs(void);
	  mercury__gc__init_complexity_procs(); }
	{ extern void mercury__getopt__init_complexity_procs(void);
	  mercury__getopt__init_complexity_procs(); }
	{ extern void mercury__getopt_io__init_complexity_procs(void);
	  mercury__getopt_io__init_complexity_procs(); }
	{ extern void mercury__hash_table__init_complexity_procs(void);
	  mercury__hash_table__init_complexity_procs(); }
	{ extern void mercury__injection__init_complexity_procs(void);
	  mercury__injection__init_complexity_procs(); }
	{ extern void mercury__int__init_complexity_procs(void);
	  mercury__int__init_complexity_procs(); }
	{ extern void mercury__integer__init_complexity_procs(void);
	  mercury__integer__init_complexity_procs(); }
	{ extern void mercury__io__init_complexity_procs(void);
	  mercury__io__init_complexity_procs(); }
	{ extern void mercury__lazy__init_complexity_procs(void);
	  mercury__lazy__init_complexity_procs(); }
	{ extern void mercury__lexer__init_complexity_procs(void);
	  mercury__lexer__init_complexity_procs(); }
	{ extern void mercury__library__init_complexity_procs(void);
	  mercury__library__init_complexity_procs(); }
}

static void init_modules_complexity_procs_2(void)
{
	{ extern void mercury__list__init_complexity_procs(void);
	  mercury__list__init_complexity_procs(); }
	{ extern void mercury__map__init_complexity_procs(void);
	  mercury__map__init_complexity_procs(); }
	{ extern void mercury__math__init_complexity_procs(void);
	  mercury__math__init_complexity_procs(); }
	{ extern void mercury__maybe__init_complexity_procs(void);
	  mercury__maybe__init_complexity_procs(); }
	{ extern void mercury__mer_std__init_complexity_procs(void);
	  mercury__mer_std__init_complexity_procs(); }
	{ extern void mercury__multi_map__init_complexity_procs(void);
	  mercury__multi_map__init_complexity_procs(); }
	{ extern void mercury__mutvar__init_complexity_procs(void);
	  mercury__mutvar__init_complexity_procs(); }
	{ extern void mercury__ops__init_complexity_procs(void);
	  mercury__ops__init_complexity_procs(); }
	{ extern void mercury__pair__init_complexity_procs(void);
	  mercury__pair__init_complexity_procs(); }
	{ extern void mercury__par_builtin__init_complexity_procs(void);
	  mercury__par_builtin__init_complexity_procs(); }
	{ extern void mercury__parser__init_complexity_procs(void);
	  mercury__parser__init_complexity_procs(); }
	{ extern void mercury__parsing_utils__init_complexity_procs(void);
	  mercury__parsing_utils__init_complexity_procs(); }
	{ extern void mercury__pprint__init_complexity_procs(void);
	  mercury__pprint__init_complexity_procs(); }
	{ extern void mercury__pqueue__init_complexity_procs(void);
	  mercury__pqueue__init_complexity_procs(); }
	{ extern void mercury__pretty_printer__init_complexity_procs(void);
	  mercury__pretty_printer__init_complexity_procs(); }
	{ extern void mercury__private_builtin__init_complexity_procs(void);
	  mercury__private_builtin__init_complexity_procs(); }
	{ extern void mercury__profiling_builtin__init_complexity_procs(void);
	  mercury__profiling_builtin__init_complexity_procs(); }
	{ extern void mercury__prolog__init_complexity_procs(void);
	  mercury__prolog__init_complexity_procs(); }
	{ extern void mercury__queue__init_complexity_procs(void);
	  mercury__queue__init_complexity_procs(); }
	{ extern void mercury__random__init_complexity_procs(void);
	  mercury__random__init_complexity_procs(); }
	{ extern void mercury__rational__init_complexity_procs(void);
	  mercury__rational__init_complexity_procs(); }
	{ extern void mercury__rbtree__init_complexity_procs(void);
	  mercury__rbtree__init_complexity_procs(); }
	{ extern void mercury__region_builtin__init_complexity_procs(void);
	  mercury__region_builtin__init_complexity_procs(); }
	{ extern void mercury__require__init_complexity_procs(void);
	  mercury__require__init_complexity_procs(); }
	{ extern void mercury__robdd__init_complexity_procs(void);
	  mercury__robdd__init_complexity_procs(); }
	{ extern void mercury__rtree__init_complexity_procs(void);
	  mercury__rtree__init_complexity_procs(); }
	{ extern void mercury__rtti_implementation__init_complexity_procs(void);
	  mercury__rtti_implementation__init_complexity_procs(); }
	{ extern void mercury__set__init_complexity_procs(void);
	  mercury__set__init_complexity_procs(); }
	{ extern void mercury__set_bbbtree__init_complexity_procs(void);
	  mercury__set_bbbtree__init_complexity_procs(); }
	{ extern void mercury__set_ctree234__init_complexity_procs(void);
	  mercury__set_ctree234__init_complexity_procs(); }
	{ extern void mercury__set_ordlist__init_complexity_procs(void);
	  mercury__set_ordlist__init_complexity_procs(); }
	{ extern void mercury__set_tree234__init_complexity_procs(void);
	  mercury__set_tree234__init_complexity_procs(); }
	{ extern void mercury__set_unordlist__init_complexity_procs(void);
	  mercury__set_unordlist__init_complexity_procs(); }
	{ extern void mercury__solutions__init_complexity_procs(void);
	  mercury__solutions__init_complexity_procs(); }
	{ extern void mercury__sparse_bitset__init_complexity_procs(void);
	  mercury__sparse_bitset__init_complexity_procs(); }
	{ extern void mercury__stack__init_complexity_procs(void);
	  mercury__stack__init_complexity_procs(); }
	{ extern void mercury__std_util__init_complexity_procs(void);
	  mercury__std_util__init_complexity_procs(); }
	{ extern void mercury__stm_builtin__init_complexity_procs(void);
	  mercury__stm_builtin__init_complexity_procs(); }
	{ extern void mercury__store__init_complexity_procs(void);
	  mercury__store__init_complexity_procs(); }
	{ extern void mercury__stream__init_complexity_procs(void);
	  mercury__stream__init_complexity_procs(); }
}

static void init_modules_complexity_procs_3(void)
{
	{ extern void mercury__stream__string_writer__init_complexity_procs(void);
	  mercury__stream__string_writer__init_complexity_procs(); }
	{ extern void mercury__string__init_complexity_procs(void);
	  mercury__string__init_complexity_procs(); }
	{ extern void mercury__string__builder__init_complexity_procs(void);
	  mercury__string__builder__init_complexity_procs(); }
	{ extern void mercury__table_builtin__init_complexity_procs(void);
	  mercury__table_builtin__init_complexity_procs(); }
	{ extern void mercury__table_statistics__init_complexity_procs(void);
	  mercury__table_statistics__init_complexity_procs(); }
	{ extern void mercury__term__init_complexity_procs(void);
	  mercury__term__init_complexity_procs(); }
	{ extern void mercury__term_io__init_complexity_procs(void);
	  mercury__term_io__init_complexity_procs(); }
	{ extern void mercury__term_size_prof_builtin__init_complexity_procs(void);
	  mercury__term_size_prof_builtin__init_complexity_procs(); }
	{ extern void mercury__term_to_xml__init_complexity_procs(void);
	  mercury__term_to_xml__init_complexity_procs(); }
	{ extern void mercury__test_bitset__init_complexity_procs(void);
	  mercury__test_bitset__init_complexity_procs(); }
	{ extern void mercury__thread__init_complexity_procs(void);
	  mercury__thread__init_complexity_procs(); }
	{ extern void mercury__thread__channel__init_complexity_procs(void);
	  mercury__thread__channel__init_complexity_procs(); }
	{ extern void mercury__thread__mvar__init_complexity_procs(void);
	  mercury__thread__mvar__init_complexity_procs(); }
	{ extern void mercury__thread__semaphore__init_complexity_procs(void);
	  mercury__thread__semaphore__init_complexity_procs(); }
	{ extern void mercury__time__init_complexity_procs(void);
	  mercury__time__init_complexity_procs(); }
	{ extern void mercury__tree234__init_complexity_procs(void);
	  mercury__tree234__init_complexity_procs(); }
	{ extern void mercury__tree_bitset__init_complexity_procs(void);
	  mercury__tree_bitset__init_complexity_procs(); }
	{ extern void mercury__type_desc__init_complexity_procs(void);
	  mercury__type_desc__init_complexity_procs(); }
	{ extern void mercury__unit__init_complexity_procs(void);
	  mercury__unit__init_complexity_procs(); }
	{ extern void mercury__univ__init_complexity_procs(void);
	  mercury__univ__init_complexity_procs(); }
	{ extern void mercury__varset__init_complexity_procs(void);
	  mercury__varset__init_complexity_procs(); }
	{ extern void mercury__version_array__init_complexity_procs(void);
	  mercury__version_array__init_complexity_procs(); }
	{ extern void mercury__version_array2d__init_complexity_procs(void);
	  mercury__version_array2d__init_complexity_procs(); }
	{ extern void mercury__version_bitmap__init_complexity_procs(void);
	  mercury__version_bitmap__init_complexity_procs(); }
	{ extern void mercury__version_hash_table__init_complexity_procs(void);
	  mercury__version_hash_table__init_complexity_procs(); }
	{ extern void mercury__version_store__init_complexity_procs(void);
	  mercury__version_store__init_complexity_procs(); }
}

#endif

#if defined(MR_RECORD_TERM_SIZES)


static void init_modules_complexity_procs(void)
{
	init_modules_complexity_procs_0();
	init_modules_complexity_procs_1();
	init_modules_complexity_procs_2();
	init_modules_complexity_procs_3();
}

#endif

#if defined(MR_DEEP_PROFILING)

static void write_out_proc_statics_0(FILE *deep_fp, FILE *procrep_fp)
{
	{ extern void mercury__analysis_utils__write_out_proc_statics(FILE *, FILE *);
	  mercury__analysis_utils__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__apply_exclusion__write_out_proc_statics(FILE *, FILE *);
	  mercury__apply_exclusion__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__array_util__write_out_proc_statics(FILE *, FILE *);
	  mercury__array_util__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__callgraph__write_out_proc_statics(FILE *, FILE *);
	  mercury__callgraph__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__canonical__write_out_proc_statics(FILE *, FILE *);
	  mercury__canonical__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__cliques__write_out_proc_statics(FILE *, FILE *);
	  mercury__cliques__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__conf__write_out_proc_statics(FILE *, FILE *);
	  mercury__conf__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__coverage__write_out_proc_statics(FILE *, FILE *);
	  mercury__coverage__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__create_report__write_out_proc_statics(FILE *, FILE *);
	  mercury__create_report__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__dense_bitset__write_out_proc_statics(FILE *, FILE *);
	  mercury__dense_bitset__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__display__write_out_proc_statics(FILE *, FILE *);
	  mercury__display__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__display_report__write_out_proc_statics(FILE *, FILE *);
	  mercury__display_report__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__dump__write_out_proc_statics(FILE *, FILE *);
	  mercury__dump__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__exclude__write_out_proc_statics(FILE *, FILE *);
	  mercury__exclude__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__html_format__write_out_proc_statics(FILE *, FILE *);
	  mercury__html_format__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__io_combinator__write_out_proc_statics(FILE *, FILE *);
	  mercury__io_combinator__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__feedback__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__feedback__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__feedback__automatic_parallelism__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__feedback__automatic_parallelism__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__goal_path__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__goal_path__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__prim_data__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__prim_data__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__program_representation__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__program_representation__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__rtti_access__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__rtti_access__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__shared_utilities__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__shared_utilities__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__slice_and_dice__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__slice_and_dice__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdbcomp__trace_counts__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdbcomp__trace_counts__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mdprof_test__write_out_proc_statics(FILE *, FILE *);
	  mercury__mdprof_test__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__measurement_units__write_out_proc_statics(FILE *, FILE *);
	  mercury__measurement_units__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__measurements__write_out_proc_statics(FILE *, FILE *);
	  mercury__measurements__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__message__write_out_proc_statics(FILE *, FILE *);
	  mercury__message__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__profile__write_out_proc_statics(FILE *, FILE *);
	  mercury__profile__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__program_representation_utils__write_out_proc_statics(FILE *, FILE *);
	  mercury__program_representation_utils__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__query__write_out_proc_statics(FILE *, FILE *);
	  mercury__query__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__read_profile__write_out_proc_statics(FILE *, FILE *);
	  mercury__read_profile__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__recursion_patterns__write_out_proc_statics(FILE *, FILE *);
	  mercury__recursion_patterns__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__report__write_out_proc_statics(FILE *, FILE *);
	  mercury__report__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__startup__write_out_proc_statics(FILE *, FILE *);
	  mercury__startup__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__top_procs__write_out_proc_statics(FILE *, FILE *);
	  mercury__top_procs__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__util__write_out_proc_statics(FILE *, FILE *);
	  mercury__util__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__var_use_analysis__write_out_proc_statics(FILE *, FILE *);
	  mercury__var_use_analysis__write_out_proc_statics(deep_fp, procrep_fp); }
}

static void write_out_proc_statics_1(FILE *deep_fp, FILE *procrep_fp)
{
	{ extern void mercury__array__write_out_proc_statics(FILE *, FILE *);
	  mercury__array__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__array2d__write_out_proc_statics(FILE *, FILE *);
	  mercury__array2d__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__assoc_list__write_out_proc_statics(FILE *, FILE *);
	  mercury__assoc_list__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__backjump__write_out_proc_statics(FILE *, FILE *);
	  mercury__backjump__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bag__write_out_proc_statics(FILE *, FILE *);
	  mercury__bag__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__benchmarking__write_out_proc_statics(FILE *, FILE *);
	  mercury__benchmarking__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bimap__write_out_proc_statics(FILE *, FILE *);
	  mercury__bimap__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bit_buffer__write_out_proc_statics(FILE *, FILE *);
	  mercury__bit_buffer__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bit_buffer__read__write_out_proc_statics(FILE *, FILE *);
	  mercury__bit_buffer__read__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bit_buffer__write__write_out_proc_statics(FILE *, FILE *);
	  mercury__bit_buffer__write__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bitmap__write_out_proc_statics(FILE *, FILE *);
	  mercury__bitmap__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bool__write_out_proc_statics(FILE *, FILE *);
	  mercury__bool__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__bt_array__write_out_proc_statics(FILE *, FILE *);
	  mercury__bt_array__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__calendar__write_out_proc_statics(FILE *, FILE *);
	  mercury__calendar__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__char__write_out_proc_statics(FILE *, FILE *);
	  mercury__char__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__construct__write_out_proc_statics(FILE *, FILE *);
	  mercury__construct__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__cord__write_out_proc_statics(FILE *, FILE *);
	  mercury__cord__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__counter__write_out_proc_statics(FILE *, FILE *);
	  mercury__counter__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__deconstruct__write_out_proc_statics(FILE *, FILE *);
	  mercury__deconstruct__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__digraph__write_out_proc_statics(FILE *, FILE *);
	  mercury__digraph__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__dir__write_out_proc_statics(FILE *, FILE *);
	  mercury__dir__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__enum__write_out_proc_statics(FILE *, FILE *);
	  mercury__enum__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__eqvclass__write_out_proc_statics(FILE *, FILE *);
	  mercury__eqvclass__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__erlang_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__erlang_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__erlang_rtti_implementation__write_out_proc_statics(FILE *, FILE *);
	  mercury__erlang_rtti_implementation__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__exception__write_out_proc_statics(FILE *, FILE *);
	  mercury__exception__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__fat_sparse_bitset__write_out_proc_statics(FILE *, FILE *);
	  mercury__fat_sparse_bitset__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__float__write_out_proc_statics(FILE *, FILE *);
	  mercury__float__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__gc__write_out_proc_statics(FILE *, FILE *);
	  mercury__gc__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__getopt__write_out_proc_statics(FILE *, FILE *);
	  mercury__getopt__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__getopt_io__write_out_proc_statics(FILE *, FILE *);
	  mercury__getopt_io__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__hash_table__write_out_proc_statics(FILE *, FILE *);
	  mercury__hash_table__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__injection__write_out_proc_statics(FILE *, FILE *);
	  mercury__injection__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__int__write_out_proc_statics(FILE *, FILE *);
	  mercury__int__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__integer__write_out_proc_statics(FILE *, FILE *);
	  mercury__integer__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__io__write_out_proc_statics(FILE *, FILE *);
	  mercury__io__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__lazy__write_out_proc_statics(FILE *, FILE *);
	  mercury__lazy__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__lexer__write_out_proc_statics(FILE *, FILE *);
	  mercury__lexer__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__library__write_out_proc_statics(FILE *, FILE *);
	  mercury__library__write_out_proc_statics(deep_fp, procrep_fp); }
}

static void write_out_proc_statics_2(FILE *deep_fp, FILE *procrep_fp)
{
	{ extern void mercury__list__write_out_proc_statics(FILE *, FILE *);
	  mercury__list__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__map__write_out_proc_statics(FILE *, FILE *);
	  mercury__map__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__math__write_out_proc_statics(FILE *, FILE *);
	  mercury__math__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__maybe__write_out_proc_statics(FILE *, FILE *);
	  mercury__maybe__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mer_std__write_out_proc_statics(FILE *, FILE *);
	  mercury__mer_std__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__multi_map__write_out_proc_statics(FILE *, FILE *);
	  mercury__multi_map__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__mutvar__write_out_proc_statics(FILE *, FILE *);
	  mercury__mutvar__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__ops__write_out_proc_statics(FILE *, FILE *);
	  mercury__ops__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__pair__write_out_proc_statics(FILE *, FILE *);
	  mercury__pair__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__par_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__par_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__parser__write_out_proc_statics(FILE *, FILE *);
	  mercury__parser__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__parsing_utils__write_out_proc_statics(FILE *, FILE *);
	  mercury__parsing_utils__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__pprint__write_out_proc_statics(FILE *, FILE *);
	  mercury__pprint__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__pqueue__write_out_proc_statics(FILE *, FILE *);
	  mercury__pqueue__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__pretty_printer__write_out_proc_statics(FILE *, FILE *);
	  mercury__pretty_printer__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__private_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__private_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__profiling_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__profiling_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__prolog__write_out_proc_statics(FILE *, FILE *);
	  mercury__prolog__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__queue__write_out_proc_statics(FILE *, FILE *);
	  mercury__queue__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__random__write_out_proc_statics(FILE *, FILE *);
	  mercury__random__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__rational__write_out_proc_statics(FILE *, FILE *);
	  mercury__rational__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__rbtree__write_out_proc_statics(FILE *, FILE *);
	  mercury__rbtree__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__region_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__region_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__require__write_out_proc_statics(FILE *, FILE *);
	  mercury__require__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__robdd__write_out_proc_statics(FILE *, FILE *);
	  mercury__robdd__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__rtree__write_out_proc_statics(FILE *, FILE *);
	  mercury__rtree__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__rtti_implementation__write_out_proc_statics(FILE *, FILE *);
	  mercury__rtti_implementation__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__set__write_out_proc_statics(FILE *, FILE *);
	  mercury__set__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__set_bbbtree__write_out_proc_statics(FILE *, FILE *);
	  mercury__set_bbbtree__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__set_ctree234__write_out_proc_statics(FILE *, FILE *);
	  mercury__set_ctree234__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__set_ordlist__write_out_proc_statics(FILE *, FILE *);
	  mercury__set_ordlist__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__set_tree234__write_out_proc_statics(FILE *, FILE *);
	  mercury__set_tree234__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__set_unordlist__write_out_proc_statics(FILE *, FILE *);
	  mercury__set_unordlist__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__solutions__write_out_proc_statics(FILE *, FILE *);
	  mercury__solutions__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__sparse_bitset__write_out_proc_statics(FILE *, FILE *);
	  mercury__sparse_bitset__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__stack__write_out_proc_statics(FILE *, FILE *);
	  mercury__stack__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__std_util__write_out_proc_statics(FILE *, FILE *);
	  mercury__std_util__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__stm_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__stm_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__store__write_out_proc_statics(FILE *, FILE *);
	  mercury__store__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__stream__write_out_proc_statics(FILE *, FILE *);
	  mercury__stream__write_out_proc_statics(deep_fp, procrep_fp); }
}

static void write_out_proc_statics_3(FILE *deep_fp, FILE *procrep_fp)
{
	{ extern void mercury__stream__string_writer__write_out_proc_statics(FILE *, FILE *);
	  mercury__stream__string_writer__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__string__write_out_proc_statics(FILE *, FILE *);
	  mercury__string__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__string__builder__write_out_proc_statics(FILE *, FILE *);
	  mercury__string__builder__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__table_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__table_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__table_statistics__write_out_proc_statics(FILE *, FILE *);
	  mercury__table_statistics__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__term__write_out_proc_statics(FILE *, FILE *);
	  mercury__term__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__term_io__write_out_proc_statics(FILE *, FILE *);
	  mercury__term_io__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__term_size_prof_builtin__write_out_proc_statics(FILE *, FILE *);
	  mercury__term_size_prof_builtin__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__term_to_xml__write_out_proc_statics(FILE *, FILE *);
	  mercury__term_to_xml__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__test_bitset__write_out_proc_statics(FILE *, FILE *);
	  mercury__test_bitset__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__thread__write_out_proc_statics(FILE *, FILE *);
	  mercury__thread__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__thread__channel__write_out_proc_statics(FILE *, FILE *);
	  mercury__thread__channel__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__thread__mvar__write_out_proc_statics(FILE *, FILE *);
	  mercury__thread__mvar__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__thread__semaphore__write_out_proc_statics(FILE *, FILE *);
	  mercury__thread__semaphore__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__time__write_out_proc_statics(FILE *, FILE *);
	  mercury__time__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__tree234__write_out_proc_statics(FILE *, FILE *);
	  mercury__tree234__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__tree_bitset__write_out_proc_statics(FILE *, FILE *);
	  mercury__tree_bitset__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__type_desc__write_out_proc_statics(FILE *, FILE *);
	  mercury__type_desc__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__unit__write_out_proc_statics(FILE *, FILE *);
	  mercury__unit__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__univ__write_out_proc_statics(FILE *, FILE *);
	  mercury__univ__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__varset__write_out_proc_statics(FILE *, FILE *);
	  mercury__varset__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__version_array__write_out_proc_statics(FILE *, FILE *);
	  mercury__version_array__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__version_array2d__write_out_proc_statics(FILE *, FILE *);
	  mercury__version_array2d__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__version_bitmap__write_out_proc_statics(FILE *, FILE *);
	  mercury__version_bitmap__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__version_hash_table__write_out_proc_statics(FILE *, FILE *);
	  mercury__version_hash_table__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury__version_store__write_out_proc_statics(FILE *, FILE *);
	  mercury__version_store__write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_backjumps_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_backjumps_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_exceptions_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_exceptions_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_par_builtin_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_par_builtin_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_lc_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_lc_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_stm_builtin_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_stm_builtin_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_thread_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_thread_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_semaphore_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_semaphore_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_mercury_builtin_types_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_mercury_builtin_types_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_scheduler_wrapper_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_scheduler_wrapper_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_engine_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_engine_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_call_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_call_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_mmsc_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_mmsc_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_mmos_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_mmos_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_runtime_profiling_builtin_module_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_runtime_profiling_builtin_module_write_out_proc_statics(deep_fp, procrep_fp); }
}

static void write_out_proc_statics_4(FILE *deep_fp, FILE *procrep_fp)
{
	{ extern void mercury_sys_init_stacks_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_stacks_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_table_modules_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_table_modules_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_trace_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_trace_write_out_proc_statics(deep_fp, procrep_fp); }
	{ extern void mercury_sys_init_wrapper_write_out_proc_statics(FILE *, FILE *);
	  mercury_sys_init_wrapper_write_out_proc_statics(deep_fp, procrep_fp); }
}

#endif

#if defined(MR_DEEP_PROFILING)


static void write_out_proc_statics(FILE *deep_fp, FILE *procrep_fp)
{
	write_out_proc_statics_0(deep_fp, procrep_fp);
	write_out_proc_statics_1(deep_fp, procrep_fp);
	write_out_proc_statics_2(deep_fp, procrep_fp);
	write_out_proc_statics_3(deep_fp, procrep_fp);
	write_out_proc_statics_4(deep_fp, procrep_fp);
}

#endif

#if defined(MR_THREADSCOPE)

static void init_modules_threadscope_string_table_0(void)
{
	{ extern void mercury__analysis_utils__init_threadscope_string_table(void);
	  mercury__analysis_utils__init_threadscope_string_table(); }
	{ extern void mercury__apply_exclusion__init_threadscope_string_table(void);
	  mercury__apply_exclusion__init_threadscope_string_table(); }
	{ extern void mercury__array_util__init_threadscope_string_table(void);
	  mercury__array_util__init_threadscope_string_table(); }
	{ extern void mercury__callgraph__init_threadscope_string_table(void);
	  mercury__callgraph__init_threadscope_string_table(); }
	{ extern void mercury__canonical__init_threadscope_string_table(void);
	  mercury__canonical__init_threadscope_string_table(); }
	{ extern void mercury__cliques__init_threadscope_string_table(void);
	  mercury__cliques__init_threadscope_string_table(); }
	{ extern void mercury__conf__init_threadscope_string_table(void);
	  mercury__conf__init_threadscope_string_table(); }
	{ extern void mercury__coverage__init_threadscope_string_table(void);
	  mercury__coverage__init_threadscope_string_table(); }
	{ extern void mercury__create_report__init_threadscope_string_table(void);
	  mercury__create_report__init_threadscope_string_table(); }
	{ extern void mercury__dense_bitset__init_threadscope_string_table(void);
	  mercury__dense_bitset__init_threadscope_string_table(); }
	{ extern void mercury__display__init_threadscope_string_table(void);
	  mercury__display__init_threadscope_string_table(); }
	{ extern void mercury__display_report__init_threadscope_string_table(void);
	  mercury__display_report__init_threadscope_string_table(); }
	{ extern void mercury__dump__init_threadscope_string_table(void);
	  mercury__dump__init_threadscope_string_table(); }
	{ extern void mercury__exclude__init_threadscope_string_table(void);
	  mercury__exclude__init_threadscope_string_table(); }
	{ extern void mercury__html_format__init_threadscope_string_table(void);
	  mercury__html_format__init_threadscope_string_table(); }
	{ extern void mercury__io_combinator__init_threadscope_string_table(void);
	  mercury__io_combinator__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__init_threadscope_string_table(void);
	  mercury__mdbcomp__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__feedback__init_threadscope_string_table(void);
	  mercury__mdbcomp__feedback__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__feedback__automatic_parallelism__init_threadscope_string_table(void);
	  mercury__mdbcomp__feedback__automatic_parallelism__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__goal_path__init_threadscope_string_table(void);
	  mercury__mdbcomp__goal_path__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__prim_data__init_threadscope_string_table(void);
	  mercury__mdbcomp__prim_data__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__program_representation__init_threadscope_string_table(void);
	  mercury__mdbcomp__program_representation__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__rtti_access__init_threadscope_string_table(void);
	  mercury__mdbcomp__rtti_access__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__shared_utilities__init_threadscope_string_table(void);
	  mercury__mdbcomp__shared_utilities__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__slice_and_dice__init_threadscope_string_table(void);
	  mercury__mdbcomp__slice_and_dice__init_threadscope_string_table(); }
	{ extern void mercury__mdbcomp__trace_counts__init_threadscope_string_table(void);
	  mercury__mdbcomp__trace_counts__init_threadscope_string_table(); }
	{ extern void mercury__mdprof_test__init_threadscope_string_table(void);
	  mercury__mdprof_test__init_threadscope_string_table(); }
	{ extern void mercury__measurement_units__init_threadscope_string_table(void);
	  mercury__measurement_units__init_threadscope_string_table(); }
	{ extern void mercury__measurements__init_threadscope_string_table(void);
	  mercury__measurements__init_threadscope_string_table(); }
	{ extern void mercury__message__init_threadscope_string_table(void);
	  mercury__message__init_threadscope_string_table(); }
	{ extern void mercury__profile__init_threadscope_string_table(void);
	  mercury__profile__init_threadscope_string_table(); }
	{ extern void mercury__program_representation_utils__init_threadscope_string_table(void);
	  mercury__program_representation_utils__init_threadscope_string_table(); }
	{ extern void mercury__query__init_threadscope_string_table(void);
	  mercury__query__init_threadscope_string_table(); }
	{ extern void mercury__read_profile__init_threadscope_string_table(void);
	  mercury__read_profile__init_threadscope_string_table(); }
	{ extern void mercury__recursion_patterns__init_threadscope_string_table(void);
	  mercury__recursion_patterns__init_threadscope_string_table(); }
	{ extern void mercury__report__init_threadscope_string_table(void);
	  mercury__report__init_threadscope_string_table(); }
	{ extern void mercury__startup__init_threadscope_string_table(void);
	  mercury__startup__init_threadscope_string_table(); }
	{ extern void mercury__top_procs__init_threadscope_string_table(void);
	  mercury__top_procs__init_threadscope_string_table(); }
	{ extern void mercury__util__init_threadscope_string_table(void);
	  mercury__util__init_threadscope_string_table(); }
	{ extern void mercury__var_use_analysis__init_threadscope_string_table(void);
	  mercury__var_use_analysis__init_threadscope_string_table(); }
}

static void init_modules_threadscope_string_table_1(void)
{
	{ extern void mercury__array__init_threadscope_string_table(void);
	  mercury__array__init_threadscope_string_table(); }
	{ extern void mercury__array2d__init_threadscope_string_table(void);
	  mercury__array2d__init_threadscope_string_table(); }
	{ extern void mercury__assoc_list__init_threadscope_string_table(void);
	  mercury__assoc_list__init_threadscope_string_table(); }
	{ extern void mercury__backjump__init_threadscope_string_table(void);
	  mercury__backjump__init_threadscope_string_table(); }
	{ extern void mercury__bag__init_threadscope_string_table(void);
	  mercury__bag__init_threadscope_string_table(); }
	{ extern void mercury__benchmarking__init_threadscope_string_table(void);
	  mercury__benchmarking__init_threadscope_string_table(); }
	{ extern void mercury__bimap__init_threadscope_string_table(void);
	  mercury__bimap__init_threadscope_string_table(); }
	{ extern void mercury__bit_buffer__init_threadscope_string_table(void);
	  mercury__bit_buffer__init_threadscope_string_table(); }
	{ extern void mercury__bit_buffer__read__init_threadscope_string_table(void);
	  mercury__bit_buffer__read__init_threadscope_string_table(); }
	{ extern void mercury__bit_buffer__write__init_threadscope_string_table(void);
	  mercury__bit_buffer__write__init_threadscope_string_table(); }
	{ extern void mercury__bitmap__init_threadscope_string_table(void);
	  mercury__bitmap__init_threadscope_string_table(); }
	{ extern void mercury__bool__init_threadscope_string_table(void);
	  mercury__bool__init_threadscope_string_table(); }
	{ extern void mercury__bt_array__init_threadscope_string_table(void);
	  mercury__bt_array__init_threadscope_string_table(); }
	{ extern void mercury__builtin__init_threadscope_string_table(void);
	  mercury__builtin__init_threadscope_string_table(); }
	{ extern void mercury__calendar__init_threadscope_string_table(void);
	  mercury__calendar__init_threadscope_string_table(); }
	{ extern void mercury__char__init_threadscope_string_table(void);
	  mercury__char__init_threadscope_string_table(); }
	{ extern void mercury__construct__init_threadscope_string_table(void);
	  mercury__construct__init_threadscope_string_table(); }
	{ extern void mercury__cord__init_threadscope_string_table(void);
	  mercury__cord__init_threadscope_string_table(); }
	{ extern void mercury__counter__init_threadscope_string_table(void);
	  mercury__counter__init_threadscope_string_table(); }
	{ extern void mercury__deconstruct__init_threadscope_string_table(void);
	  mercury__deconstruct__init_threadscope_string_table(); }
	{ extern void mercury__digraph__init_threadscope_string_table(void);
	  mercury__digraph__init_threadscope_string_table(); }
	{ extern void mercury__dir__init_threadscope_string_table(void);
	  mercury__dir__init_threadscope_string_table(); }
	{ extern void mercury__enum__init_threadscope_string_table(void);
	  mercury__enum__init_threadscope_string_table(); }
	{ extern void mercury__eqvclass__init_threadscope_string_table(void);
	  mercury__eqvclass__init_threadscope_string_table(); }
	{ extern void mercury__erlang_builtin__init_threadscope_string_table(void);
	  mercury__erlang_builtin__init_threadscope_string_table(); }
	{ extern void mercury__erlang_rtti_implementation__init_threadscope_string_table(void);
	  mercury__erlang_rtti_implementation__init_threadscope_string_table(); }
	{ extern void mercury__exception__init_threadscope_string_table(void);
	  mercury__exception__init_threadscope_string_table(); }
	{ extern void mercury__fat_sparse_bitset__init_threadscope_string_table(void);
	  mercury__fat_sparse_bitset__init_threadscope_string_table(); }
	{ extern void mercury__float__init_threadscope_string_table(void);
	  mercury__float__init_threadscope_string_table(); }
	{ extern void mercury__gc__init_threadscope_string_table(void);
	  mercury__gc__init_threadscope_string_table(); }
	{ extern void mercury__getopt__init_threadscope_string_table(void);
	  mercury__getopt__init_threadscope_string_table(); }
	{ extern void mercury__getopt_io__init_threadscope_string_table(void);
	  mercury__getopt_io__init_threadscope_string_table(); }
	{ extern void mercury__hash_table__init_threadscope_string_table(void);
	  mercury__hash_table__init_threadscope_string_table(); }
	{ extern void mercury__injection__init_threadscope_string_table(void);
	  mercury__injection__init_threadscope_string_table(); }
	{ extern void mercury__int__init_threadscope_string_table(void);
	  mercury__int__init_threadscope_string_table(); }
	{ extern void mercury__integer__init_threadscope_string_table(void);
	  mercury__integer__init_threadscope_string_table(); }
	{ extern void mercury__io__init_threadscope_string_table(void);
	  mercury__io__init_threadscope_string_table(); }
	{ extern void mercury__lazy__init_threadscope_string_table(void);
	  mercury__lazy__init_threadscope_string_table(); }
	{ extern void mercury__lexer__init_threadscope_string_table(void);
	  mercury__lexer__init_threadscope_string_table(); }
	{ extern void mercury__library__init_threadscope_string_table(void);
	  mercury__library__init_threadscope_string_table(); }
}

static void init_modules_threadscope_string_table_2(void)
{
	{ extern void mercury__list__init_threadscope_string_table(void);
	  mercury__list__init_threadscope_string_table(); }
	{ extern void mercury__map__init_threadscope_string_table(void);
	  mercury__map__init_threadscope_string_table(); }
	{ extern void mercury__math__init_threadscope_string_table(void);
	  mercury__math__init_threadscope_string_table(); }
	{ extern void mercury__maybe__init_threadscope_string_table(void);
	  mercury__maybe__init_threadscope_string_table(); }
	{ extern void mercury__mer_std__init_threadscope_string_table(void);
	  mercury__mer_std__init_threadscope_string_table(); }
	{ extern void mercury__multi_map__init_threadscope_string_table(void);
	  mercury__multi_map__init_threadscope_string_table(); }
	{ extern void mercury__mutvar__init_threadscope_string_table(void);
	  mercury__mutvar__init_threadscope_string_table(); }
	{ extern void mercury__ops__init_threadscope_string_table(void);
	  mercury__ops__init_threadscope_string_table(); }
	{ extern void mercury__pair__init_threadscope_string_table(void);
	  mercury__pair__init_threadscope_string_table(); }
	{ extern void mercury__par_builtin__init_threadscope_string_table(void);
	  mercury__par_builtin__init_threadscope_string_table(); }
	{ extern void mercury__parser__init_threadscope_string_table(void);
	  mercury__parser__init_threadscope_string_table(); }
	{ extern void mercury__parsing_utils__init_threadscope_string_table(void);
	  mercury__parsing_utils__init_threadscope_string_table(); }
	{ extern void mercury__pprint__init_threadscope_string_table(void);
	  mercury__pprint__init_threadscope_string_table(); }
	{ extern void mercury__pqueue__init_threadscope_string_table(void);
	  mercury__pqueue__init_threadscope_string_table(); }
	{ extern void mercury__pretty_printer__init_threadscope_string_table(void);
	  mercury__pretty_printer__init_threadscope_string_table(); }
	{ extern void mercury__private_builtin__init_threadscope_string_table(void);
	  mercury__private_builtin__init_threadscope_string_table(); }
	{ extern void mercury__profiling_builtin__init_threadscope_string_table(void);
	  mercury__profiling_builtin__init_threadscope_string_table(); }
	{ extern void mercury__prolog__init_threadscope_string_table(void);
	  mercury__prolog__init_threadscope_string_table(); }
	{ extern void mercury__queue__init_threadscope_string_table(void);
	  mercury__queue__init_threadscope_string_table(); }
	{ extern void mercury__random__init_threadscope_string_table(void);
	  mercury__random__init_threadscope_string_table(); }
	{ extern void mercury__rational__init_threadscope_string_table(void);
	  mercury__rational__init_threadscope_string_table(); }
	{ extern void mercury__rbtree__init_threadscope_string_table(void);
	  mercury__rbtree__init_threadscope_string_table(); }
	{ extern void mercury__region_builtin__init_threadscope_string_table(void);
	  mercury__region_builtin__init_threadscope_string_table(); }
	{ extern void mercury__require__init_threadscope_string_table(void);
	  mercury__require__init_threadscope_string_table(); }
	{ extern void mercury__robdd__init_threadscope_string_table(void);
	  mercury__robdd__init_threadscope_string_table(); }
	{ extern void mercury__rtree__init_threadscope_string_table(void);
	  mercury__rtree__init_threadscope_string_table(); }
	{ extern void mercury__rtti_implementation__init_threadscope_string_table(void);
	  mercury__rtti_implementation__init_threadscope_string_table(); }
	{ extern void mercury__set__init_threadscope_string_table(void);
	  mercury__set__init_threadscope_string_table(); }
	{ extern void mercury__set_bbbtree__init_threadscope_string_table(void);
	  mercury__set_bbbtree__init_threadscope_string_table(); }
	{ extern void mercury__set_ctree234__init_threadscope_string_table(void);
	  mercury__set_ctree234__init_threadscope_string_table(); }
	{ extern void mercury__set_ordlist__init_threadscope_string_table(void);
	  mercury__set_ordlist__init_threadscope_string_table(); }
	{ extern void mercury__set_tree234__init_threadscope_string_table(void);
	  mercury__set_tree234__init_threadscope_string_table(); }
	{ extern void mercury__set_unordlist__init_threadscope_string_table(void);
	  mercury__set_unordlist__init_threadscope_string_table(); }
	{ extern void mercury__solutions__init_threadscope_string_table(void);
	  mercury__solutions__init_threadscope_string_table(); }
	{ extern void mercury__sparse_bitset__init_threadscope_string_table(void);
	  mercury__sparse_bitset__init_threadscope_string_table(); }
	{ extern void mercury__stack__init_threadscope_string_table(void);
	  mercury__stack__init_threadscope_string_table(); }
	{ extern void mercury__std_util__init_threadscope_string_table(void);
	  mercury__std_util__init_threadscope_string_table(); }
	{ extern void mercury__stm_builtin__init_threadscope_string_table(void);
	  mercury__stm_builtin__init_threadscope_string_table(); }
	{ extern void mercury__store__init_threadscope_string_table(void);
	  mercury__store__init_threadscope_string_table(); }
	{ extern void mercury__stream__init_threadscope_string_table(void);
	  mercury__stream__init_threadscope_string_table(); }
}

static void init_modules_threadscope_string_table_3(void)
{
	{ extern void mercury__stream__string_writer__init_threadscope_string_table(void);
	  mercury__stream__string_writer__init_threadscope_string_table(); }
	{ extern void mercury__string__init_threadscope_string_table(void);
	  mercury__string__init_threadscope_string_table(); }
	{ extern void mercury__string__builder__init_threadscope_string_table(void);
	  mercury__string__builder__init_threadscope_string_table(); }
	{ extern void mercury__table_builtin__init_threadscope_string_table(void);
	  mercury__table_builtin__init_threadscope_string_table(); }
	{ extern void mercury__table_statistics__init_threadscope_string_table(void);
	  mercury__table_statistics__init_threadscope_string_table(); }
	{ extern void mercury__term__init_threadscope_string_table(void);
	  mercury__term__init_threadscope_string_table(); }
	{ extern void mercury__term_io__init_threadscope_string_table(void);
	  mercury__term_io__init_threadscope_string_table(); }
	{ extern void mercury__term_size_prof_builtin__init_threadscope_string_table(void);
	  mercury__term_size_prof_builtin__init_threadscope_string_table(); }
	{ extern void mercury__term_to_xml__init_threadscope_string_table(void);
	  mercury__term_to_xml__init_threadscope_string_table(); }
	{ extern void mercury__test_bitset__init_threadscope_string_table(void);
	  mercury__test_bitset__init_threadscope_string_table(); }
	{ extern void mercury__thread__init_threadscope_string_table(void);
	  mercury__thread__init_threadscope_string_table(); }
	{ extern void mercury__thread__channel__init_threadscope_string_table(void);
	  mercury__thread__channel__init_threadscope_string_table(); }
	{ extern void mercury__thread__mvar__init_threadscope_string_table(void);
	  mercury__thread__mvar__init_threadscope_string_table(); }
	{ extern void mercury__thread__semaphore__init_threadscope_string_table(void);
	  mercury__thread__semaphore__init_threadscope_string_table(); }
	{ extern void mercury__time__init_threadscope_string_table(void);
	  mercury__time__init_threadscope_string_table(); }
	{ extern void mercury__tree234__init_threadscope_string_table(void);
	  mercury__tree234__init_threadscope_string_table(); }
	{ extern void mercury__tree_bitset__init_threadscope_string_table(void);
	  mercury__tree_bitset__init_threadscope_string_table(); }
	{ extern void mercury__type_desc__init_threadscope_string_table(void);
	  mercury__type_desc__init_threadscope_string_table(); }
	{ extern void mercury__unit__init_threadscope_string_table(void);
	  mercury__unit__init_threadscope_string_table(); }
	{ extern void mercury__univ__init_threadscope_string_table(void);
	  mercury__univ__init_threadscope_string_table(); }
	{ extern void mercury__varset__init_threadscope_string_table(void);
	  mercury__varset__init_threadscope_string_table(); }
	{ extern void mercury__version_array__init_threadscope_string_table(void);
	  mercury__version_array__init_threadscope_string_table(); }
	{ extern void mercury__version_array2d__init_threadscope_string_table(void);
	  mercury__version_array2d__init_threadscope_string_table(); }
	{ extern void mercury__version_bitmap__init_threadscope_string_table(void);
	  mercury__version_bitmap__init_threadscope_string_table(); }
	{ extern void mercury__version_hash_table__init_threadscope_string_table(void);
	  mercury__version_hash_table__init_threadscope_string_table(); }
	{ extern void mercury__version_store__init_threadscope_string_table(void);
	  mercury__version_store__init_threadscope_string_table(); }
}

#endif

#if defined(MR_THREADSCOPE)


static void init_modules_threadscope_string_table(void)
{
	init_modules_threadscope_string_table_0();
	init_modules_threadscope_string_table_1();
	init_modules_threadscope_string_table_2();
	init_modules_threadscope_string_table_3();
}

#endif

static void init_modules_required_0(void)
{
	{ extern void mercury__message__required_init(void);
	  mercury__message__required_init(); }
	{ extern void mercury__exception__required_init(void);
	  mercury__exception__required_init(); }
	{ extern void mercury__pretty_printer__required_init(void);
	  mercury__pretty_printer__required_init(); }
}


static void init_modules_required(void)
{
	init_modules_required_0();
}

static void final_modules_required_0(void)
{
}


static void final_modules_required(void)
{
	final_modules_required_0();
}

MR_ComplexityProc MR_complexity_proc_table[] = {
{ "dummy_proc/0-0", -1, -1, NULL,
MR_COMPLEXITY_IS_INACTIVE, NULL, 0, NULL, NULL },
};

#ifdef MR_HIGHLEVEL_CODE
  extern void MR_CALL main_2_p_0(void);
#else
  MR_declare_entry(mercury__main_2_0);
#endif

#if defined(MR_USE_DLLS)
  #if !defined(libmer_DEFINE_DLL)
       #define libmer_impure_ptr \
       (*__imp_libmer_impure_ptr)
   extern void *libmer_impure_ptr;
  #endif
  #if !defined(libmercury_DEFINE_DLL)
       #define libmercury_impure_ptr \
       (*__imp_libmercury_impure_ptr)
   extern void *libmercury_impure_ptr;
  #endif
#endif

void
mercury_init(int argc, char **argv, void *stackbottom)
{

#if defined(MR_CONSERVATIVE_GC)
   /*
   ** Explicitly register the bottom of the stack, so that the
   ** GC knows where it starts.  This is necessary for AIX 4.1
   ** on RS/6000, and for gnu-win32 on Windows 95 or NT.
   ** It may also be helpful on other systems.
   ** For the Boehm GC, if the stackbottom argument is NULL then
   ** do not explicitly register the bottom of the stack, but
   ** let the collector determine an appropriate value itself.
   */
   #if defined(MR_HGC)
    MR_hgc_set_stack_bot(stackbottom);
   #elif defined(MR_BOEHM_GC)
       if (stackbottom != NULL) {
           GC_stackbottom = stackbottom;
       }
   #endif
#endif

/*
** If we're using DLLs on gnu-win32, then we need
** to take special steps to initialize _impure_ptr
** for the DLLs.
*/
#if defined(MR_USE_DLLS)
  #if !defined(libmer_DEFINE_DLL)
   libmer_impure_ptr = _impure_ptr;
  #endif
  #if !defined(libmercury_DEFINE_DLL)
   libmercury_impure_ptr = _impure_ptr;
  #endif
#endif

   MR_address_of_mercury_init_io = mercury_init_io;
   MR_address_of_init_modules = init_modules;
   MR_address_of_init_modules_type_tables = init_modules_type_tables;
   MR_address_of_init_modules_debugger = init_modules_debugger;
#ifdef MR_RECORD_TERM_SIZES
   MR_address_of_init_modules_complexity =
       init_modules_complexity_procs;
#endif
#ifdef MR_DEEP_PROFILING
   MR_address_of_write_out_proc_statics =
       write_out_proc_statics;
#endif
#ifdef MR_THREADSCOPE
   MR_address_of_init_modules_threadscope_string_table =
       init_modules_threadscope_string_table;
#endif
   MR_address_of_init_modules_required = init_modules_required;
   MR_address_of_final_modules_required = final_modules_required;
#ifdef MR_RECORD_TERM_SIZES
   MR_complexity_procs = MR_complexity_proc_table;
   MR_num_complexity_procs = 0;
#endif
   MR_type_ctor_info_for_univ = ML_type_ctor_info_for_univ;
   MR_type_info_for_type_info = (MR_TypeCtorInfo)
       &ML_type_info_for_type_info;
   MR_type_info_for_pseudo_type_info = (MR_TypeCtorInfo)
       &ML_type_info_for_pseudo_type_info;
   MR_type_info_for_list_of_univ = (MR_TypeInfo)
       &ML_type_info_for_list_of_univ;
   MR_type_info_for_list_of_int = (MR_TypeInfo)
       &ML_type_info_for_list_of_int;
   MR_type_info_for_list_of_char = (MR_TypeInfo)
       &ML_type_info_for_list_of_char;
   MR_type_info_for_list_of_string = (MR_TypeInfo)
       &ML_type_info_for_list_of_string;
   MR_type_info_for_list_of_type_info = (MR_TypeInfo)
       &ML_type_info_for_list_of_type_info;
   MR_type_info_for_list_of_pseudo_type_info = (MR_TypeInfo)
       &ML_type_info_for_list_of_pseudo_type_info;
#ifdef MR_CONSERVATIVE_GC
   MR_address_of_init_gc = init_gc;
#endif
   MR_library_initializer = ML_io_init_state;
   MR_library_finalizer = ML_io_finalize_state;
   MR_io_stdin_stream = ML_io_stdin_stream;
   MR_io_stdout_stream = ML_io_stdout_stream;
   MR_io_stderr_stream = ML_io_stderr_stream;
   MR_io_print_to_cur_stream = ML_io_print_to_cur_stream;
   MR_io_print_to_stream = ML_io_print_to_stream;
#if MR_TRACE_ENABLED
   MR_exec_trace_func_ptr = MR_trace_real;
   MR_register_module_layout = MR_register_module_layout_real;
   MR_address_of_trace_getline = MR_trace_getline;
   MR_address_of_trace_get_command = MR_trace_get_command;
   MR_address_of_trace_browse_all_on_level =
       MR_trace_browse_all_on_level;
   MR_address_of_trace_interrupt_handler =
       MR_trace_interrupt_handler;
  #ifdef MR_USE_EXTERNAL_DEBUGGER
   MR_address_of_trace_init_external = MR_trace_init_external;
   MR_address_of_trace_final_external = MR_trace_final_external;
  #endif
#else
   MR_exec_trace_func_ptr = MR_trace_fake;
   MR_register_module_layout = NULL;
   MR_address_of_trace_getline = NULL;
   MR_address_of_trace_get_command = NULL;
   MR_address_of_trace_browse_all_on_level = NULL;
   MR_address_of_trace_interrupt_handler = NULL;
  #ifdef MR_USE_EXTERNAL_DEBUGGER
   MR_address_of_trace_init_external = NULL;
   MR_address_of_trace_final_external = NULL;
  #endif
#endif
#if defined(MR_USE_GCC_NONLOCAL_GOTOS) && !defined(MR_USE_ASM_LABELS)
   MR_do_init_modules();
#endif
#ifdef MR_HIGHLEVEL_CODE
   MR_program_entry_point = main_2_p_0;
#else
   MR_program_entry_point = MR_ENTRY(mercury__main_2_0);
#endif
   MR_runtime_flags = "";


   mercury_runtime_init(argc, argv);

   return;
}

void
mercury_call_main(void)
{
   mercury_runtime_main();
}

int
mercury_terminate(void)
{
   return mercury_runtime_terminate();
}

int
mercury_main(int argc, char **argv)
{
#ifdef MR_PROFILE_SBRK
   void* old_break;
   void* new_break;
#endif
   int result;
#ifdef MR_PROFILE_SBRK
   old_break = sbrk(0);
#endif
   void *dummy;
   mercury_init(argc, argv, &dummy);
   mercury_call_main();
   result = mercury_terminate();
#ifdef MR_PROFILE_SBRK
   new_break = sbrk(0);
   printf("sbrk delta: %d\n",
       (MR_Integer)new_break - (MR_Integer)old_break);
#endif
   return result;
}

#if defined(MR_MSVC)
static char **
mercury_msvc_args(int argc, wchar_t **wargv)
{
   char    **argv;
   int     i;

   argv = MR_NEW_ARRAY(char *, argc + 1);
   for (i = 0; i < argc; i++) {
       int bytes = WideCharToMultiByte(CP_UTF8, 0, wargv[i], -1,
           NULL, 0, NULL, NULL);
       argv[i] = MR_malloc(bytes);
       WideCharToMultiByte(CP_UTF8, 0, wargv[i], -1,
           argv[i], bytes, NULL, NULL);
   }
   argv[i] = NULL;
   return argv;
}
#elif defined(MR_MINGW)
extern int __wgetmainargs(int *, wchar_t ***, wchar_t ***, int, int *);

static void
mercury_win32_args(int *argc_ret, char ***argv_ret)
{
   int     argc;
   char    **argv;
   wchar_t **wargv;
   wchar_t **wenv;
   int     start_info = 0;
   int     i;

   if (__wgetmainargs(&argc, &wargv, &wenv, 0, &start_info) != 0) {
       return;
   }
   argv = MR_NEW_ARRAY(char *, argc + 1);
   for (i = 0; i < argc; i++) {
       int bytes = WideCharToMultiByte(CP_UTF8, 0, wargv[i], -1,
           NULL, 0, NULL, NULL);
       argv[i] = MR_malloc(bytes);
       WideCharToMultiByte(CP_UTF8, 0, wargv[i], -1,
           argv[i], bytes, NULL, NULL);
   }
   argv[i] = NULL;
   *argc_ret = argc;
   *argv_ret = argv;
}
#endif

/* ensure that everything gets compiled in the same grade */
static const void *const MR_grade = &MR_GRADE_VAR;

#if defined(MR_MSVC)

int
wmain(int argc, wchar_t **wargv)
{
    int    result;
    char   **argv;

    argv = mercury_msvc_args(argc, wargv);
    result = mercury_main(argc, argv);
    return result;
}
#else

int
main(int argc, char **argv)
{
#ifdef MR_MINGW
   mercury_win32_args(&argc, &argv);
#endif
   return mercury_main(argc, argv);
}
#endif
