let builtin_exceptions = [|
  "Out_of_memory";
  "Sys_error";
  "Failure";
  "Invalid_argument";
  "End_of_file";
  "Division_by_zero";
  "Not_found";
  "Match_failure";
  "Stack_overflow";
  "Sys_blocked_io";
  "Assert_failure";
  "Undefined_recursive_module";
|]
let builtin_primitives = [|
  "caml_abs_float";
  "caml_acos_float";
  "caml_acosh_float";
  "caml_add_float";
  "caml_alloc_dummy";
  "caml_alloc_dummy_float";
  "caml_alloc_dummy_lazy";
  "caml_alloc_stack";
  "caml_array_append";
  "caml_array_blit";
  "caml_array_concat";
  "caml_array_create_float";
  "caml_array_fill";
  "caml_array_get";
  "caml_array_get_addr";
  "caml_array_make";
  "caml_array_of_uniform_array";
  "caml_array_set";
  "caml_array_set_addr";
  "caml_array_sub";
  "caml_array_unsafe_get";
  "caml_array_unsafe_set";
  "caml_asin_float";
  "caml_asinh_float";
  "caml_atan2_float";
  "caml_atan_float";
  "caml_atanh_float";
  "caml_atomic_cas";
  "caml_atomic_cas_field";
  "caml_atomic_exchange";
  "caml_atomic_exchange_field";
  "caml_atomic_fetch_add";
  "caml_atomic_fetch_add_field";
  "caml_atomic_load";
  "caml_atomic_load_field";
  "caml_atomic_make_contended";
  "caml_ba_blit";
  "caml_ba_change_layout";
  "caml_ba_create";
  "caml_ba_dim";
  "caml_ba_dim_1";
  "caml_ba_dim_2";
  "caml_ba_dim_3";
  "caml_ba_fill";
  "caml_ba_get_1";
  "caml_ba_get_2";
  "caml_ba_get_3";
  "caml_ba_get_generic";
  "caml_ba_kind";
  "caml_ba_layout";
  "caml_ba_num_dims";
  "caml_ba_reshape";
  "caml_ba_set_1";
  "caml_ba_set_2";
  "caml_ba_set_3";
  "caml_ba_set_generic";
  "caml_ba_slice";
  "caml_ba_sub";
  "caml_ba_uint8_get16";
  "caml_ba_uint8_get32";
  "caml_ba_uint8_get64";
  "caml_ba_uint8_set16";
  "caml_ba_uint8_set32";
  "caml_ba_uint8_set64";
  "caml_backtrace_status";
  "caml_blake2_bytes";
  "caml_blake2_create";
  "caml_blake2_final";
  "caml_blake2_string";
  "caml_blake2_update";
  "caml_blit_bytes";
  "caml_blit_string";
  "caml_bswap16";
  "caml_bytes_compare";
  "caml_bytes_equal";
  "caml_bytes_get";
  "caml_bytes_get16";
  "caml_bytes_get32";
  "caml_bytes_get64";
  "caml_bytes_greaterequal";
  "caml_bytes_greaterthan";
  "caml_bytes_lessequal";
  "caml_bytes_lessthan";
  "caml_bytes_notequal";
  "caml_bytes_of_string";
  "caml_bytes_set";
  "caml_bytes_set16";
  "caml_bytes_set32";
  "caml_bytes_set64";
  "caml_cbrt_float";
  "caml_ceil_float";
  "caml_channel_descriptor";
  "caml_classify_float";
  "caml_compare";
  "caml_continuation_use";
  "caml_continuation_use_and_update_handler_noexc";
  "caml_continuation_use_noexc";
  "caml_convert_raw_backtrace";
  "caml_convert_raw_backtrace_slot";
  "caml_copysign_float";
  "caml_cos_float";
  "caml_cosh_float";
  "caml_create_bytes";
  "caml_create_string";
  "caml_div_float";
  "caml_domain_dls_compare_and_set";
  "caml_domain_dls_get";
  "caml_domain_dls_set";
  "caml_domain_spawn";
  "caml_dynlink_add_primitive";
  "caml_dynlink_close_lib";
  "caml_dynlink_get_bytecode_sections";
  "caml_dynlink_get_current_libs";
  "caml_dynlink_lookup_symbol";
  "caml_dynlink_open_lib";
  "caml_ensure_stack_capacity";
  "caml_ephe_blit_data";
  "caml_ephe_blit_key";
  "caml_ephe_check_data";
  "caml_ephe_check_key";
  "caml_ephe_create";
  "caml_ephe_get_data";
  "caml_ephe_get_data_copy";
  "caml_ephe_get_key";
  "caml_ephe_get_key_copy";
  "caml_ephe_set_data";
  "caml_ephe_set_key";
  "caml_ephe_unset_data";
  "caml_ephe_unset_key";
  "caml_eq_float";
  "caml_equal";
  "caml_erf_float";
  "caml_erfc_float";
  "caml_exp2_float";
  "caml_exp_float";
  "caml_expm1_float";
  "caml_fill_bytes";
  "caml_fill_string";
  "caml_final_register";
  "caml_final_register_called_without_value";
  "caml_final_release";
  "caml_float_compare";
  "caml_float_of_int";
  "caml_float_of_string";
  "caml_floatarray_append";
  "caml_floatarray_blit";
  "caml_floatarray_concat";
  "caml_floatarray_create";
  "caml_floatarray_fill";
  "caml_floatarray_fill_unboxed";
  "caml_floatarray_get";
  "caml_floatarray_make";
  "caml_floatarray_make_unboxed";
  "caml_floatarray_set";
  "caml_floatarray_sub";
  "caml_floatarray_unsafe_get";
  "caml_floatarray_unsafe_set";
  "caml_floor_float";
  "caml_fma_float";
  "caml_fmod_float";
  "caml_format_float";
  "caml_format_int";
  "caml_fresh_oo_id";
  "caml_frexp_float";
  "caml_gc_compaction";
  "caml_gc_counters";
  "caml_gc_full_major";
  "caml_gc_get";
  "caml_gc_major";
  "caml_gc_major_slice";
  "caml_gc_minor";
  "caml_gc_minor_words";
  "caml_gc_quick_stat";
  "caml_gc_set";
  "caml_gc_stat";
  "caml_ge_float";
  "caml_get_continuation_callstack";
  "caml_get_current_callstack";
  "caml_get_current_environment";
  "caml_get_exception_backtrace";
  "caml_get_exception_raw_backtrace";
  "caml_get_global_data";
  "caml_get_minor_free";
  "caml_get_public_method";
  "caml_greaterequal";
  "caml_greaterthan";
  "caml_gt_float";
  "caml_hash";
  "caml_hexstring_of_float";
  "caml_hypot_float";
  "caml_input_value";
  "caml_input_value_from_bytes";
  "caml_input_value_to_outside_heap";
  "caml_install_signal_handler";
  "caml_int32_add";
  "caml_int32_and";
  "caml_int32_bits_of_float";
  "caml_int32_bswap";
  "caml_int32_compare";
  "caml_int32_div";
  "caml_int32_float_of_bits";
  "caml_int32_format";
  "caml_int32_mod";
  "caml_int32_mul";
  "caml_int32_neg";
  "caml_int32_of_float";
  "caml_int32_of_int";
  "caml_int32_of_string";
  "caml_int32_or";
  "caml_int32_shift_left";
  "caml_int32_shift_right";
  "caml_int32_shift_right_unsigned";
  "caml_int32_sub";
  "caml_int32_to_float";
  "caml_int32_to_int";
  "caml_int32_xor";
  "caml_int64_add";
  "caml_int64_and";
  "caml_int64_bits_of_float";
  "caml_int64_bswap";
  "caml_int64_compare";
  "caml_int64_div";
  "caml_int64_float_of_bits";
  "caml_int64_format";
  "caml_int64_mod";
  "caml_int64_mul";
  "caml_int64_neg";
  "caml_int64_of_float";
  "caml_int64_of_int";
  "caml_int64_of_int32";
  "caml_int64_of_nativeint";
  "caml_int64_of_string";
  "caml_int64_or";
  "caml_int64_shift_left";
  "caml_int64_shift_right";
  "caml_int64_shift_right_unsigned";
  "caml_int64_sub";
  "caml_int64_to_float";
  "caml_int64_to_int";
  "caml_int64_to_int32";
  "caml_int64_to_nativeint";
  "caml_int64_xor";
  "caml_int_as_pointer";
  "caml_int_compare";
  "caml_int_of_float";
  "caml_int_of_string";
  "caml_invoke_traced_function";
  "caml_lazy_make_forward";
  "caml_lazy_read_result";
  "caml_lazy_reset_to_lazy";
  "caml_lazy_update_to_forcing";
  "caml_lazy_update_to_forward";
  "caml_ldexp_float";
  "caml_le_float";
  "caml_lessequal";
  "caml_lessthan";
  "caml_lex_engine";
  "caml_log10_float";
  "caml_log1p_float";
  "caml_log2_float";
  "caml_log_float";
  "caml_lt_float";
  "caml_lxm_next";
  "caml_make_array";
  "caml_make_float_vect";
  "caml_make_vect";
  "caml_marshal_data_size";
  "caml_md5_bytes";
  "caml_md5_chan";
  "caml_md5_string";
  "caml_memprof_discard";
  "caml_memprof_start";
  "caml_memprof_stop";
  "caml_ml_bytes_length";
  "caml_ml_channel_size";
  "caml_ml_channel_size_64";
  "caml_ml_close_channel";
  "caml_ml_condition_broadcast";
  "caml_ml_condition_new";
  "caml_ml_condition_signal";
  "caml_ml_condition_wait";
  "caml_ml_debug_info_status";
  "caml_ml_domain_cpu_relax";
  "caml_ml_domain_id";
  "caml_ml_domain_index";
  "caml_ml_enable_runtime_warnings";
  "caml_ml_flush";
  "caml_ml_gc_ramp_down";
  "caml_ml_gc_ramp_up";
  "caml_ml_input";
  "caml_ml_input_bigarray";
  "caml_ml_input_char";
  "caml_ml_input_int";
  "caml_ml_input_scan_line";
  "caml_ml_is_binary_mode";
  "caml_ml_is_buffered";
  "caml_ml_mutex_lock";
  "caml_ml_mutex_new";
  "caml_ml_mutex_try_lock";
  "caml_ml_mutex_unlock";
  "caml_ml_open_descriptor_in";
  "caml_ml_open_descriptor_in_with_flags";
  "caml_ml_open_descriptor_out";
  "caml_ml_open_descriptor_out_with_flags";
  "caml_ml_out_channels_list";
  "caml_ml_output";
  "caml_ml_output_bigarray";
  "caml_ml_output_bytes";
  "caml_ml_output_char";
  "caml_ml_output_int";
  "caml_ml_pos_in";
  "caml_ml_pos_in_64";
  "caml_ml_pos_out";
  "caml_ml_pos_out_64";
  "caml_ml_runtime_events_are_active";
  "caml_ml_runtime_events_path";
  "caml_ml_runtime_events_pause";
  "caml_ml_runtime_events_resume";
  "caml_ml_runtime_events_start";
  "caml_ml_runtime_warnings_enabled";
  "caml_ml_seek_in";
  "caml_ml_seek_in_64";
  "caml_ml_seek_out";
  "caml_ml_seek_out_64";
  "caml_ml_set_binary_mode";
  "caml_ml_set_buffered";
  "caml_ml_set_channel_name";
  "caml_ml_string_length";
  "caml_modf_float";
  "caml_mul_float";
  "caml_nativeint_add";
  "caml_nativeint_and";
  "caml_nativeint_bswap";
  "caml_nativeint_compare";
  "caml_nativeint_div";
  "caml_nativeint_format";
  "caml_nativeint_mod";
  "caml_nativeint_mul";
  "caml_nativeint_neg";
  "caml_nativeint_of_float";
  "caml_nativeint_of_int";
  "caml_nativeint_of_int32";
  "caml_nativeint_of_string";
  "caml_nativeint_or";
  "caml_nativeint_shift_left";
  "caml_nativeint_shift_right";
  "caml_nativeint_shift_right_unsigned";
  "caml_nativeint_sub";
  "caml_nativeint_to_float";
  "caml_nativeint_to_int";
  "caml_nativeint_to_int32";
  "caml_nativeint_xor";
  "caml_neg_float";
  "caml_neq_float";
  "caml_new_lex_engine";
  "caml_nextafter_float";
  "caml_notequal";
  "caml_obj_add_offset";
  "caml_obj_block";
  "caml_obj_compare_and_swap";
  "caml_obj_dup";
  "caml_obj_is_shared";
  "caml_obj_raw_field";
  "caml_obj_reachable_words";
  "caml_obj_set_raw_field";
  "caml_obj_tag";
  "caml_obj_with_tag";
  "caml_output_value";
  "caml_output_value_to_buffer";
  "caml_output_value_to_bytes";
  "caml_output_value_to_string";
  "caml_parse_engine";
  "caml_power_float";
  "caml_process_pending_actions_with_root";
  "caml_raw_backtrace_length";
  "caml_raw_backtrace_next_slot";
  "caml_raw_backtrace_slot";
  "caml_realloc_global";
  "caml_recommended_domain_count";
  "caml_record_backtrace";
  "caml_register_named_value";
  "caml_reify_bytecode";
  "caml_reset_afl_instrumentation";
  "caml_restore_raw_backtrace";
  "caml_round_float";
  "caml_runtime_events_user_register";
  "caml_runtime_events_user_write";
  "caml_runtime_parameters";
  "caml_runtime_variant";
  "caml_set_oo_id";
  "caml_set_parser_trace";
  "caml_signbit";
  "caml_signbit_float";
  "caml_sin_float";
  "caml_sinh_float";
  "caml_sqrt_float";
  "caml_static_release_bytecode";
  "caml_string_compare";
  "caml_string_equal";
  "caml_string_get";
  "caml_string_get16";
  "caml_string_get32";
  "caml_string_get64";
  "caml_string_greaterequal";
  "caml_string_greaterthan";
  "caml_string_hash";
  "caml_string_lessequal";
  "caml_string_lessthan";
  "caml_string_notequal";
  "caml_string_of_bytes";
  "caml_string_set";
  "caml_sub_float";
  "caml_sys_argv";
  "caml_sys_chdir";
  "caml_sys_close";
  "caml_sys_const_backend_type";
  "caml_sys_const_big_endian";
  "caml_sys_const_int_size";
  "caml_sys_const_max_wosize";
  "caml_sys_const_ostype_cygwin";
  "caml_sys_const_ostype_unix";
  "caml_sys_const_ostype_win32";
  "caml_sys_const_word_size";
  "caml_sys_convert_signal_number";
  "caml_sys_executable_name";
  "caml_sys_exit";
  "caml_sys_file_exists";
  "caml_sys_get_argv";
  "caml_sys_get_config";
  "caml_sys_getcwd";
  "caml_sys_getenv";
  "caml_sys_getenv_opt";
  "caml_sys_io_buffer_size";
  "caml_sys_is_directory";
  "caml_sys_is_regular_file";
  "caml_sys_isatty";
  "caml_sys_mkdir";
  "caml_sys_modify_argv";
  "caml_sys_open";
  "caml_sys_random_seed";
  "caml_sys_read_directory";
  "caml_sys_remove";
  "caml_sys_rename";
  "caml_sys_rev_convert_signal_number";
  "caml_sys_rmdir";
  "caml_sys_system_command";
  "caml_sys_temp_dir_name";
  "caml_sys_time";
  "caml_sys_time_include_children";
  "caml_sys_unsafe_getenv";
  "caml_tan_float";
  "caml_tanh_float";
  "caml_terminfo_rows";
  "caml_trunc_float";
  "caml_uniform_array_append";
  "caml_uniform_array_blit";
  "caml_uniform_array_concat";
  "caml_uniform_array_fill";
  "caml_uniform_array_make";
  "caml_uniform_array_sub";
  "caml_update_dummy";
  "caml_update_dummy_lazy";
  "caml_weak_blit";
  "caml_weak_check";
  "caml_weak_create";
  "caml_weak_get";
  "caml_weak_get_copy";
  "caml_weak_set";
  "caml_xdg_defaults";
  "caml_zstd_initialize";
|]
