?? RIGHT := 110 ??
MODULE ocm$process_ept_dictionary;
*copyc osd$default_pragmats
?? PUSH (LISTEXT := ON) ??
*copyc llt$section_address
*copyc llt$entry_point_dictionary
*copyc llt$load_module_header
*copyc oct$offset_change_list
*copyc ocp$new_global_offset
?? POP ??

*copyc och$process_ept_dictionary

  PROCEDURE [XDCL] ocp$process_ept_dictionary (entry_point_dictionary: ^llt$entry_point_dictionary;
        mod_dictionary_ocv: ^oct$offset_change_list;
        int_ol: ^SEQ ( * ));

    VAR
      module_header: record
        case boolean of
        = TRUE =
          pointer: ^llt$load_module_header,
        = FALSE =
          pva: ^cell,
        casend,
      recend,

      i: llt$entry_point_index,
      new_offset: llt$section_address_range;

    FOR i := 1 TO UPPERBOUND (entry_point_dictionary^) DO
      CASE entry_point_dictionary^ [i].module_kind OF
      = llc$load_module =
        module_header.pointer := #PTR (entry_point_dictionary^ [i].module_header, int_ol^);
        new_offset := ocp$new_global_offset (#offset (module_header.pointer), mod_dictionary_ocv);
        module_header.pva := #address (#ring (module_header.pointer), #segment (module_header.pointer),
              new_offset);
        entry_point_dictionary^ [i].module_header := #REL (module_header.pointer, int_ol^);
      CASEND;
    FOREND;
  PROCEND ocp$process_ept_dictionary;
MODEND ocm$process_ept_dictionary;
