#include "run-time.h"

/* Typedefs for referenced classes */

typedef struct {
  D wrapper;
  D mangler_buffer_;
  D mangler_table_;
} _KLmanglerGVdfmc_mangling;

typedef struct {
  D wrapper;
  D instanceQ_iep_;
  D debug_name_;
  D class_implementation_class_;
  D class_subtype_bit_;
  D class_module_;
} _KLclassGVKd;

#define  define__KLmm_wrapperGVKi(nrepeated) \
  typedef struct { \
    D wrapper; \
    D mm_wrapper_implementation_class_; \
    D mm_wrapper_subtype_mask_; \
    DWORD mm_wrapper_fixed_part_; \
    DWORD mm_wrapper_variable_part_; \
    D mm_wrapper_number_patterns_; \
    DWORD mm_wrapper_pattern_element_[nrepeated+1]; \
  } _KLmm_wrapperGVKi_##nrepeated;
define__KLmm_wrapperGVKi(1);
define__KLmm_wrapperGVKi(0);

#define  define__KLsimple_object_vectorGVKd(nrepeated) \
  typedef struct { \
    D wrapper; \
    D size_; \
    D vector_element_[nrepeated+1]; \
  } _KLsimple_object_vectorGVKd_##nrepeated;
define__KLsimple_object_vectorGVKd(3);
define__KLsimple_object_vectorGVKd(4);
define__KLsimple_object_vectorGVKd(16);
define__KLsimple_object_vectorGVKd(256);
define__KLsimple_object_vectorGVKd(2);
define__KLsimple_object_vectorGVKd(1);
define__KLsimple_object_vectorGVKd(0);

typedef struct {
  D wrapper;
  D head_;
  D tail_;
} _KLempty_listGVKd;

typedef struct {
  D wrapper;
} _KLobjectGVKd;

typedef struct {
  D wrapper;
} _KLunboundGVKe;

typedef struct {
  D wrapper;
} _KLbooleanGVKd;

typedef struct {
  D wrapper;
  D xep_;
  D function_signature_;
  D Pgf_cache_;
  D debug_name_;
  D generic_function_methods_;
  D discriminator_;
  D incremental_gf_module_;
  D incremental_gf_domain_info_;
  D incremental_gf_method_libraries_;
  D incremental_gf_properties_;
} _KLincremental_generic_functionGVKe;

typedef struct {
  D wrapper;
  D instanceQ_iep_;
  D debug_name_;
  D class_implementation_class_;
  D class_subtype_bit_;
  D class_module_;
} _KLfunction_classGVKi;

typedef struct {
  D wrapper;
  D properties_;
  D engine_node_callback_;
  D engine_node_entry_point_;
} _KLabsent_engine_nodeGVKg;

typedef struct {
  D wrapper;
  D namespace_name_;
  D home_library_;
} _KLmoduleGVKe;

#define  define__KLbyte_stringGVKd(nrepeated) \
  typedef struct { \
    D wrapper; \
    D size_; \
    char string_element_[nrepeated+1]; \
  } _KLbyte_stringGVKd_##nrepeated;
define__KLbyte_stringGVKd(4);
define__KLbyte_stringGVKd(6);
define__KLbyte_stringGVKd(7);
define__KLbyte_stringGVKd(5);
define__KLbyte_stringGVKd(32);
define__KLbyte_stringGVKd(31);

typedef struct {
  D wrapper;
  D signature_properties_;
  D signature_required_;
} _KLsignatureGVKe;

typedef struct {
  D wrapper;
  D mangler_;
  D cg_variables_;
  D registers_;
  D variables_;
} _KLharp_back_endGYbase_harpVharp;

typedef struct {
  D wrapper;
  D head_;
  D tail_;
} _KLpairGVKd;

typedef struct {
  D wrapper;
  D xep_;
  D function_signature_;
  D mep_;
} _KLsimple_methodGVKe;

typedef struct {
  D wrapper;
  D xep_;
  D function_signature_;
  D mep_;
  D iep_;
  D keyword_specifiers_;
} _KLkeyword_methodGVKe;

typedef struct {
  D wrapper;
  D symbol_name_;
} _KLsymbolGVKd;

typedef struct {
  D wrapper;
  D signature_properties_;
  D signature_required_;
  D signature_keys_;
  D signature_key_types_;
} _KLkeyword_signatureGVKe;

typedef struct {
  D wrapper;
  D signature_properties_;
  D signature_required_;
  D signature_values_;
} _KLsignatureAvaluesGVKi;

typedef struct {
  D wrapper;
} _KLstringGVKd;

typedef struct {
  D wrapper;
  D xep_;
  D function_signature_;
  D Pgf_cache_;
  D debug_name_;
  D generic_function_methods_;
  D discriminator_;
} _KLsealed_generic_functionGVKe;

typedef struct {
  D wrapper;
} _KLvectorGVKd;

typedef struct {
  D wrapper;
  D properties_;
  D engine_node_callback_;
  D engine_node_entry_point_;
  D cache_header_engine_node_next_;
  D cache_header_engine_node_parent_;
} _KLsimple_typechecked_cache_header_engine_nodeGVKg;

typedef struct {
  D wrapper;
  D outputter_line_pos_;
  D outputter_stream_;
} _KLstream_wrapper_outputterGYharp_outputterVharp;

#define  define__KLsimple_closure_methodGVKi(nrepeated) \
  typedef struct { \
    D wrapper; \
    D xep_; \
    D function_signature_; \
    D mep_; \
    D environment_size_; \
    D environment_element_[nrepeated+1]; \
  } _KLsimple_closure_methodGVKi_##nrepeated;
define__KLsimple_closure_methodGVKi(0);

typedef struct {
  D wrapper;
} _KLharp_outputterGYharp_outputterVharp;


/* Typedefs for defined classes */


/* Referenced object declarations */

D KmakeVKdMdfmc_manglingM0I (D, D);
extern _KLclassGVKd KLmanglerGVdfmc_mangling;
extern _KLclassGVKd KLclassGVKd;
extern _KLmm_wrapperGVKi_0 KLclassGVKdW;
extern _KLclassGVKd KLmm_wrapperGVKi;
extern _KLmm_wrapperGVKi_1 KLmm_wrapperGVKiW;
extern _KLmm_wrapperGVKi_0 KLmanglerGVdfmc_manglingW;
extern _KLsimple_object_vectorGVKd_0 KPempty_vectorVKi;
extern _KLclassGVKd KLsimple_object_vectorGVKd;
extern _KLmm_wrapperGVKi_0 KLsimple_object_vectorGVKdW;
extern _KLempty_listGVKd KPempty_listVKi;
extern _KLclassGVKd KLempty_listGVKd;
extern _KLmm_wrapperGVKi_0 KLempty_listGVKdW;
extern _KLclassGVKd KLobjectGVKd;
extern _KLmm_wrapperGVKi_0 KLobjectGVKdW;
extern _KLunboundGVKe KPunboundVKi;
extern _KLclassGVKd KLunboundGVKe;
extern _KLmm_wrapperGVKi_0 KLunboundGVKeW;
extern _KLbooleanGVKd KPtrueVKi;
extern _KLclassGVKd KLbooleanGVKd;
extern _KLmm_wrapperGVKi_0 KLbooleanGVKdW;
extern _KLbooleanGVKd KPfalseVKi;
extern _KLfunction_classGVKi KLincremental_generic_functionGVKe;
extern _KLclassGVKd KLfunction_classGVKi;
extern _KLmm_wrapperGVKi_0 KLfunction_classGVKiW;
extern _KLmm_wrapperGVKi_0 KLincremental_generic_functionGVKeW;
extern _KLabsent_engine_nodeGVKg RSINGULAR_Labsent_engine_nodeG;
extern _KLclassGVKd KLabsent_engine_nodeGVKg;
extern _KLmm_wrapperGVKi_0 KLabsent_engine_nodeGVKgW;
extern _KLmoduleGVKe Kdfmc_harp_cg_moduleYdylan_userVdfmc_harp_cg;
extern _KLclassGVKd KLmoduleGVKe;
extern _KLmm_wrapperGVKi_0 KLmoduleGVKeW;
extern _KLclassGVKd KLbyte_stringGVKd;
extern _KLmm_wrapperGVKi_0 KLbyte_stringGVKdW;
extern _KLclassGVKd KLsignatureGVKe;
extern _KLmm_wrapperGVKi_0 KLsignatureGVKeW;
extern _KLclassGVKd KLharp_back_endGYbase_harpVharp;
extern _KLmm_wrapperGVKi_0 KLharp_back_endGYbase_harpVharpW;
extern _KLclassGVKd KLpairGVKd;
extern _KLmm_wrapperGVKi_0 KLpairGVKdW;
extern _KLfunction_classGVKi KLsimple_methodGVKe;
extern _KLmm_wrapperGVKi_0 KLsimple_methodGVKeW;
extern _KLincremental_generic_functionGVKe Kas_lowercaseVKd;
extern _KLsimple_methodGVKe Kmangle_binding_spreadVdfmc_manglingMM0;
D Kconcatenate_asVKdMM3I (D, D, D);
extern _KLsimple_methodGVKe Kconcatenate_asVKdMM0;
extern _KLsimple_methodGVKe Kconcatenate_asVKdMM1;
D Kformat_to_stringYformatVioMM0I (D, D);
extern _KLfunction_classGVKi KLkeyword_methodGVKe;
extern _KLmm_wrapperGVKi_0 KLkeyword_methodGVKeW;
extern _KLclassGVKd KLsymbolGVKd;
extern _KLmm_wrapperGVKi_0 KLsymbolGVKdW;
extern _KLclassGVKd KLkeyword_signatureGVKe;
extern _KLmm_wrapperGVKi_0 KLkeyword_signatureGVKeW;
extern _KLsimple_object_vectorGVKd_2 KDsignature_LstringG_typesVKi;
extern _KLsimple_object_vectorGVKd_256 KDsignature_LobjectG_typesVKi;
D Kharp_raw_mangleVdfmc_harp_cgMM0I (D);
extern _KLsimple_methodGVKe Kmake_runtime_objectVdfmc_harp_cg;
extern _KLincremental_generic_functionGVKe Kelement_setterVKd;
extern _KLclassGVKd KLsignatureAvaluesGVKi;
extern _KLmm_wrapperGVKi_0 KLsignatureAvaluesGVKiW;
extern _KLclassGVKd KLstringGVKd;
extern _KLmm_wrapperGVKi_0 KLstringGVKdW;
D KmakeVKdMM23I (D, D, D, D);
D Kelement_range_errorVKeI (D, D);
D Kobject_classVKdI (D);
extern _KLsealed_generic_functionGVKe Kmap_as_oneVKi;
extern _KLclassGVKd KLsealed_generic_functionGVKe;
extern _KLmm_wrapperGVKi_0 KLsealed_generic_functionGVKeW;
extern _KLclassGVKd KLvectorGVKd;
extern _KLmm_wrapperGVKi_0 KLvectorGVKdW;
extern _KLsealed_generic_functionGVKe Kdo_outputtersYharp_outputterVharp;
extern _KLclassGVKd KLsimple_typechecked_cache_header_engine_nodeGVKg;
extern _KLmm_wrapperGVKi_0 KLsimple_typechecked_cache_header_engine_nodeGVKgW;
extern _KLclassGVKd KLstream_wrapper_outputterGYharp_outputterVharp;
extern _KLmm_wrapperGVKi_0 KLstream_wrapper_outputterGYharp_outputterVharpW;
extern _KLfunction_classGVKi KLsimple_closure_methodGVKi;
extern _KLmm_wrapperGVKi_0 KLsimple_closure_methodGVKiW;
extern _KLclassGVKd KLharp_outputterGYharp_outputterVharp;
extern _KLmm_wrapperGVKi_0 KLharp_outputterGYharp_outputterVharpW;
extern _KLsimple_object_vectorGVKd_16 KDsignature_LbooleanG_typesVKi;
extern D Dconstant_prefixVdfmc_mangling;
extern D Diep_suffixVdfmc_mangling;
extern D Dnamed_entry_pointsVdfmc_harp_cg;

/* Defined object declarations */

D Kmake_entry_pointsVdfmc_harp_cgI (D, D, D);
D Kmake_entry_pointVdfmc_harp_cgMM0I (D, D, D, D);
D Kmake_named_entry_pointsVdfmc_harp_cgI (D, D);
D Kharp_dylan_mangleVdfmc_harp_cgMM0I (D, D, D);
extern _KLincremental_generic_functionGVKe Kop__cleanup_preserve_state_entryVdfmc_harp_cg;
extern _KLincremental_generic_functionGVKe Kop__cleanup_preserve_state_exitVdfmc_harp_cg;
extern _KLsimple_methodGVKe Kop__cleanup_preserve_state_exitVdfmc_harp_cgMM0;
D Kop__cleanup_preserve_state_exitVdfmc_harp_cgMM0I (D);
static _KLpairGVKd K9;
static _KLsignatureGVKe K10;
static _KLbyte_stringGVKd_31 K11;
static _KLsimple_object_vectorGVKd_1 K12;
extern _KLsimple_methodGVKe Kop__cleanup_preserve_state_entryVdfmc_harp_cgMM0;
D Kop__cleanup_preserve_state_entryVdfmc_harp_cgMM0I (D);
static _KLpairGVKd K15;
static _KLbyte_stringGVKd_32 K16;
static _KLpairGVKd K17;
static _KLpairGVKd K18;
static _KLbyte_stringGVKd_5 K19;
extern _KLkeyword_methodGVKe Kmake_entry_pointVdfmc_harp_cgMM0;
static _KLkeyword_signatureGVKe K21;
static _KLsimple_object_vectorGVKd_4 K22;
static _KLsymbolGVKd KJmodule_;
static _KLsymbolGVKd KJlibrary_;
static _KLbyte_stringGVKd_7 K25;
static _KLbyte_stringGVKd_6 K26;
static _KLsimple_object_vectorGVKd_2 K27;
extern _KLsimple_methodGVKe Kharp_dylan_mangleVdfmc_harp_cgMM0;
static _KLbyte_stringGVKd_4 K29;
static _KLsignatureAvaluesGVKi K30;
static _KLsimple_object_vectorGVKd_3 K31;
static _KLbyte_stringGVKd_5 K32;
extern _KLsimple_methodGVKe Kstream_outputtersQVdfmc_harp_cg;
D Kstream_outputtersQVdfmc_harp_cgI (D);
static _KLsimple_closure_methodGVKi_0 Kstream_outputterQF38;
static D Kstream_outputterQF38I (D);
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K37;
static _KLsignatureGVKe K39;
static _KLsimple_object_vectorGVKd_1 K40;
static _KLsignatureAvaluesGVKi K41;

/* Indirection variables */

static D IKJmodule_ = &KJmodule_;
static D IKJlibrary_ = &KJlibrary_;

/* Variables */

D harp_dylan_mangleVdfmc_harp_cg = &Kharp_dylan_mangleVdfmc_harp_cgMM0;
D stream_outputtersQVdfmc_harp_cg = &Kstream_outputtersQVdfmc_harp_cg;
D Dharp_manglerVdfmc_harp_cg = &KPunboundVKi;
D op__cleanup_preserve_state_entryVdfmc_harp_cg = &Kop__cleanup_preserve_state_entryVdfmc_harp_cg;
D op__cleanup_preserve_state_exitVdfmc_harp_cg = &Kop__cleanup_preserve_state_exitVdfmc_harp_cg;

/* Objects */

_KLincremental_generic_functionGVKe Kop__cleanup_preserve_state_entryVdfmc_harp_cg = {
  &KLincremental_generic_functionGVKeW /* wrapper */,
  &gf_xep_1,
  &K10,
  (D) 1,
  &K16,
  &K15,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kdfmc_harp_cg_moduleYdylan_userVdfmc_harp_cg,
  &KPfalseVKi,
  &KPempty_vectorVKi,
  (D) 25
};

_KLincremental_generic_functionGVKe Kop__cleanup_preserve_state_exitVdfmc_harp_cg = {
  &KLincremental_generic_functionGVKeW /* wrapper */,
  &gf_xep_1,
  &K10,
  (D) 1,
  &K11,
  &K9,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kdfmc_harp_cg_moduleYdylan_userVdfmc_harp_cg,
  &KPfalseVKi,
  &KPempty_vectorVKi,
  (D) 25
};

_KLsimple_methodGVKe Kop__cleanup_preserve_state_exitVdfmc_harp_cgMM0 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_1,
  &K10,
  &Kop__cleanup_preserve_state_exitVdfmc_harp_cgMM0I
};

static _KLpairGVKd K9 = {
  &KLpairGVKdW /* wrapper */,
  &Kop__cleanup_preserve_state_exitVdfmc_harp_cgMM0,
  &KPempty_listVKi
};

static _KLsignatureGVKe K10 = {
  &KLsignatureGVKeW /* wrapper */,
  (D) 41943045,
  &K12
};

static _KLbyte_stringGVKd_31 K11 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 125,
  "op--cleanup-preserve-state-exit"
};

static _KLsimple_object_vectorGVKd_1 K12 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (D) 5,
  &KLharp_back_endGYbase_harpVharp
};

_KLsimple_methodGVKe Kop__cleanup_preserve_state_entryVdfmc_harp_cgMM0 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_1,
  &K10,
  &Kop__cleanup_preserve_state_entryVdfmc_harp_cgMM0I
};

static _KLpairGVKd K15 = {
  &KLpairGVKdW /* wrapper */,
  &Kop__cleanup_preserve_state_entryVdfmc_harp_cgMM0,
  &KPempty_listVKi
};

static _KLbyte_stringGVKd_32 K16 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 129,
  "op--cleanup-preserve-state-entry"
};

static _KLpairGVKd K17 = {
  &KLpairGVKdW /* wrapper */,
  &Kconcatenate_asVKdMM1,
  &K18
};

static _KLpairGVKd K18 = {
  &KLpairGVKdW /* wrapper */,
  &Kconcatenate_asVKdMM0,
  &KPempty_listVKi
};

static _KLbyte_stringGVKd_5 K19 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 21,
  "%s-%d"
};

_KLkeyword_methodGVKe Kmake_entry_pointVdfmc_harp_cgMM0 = {
  &KLkeyword_methodGVKeW /* wrapper */,
  &rest_key_xep_4,
  &K21,
  &key_mep_4,
  &Kmake_entry_pointVdfmc_harp_cgMM0I,
  &K22
};

static _KLkeyword_signatureGVKe K21 = {
  &KLkeyword_signatureGVKeW /* wrapper */,
  (D) 42206213,
  &KDsignature_LstringG_typesVKi,
  &K27,
  &KDsignature_LobjectG_typesVKi
};

static _KLsimple_object_vectorGVKd_4 K22 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (D) 17,
  &KJmodule_,
  &KPfalseVKi,
  &KJlibrary_,
  &KPfalseVKi
};

static _KLsymbolGVKd KJmodule_ = {
  &KLsymbolGVKdW /* wrapper */,
  &K26
};

static _KLsymbolGVKd KJlibrary_ = {
  &KLsymbolGVKdW /* wrapper */,
  &K25
};

static _KLbyte_stringGVKd_7 K25 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 29,
  "library"
};

static _KLbyte_stringGVKd_6 K26 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 25,
  "module"
};

static _KLsimple_object_vectorGVKd_2 K27 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (D) 9,
  &KJmodule_,
  &KJlibrary_
};

_KLsimple_methodGVKe Kharp_dylan_mangleVdfmc_harp_cgMM0 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K30,
  &Kharp_dylan_mangleVdfmc_harp_cgMM0I
};

static _KLbyte_stringGVKd_4 K29 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 17,
  "%s%s"
};

static _KLsignatureAvaluesGVKi K30 = {
  &KLsignatureAvaluesGVKiW /* wrapper */,
  (D) 33555469,
  &K31,
  &KDsignature_LstringG_typesVKi
};

static _KLsimple_object_vectorGVKd_3 K31 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (D) 13,
  &KLstringGVKd,
  &KLstringGVKd,
  &KLstringGVKd
};

static _KLbyte_stringGVKd_5 K32 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (D) 21,
  "%s_%d"
};

_KLsimple_methodGVKe Kstream_outputtersQVdfmc_harp_cg = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_1,
  &K41,
  &Kstream_outputtersQVdfmc_harp_cgI
};

static _KLsimple_closure_methodGVKi_0 Kstream_outputterQF38 = {
  &KLsimple_closure_methodGVKiW /* wrapper */,
  &xep_1,
  &K39,
  &Kstream_outputterQF38I,
  (D) 1
};

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K37 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (D) 65593,
  &KPfalseVKi,
  &cache_header_engine_2,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kdo_outputtersYharp_outputterVharp
};

static _KLsignatureGVKe K39 = {
  &KLsignatureGVKeW /* wrapper */,
  (D) 44040197,
  &K40
};

static _KLsimple_object_vectorGVKd_1 K40 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (D) 5,
  &KLharp_outputterGYharp_outputterVharp
};

static _KLsignatureAvaluesGVKi K41 = {
  &KLsignatureAvaluesGVKiW /* wrapper */,
  (D) 33555461,
  &K40,
  &KDsignature_LbooleanG_typesVKi
};

/* Code */

D Kmake_entry_pointsVdfmc_harp_cgI (D entry_point_, D number_entry_points_, D make_reference_) {
  D T4;
  D raw_name_;
  DWORD i_T, i_;
  D T7_0;
  DWORD T8;
  DWORD T9;
  D T10;
  D T11_0;
  D entry_points_;
  D T13;
  D T14;
  _KLsimple_object_vectorGVKd_2 T15 = {&KLsimple_object_vectorGVKdW, (D) 9};
  D T16;
  D T17;
  DWORD T18;
  D T19;
  DWORD T20;
  D T21;
  DWORD T22;
  D T23;
  D T24;
  D T25_0;
  D T26_0;
  D T27;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:129
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:132
  T8 = primitive_cast_integer_as_raw(number_entry_points_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:132
  T9 = primitive_machine_word_add_signal_overflow(T8,4);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:132
  T10 = primitive_cast_raw_as_integer(T9);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:132
  T11_0 = KmakeVKdMM23I(&KLsimple_object_vectorGVKd, &KPempty_vectorVKi, &KPfalseVKi, T10);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:132
  entry_points_ = T11_0;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:133
  CONGRUENT_CALL_PROLOG(&Kas_lowercaseVKd, 1);
  T4 = CONGRUENT_CALL1(entry_point_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:133
  raw_name_ = Kharp_raw_mangleVdfmc_harp_cgMM0I(T4);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
  i_T = 1;
L0: ;
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
    i_ = i_T;
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
    T14 = primitive_cast_raw_as_integer(i_);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
    T13 = primitive_machine_word_less_thanQ(i_,T8);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
    if (T13 != &KPfalseVKi) {
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      T15.vector_element_[0] = raw_name_;
      T15.vector_element_[1] = T14;
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      T16 = Kformat_to_stringYformatVioMM0I(&K32, &T15);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      T17 = SLOT_VALUE_INITD(entry_points_, 0);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      T18 = primitive_cast_integer_as_raw(T17);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      T19 = primitive_machine_word_unsigned_less_thanQ(i_,T18);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      if (T19 != &KPfalseVKi) {
        // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
        REPEATED_D_SLOT_VALUE_TAGGED_SETTER(T16, entry_points_, 1, i_);
      } else {
        // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
        Kelement_range_errorVKeI(entry_points_, T14);
      }
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:136
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
      T20 = primitive_machine_word_add_signal_overflow(i_,4);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
      i_T = T20;
      goto L0;
    }
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:135
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
  T21 = SLOT_VALUE_INITD(entry_points_, 0);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
  T22 = primitive_cast_integer_as_raw(T21);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
  T23 = primitive_machine_word_unsigned_less_thanQ(T8,T22);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
  if (T23 != &KPfalseVKi) {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
    REPEATED_D_SLOT_VALUE_TAGGED_SETTER(raw_name_, entry_points_, 1, T8);
  } else {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
    Kelement_range_errorVKeI(entry_points_, number_entry_points_);
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:138
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:139
  T26_0 = Kobject_classVKdI(entry_points_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:139
  T27 = T26_0;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:139
  T24 = CALL3(&Kmap_as_oneVKi, T27, make_reference_, entry_points_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:139
  T25_0 = T24;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:129
  T7_0 = T25_0;
  {
    MV_CHECK_TYPE_PROLOGUE(T25_0);
    primitive_type_check(T7_0, &KLvectorGVKd);
    MV_CHECK_TYPE_EPILOGUE();
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:129
  MV_SET_COUNT(1);
  return(T7_0);
}

D Kmake_entry_pointVdfmc_harp_cgMM0I (D entry_point_, D Urest_, D module_, D library_) {
  D T5;
  D T6;
  D T7;
  D T8;
  D raw_name_;
  D T10;
  D T11_0;
  _KLsimple_object_vectorGVKd_2 T12 = {&KLsimple_object_vectorGVKdW, (D) 9};
  D T13;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:170
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:174
  if (module_ != &KPfalseVKi) {
    T5 = library_;
  } else {
    T5 = &KPfalseVKi;
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:174
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:174
  if (T5 != &KPfalseVKi) {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:176
    T6 = CALL3(&Kharp_dylan_mangleVdfmc_harp_cgMM0, entry_point_, module_, library_);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:175
    T12.vector_element_[0] = T6;
    T12.vector_element_[1] = Diep_suffixVdfmc_mangling;
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:175
    T13 = Kformat_to_stringYformatVioMM0I(&K29, &T12);
    raw_name_ = T13;
  } else {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:179
    CONGRUENT_CALL_PROLOG(&Kas_lowercaseVKd, 1);
    T7 = CONGRUENT_CALL1(entry_point_);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:179
    T8 = Kharp_raw_mangleVdfmc_harp_cgMM0I(T7);
    raw_name_ = T8;
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:174
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:181
  T10 = CALL1(&Kmake_runtime_objectVdfmc_harp_cg, raw_name_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:181
  CALL3(&Kelement_setterVKd, T10, Dnamed_entry_pointsVdfmc_harp_cg, raw_name_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:181
  T11_0 = T10;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:170
  MV_SET_COUNT(1);
  return(T11_0);
}

D Kmake_named_entry_pointsVdfmc_harp_cgI (D entry_point_, D number_entry_points_) {
  D entry_pointF3;
  DWORD i_T, i_;
  D T5;
  DWORD T6;
  D T7;
  D T8;
  _KLsimple_object_vectorGVKd_2 T9 = {&KLsimple_object_vectorGVKdW, (D) 9};
  D T10;
  DWORD T11;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:151
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:154
  CONGRUENT_CALL_PROLOG(&Kas_lowercaseVKd, 1);
  entry_pointF3 = CONGRUENT_CALL1(entry_point_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
  i_T = 1;
L0: ;
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
    i_ = i_T;
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
    T8 = primitive_cast_raw_as_integer(i_);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
    T6 = primitive_cast_integer_as_raw(number_entry_points_);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
    T7 = primitive_machine_word_less_thanQ(i_,T6);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
    if (T7 != &KPfalseVKi) {
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:156
      T9.vector_element_[0] = entry_pointF3;
      T9.vector_element_[1] = T8;
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:156
      T10 = Kformat_to_stringYformatVioMM0I(&K19, &T9);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:156
      Kmake_entry_pointVdfmc_harp_cgMM0I(T10, &KPempty_vectorVKi, &KPfalseVKi, &KPfalseVKi);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
      T11 = primitive_machine_word_add_signal_overflow(i_,4);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
      i_T = T11;
      goto L0;
    }
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:155
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:158
  T5 = CALL1(&Kmake_entry_pointVdfmc_harp_cgMM0, entry_pointF3);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:151
  MV_SET_COUNT(0);
  return(T5);
}

D Kharp_dylan_mangleVdfmc_harp_cgMM0I (D name_, D module_, D library_) {
  D T4;
  D T5;
  D T6;
  D T7;
  _KLsimple_object_vectorGVKd_1 T8 = {&KLsimple_object_vectorGVKdW, (D) 5};
  D T9_0;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:186
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:190
  CONGRUENT_CALL_PROLOG(&Kas_lowercaseVKd, 1);
  T4 = CONGRUENT_CALL1(name_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:191
  CONGRUENT_CALL_PROLOG(&Kas_lowercaseVKd, 1);
  T5 = CONGRUENT_CALL1(module_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:192
  CONGRUENT_CALL_PROLOG(&Kas_lowercaseVKd, 1);
  T6 = CONGRUENT_CALL1(library_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:189
  T7 = CALL4(&Kmangle_binding_spreadVdfmc_manglingMM0, Dharp_manglerVdfmc_harp_cg, T4, T5, T6);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:188
  T8.vector_element_[0] = T7;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:188
  MIEP_CALL_PROLOG(&K17);
  T9_0 = Kconcatenate_asVKdMM3I(&KLbyte_stringGVKd, Dconstant_prefixVdfmc_mangling, &T8);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:186
  MV_SET_COUNT(1);
  return(T9_0);
}

D Kop__cleanup_preserve_state_exitVdfmc_harp_cgMM0I (D back_end_) {
  D T2;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:345
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:345
  T2 = &KPfalseVKi;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:345
  MV_SET_COUNT(0);
  return(T2);
}

D Kop__cleanup_preserve_state_entryVdfmc_harp_cgMM0I (D back_end_) {
  D T2;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:338
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:338
  T2 = &KPfalseVKi;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:338
  MV_SET_COUNT(0);
  return(T2);
}

D Kstream_outputtersQVdfmc_harp_cgI (D outputter_) {
  D T1;
  D T2_0;
  D streamQ_;
  D T4;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:96
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:98
  streamQ_ = MAKE_D_CELL(&KPfalseVKi);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:99
  T1 = MAKE_CLOSURE_INITD(&Kstream_outputterQF38, 1, streamQ_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:103
  ENGINE_NODE_CALL_PROLOG(&Kdo_outputtersYharp_outputterVharp, &K37, 2);
  ENGINE_NODE_CALL2(&K37, T1, outputter_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:105
  T4 = GET_D_CELL_VAL(streamQ_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:105
  T2_0 = T4;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:96
  MV_SET_COUNT(1);
  return(T2_0);
}

static D Kstream_outputterQF38I (D outputter_) {
  D T1;
  D T2;
  D T3;
  D T4;
  CAPTURE_ENVIRONMENT

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:99
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:100
  T3 = GET_D_CELL_VAL(CREF(0));
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:100
  if (T3 != &KPfalseVKi) {
    T1 = T3;
  } else {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:100
    T4 = primitive_instanceQ(outputter_,&KLstream_wrapper_outputterGYharp_outputterVharp);
    T1 = T4;
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:100
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:100
  SET_D_CELL_VAL(CREF(0), T1);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:100
  T2 = T1;
  MV_SET_ELT(0, T1);
  MV_SET_COUNT(1);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:99
  return(T2);
}


/* SYSTEM INIT CODE */

void _Init_dfmc_harp_cg__X_harp_macros_for_system () {
  extern D KPresolve_symbolVKiI(D);
  {
    D T0;

    T0 = KPresolve_symbolVKiI(&KJmodule_);
    if (T0 != &KJmodule_) {
      primitive_repeated_slot_value_setter(T0, &K27, 1, 0);
      primitive_repeated_slot_value_setter(T0, &K22, 1, 0);
    }
  }
  {
    D T0;

    T0 = KPresolve_symbolVKiI(&KJlibrary_);
    if (T0 != &KJlibrary_) {
      primitive_repeated_slot_value_setter(T0, &K27, 1, 1);
      primitive_repeated_slot_value_setter(T0, &K22, 1, 2);
    }
  }
  return;
}

/* USER INIT CODE */

void _Init_dfmc_harp_cg__X_harp_macros_for_user () {
{
  D T0;
  D T1;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:184
  T1 = KmakeVKdMdfmc_manglingM0I(&KLmanglerGVdfmc_mangling, &KPempty_vectorVKi);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:184
  Dharp_manglerVdfmc_harp_cg = T1;
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/harp-cg/harp-macros.dylan:184
  T0 = &KPfalseVKi;
  goto I0;
}
I0:

  return;
}


/* eof */
