#include "opendylan/run-time.h"

/* Generated by Open Dylan 2014.1 for x86_64-linux */

/* Typedefs for referenced classes */

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

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

typedef struct {
  dylan_value wrapper;
} _KLobjectGVKd;

typedef struct {
  dylan_value wrapper;
} _KLunboundGVKe;

typedef struct {
  dylan_value wrapper;
} _KLbooleanGVKd;

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

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

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

typedef struct {
  dylan_value wrapper;
  dylan_value signature_properties_;
  dylan_value signature_required_;
} _KLobject_signatureGVKe;

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

#define  define__KLbyte_stringGVKd(nrepeated) \
  typedef struct { \
    dylan_value wrapper; \
    dylan_value size_; \
    char string_element_[nrepeated+1]; \
  } _KLbyte_stringGVKd_##nrepeated;
define__KLbyte_stringGVKd(24);
define__KLbyte_stringGVKd(18);
define__KLbyte_stringGVKd(5);
define__KLbyte_stringGVKd(9);
define__KLbyte_stringGVKd(11);
define__KLbyte_stringGVKd(20);

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

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

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

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

typedef struct {
  dylan_value wrapper;
  dylan_value users_;
  dylan_value Pgenerator_;
  dylan_value Penvironment_;
  dylan_value temporary_properties_;
  dylan_value Pnode_id_;
} _KLtemporaryGVdfmc_flow_graph;

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
  dylan_value entry_state_;
  dylan_value Pbody_;
  dylan_value Plabel_;
} _KLbind_exitGVdfmc_flow_graph;

typedef struct {
  dylan_value wrapper;
} _KLintegerGVKd;

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

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
  dylan_value computation_value_;
} _KLextract_single_valueGVdfmc_flow_graph;

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

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

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
  dylan_value merge_left_value_;
  dylan_value merge_right_value_;
  dylan_value merge_left_previous_computation_;
  dylan_value merge_right_previous_computation_;
} _KLif_mergeGVdfmc_flow_graph;

typedef struct {
  dylan_value wrapper;
  dylan_value instanceQ_iep_;
  dylan_value singleton_object_;
} _KLsingletonGVKd;

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
  dylan_value fixed_values_;
  dylan_value rest_value_;
} _KLvaluesGVdfmc_flow_graph;

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

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
} _KLcomputationGVdfmc_flow_graph;

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
  dylan_value computation_value_;
} _KLadjust_multiple_values_computationGVdfmc_flow_graph;

typedef struct {
  dylan_value wrapper;
  dylan_value item_properties_;
  dylan_value computation_source_location_;
  dylan_value previous_computation_;
  dylan_value Pnext_computation_;
  dylan_value temporary_;
  dylan_value Penvironment_;
  dylan_value Pcomputation_type_;
  dylan_value Pnode_id_;
  dylan_value computation_value_;
} _KLextract_rest_valueGVdfmc_flow_graph;


/* Typedefs for defined classes */


/* Referenced object declarations */

extern _KLclassGVKd KLclassGVKd;
extern _KLmm_wrapperGVKi_0 KLclassGVKdW;
extern _KLclassGVKd KLmm_wrapperGVKi;
extern _KLmm_wrapperGVKi_1 KLmm_wrapperGVKiW;
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;
dylan_value KgeneratorVdfmc_flow_graphMM1I (dylan_value);
extern _KLempty_listGVKd KPempty_listVKi;
extern _KLclassGVKd KLempty_listGVKd;
extern _KLmm_wrapperGVKi_0 KLempty_listGVKdW;
dylan_value Kreplace_temporary_in_usersXVdfmc_flow_graphI (dylan_value, dylan_value, dylan_value, dylan_value);
extern _KLsimple_object_vectorGVKd_0 KPempty_vectorVKi;
extern _KLclassGVKd KLsimple_object_vectorGVKd;
extern _KLmm_wrapperGVKi_0 KLsimple_object_vectorGVKdW;
extern _KLclassGVKd KLsealed_generic_functionGVKe;
extern _KLmm_wrapperGVKi_0 KLsealed_generic_functionGVKeW;
extern _KLobject_signatureGVKe KDsignature_LobjectG_object_rest_value_3VKi;
extern _KLclassGVKd KLobject_signatureGVKe;
extern _KLmm_wrapperGVKi_0 KLobject_signatureGVKeW;
extern _KLabsent_engine_nodeGVKg RSINGULAR_Labsent_engine_nodeG;
extern _KLclassGVKd KLabsent_engine_nodeGVKg;
extern _KLmm_wrapperGVKi_0 KLabsent_engine_nodeGVKgW;
extern _KLclassGVKd KLbyte_stringGVKd;
extern _KLmm_wrapperGVKi_0 KLbyte_stringGVKdW;
extern _KLclassGVKd KLpairGVKd;
extern _KLmm_wrapperGVKi_0 KLpairGVKdW;
extern _KLfunction_classGVKi KLsimple_methodGVKe;
extern _KLclassGVKd KLfunction_classGVKi;
extern _KLmm_wrapperGVKi_0 KLfunction_classGVKiW;
extern _KLmm_wrapperGVKi_0 KLsimple_methodGVKeW;
extern _KLclassGVKd KLsignatureGVKe;
extern _KLmm_wrapperGVKi_0 KLsignatureGVKeW;
extern _KLclassGVKd KLtemporaryGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLtemporaryGVdfmc_flow_graphW;
extern _KLclassGVKd KLbind_exitGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLbind_exitGVdfmc_flow_graphW;
extern _KLclassGVKd KLintegerGVKd;
extern _KLmm_wrapperGVKi_0 KLintegerGVKdW;
extern _KLsealed_generic_functionGVKe KusersVdfmc_common;
extern _KLincremental_generic_functionGVKe KsizeVKd;
extern _KLfunction_classGVKi KLincremental_generic_functionGVKe;
extern _KLmm_wrapperGVKi_0 KLincremental_generic_functionGVKeW;
extern _KLincremental_generic_functionGVKe KEVKd;
extern _KLsealed_generic_functionGVKe KgeneratorVdfmc_flow_graph;
extern _KLsimple_methodGVKe Kmerge_replace_right_valueXVdfmc_optimization;
extern _KLsimple_methodGVKe Kmerge_replace_left_valueXVdfmc_optimization;
extern _KLsimple_methodGVKe Kgenerator_setterVdfmc_flow_graphMM0;
extern _KLsealed_generic_functionGVKe KenvironmentVdfmc_modeling;
dylan_value KLtemporaryGZ32ZconstructorVdfmc_flow_graphMM0I (dylan_value, dylan_value, dylan_value, dylan_value, dylan_value);
dylan_value Kre_optimizeVdfmc_flow_graphMM2I (dylan_value);
extern _KLclassGVKd KLextract_single_valueGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLextract_single_valueGVdfmc_flow_graphW;
dylan_value KuselessQVdfmc_optimizationMM0I (dylan_value);
extern _KLsealed_generic_functionGVKe Kdelete_computationXVdfmc_flow_graph;
extern _KLsimple_methodGVKe Kre_optimizeVdfmc_flow_graphMM1;
extern _KLclassGVKd KLsymbolGVKd;
extern _KLmm_wrapperGVKi_0 KLsymbolGVKdW;
extern _KLclassGVKd KLsimple_typechecked_cache_header_engine_nodeGVKg;
extern _KLmm_wrapperGVKi_0 KLsimple_typechecked_cache_header_engine_nodeGVKgW;
extern _KLclassGVKd KLif_mergeGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLif_mergeGVdfmc_flow_graphW;
extern _KLclassGVKd KLsingletonGVKd;
extern _KLmm_wrapperGVKi_0 KLsingletonGVKdW;
dylan_value Ksingleton_pointer_idQ_instanceQVKiI (dylan_value, dylan_value);
dylan_value KelementVKdMM3I (dylan_value, dylan_value, dylan_value, dylan_value);
extern _KLsealed_generic_functionGVKe Kunsupplied_objectVKi;
extern _KLsimple_methodGVKe Kconvert_object_reference_1Vdfmc_conversion;
extern _KLclassGVKd KLvaluesGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLvaluesGVdfmc_flow_graphW;
extern _KLsealed_generic_functionGVKe KtemporaryVdfmc_flow_graph;
extern _KLkeyword_methodGVKe Kmake_with_temporaryVdfmc_flow_graphMM0;
extern _KLfunction_classGVKi KLkeyword_methodGVKe;
extern _KLmm_wrapperGVKi_0 KLkeyword_methodGVKeW;
extern _KLsymbolGVKd KJvalue_;
dylan_value Kinsert_computation_afterXVdfmc_flow_graphMM0I (dylan_value, dylan_value);
extern _KLclassGVKd KLcomputationGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLcomputationGVdfmc_flow_graphW;
extern _KLclassGVKd KLadjust_multiple_values_computationGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLadjust_multiple_values_computationGVdfmc_flow_graphW;
extern _KLobject_signatureGVKe KDsignature_LobjectG_object_rest_value_1VKi;
extern _KLclassGVKd KLextract_rest_valueGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLextract_rest_valueGVdfmc_flow_graphW;
extern dylan_value Dtop_level_environmentVdfmc_flow_graph;

/* Defined object declarations */

dylan_value Ksingle_value_propagationVdfmc_optimizationMM2I (dylan_value);
dylan_value Ksingle_value_propagationVdfmc_optimizationMM1I (dylan_value);
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K2;
extern _KLsealed_generic_functionGVKe Kextract_single_valueVdfmc_optimization;
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM0;
dylan_value Kextract_single_valueVdfmc_optimizationMM0I (dylan_value, dylan_value, dylan_value);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM1;
dylan_value Kextract_single_valueVdfmc_optimizationMM1I (dylan_value, dylan_value, dylan_value);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM2;
dylan_value Kextract_single_valueVdfmc_optimizationMM2I (dylan_value, dylan_value, dylan_value);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM3;
dylan_value Kextract_single_valueVdfmc_optimizationMM3I (dylan_value, dylan_value, dylan_value);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM4;
dylan_value Kextract_single_valueVdfmc_optimizationMM4I (dylan_value, dylan_value, dylan_value);
static _KLpairGVKd K14;
static _KLpairGVKd K15;
static _KLpairGVKd K16;
static _KLpairGVKd K17;
static _KLpairGVKd K18;
static _KLbyte_stringGVKd_20 K19;
static _KLsignatureGVKe K20;
static _KLsimple_object_vectorGVKd_3 K21;
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K22;
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K23;
static _KLsymbolGVKd KJgenerator_;
static _KLsymbolGVKd KJenvironment_;
static _KLpairGVKd K26;
static _KLbyte_stringGVKd_11 K27;
static _KLbyte_stringGVKd_9 K28;
static _KLsignatureGVKe K29;
static _KLsimple_object_vectorGVKd_3 K30;
static _KLsignatureGVKe K31;
static _KLsimple_object_vectorGVKd_3 K32;
static _KLsingletonGVKd K33;
static _KLsignatureGVKe K34;
static _KLsimple_object_vectorGVKd_3 K35;
static _KLsymbolGVKd KJindex_;
static _KLbyte_stringGVKd_5 K37;
static _KLsignatureGVKe K38;
static _KLsimple_object_vectorGVKd_3 K39;
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K40;
extern _KLsealed_generic_functionGVKe Kextract_rest_valueVdfmc_optimization;
extern _KLsimple_methodGVKe Kextract_rest_valueVdfmc_optimizationMM0;
dylan_value Kextract_rest_valueVdfmc_optimizationMM0I (dylan_value, dylan_value, dylan_value);
extern _KLsimple_methodGVKe Kextract_rest_valueVdfmc_optimizationMM1;
dylan_value Kextract_rest_valueVdfmc_optimizationMM1I (dylan_value, dylan_value, dylan_value);
static _KLpairGVKd K46;
static _KLpairGVKd K47;
static _KLbyte_stringGVKd_18 K48;
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K49;
static _KLsignatureGVKe K50;
static _KLsimple_object_vectorGVKd_3 K51;
extern _KLsealed_generic_functionGVKe Ksingle_value_propagationVdfmc_optimization;
extern _KLsimple_methodGVKe Ksingle_value_propagationVdfmc_optimizationMM0;
dylan_value Ksingle_value_propagationVdfmc_optimizationMM0I (dylan_value);
extern _KLsimple_methodGVKe Ksingle_value_propagationVdfmc_optimizationMM1;
extern _KLsimple_methodGVKe Ksingle_value_propagationVdfmc_optimizationMM2;
static _KLpairGVKd K57;
static _KLpairGVKd K58;
static _KLpairGVKd K59;
static _KLbyte_stringGVKd_24 K60;
static _KLsignatureGVKe K61;
static _KLsimple_object_vectorGVKd_1 K62;
static _KLsignatureGVKe K63;
static _KLsimple_object_vectorGVKd_1 K64;
static _KLsignatureGVKe K65;
static _KLsimple_object_vectorGVKd_1 K66;

/* Indirection variables */

static dylan_value IKJgenerator_ = &KJgenerator_;
static dylan_value IKJenvironment_ = &KJenvironment_;
static dylan_value IKJindex_ = &KJindex_;

/* Variables */

dylan_value single_value_propagationVdfmc_optimization = &Ksingle_value_propagationVdfmc_optimization;

/* Objects */

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K2 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (dylan_value) 327737,
  &KPfalseVKi,
  &cache_header_engine_3,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kextract_single_valueVdfmc_optimization
};

_KLsealed_generic_functionGVKe Kextract_single_valueVdfmc_optimization = {
  &KLsealed_generic_functionGVKeW /* wrapper */,
  &gf_xep_3,
  &KDsignature_LobjectG_object_rest_value_3VKi,
  (dylan_value) 21,
  &K19,
  &K14,
  &RSINGULAR_Labsent_engine_nodeG
};

_KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM0 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K38,
  &Kextract_single_valueVdfmc_optimizationMM0I
};

_KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM1 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K34,
  &Kextract_single_valueVdfmc_optimizationMM1I
};

_KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM2 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K31,
  &Kextract_single_valueVdfmc_optimizationMM2I
};

_KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM3 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K29,
  &Kextract_single_valueVdfmc_optimizationMM3I
};

_KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM4 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K20,
  &Kextract_single_valueVdfmc_optimizationMM4I
};

static _KLpairGVKd K14 = {
  &KLpairGVKdW /* wrapper */,
  &Kextract_single_valueVdfmc_optimizationMM0,
  &K15
};

static _KLpairGVKd K15 = {
  &KLpairGVKdW /* wrapper */,
  &Kextract_single_valueVdfmc_optimizationMM1,
  &K16
};

static _KLpairGVKd K16 = {
  &KLpairGVKdW /* wrapper */,
  &Kextract_single_valueVdfmc_optimizationMM2,
  &K17
};

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

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

static _KLbyte_stringGVKd_20 K19 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (dylan_value) 81,
  "extract-single-value"
};

static _KLsignatureGVKe K20 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040205,
  &K21
};

static _KLsimple_object_vectorGVKd_3 K21 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 13,
  &KLtemporaryGVdfmc_flow_graph,
  &KLbind_exitGVdfmc_flow_graph,
  &KLintegerGVKd
};

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K22 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (dylan_value) 327737,
  &KPfalseVKi,
  &cache_header_engine_3,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kextract_single_valueVdfmc_optimization
};

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K23 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (dylan_value) 327737,
  &KPfalseVKi,
  &cache_header_engine_3,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kextract_single_valueVdfmc_optimization
};

static _KLsymbolGVKd KJgenerator_ = {
  &KLsymbolGVKdW /* wrapper */,
  &K28
};

static _KLsymbolGVKd KJenvironment_ = {
  &KLsymbolGVKdW /* wrapper */,
  &K27
};

static _KLpairGVKd K26 = {
  &KLpairGVKdW /* wrapper */,
  &Kre_optimizeVdfmc_flow_graphMM1,
  &KPempty_listVKi
};

static _KLbyte_stringGVKd_11 K27 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (dylan_value) 45,
  "environment"
};

static _KLbyte_stringGVKd_9 K28 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (dylan_value) 37,
  "generator"
};

static _KLsignatureGVKe K29 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040205,
  &K30
};

static _KLsimple_object_vectorGVKd_3 K30 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 13,
  &KLtemporaryGVdfmc_flow_graph,
  &KLif_mergeGVdfmc_flow_graph,
  &KLintegerGVKd
};

static _KLsignatureGVKe K31 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040205,
  &K32
};

static _KLsimple_object_vectorGVKd_3 K32 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 13,
  &KLtemporaryGVdfmc_flow_graph,
  &K33,
  &KLintegerGVKd
};

static _KLsingletonGVKd K33 = {
  &KLsingletonGVKdW /* wrapper */,
  &Ksingleton_pointer_idQ_instanceQVKiI,
  &KPfalseVKi
};

static _KLsignatureGVKe K34 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040205,
  &K35
};

static _KLsimple_object_vectorGVKd_3 K35 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 13,
  &KLtemporaryGVdfmc_flow_graph,
  &KLvaluesGVdfmc_flow_graph,
  &KLintegerGVKd
};

static _KLsymbolGVKd KJindex_ = {
  &KLsymbolGVKdW /* wrapper */,
  &K37
};

static _KLbyte_stringGVKd_5 K37 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (dylan_value) 21,
  "index"
};

static _KLsignatureGVKe K38 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040205,
  &K39
};

static _KLsimple_object_vectorGVKd_3 K39 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 13,
  &KLtemporaryGVdfmc_flow_graph,
  &KLcomputationGVdfmc_flow_graph,
  &KLintegerGVKd
};

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K40 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (dylan_value) 327737,
  &KPfalseVKi,
  &cache_header_engine_3,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kextract_rest_valueVdfmc_optimization
};

_KLsealed_generic_functionGVKe Kextract_rest_valueVdfmc_optimization = {
  &KLsealed_generic_functionGVKeW /* wrapper */,
  &gf_xep_3,
  &KDsignature_LobjectG_object_rest_value_3VKi,
  (dylan_value) 21,
  &K48,
  &K46,
  &RSINGULAR_Labsent_engine_nodeG
};

_KLsimple_methodGVKe Kextract_rest_valueVdfmc_optimizationMM0 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K38,
  &Kextract_rest_valueVdfmc_optimizationMM0I
};

_KLsimple_methodGVKe Kextract_rest_valueVdfmc_optimizationMM1 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_3,
  &K50,
  &Kextract_rest_valueVdfmc_optimizationMM1I
};

static _KLpairGVKd K46 = {
  &KLpairGVKdW /* wrapper */,
  &Kextract_rest_valueVdfmc_optimizationMM0,
  &K47
};

static _KLpairGVKd K47 = {
  &KLpairGVKdW /* wrapper */,
  &Kextract_rest_valueVdfmc_optimizationMM1,
  &KPempty_listVKi
};

static _KLbyte_stringGVKd_18 K48 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (dylan_value) 73,
  "extract-rest-value"
};

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K49 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (dylan_value) 327737,
  &KPfalseVKi,
  &cache_header_engine_3,
  &RSINGULAR_Labsent_engine_nodeG,
  &Kextract_rest_valueVdfmc_optimization
};

static _KLsignatureGVKe K50 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040205,
  &K51
};

static _KLsimple_object_vectorGVKd_3 K51 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 13,
  &KLtemporaryGVdfmc_flow_graph,
  &KLadjust_multiple_values_computationGVdfmc_flow_graph,
  &KLintegerGVKd
};

_KLsealed_generic_functionGVKe Ksingle_value_propagationVdfmc_optimization = {
  &KLsealed_generic_functionGVKeW /* wrapper */,
  &gf_xep_1,
  &KDsignature_LobjectG_object_rest_value_1VKi,
  &KPfalseVKi,
  &K60,
  &K57,
  &RSINGULAR_Labsent_engine_nodeG
};

_KLsimple_methodGVKe Ksingle_value_propagationVdfmc_optimizationMM0 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_1,
  &K65,
  &Ksingle_value_propagationVdfmc_optimizationMM0I
};

_KLsimple_methodGVKe Ksingle_value_propagationVdfmc_optimizationMM1 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_1,
  &K63,
  &Ksingle_value_propagationVdfmc_optimizationMM1I
};

_KLsimple_methodGVKe Ksingle_value_propagationVdfmc_optimizationMM2 = {
  &KLsimple_methodGVKeW /* wrapper */,
  &xep_1,
  &K61,
  &Ksingle_value_propagationVdfmc_optimizationMM2I
};

static _KLpairGVKd K57 = {
  &KLpairGVKdW /* wrapper */,
  &Ksingle_value_propagationVdfmc_optimizationMM0,
  &K58
};

static _KLpairGVKd K58 = {
  &KLpairGVKdW /* wrapper */,
  &Ksingle_value_propagationVdfmc_optimizationMM1,
  &K59
};

static _KLpairGVKd K59 = {
  &KLpairGVKdW /* wrapper */,
  &Ksingle_value_propagationVdfmc_optimizationMM2,
  &KPempty_listVKi
};

static _KLbyte_stringGVKd_24 K60 = {
  &KLbyte_stringGVKdW /* wrapper */,
  (dylan_value) 97,
  "single-value-propagation"
};

static _KLsignatureGVKe K61 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040197,
  &K62
};

static _KLsimple_object_vectorGVKd_1 K62 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 5,
  &KLextract_rest_valueGVdfmc_flow_graph
};

static _KLsignatureGVKe K63 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040197,
  &K64
};

static _KLsimple_object_vectorGVKd_1 K64 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 5,
  &KLextract_single_valueGVdfmc_flow_graph
};

static _KLsignatureGVKe K65 = {
  &KLsignatureGVKeW /* wrapper */,
  (dylan_value) 44040197,
  &K66
};

static _KLsimple_object_vectorGVKd_1 K66 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (dylan_value) 5,
  &KLcomputationGVdfmc_flow_graph
};

/* Code */

dylan_value Ksingle_value_propagationVdfmc_optimizationMM2I (dylan_value c_) {
  dylan_value T2;
  dylan_value T3;
  dylan_value T4;
  dylan_value T5;
  dylan_value T6;
  dylan_value T7;
  DWORD T8;
  DWORD T9;
  DWORD T10;
  DWORD T11;
  dylan_value T12;
  dylan_value t_;
  dylan_value T14;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:31
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:32
  T5 = SLOT_VALUE_INITD(c_, 8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T6 = KgeneratorVdfmc_flow_graphMM1I(T5);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T7 = SLOT_VALUE_INITD(c_, 0);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T8 = primitive_cast_integer_as_raw(T7);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T9 = primitive_machine_word_bit_field_extract(2,10,T8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T10 = primitive_machine_word_logand(T9,-4);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T11 = primitive_machine_word_logior(T10,1);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  T12 = primitive_cast_raw_as_integer(T11);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:33
  ENGINE_NODE_CALL_PROLOG(&Kextract_rest_valueVdfmc_optimization, &K40, 3);
  t_ = ENGINE_NODE_CALL3(&K40, T5, T6, T12);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:34
  if (t_ != &KPfalseVKi) {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:35
    T14 = SLOT_VALUE_INITD(c_, 4);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:35
    Kreplace_temporary_in_usersXVdfmc_flow_graphI(T14, t_, &KPempty_vectorVKi, &KPunboundVKi);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:36
    T2 = t_;
    MV_SET_ELT(0, t_);
    MV_SET_COUNT(1);
    T4 = T2;
  } else {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:38
    T3 = &KPfalseVKi;
    MV_SET_ELT(0, &KPfalseVKi);
    MV_SET_COUNT(1);
    T4 = T3;
  }
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:34
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:31
  return(T4);
}

dylan_value Ksingle_value_propagationVdfmc_optimizationMM1I (dylan_value c_) {
  dylan_value T2;
  dylan_value T3;
  dylan_value T4;
  dylan_value T5;
  dylan_value T6;
  dylan_value T7;
  DWORD T8;
  DWORD T9;
  DWORD T10;
  DWORD T11;
  dylan_value T12;
  dylan_value t_;
  dylan_value T14;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:20
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:21
  T5 = SLOT_VALUE_INITD(c_, 8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T6 = KgeneratorVdfmc_flow_graphMM1I(T5);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T7 = SLOT_VALUE_INITD(c_, 0);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T8 = primitive_cast_integer_as_raw(T7);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T9 = primitive_machine_word_bit_field_extract(2,10,T8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T10 = primitive_machine_word_logand(T9,-4);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T11 = primitive_machine_word_logior(T10,1);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T12 = primitive_cast_raw_as_integer(T11);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  ENGINE_NODE_CALL_PROLOG(&Kextract_single_valueVdfmc_optimization, &K2, 3);
  t_ = ENGINE_NODE_CALL3(&K2, T5, T6, T12);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:23
  if (t_ != &KPfalseVKi) {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:24
    T14 = SLOT_VALUE_INITD(c_, 4);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:24
    Kreplace_temporary_in_usersXVdfmc_flow_graphI(T14, t_, &KPempty_vectorVKi, &KPunboundVKi);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:25
    T2 = t_;
    MV_SET_ELT(0, t_);
    MV_SET_COUNT(1);
    T4 = T2;
  } else {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:27
    T3 = &KPfalseVKi;
    MV_SET_ELT(0, &KPfalseVKi);
    MV_SET_COUNT(1);
    T4 = T3;
  }
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:23
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:20
  return(T4);
}

dylan_value Kextract_single_valueVdfmc_optimizationMM0I (dylan_value t_, dylan_value c_, dylan_value index_) {
  dylan_value T4;
  dylan_value T5;
  dylan_value T6;
  dylan_value T7;
  dylan_value T8_0;
  dylan_value T8_1;
  dylan_value extract_c_;
  dylan_value new_t_;
  dylan_value T11;
  dylan_value T12;
  dylan_value T13;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:44
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:46
  CONGRUENT_CALL_PROLOG(&KtemporaryVdfmc_flow_graph, 1);
  T4 = CONGRUENT_CALL1(c_);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:46
  T13 = primitive_idQ(t_,T4);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:46
  if (T13 != &KPfalseVKi) {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:47
    T5 = &KPfalseVKi;
    MV_SET_ELT(0, &KPfalseVKi);
    MV_SET_COUNT(1);
    T12 = T5;
  } else {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:54
    CONGRUENT_CALL_PROLOG(&KenvironmentVdfmc_modeling, 1);
    T6 = CONGRUENT_CALL1(c_);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:55
    CONGRUENT_CALL_PROLOG(&KtemporaryVdfmc_flow_graph, 1);
    T7 = CONGRUENT_CALL1(c_);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:54
    T8_0 = CALL6(&Kmake_with_temporaryVdfmc_flow_graphMM0, T6, &KLextract_single_valueGVdfmc_flow_graph, &KJvalue_, T7, IKJindex_, index_);
    T8_1 = MV_GET_ELT(1);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:53
    extract_c_ = T8_0;
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:53
    new_t_ = T8_1;
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:56
    Kinsert_computation_afterXVdfmc_flow_graphMM0I(c_, extract_c_);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:57
    T11 = new_t_;
    MV_SET_ELT(0, new_t_);
    MV_SET_COUNT(1);
    T12 = T11;
  }
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:46
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:44
  return(T12);
}

dylan_value Kextract_single_valueVdfmc_optimizationMM1I (dylan_value t_, dylan_value c_, dylan_value index_) {
  dylan_value T4;
  dylan_value T5;
  dylan_value T6;
  dylan_value T7;
  dylan_value T8;
  DWORD T9;
  DWORD T10;
  dylan_value T11;
  dylan_value T12;
  dylan_value T13;
  dylan_value T14;
  dylan_value T15_0;
  dylan_value T15_1;
  dylan_value T15_2;
  dylan_value ref_;
  dylan_value T17_0;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:61
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  T7 = SLOT_VALUE_INITD(c_, 8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  T8 = SLOT_VALUE_INITD(T7, 0);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  T9 = primitive_cast_integer_as_raw(index_);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  T10 = primitive_cast_integer_as_raw(T8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  T11 = primitive_machine_word_less_thanQ(T9,T10);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  if (T11 != &KPfalseVKi) {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
    T12 = SLOT_VALUE_INITD(c_, 8);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
    T13 = KelementVKdMM3I(T12, index_, &KPempty_vectorVKi, &Kunsupplied_objectVKi);
    T6 = T13;
  } else {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:65
    T14 = SLOT_VALUE_INITD(c_, 9);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
    if (T14 != &KPfalseVKi) {
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:67
      T4 = &KPfalseVKi;
      MV_SET_ELT(0, &KPfalseVKi);
      MV_SET_COUNT(1);
      T5 = T4;
    } else {
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:69
      T15_0 = CALL2(&Kconvert_object_reference_1Vdfmc_conversion, Dtop_level_environmentVdfmc_flow_graph, &KPfalseVKi);
      T15_1 = MV_GET_ELT(1);
      T15_2 = MV_GET_ELT(2);
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:69
      ref_ = T15_2;
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:69
      T17_0 = ref_;
      T5 = T17_0;
      MV_SET_COUNT(1);
    }
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
    T6 = T5;
  }
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:63
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:61
  return(T6);
}

dylan_value Kextract_single_valueVdfmc_optimizationMM2I (dylan_value t_, dylan_value c_, dylan_value i_) {
  dylan_value T4;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:143
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:144
  T4 = &KPfalseVKi;
  MV_SET_ELT(0, &KPfalseVKi);
  MV_SET_COUNT(1);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:143
  return(T4);
}

dylan_value Kextract_single_valueVdfmc_optimizationMM3I (dylan_value t_, dylan_value c_, dylan_value index_) {
  dylan_value merge_users_;
  dylan_value T5;
  dylan_value T6;
  dylan_value T7;
  dylan_value T8;
  dylan_value T9;
  dylan_value T10;
  dylan_value extract_c_;
  dylan_value T12;
  dylan_value T13;
  dylan_value T14;
  dylan_value T15;
  dylan_value T16;
  dylan_value T17;
  dylan_value T18;
  dylan_value T19;
  dylan_value T20;
  dylan_value T21;
  dylan_value T22;
  dylan_value T23;
  dylan_value new_left_value_;
  dylan_value T25;
  dylan_value new_right_value_;
  dylan_value T27;
  dylan_value single_temporary_;
  dylan_value T29_0;
  _KLsimple_object_vectorGVKd_4 T30 = {&KLsimple_object_vectorGVKdW, (dylan_value) 17};
  dylan_value T31;
  dylan_value T32;
  dylan_value T33;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:147
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:149
  T22 = SLOT_VALUE_INITD(c_, 4);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:149
  CONGRUENT_CALL_PROLOG(&KusersVdfmc_common, 1);
  merge_users_ = CONGRUENT_CALL1(T22);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:152
  CONGRUENT_CALL_PROLOG(&KsizeVKd, 1);
  T5 = CONGRUENT_CALL1(merge_users_);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:152
  CONGRUENT_CALL_PROLOG(&KEVKd, 2);
  T6 = CONGRUENT_CALL2(T5, (dylan_value) 5);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:152
  if (T6 != &KPfalseVKi) {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:155
    T23 = SLOT_VALUE_INITD(c_, 8);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:157
    CONGRUENT_CALL_PROLOG(&KgeneratorVdfmc_flow_graph, 1);
    T7 = CONGRUENT_CALL1(T23);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:157
    ENGINE_NODE_CALL_PROLOG(&Kextract_single_valueVdfmc_optimization, &K22, 3);
    new_left_value_ = ENGINE_NODE_CALL3(&K22, t_, T7, index_);
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:158
    if (new_left_value_ != &KPfalseVKi) {
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:159
      T25 = SLOT_VALUE_INITD(c_, 9);
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:161
      CONGRUENT_CALL_PROLOG(&KgeneratorVdfmc_flow_graph, 1);
      T8 = CONGRUENT_CALL1(T25);
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:161
      ENGINE_NODE_CALL_PROLOG(&Kextract_single_valueVdfmc_optimization, &K23, 3);
      new_right_value_ = ENGINE_NODE_CALL3(&K23, t_, T8, index_);
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:162
      if (new_right_value_ != &KPfalseVKi) {
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:163
        CALL3(&Kmerge_replace_right_valueXVdfmc_optimization, c_, T25, new_right_value_);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:164
        CALL3(&Kmerge_replace_left_valueXVdfmc_optimization, c_, T23, new_left_value_);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:165
        T27 = SLOT_VALUE_INITD(c_, 4);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:165
        CALL2(&Kgenerator_setterVdfmc_flow_graphMM0, &KPfalseVKi, T27);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:167
        CONGRUENT_CALL_PROLOG(&KenvironmentVdfmc_modeling, 1);
        T9 = CONGRUENT_CALL1(c_);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:167
        T30.vector_element_[0] = IKJgenerator_;
        T30.vector_element_[1] = c_;
        T30.vector_element_[2] = IKJenvironment_;
        T30.vector_element_[3] = T9;
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:167
        T29_0 = KLtemporaryGZ32ZconstructorVdfmc_flow_graphMM0I(&KLtemporaryGVdfmc_flow_graph, &T30, &KPempty_listVKi, c_, T9);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:167
        single_temporary_ = T29_0;
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:168
        SLOT_VALUE_SETTER(single_temporary_, c_, 4);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:169
        MIEP_CALL_PROLOG(&K26);
        Kre_optimizeVdfmc_flow_graphMM2I(c_);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:170
        T10 = single_temporary_;
        MV_SET_ELT(0, single_temporary_);
        MV_SET_COUNT(1);
        T16 = T10;
      } else {
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:171
        T31 = primitive_idQ(new_left_value_,T23);
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:162
        if (T31 != &KPfalseVKi) {
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:162
          T14 = &KPfalseVKi;
          MV_SET_ELT(0, &KPfalseVKi);
          MV_SET_COUNT(1);
          T15 = T14;
        } else {
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:172
          CONGRUENT_CALL_PROLOG(&KgeneratorVdfmc_flow_graph, 1);
          extract_c_ = CONGRUENT_CALL1(new_left_value_);
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:173
          T32 = primitive_instanceQ(extract_c_,&KLextract_single_valueGVdfmc_flow_graph);
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:173
          if (T32 != &KPfalseVKi) {
            T21 = extract_c_;
            // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:173
            T33 = KuselessQVdfmc_optimizationMM0I(T21);
            T12 = T33;
          } else {
            T12 = &KPfalseVKi;
          }
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:173
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:173
          if (T12 != &KPfalseVKi) {
            // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:175
            CONGRUENT_CALL_PROLOG(&Kdelete_computationXVdfmc_flow_graph, 1);
            CONGRUENT_CALL1(extract_c_);
          }
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:173
          // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:177
          T13 = &KPfalseVKi;
          MV_SET_ELT(0, &KPfalseVKi);
          MV_SET_COUNT(1);
          T15 = T13;
        }
        // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:162
        T16 = T15;
      }
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:162
      T18 = T16;
    } else {
      // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:158
      T17 = &KPfalseVKi;
      MV_SET_ELT(0, &KPfalseVKi);
      MV_SET_COUNT(1);
      T18 = T17;
    }
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:158
    T20 = T18;
  } else {
    // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:181
    T19 = &KPfalseVKi;
    MV_SET_ELT(0, &KPfalseVKi);
    MV_SET_COUNT(1);
    T20 = T19;
  }
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:152
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:147
  return(T20);
}

dylan_value Kextract_single_valueVdfmc_optimizationMM4I (dylan_value t_, dylan_value c_, dylan_value index_) {
  dylan_value T4;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:185
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:187
  T4 = &KPfalseVKi;
  MV_SET_ELT(0, &KPfalseVKi);
  MV_SET_COUNT(1);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:185
  return(T4);
}

dylan_value Kextract_rest_valueVdfmc_optimizationMM0I (dylan_value t_, dylan_value c_, dylan_value offset_) {
  dylan_value T4;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:194
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:196
  T4 = &KPfalseVKi;
  MV_SET_ELT(0, &KPfalseVKi);
  MV_SET_COUNT(1);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:194
  return(T4);
}

dylan_value Kextract_rest_valueVdfmc_optimizationMM1I (dylan_value t_, dylan_value c_, dylan_value index_) {
  dylan_value T4;
  dylan_value T5;
  dylan_value T6;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:199
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:202
  T5 = SLOT_VALUE_INITD(c_, 8);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:202
  CONGRUENT_CALL_PROLOG(&KgeneratorVdfmc_flow_graph, 1);
  T4 = CONGRUENT_CALL1(T5);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:202
  ENGINE_NODE_CALL_PROLOG(&Kextract_rest_valueVdfmc_optimization, &K49, 3);
  T6 = ENGINE_NODE_CALL3(&K49, t_, T4, index_);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:199
  return(T6);
}

dylan_value Ksingle_value_propagationVdfmc_optimizationMM0I (dylan_value c_) {
  dylan_value T2;

  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:16
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:17
  T2 = &KPfalseVKi;
  MV_SET_ELT(0, &KPfalseVKi);
  MV_SET_COUNT(1);
  // /home/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:16
  return(T2);
}


/* SYSTEM INIT CODE */

void _Init_dfmc_optimization__X_multiple_values_for_system () {
  extern dylan_value KPresolve_symbolVKiI(dylan_value);
  {
    dylan_value T0;

    T0 = KPresolve_symbolVKiI(&KJgenerator_);
    if (T0 != &KJgenerator_) {
      IKJgenerator_ = T0;
    }
  }
  {
    dylan_value T0;

    T0 = KPresolve_symbolVKiI(&KJenvironment_);
    if (T0 != &KJenvironment_) {
      IKJenvironment_ = T0;
    }
  }
  {
    dylan_value T0;

    T0 = KPresolve_symbolVKiI(&KJindex_);
    if (T0 != &KJindex_) {
      IKJindex_ = T0;
    }
  }
  return;
}

/* USER INIT CODE */

void _Init_dfmc_optimization__X_multiple_values_for_user () {
  return;
}


/* eof */
