#include "run-time.h"

/* Typedefs for referenced classes */

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);

typedef struct {
  D wrapper;
} _KLobjectGVKd;

typedef struct {
  D wrapper;
} _KLunboundGVKe;

typedef struct {
  D wrapper;
} _KLbooleanGVKd;

#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(1);
define__KLsimple_object_vectorGVKd(3);
define__KLsimple_object_vectorGVKd(4);
define__KLsimple_object_vectorGVKd(0);

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;
  D head_;
  D tail_;
} _KLempty_listGVKd;

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

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

#define  define__KLbyte_stringGVKd(nrepeated) \
  typedef struct { \
    D wrapper; \
    D 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 {
  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 instanceQ_iep_;
  D debug_name_;
  D class_implementation_class_;
  D class_subtype_bit_;
  D class_module_;
} _KLfunction_classGVKi;

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

typedef struct {
  D wrapper;
  D users_;
  D generator_;
  D environment_;
  D temporary_properties_;
} _KLtemporaryGVdfmc_flow_graph;

typedef struct {
  D wrapper;
  D item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
  D entry_state_;
  D body_;
  D Plabel_;
} _KLbind_exitGVdfmc_flow_graph;

typedef struct {
  D wrapper;
} _KLintegerGVKd;

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 item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
  D computation_value_;
} _KLextract_single_valueGVdfmc_flow_graph;

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

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 item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
  D merge_left_value_;
  D merge_right_value_;
  D merge_left_previous_computation_;
  D merge_right_previous_computation_;
} _KLif_mergeGVdfmc_flow_graph;

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

typedef struct {
  D wrapper;
  D item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
  D fixed_values_;
  D rest_value_;
} _KLvaluesGVdfmc_flow_graph;

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

typedef struct {
  D wrapper;
  D item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
} _KLcomputationGVdfmc_flow_graph;

typedef struct {
  D wrapper;
  D item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
  D computation_value_;
} _KLadjust_multiple_values_computationGVdfmc_flow_graph;

typedef struct {
  D wrapper;
  D item_properties_;
  D computation_source_location_;
  D previous_computation_;
  D next_computation_;
  D temporary_;
  D environment_;
  D computation_type_;
  D 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;
D Kreplace_temporary_in_usersXVdfmc_flow_graphI (D, D, D, D);
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 _KLempty_listGVKd KPempty_listVKi;
extern _KLclassGVKd KLempty_listGVKd;
extern _KLmm_wrapperGVKi_0 KLempty_listGVKdW;
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 _KLsealed_generic_functionGVKe Kgenerator_setterVdfmc_flow_graph;
extern _KLsealed_generic_functionGVKe KenvironmentVdfmc_modeling;
D KLtemporaryGZ32ZconstructorVdfmc_flow_graphMM0I (D, D, D, D, D);
D Kre_optimizeVdfmc_flow_graphMM2I (D);
extern _KLclassGVKd KLextract_single_valueGVdfmc_flow_graph;
extern _KLmm_wrapperGVKi_0 KLextract_single_valueGVdfmc_flow_graphW;
D KuselessQVdfmc_optimizationMM0I (D);
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;
D Ksingleton_pointer_idQ_instanceQVKiI (D, D);
D KelementVKdMM11I (D, D, D, D);
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_;
D Kinsert_computation_afterXVdfmc_flow_graphMM0I (D, D);
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 D Dtop_level_environmentVdfmc_flow_graph;

/* Defined object declarations */

D Ksingle_value_propagationVdfmc_optimizationMM2I (D);
D Ksingle_value_propagationVdfmc_optimizationMM1I (D);
static _KLsimple_typechecked_cache_header_engine_nodeGVKg K2;
extern _KLsealed_generic_functionGVKe Kextract_single_valueVdfmc_optimization;
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM0;
D Kextract_single_valueVdfmc_optimizationMM0I (D, D, D);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM1;
D Kextract_single_valueVdfmc_optimizationMM1I (D, D, D);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM2;
D Kextract_single_valueVdfmc_optimizationMM2I (D, D, D);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM3;
D Kextract_single_valueVdfmc_optimizationMM3I (D, D, D);
extern _KLsimple_methodGVKe Kextract_single_valueVdfmc_optimizationMM4;
D Kextract_single_valueVdfmc_optimizationMM4I (D, D, D);
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;
D Kextract_rest_valueVdfmc_optimizationMM0I (D, D, D);
extern _KLsimple_methodGVKe Kextract_rest_valueVdfmc_optimizationMM1;
D Kextract_rest_valueVdfmc_optimizationMM1I (D, D, D);
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;
D Ksingle_value_propagationVdfmc_optimizationMM0I (D);
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 D IKJgenerator_ = &KJgenerator_;
static D IKJenvironment_ = &KJenvironment_;
static D IKJindex_ = &KJindex_;

/* Variables */

D single_value_propagationVdfmc_optimization = &Ksingle_value_propagationVdfmc_optimization;

/* Objects */

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K2 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (D) 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,
  (D) 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 */,
  (D) 81,
  "extract-single-value"
};

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

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

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K22 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (D) 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 */,
  (D) 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 */,
  (D) 45,
  "environment"
};

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

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

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

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

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

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

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

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

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

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

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

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

static _KLsimple_typechecked_cache_header_engine_nodeGVKg K40 = {
  &KLsimple_typechecked_cache_header_engine_nodeGVKgW /* wrapper */,
  (D) 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,
  (D) 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 */,
  (D) 73,
  "extract-rest-value"
};

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

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

static _KLsimple_object_vectorGVKd_3 K51 = {
  &KLsimple_object_vectorGVKdW /* wrapper */,
  (D) 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 */,
  (D) 97,
  "single-value-propagation"
};

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

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

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

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

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

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

/* Code */

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

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

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

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:20
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:21
  T5 = SLOT_VALUE_INITD(c_, 7);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T6 = SLOT_VALUE_INITD(T5, 1);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T7 = SLOT_VALUE_INITD(c_, 0);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T8 = primitive_cast_integer_as_raw(T7);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T9 = primitive_machine_word_bit_field_extract(2,10,T8);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T10 = primitive_machine_word_logand(T9,-4);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T11 = primitive_machine_word_logior(T10,1);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:22
  T12 = primitive_cast_raw_as_integer(T11);
  // /Users/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);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:24
  if (t_ != &KPfalseVKi) {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:25
    T14 = SLOT_VALUE_INITD(c_, 4);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:25
    Kreplace_temporary_in_usersXVdfmc_flow_graphI(T14, t_, &KPempty_vectorVKi, &KPunboundVKi);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:26
    T2 = t_;
    MV_SET_ELT(0, t_);
    MV_SET_COUNT(1);
    T4 = T2;
  } else {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:28
    T3 = &KPfalseVKi;
    MV_SET_ELT(0, &KPfalseVKi);
    MV_SET_COUNT(1);
    T4 = T3;
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:24
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:20
  return(T4);
}

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

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

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

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:62
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  T7 = SLOT_VALUE_INITD(c_, 7);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  T8 = SLOT_VALUE_INITD(T7, 0);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  T9 = primitive_cast_integer_as_raw(index_);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  T10 = primitive_cast_integer_as_raw(T8);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  T11 = primitive_machine_word_less_thanQ(T9,T10);
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  if (T11 != &KPfalseVKi) {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:65
    T12 = SLOT_VALUE_INITD(c_, 7);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:65
    T13 = KelementVKdMM11I(T12, index_, &KPempty_vectorVKi, &Kunsupplied_objectVKi);
    T6 = T13;
  } else {
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:66
    T14 = SLOT_VALUE_INITD(c_, 8);
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
    if (T14 != &KPfalseVKi) {
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:68
      T4 = &KPfalseVKi;
      MV_SET_ELT(0, &KPfalseVKi);
      MV_SET_COUNT(1);
      T5 = T4;
    } else {
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:70
      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);
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:70
      ref_ = T15_2;
      // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:70
      T17_0 = ref_;
      T5 = T17_0;
      MV_SET_COUNT(1);
    }
    // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
    T6 = T5;
  }
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:64
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:62
  return(T6);
}

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

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

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

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

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

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

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

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

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

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

D Ksingle_value_propagationVdfmc_optimizationMM0I (D c_) {
  D T2;

  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:16
  // /Users/bruce/Development/dylan/opendylan/sources/dfmc/optimization/multiple-values.dylan:17
  T2 = &KPfalseVKi;
  MV_SET_ELT(0, &KPfalseVKi);
  MV_SET_COUNT(1);
  // /Users/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 D KPresolve_symbolVKiI(D);
  {
    D T0;

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

    T0 = KPresolve_symbolVKiI(&KJenvironment_);
    if (T0 != &KJenvironment_) {
      IKJenvironment_ = T0;
    }
  }
  {
    D 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 */
