Caml1999I037\Y+Cmm_helpers$bind@&stringQ@@@@#Cmm*expression@@@@@ *expression@@@*expression@@@@@*expression@@@@@@@@@@7asmcomp/cmm_helpers.mliTU@@0E@@)bind_load@/@@@@-*expression@@@@@6*expression@@@;*expression@@@@@@*expression@@@@@@@@@@*XPP+Y`@@YF@@*caml_black)nativeintM@@@@9^:^@@hG@@.floatarray_tag@)Debuginfo!t@@@g*expression@@@@@@Qa33Ra3a@@H@@,block_header@#intA@@@@@@@5@@@@@@@@leme@@I@@2black_block_header@@@@@!@@@N@@@@@@@@h((h(X@@J@@4white_closure_header@4@@@a@@@@@@kk@@K@@4black_closure_header@G@@@t@@@@@@ll@@L@@,infix_header@Z@@@@@@@@@oo'@@M@@,float_header@@@@rOOrOk@@N@@1floatarray_header@z@@@@@@@@@uu@@ O@@-string_header @@@@@@@@@@x  x  0@@ P@@1boxedint32_header!@@@@{ O O{ O p@@-Q@@1boxedint64_header"@@@@ | q q | q @@:R@@2boxedintnat_header#@@@@}  }  @@GS@@,closure_info$%arity@@@(startenv@@@@@@@@@@@5@  6@  =@@dT@@2alloc_float_header%@!t@@@a*expression@@@@@@KC O OLC O @@zU@@7alloc_floatarray_header&@@@@@!t@@@}*expression@@@@@@@@gD  hD  @@V@@4alloc_closure_header'@@@@@4!t@@@*expression@@@@@@@@E  E  @@W@@2alloc_infix_header(@2@@@@P!t@@@*expression@@@@@@@@F  F  6@@X@@2alloc_closure_info)%arityP@@@(startenvX@@@ @v!t@@@ *expression@@@ @@ @@ @@@G 7 7H P @@Y@@7alloc_boxedint32_header*@!t@@@*expression@@@@@@I  I  @@ Z@@7alloc_boxedint64_header+@!t@@@*expression@@@@@@J  J  @@ [@@8alloc_boxedintnat_header,@!t@@@*expression@@@@@@K  K  5@@6\@@,max_repr_int-@@@@Q  Q  @@C]@@,min_repr_int.@@@@!R  "R  @@P^@@)int_const/@!t@@@@@@@S*expression@@@@@@@@=U . .>U . ^@@l_@@*cint_const0@@@@g)data_item@@@ @@!@QV _ _RV _ @@`@@/targetint_const1@@@@")Targetint!t@@@#@@$@hW  iW  @@a@@5natint_const_untagged2@/!t@@@%@&Stdlib)Nativeint!t@@@&*expression@@@'@@(@@)@\SS\S@@b@@)add_const3@*expression@@@*@@@@@+@^!t@@@,*expression@@@-@@.@@/@@0@__@@c@@(incr_int4@*expression@@@1@{!t@@@2*expression@@@3@@4@@5@b..b.d@@d@@(decr_int5@*expression@@@6@!t@@@7*expression@@@8@@9@@:@ceece@@e@@2ignore_low_bit_int6@ *expression@@@;*expression@@@<@@=@gg@@+f@@3ignore_high_bit_int7@"*expression@@@>'*expression@@@?@@@@kssks@@@g@@'add_int8@7*expression@@@A@>*expression@@@B@!t@@@CK*expression@@@D@@E@@F@@G@5n6n@@dh@@'sub_int9@[*expression@@@H@b*expression@@@I@ !t@@@Jo*expression@@@K@@L@@M@@N@YoZoY@@i@@'lsl_int:@*expression@@@O@*expression@@@P@.!t@@@Q*expression@@@R@@S@@T@@U@}pZZ~pZ@@j@@'mul_int;@*expression@@@V@*expression@@@W@R!t@@@X*expression@@@Y@@Z@@[@@\@qq@@k@@'lsr_int<@*expression@@@]@*expression@@@^@v!t@@@_*expression@@@`@@a@@b@@c@rr%@@l@@'asr_int=@*expression@@@d@*expression@@@e@!t@@@f*expression@@@g@@h@@i@@j@s&&s&i@@m@@'div_int>@*expression@@@k@*expression@@@l@&Lambda'is_safe@@@m@!t@@@n-*expression@@@o@@p@@q@@r@@s@tjjux@@Fp@@'mod_int?@=*expression@@@t@D*expression@@@u@.'is_safe@@@v@!t@@@wY*expression@@@x@@y@@z@@{@@|@CvDw@@rq@@'tag_int@@i*expression@@@}@!t@@@~v*expression@@@@@@@@`zOOazO@@r@@)untag_intA@*expression@@@@.!t@@@*expression@@@@@@@@}}~}@@s@@+safe_div_biB@'is_safe@@@@*expression@@@@*expression@@@@)Primitive-boxed_integer@@@@d!t@@@*expression@@@@@@@@@@@@@@**@@t@@+safe_mod_biC@'is_safe@@@@*expression@@@@*expression@@@@6-boxed_integer@@@@!t@@@*expression@@@@@@@@@@@@@@+@@u@@/mk_if_then_elseD@!t@@@@*expression@@@@!t@@@@$*expression@@@@!t@@@@3*expression@@@8*expression@@@@@@@@@@@@@@@@"#@@Qv@@&mk_notE@!t@@@@P*expression@@@U*expression@@@@@@@@?@@@nw@@/mk_compare_intsF@!t@@@@m*expression@@@@t*expression@@@y*expression@@@@@@@@@@c))d)t@@x@@1mk_compare_floatsG@*!t@@@@*expression@@@@*expression@@@*expression@@@@@@@@@@uuu@@y@@+create_loopH@*expression@@@@U!t@@@*expression@@@@@@@@V@@z@@,raise_symbolI@k!t@@@@@@@*expression@@@@@@@@qqq@@{@@)test_boolJ@!t@@@@*expression@@@*expression@@@@@@@@(@@ |@@)box_floatK@!t@@@@ *expression@@@*expression@@@@@@@@KKK@@)}@@+unbox_floatL@!t@@@@(*expression@@@-*expression@@@@@@@@@@F~@@0float_of_float16M@!t@@@@E*expression@@@J*expression@@@@@@@@45!@@c@@0float16_of_floatN@!t@@@@b*expression@@@g*expression@@@@@@@@Q""R"`@@@@@+box_complexO@!t@@@@*expression@@@@*expression@@@*expression@@@@@@@@@@uv@@A@@*complex_reP@*expression@@@@C!t@@@*expression@@@@@@@@ @@B@@*complex_imQ@*expression@@@@`!t@@@*expression@@@@@@@@   E@@C@@+return_unitR@v!t@@@@*expression@@@*expression@@@@@@@@|||@@D@@+remove_unitS@*expression@@@*expression@@@@@@ @@E@@+mk_load_mutT@,memory_chunk@@@ )operation@@@@@@HHHs@@%F@@.mk_load_atomicU@,memory_chunk@@@!)operation@@@@@@  @@:G@@-field_addressV@1*expression@@@@@@@@!t@@@D*expression@@@@@@@@@@.WW/W@@]H@@-get_field_genW,memory_chunk&optionL\,memory_chunk@@@@@@@(Asttypes,mutable_flag@@@@n*expression@@@ @@@@ @!t@@@ *expression@@@ @@ @@@@@@@@@k,,l@@I@@)set_fieldX@*expression@@@@!@@@@*expression@@@@*expression@@@3@!t@@@4K*expression@@@5@@6@@7@5"3"36"3"i@@dO@@.wordsize_shift^@@@8@B"z"zC"z"@@qP@@.numfloat_shift_@@@9@O""P""@@~Q@@1is_addr_array_hdr`@u*expression@@@:@!t@@@;*expression@@@<@@=@@>@l#5#5m#5#t@@R@@1is_addr_array_ptra@*expression@@@?@:!t@@@@*expression@@@A@@B@@C@#u#u#u#@@S@@9addr_array_length_shiftedb@*expression@@@D@W!t@@@E*expression@@@F@@G@@H@$$$%3@@T@@:float_array_length_shiftedc@*expression@@@I@t!t@@@J*expression@@@K@@L@@M@%4%4%4%|@@U@@.array_indexingd#typ2machtype_component@@@N@@@O@@@@P@*expression@@@Q@ *expression@@@R@!t@@@S *expression@@@T@@U@@V@@W@@X@@Y@'|'|''@@ )V@@.addr_array_refe@ *expression@@@Z@ '*expression@@@[@!t@@@\ 4*expression@@@]@@^@@_@@`@  ((  ((@@ MW@@-int_array_reff@ D*expression@@@a@ K*expression@@@b@!t@@@c X*expression@@@d@@e@@f@@g@ B (( C ()%@@ qX@@7unboxed_float_array_refg@ h*expression@@@h@ o*expression@@@i@ !t@@@j |*expression@@@k@@l@@m@@n@ f )&)& g )D){@@ Y@@/float_array_refh@ *expression@@@o@ *expression@@@p@ ;!t@@@q *expression@@@r@@s@@t@@u@  )|)|  )|)@@ Z@@.addr_array_seti@ *expression@@@v@ *expression@@@w@ *expression@@@x@ f!t@@@y *expression@@@z@@{@@|@@}@@~@ )) )*"@@ [@@5addr_array_initializej@ *expression@@@@ *expression@@@@ *expression@@@@ !t@@@ *expression@@@@@@@@@@@@ *#*# *?*@@ \@@-int_array_setk@ *expression@@@@ *expression@@@@ *expression@@@@ !t@@@ !*expression@@@@@@@@@@@@ ** **@@ :]@@/float_array_setl@ 1*expression@@@@ 8*expression@@@@ ?*expression@@@@ !t@@@ L*expression@@@@@@@@@@@@ 6** 7*+:@@ e^@@-string_lengthm@ \*expression@@@@ !t@@@ i*expression@@@@@@@@ S+L+L T+L+@@ _@@0bigstring_lengthn@ y*expression@@@@ !!t@@@ *expression@@@@@@@@ p++ q++@@ `@@*lookup_tago@ *expression@@@@ *expression@@@@ E!t@@@ *expression@@@@@@@@@@ ",, ",,@@ a@@,lookup_labelp@ *expression@@@@ *expression@@@@ i!t@@@ *expression@@@@@@@@@@ )-- )--@@ b@@2call_cached_methodq@ *expression@@@@ *expression@@@@ *expression@@@@ *expression@@@@$listK *expression@@@@@@@ !t@@@ *expression@@@@@@@@@@@@@@@@ 2/N/N 4//@@ 'c@@*make_allocr@ !t@@@@ @@@@2 0*expression@@@@@@ 6*expression@@@@@@@@@@ 90"0" !90"0f@@ Od@@0make_float_allocs@ !t@@@@ @@@@Z X*expression@@@@@@ ^*expression@@@@@@@@@@ H<00 I<00@@ we@@/make_checkboundt@ !t@@@@| z*expression@@@@@@ *expression@@@@@@@@ jA1.1. kA1.1p@@ f@@+check_boundu@s'is_safe@@@@2Clambda_primitives2memory_access_size@@@@ C!t@@@@ *expression@@@@ *expression@@@@ *expression@@@ *expression@@@@@@@@@@@@@@@@ G2o2o J23@@ i@@&opaquev@ *expression@@@@ u!t@@@ *expression@@@@@@@@ M3"3" M3"3V@@ j@@2apply_function_symw@ s@@@ @@@@@@ S33 S34$@@ k@@2curry_function_symx@ @@@ @@@@@@ X55 X554@@ l@@,bigarray_gety@$boolE@@@@-bigarray_kind@@@@/bigarray_layout@@@@ (*expression@@@@5 3*expression@@@@@@@ !t@@@ A*expression@@@@@@@@@@@@@@@@ +d66 ,g7;7G@@ Zm@@,bigarray_setz@A@@@@:-bigarray_kind@@@@B/bigarray_layout@@@@ g*expression@@@@t r*expression@@@@@@@ z*expression@@@@ "!t@@@ *expression@@@@@@@@@@@@@ @@ @@ @ qk77 rn8V8b@@ n@@&low_32{@ 8!t@@@ @ *expression@@@  *expression@@@@@@@@ s88 s89 @@ o@@.sign_extend_32|@ U!t@@@@ *expression@@@ *expression@@@@@@@@ v9@9@ v9@9|@@ p@@.zero_extend_32}@ r!t@@@@ *expression@@@ *expression@@@@@@@@ y99 y99@@ q@@2caml_nativeint_ops~ @@@@ ~:=:= ~:=:\@@ r@@.caml_int32_ops @@@@ :]:] :]:x@@ s@@.caml_int64_ops @@@@ :y:y :y:@@ t@@+box_int_gen@ !t@@@@d-boxed_integer@@@@ %*expression@@@  **expression@@@!@@"@@#@@$@ :: :;%@@ Cu@@)unbox_int@ !t@@@%@-boxed_integer@@@&@ J*expression@@@' O*expression@@@(@@)@@*@@+@ 9;J;J :;Z;@@ hv@@1make_unsigned_int@-boxed_integer@@@,@ g*expression@@@-@ !t@@@. t*expression@@@/@@0@@1@@2@ ^;; _<@@?@@@@@A@@B@ << <<@@ y@@1unaligned_load_32@ *expression@@@C@ *expression@@@D@ !t@@@E *expression@@@F@@G@@H@@I@ << <=E@@z@@0unaligned_set_32@ *expression@@@J@ *expression@@@K@*expression@@@L@ !t@@@M*expression@@@N@@O@@P@@Q@@R@ =F=F =]=@@+{@@1unaligned_load_64@"*expression@@@S@)*expression@@@T@ !t@@@U6*expression@@@V@@W@@X@@Y@ ==!==@@O|@@0unaligned_set_64@F*expression@@@Z@M*expression@@@[@T*expression@@@\@ !t@@@]a*expression@@@^@@_@@`@@a@@b@K==L>>M@@z}@@-unaligned_set@2memory_access_size@@@c@y*expression@@@d@*expression@@@e@*expression@@@f@/!t@@@g*expression@@@h@@i@@j@@k@@l@@m@~>>>?@@~@@.unaligned_load@ 2memory_access_size@@@n@*expression@@@o@*expression@@@p@[!t@@@q*expression@@@r@@s@@t@@u@@v@?I?I??@@@@)box_sized@82memory_access_size@@@w@y!t@@@x@*expression@@@y*expression@@@z@@{@@|@@}@??@@F@@@@1simplif_primitive@])primitive@@@~c)primitive@@@@@@@[@[@s@@@@@/unary_primitive;@@@A@*expression@@@@!t@@@*expression@@@@@@@@@@@@@@@@@@@4@A@*floatfield@@@@+@@@@@@AQAQAQAx@@G@@.int_as_pointer @@@@$AA%AA@@S@@*raise_prim@ -*raise_kind@@@!@@@@@@8AA9AB @@g@@&negint-@@@@DB8B8EB8BT@@s@@)offsetint@@@@?@@@@@@VBBWBB@@@@)offsetref@@@@Q@@@@@@hBBiBC@@@@+arraylength@ q*array_kind@@@e@@@@@@|CVCV}CVC@@@@&bbswap@ -boxed_integer@@@y@@@@@@CCCD@@@@'bswap16@@@@DcDcDcD@@@@0binary_primitive;@@@A@*expression@@@@*expression@@@@s!t@@@*expression@@@@@@@@@@@@@DDDD@@@@@A@/assignment_kind;@@+Caml_modify@@DDDD@@@/Caml_initialize@@DDDE@@ @&Simple@@DEDE@@@@@A@@@@@DD@@A@@A@(setfield@@@@@ 4immediate_or_pointer@@@@  PP? PP@@m@(UntaggedÐc*expression@@@@@M PPN PQ@@|@@@A@@@@@Q PP@@@@@A@+make_switch@/@@@@%arrayJ @@@@@@@ @*expression@@@@9!t@@@@@@@@@B!t@@@*expression@@@@@@@@@@@@$QQ&QR@@@@1transl_int_switch@X!t@@@@*expression@@@ @O@@@ @U@@@ @ؠ@c@@@ @*expression@@@ @@@@@@*expression@@@*expression@@@@@@@@@@@@@@@@)R=R=+RR@@@@5transl_switch_clambda@!t@@@@*expression@@@@@@@@@@@*expression@@@@@@!*expression@@@@@@@ @@!@@"@ .RR /SSR@@:@@0strmatch_compile@!t@@@#@9*expression@@@$@ D*expression@@@%@@@&@R@\@@@(@Z*expression@@@'@@)@@@*`*expression@@@+@@,@@-@@.@@/@J2SSK4SS@@y@@*ptr_offset@p*expression@@@0@@@@1@!t@@@2*expression@@@3@@4@@5@@6@m9TdTdn9TdT@@@@,direct_apply@@@@7@*expression@@@8@@@9@F!t@@@:*expression@@@;@@<@@=@@>@<TT<TU#@@@@-generic_apply@ W,mutable_flag@@@?@*expression@@@@@Р*expression@@@A@@@B@w!t@@@C*expression@@@D@@E@@F@@G@@H@CVbVbEVV@@@@$send@)meth_kind@@@I@*expression@@@J@*expression@@@K@ *expression@@@L@@@M@!t@@@N*expression@@@O@@P@@Q@@R@@S@@T@NXjXjPXX@@-@@1generic_functions@@@@U@ 0*Cmx_format*unit_infos@@@V@@@W =;&phrase@@@X@@@Y@@Z@@[@'UYY(UYYd@@V@@/placeholder_dbg@$unitF@@@\!t@@@]@@^@>WYfYf?WYfY@@m@@3placeholder_fun_dbg*human_namen@@@_ !t@@@`@@a@UXYYVXYY@@@@+entry_point@ @@@b@@@c&phrase@@@d@@e@n[YYo[YZ@@@@,global_table@ @@@f@@@g&phrase@@@h@@i@^Z/Z/^Z/ZV@@@@1reference_symbols@ @@@j@@@k&phrase@@@l@@m@aZZaZZ@@@@+globals_map@ ̠@@@@t@ ~B&Digest!t@@@r@@@s@ P&Digest!t@@@p@@@q@ @@@n@@@o@@u@@@v&phrase@@@w@@x@d[[e[[]@@@@+frame_table@ @@@y@@@z&phrase@@@{@@|@i[[i[[@@,@@2data_segment_table@ )/@@@}@@@~,&phrase@@@@@@m\Z\Zm\Z\@@E@@2code_segment_table@ BH@@@@@@E&phrase@@@@@@/n\\0n\\@@^@@0predef_exception@@@@@c@@@_&phrase@@@@@@@@Iq\\Jq\]@@x@@-plugin_header@ u@I*unit_infos@@@@&Digest!t@@@@@@@@&phrase@@@@@@qs]]rs]]Z@@@@.cdefine_symbol@@@@@@,Cmmgen_state)is_global@@@@@ )data_item@@@@@@@@@x]]x]^ @@@@*emit_block@@@@@@')is_global@@@@@@@@@@ ܠ)data_item@@@@@@ )data_item@@@@@@@@@@@@@~^^_9_I@@@@3emit_float_constant@@@@@@^)is_global@@@@@@%floatD@@@@ )data_item@@@@@@ )data_item@@@@@@@@@@@@@__ __@@7@@4emit_string_constant@@:@@@@)is_global@@@@@@H@@@@ LJ)data_item@@@@@@ VT)data_item@@@@@@@@@@@@@?__@`R`b@@n@@3emit_int32_constant@@q@@@@)is_global@@@@@@%int32N@@@@ )data_item@@@@@@ )data_item@@@@@@@@@@@@@x`c`cy``@@@@3emit_int64_constant@@@@@à@)is_global@@@@@@%int64O@@@@ )data_item@@@@@@ Ƞ)data_item@@@@@@@@@@@@@``a,a<@@@@7emit_nativeint_constant@@@@@Π@@)is_global@@@@@@@@@@ )data_item@@@@@@ )data_item@@@@@@@@@@@@@a=a=aa@@@@9emit_float_array_constant@@@@@٠@w)is_global@@@@@@ &@@@@@@@ 1/)data_item@@@@@@ ;9)data_item@@@@@@@@@@@@@$aa%bb)@@S@@-fundecls_size@ P'Clambda)ufunction@@@@@@@@@@@@@b+b+Ab+b\@@o@@5emit_constant_closure@@r@@@頠@)is_global@@@@@@ ~.)ufunction@@@@@@@ )data_item@@@@@@@ )data_item@@@@@@ )data_item@@@@@@@@@@@@@@@b^b^bb@@@@8emit_preallocated_blocks@ f2preallocated_block@@@@@@@ à&phrase@@@@@@ ͠&phrase@@@@@@@@@@@bbccO@@@@@ zwfd+Cmm_helpers0)<esG`^ (Warnings0mJɒkgrs-Stdlib__Uchar056uf4[_+Stdlib__Sys0 -ռ鱦s5/.Stdlib__String0Vê>)Longident0s `7mɕc(Location0a7cK_H%9)Load_path0I@18 ~,Linkage_name0EwKсڊs&Lambda0z1x]&ZT7Internal_variable_names0HdeՄL ԩ,Identifiable0 {d\FX'`%Ident0">WA+9*X*Freshening0/^*b1R*Format_doc0]mWϓ:Mݠ'Flambda0Idvu "+Export_info0G[CE!O pr)Export_id0-bw+LO#Env0zV L{YWI)Debuginfo0PtJ=^w/*Data_types0I'Ue`wq]Ѡ0Compilation_unit0 {p-Vg_*Cmx_format0}Du)|lx/̠,Cmmgen_state0B[TqZ#Cmm0rhmsT4u%{*Cmi_format0c˯7͗ԩmݠ.Closure_origin0vˆtT{(}z*Closure_id05:z[ކ/Closure_element0YWZ̡Q.hV&2Clambda_primitives01U1'Clambda0l>\~"=0CamlinternalLazy0&͂7 Pˆ8CamlinternalFormatBasics0%FU(Q/Tu5Build_path_prefix_map0z HkGs+Backend_var0G}afTd(Asttypes0>n{T8cئ/Allocated_const0ЖݔTW@@@Caml1999T037CS2^NNC+Cmm_helpersࠐ#Cmm#Cmm7asmcomp/cmm_helpers.mliP7<P7?@@A3@@@@@@#intA;@@@A@@@@@&_none_@@A@A@$charB;@@A@@@@@@A@&stringQ;@@ A@@@@@ @@@%bytesC;@@A@@@@@@@@%floatD;@@A@@@@@@@@$boolE;@@%falsec@@@$trued@@#@@@A@@@@@$@A@$unitF;@@"()e@@.@@@A@@@@@/@A@ #exnG;@@@A@@@@@3@@@#effH;@@O@A@A@@@@@@<@@@,continuationI;@@Q@@P@B@A@nY@@@@@@K@@@%arrayJ;@@R@A@A@@@@@@U@@@ $listK;@@S@A"[]f@@b@"::g@@@T@@o@ @@A@Y@@@@@r@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@AϠ=ocaml.warn_on_literal_patternӐ@@0Division_by_zero]#@@@A٠  @+End_of_file\#$@@@Aᠰ@'FailureY#,@'@@A꠰@0Invalid_argumentX#5@0@@A󠰠$#@-Match_failureV#>@@=@9@;@@a@@A54@)Not_foundZ#O@@@A =<@-Out_of_memoryW#W@@@AED@.Stack_overflow^#_@@@AML@.Sys_blocked_io_#g@@@A$U'T'@)Sys_error[#o@j@@A-^0]0@:Undefined_recursive_modulea#x@@w@s@u@@h@@A>oAnA@:Continuation_already_takenb#@@@AFwIvI@&Stdlib@A|P77{@@3zyyzzzzz@w@A}@$bind6TT@б@гX&stringUU@@ @@@B@@б@г*expressionUU@@ @@@C@@б@б@г*expressionUU@@ @@@D@@г*expressionUU@@ @@@E@@@@@Fİ@@г*expressionUU@@ @@@GѰ@@@@@H԰U @@@8@@Iذ; @@@J@@J۰M@@@T@)ocaml.doc s [bind name arg fn] is equivalent to [let name = arg in fn name], or simply [fn arg] if [arg] is simple enough RAAS@@@@@@@E@@$@ɐ@@@@@@)bind_load7XPTXP]@б@гؠ&stringY`bY`h@@ @@@K3@:@A@@б@г&*expression#Y`l$Y`v@@ @@@L@@б@б@г7*expression4Y`{5Y`@@ @@@M"@@гD*expressionAY`BY`@@ @@@N/@@@@@O2@@гT*expressionQY`RY`@@ @@@P?@@@@@QBZY`z @@@8@@RF; @@@L@@SIO@@@cXPP@ A Same as [bind], but also treats loads from a variable as simple pW  qW O@@@@@@@F@@"@I@@@@@@h*ocaml.textW) Headers [[@@@@@@3@{2@A*caml_black8^^@г蠐)nativeint^^@@ @@@T@@@^@ː ) A null header with GC bits set to black ]]@@@@@@@G@@@@@@@@@7.floatarray_tagGa37a3E@б@г)Debuginfo!t)Debuginfoa3Ha3Q@ a3Ra3S@@@@@@3@[VC@A @@г*expressiona3Wa3a@@ @@@@@@@@@@@a33 @ . A constant equal to the tag for float arrays  ``2@@@@@@@H@@@/搠@@@@@@1,block_headerH$e%e@б@г#int/e0e@@ @@@310011111@Jj8@A@@б@г#int@eAe@@ @@@@@г)nativeintMeNe@@ @@@@@@@@!@@@'@@$* @@@[e@z X [block_header tag size] creates a header with tag [tag] for a block of size [size] hcccid@@@@@@@zI@@@A@@@@@@C2black_block_headerIh(,h(>@б@г\#inth(Ah(D@@ @@@3@\q8@A@@б@гm#inth(Hh(K@@ @@@@@г점)nativeinth(Oh(X@@ @@@@@@@@!@@@'@@$* @@@h((@Ր 5 Same as block_header, but with GC bits set to black gg'@@@@@@@J@@@@@@@@@C4white_closure_headerJkk@б@г#intkk@@ @@@3@\q8@A@@г8)nativeintkk@@ @@@@@@@@@@@k @ # Closure headers of the given size  jZZ jZ@@@@@@@K@@@.吠@@@@@@14black_closure_headerK#l$l@б@г#int.l/l@@ @@@30//00000@J_8@A@@г)nativeint=l>l@@ @@@@@@@@@@@Hl @@YL@@ @@,infix_headerLSoTo@б@г0#int^o_o@@ @@@3`__`````@1F@A@@г)nativeintmono'@@ @@@@@@@@@@@xo @ " Infix header at the given offset nn@@@@@@@M@@@^@@@@@@1,float_headerMrOSrO_@г預)nativeintrObrOk@@ @@@3@H]6@A@@@rOO @ΐ Header for a boxed float value q))q)N@@@@@@@N@@@@@@@@@!1floatarray_headerNuu@б@г#intuu@@ @@@3@:M8@A@@г1)nativeintuu@@ @@@@@@@@@@@u @ 5 Header for an unboxed float array of the given size tmmtm@@@@@@@O@@@'ސ@@@@@@1-string_headerOx  x  @б@г#int'x  (x  #@@ @@@3)(()))))@J_8@A@@гz)nativeint6x  '7x  0@@ @@@@@@@@@@@Ax   @` 4 Header for a string (or bytes) of the given length NwOw @@@@@@@`P@@@p'@@@@@@11boxedint32_headerPe{ O Sf{ O d@г)nativeintn{ O go{ O p@@ @@@3pooppppp@H]6@A@@@x{ O O @7 Boxed integer headers z 2 2z 2 N@@@@@@@Q@@@^@@@@@@!1boxedint64_headerQ| q u| q @г預)nativeint| q | q @@ @@@3@8K6@A@@@| q q @@R@@ @@2boxedintnat_headerR}  }  @г)nativeint}  }  @@ @@@3@2@A@@@}   @@S@@ @@,closure_infoS@  @  @б%arityг#int@  @  @@ @@@3@#6!@A@@б(startenvгʠ#int@  -@  0@@ @@@@@гI)nativeint@  4@  =@@ @@@ @@@@#@  $ @@5*@@'@   @@@@  @4 G Closure info for a closure of given arity and distance to environment "  #  @@@@@@@4T@@ @D@@@@@@G2alloc_float_headerT9C O S:C O e@б@гi!t)DebuginfoHC O hIC O q@ LC O rMC O s@@@@@@3ONNOOOOO@iA@A @@г_*expression\C O w]C O @@ @@@@@@@@@@@gC O O @* Wrappers tB ? ?uB ? N@@@@@@@U@@@M@@@@@@17alloc_floatarray_headerUD  D  @б@гh#intD  D  @@ @@@3@Jh8@A@@б@г!t)DebuginfoD  D  @ D  D  @@@@@@ @@г*expressionD  D  @@ @@@'@@@@@*@@@0@@-3 @@@D  @@V@@@@34alloc_closure_headerVE  E  @б@г#intE  E  @@ @@@3@La@A@@б@г!t)DebuginfoE  E  @ E  E  @@@@@@ @@г *expressionE   E  @@ @@@'@@@@@*@@@0@@-3 @@@E  @@'W@@@@32alloc_infix_headerW!F  "F  @б@г#int,F  -F  @@ @@@3.--.....@La@A@@б@гb!t)DebuginfoAF  BF  &@ EF  'FF  (@@@@@@ @@гV*expressionSF  ,TF  6@@ @@@'@@@@@*@@@0@@-3 @@@aF  @@rX@@@@32alloc_closure_infoXlG 7 ;mG 7 M@б%arityгK#intyH P \zH P _@@ @@@3{zz{{{{{@Nc!@A@@б(startenvг^#intH P lH P o@@ @@@@@б@г!t)DebuginfoH P sH P |@ H P }H P ~@@@@@@+ @@г*expressionH P H P @@ @@@8@@@@@;@@9.@@>H P c @@PE@@BH P V@@@G 7 7@@Y@@@@I7alloc_boxedint32_headerYI  I  @б@г!t)DebuginfoI  I  @ I  I  @@@@@@3@k(@A @@г*expressionI  I  @@ @@@@@@@@@@@I   @@Z@@ @@7alloc_boxedint64_headerZJ   J  @б@г8!t)DebuginfoJ  J  @ J  J  @@@@@@3@:X(@A @@г.*expression+J  ,J  @@ @@@@@@@@@@@6J   @@G[@@ @@8alloc_boxedintnat_header[AK  BK  @б@гq!t)DebuginfoPK  QK  %@ TK  &UK  '@@@@@@3WVVWWWWW@:X(@A @@гg*expressiondK  +eK  5@@ @@@@@@@@@@@oK   @@\@@ @@I* Integers M 7 7M 7 F@@@@@@3@*H@A,max_repr_int\Q  Q  @гh#intQ  Q  @@ @@@@@@Q  @ g Minimal/maximal OCaml integer values whose backend representation fits in a regular OCaml integer O H HP  @@@@@@@]@@@@@@@@@7,min_repr_int]R  R  @г#intR  R  @@ @@@3@NI6@A@@@R   @@^@@ @@)int_const^U . 2U . ;@б@г!t)DebuginfoU . >U . G@ U . HU . I@@@@@@3@*=(@A @@б@гנ#int U . M U . P@@ @@@@@г *expression U . T U . ^@@ @@@@@@@@!@@@'@@$/ @@@ U . .@? D Make an integer constant from the given integer (tags the integer)  -T   .T  -@@@@@@@ ?_@@@O @@@@@@C*cint_const_ DV _ c EV _ m@б@г !#int OV _ p PV _ s@@ @@@3 Q P P Q Q Q Q Q@\z8@A@@г a)data_item ^V _ w _V _ @@ @@@@@@@@@@@ iV _ _ @@ z`@@ @@/targetint_const tW   uW  @б@г Q#int W   W  @@ @@@3        @1F@A@@г)Targetint!t)Targetint W   W  @  W   W  @@@@@@ $ @@@ @@ %# @@@ W   @@ a@@@@#5natint_const_untagged \SW \Sl@б@г!t)Debuginfo \So \Sx@  \Sy \Sz@@@@@@ &3        @EZ(@A @@б@гY)Nativeint!t \S~ \S@  \S \S@@@@@@ W @@г *expression \S \S@@ @@@ X'@@@@@ Y*@@@0@@ Z-8 @@@ \SS@ Make a Cmm constant holding the given nativeint value. Uses [Cconst_int] instead of [Cconst_nativeint] when possible to preserve peephole optimisations.  Y   [(R@@@@@@@ b@@@' ސ@@@@@@L)add_const _ _@б@г **expression '_ (_@@ @@@ [3 ) ( ( ) ) ) ) )@e8@A@@б@г #int 8_ 9_@@ @@@ \@@б@гl!t)Debuginfo K_ L_@  O_ P_@@@@@@ ]) @@г `*expression ]_ ^_@@ @@@ ^6@@@@@ _9@@@.@@ `<1 @@@B@@ a?E@@@ n_@ ( Add an integer to the given expression  {^ |^@@@@@@@ c@@!@ T@@@@@@^(incr_int b.2 b.:@б@г *expression b.= b.G@@ @@@ b3        @w8@A@@б@г!t)Debuginfo b.K b.T@  b.U b.V@@@@@@ c @@г *expression b.Z b.d@@ @@@ d'@@@@@ e*@@@0@@ f-3 @@@ b..@񐠠 ! Increment/decrement of integers  a a-@@@@@@@ d@@@  @@@@@@L(decr_int cei ceq@б@г *expression cet ce~@@ @@@ g3        @ez8@A@@б@г7!t)Debuginfo ce ce@  ce ce@@@@@@ h @@г +*expression (ce )ce@@ @@@ i'@@@@@ j*@@@0@@ k-3 @@@ 6cee@@ Ge@@@@32ignore_low_bit_int Ag Bg@б@г O*expression Lg Mg@@ @@@ l3 N M M N N N N N@La@A@@г ^*expression [g \g@@ @@@ m@@@@@ n@@@ fg @ K Simplify the given expression knowing its last bit will be irrelevant  se tf@@@@@@@ f@@@  L@@@@@@13ignore_high_bit_int ksw ks@б@г *expression ks ks@@ @@@ o3        @J_8@A@@г *expression ks ks@@ @@@ p@@@@@ q@@@ kss @ ΐ L Simplify the given expression knowing its first bit will be irrelevant  i!! jar@@@@@@@ g@@@  @@@@@@1'add_int n n@б@г *expression n n@@ @@@ r3        @J_8@A@@б@г *expression n n@@ @@@ s@@б@г #!t)Debuginfo n n@  n n@@@@@@ t) @@г *expression n  n@@ @@@ u6@@@@@ v9@@@.@@ w<1 @@@B@@ x?E@@@ %n@ D % Arithmetical operations on integers  2m 3m@@@@@@@ Dh@@!@ T @@@@@@^'sub_int Io Jo!@б@г W*expression To$ Uo.@@ @@@ y3 V U U V V V V V@w8@A@@б@г h*expression eo2 fo<@@ @@@ z@@б@г !t)Debuginfo xo@ yoI@  |oJ }oK@@@@@@ {) @@г *expression oO oY@@ @@@ |6@@@@@ }9@@@.@@ ~<1 @@@B@@ ?E@@@ o@@ i@@@@E'lsl_int pZ^ pZe@б@г *expression pZh pZr@@ @@@ 3        @^s@A@@б@г *expression pZv pZ@@ @@@ @@б@г !t)Debuginfo pZ pZ@  pZ pZ@@@@@@ ) @@г *expression pZ pZ@@ @@@ 6@@@@@ 9@@@.@@ <1 @@@B@@ ?E@@@ pZZ@@ j@@@@E'mul_int q q@б@г *expression q q@@ @@@ 3        @^s@A@@б@г "*expression q q@@ @@@ @@б@г S!t)Debuginfo 2q 3q@  6q 7q@@@@@@ ) @@г G*expression Dq Eq@@ @@@ 6@@@@@ 9@@@.@@ <1 @@@B@@ ?E@@@ Uq@@ fk@@@@E'lsr_int `r ar@б@г n*expression kr lr@@ @@@ 3 m l l m m m m m@^s@A@@б@г *expression |r }r@@ @@@ @@б@г !t)Debuginfo r  r@  r r@@@@@@ ) @@г *expression r r%@@ @@@ 6@@@@@ 9@@@.@@ <1 @@@B@@ ?E@@@ r@@ l@@@@E'asr_int s&* s&1@б@г *expression s&4 s&>@@ @@@ 3        @^s@A@@б@г *expression s&B s&L@@ @@@ @@б@г !t)Debuginfo s&P s&Y@  s&Z s&[@@@@@@ ) @@г*expression s&_ s&i@@ @@@ 6@@@@@ 9@@@.@@ <1 @@@B@@ ?E@@@s&&@@ m@@@@E'div_inttjntju@б@г(*expression%uxz&ux@@ @@@ 3'&&'''''@^s@A@@б@г9*expression6ux7ux@@ @@@ @@б@г&Lambda'is_safe&LambdaKuxLux@ OuxPux@@@@@@+ @@б@г !t)Debuginfocuxdux@ guxhux@@@@@@C @@гx*expressionuuxvux@@ @@@P@@@@@S@@@.@@V6 @@@K@@YN@@@_@@\b@@@tjj@@p@@@@b'mod_intvv@б@г*expressionww@@ @@@3@{@A@@б@г*expressionww@@ @@@@@б@гz'is_safe&Lambdaww@ ww@@@@@@) @@б@г !t)Debuginfoww @ w w @@@@@@A @@г*expressionww@@ @@@N@@@@@Q@@@.@@T6 @@@I@@WL@@@]@@Z`@@@v@@q@@@@`'tag_int zOS zOZ@б@г*expressionzO]zOg@@ @@@3@y@A@@б@г M!t)Debuginfo,zOk-zOt@ 0zOu1zOv@@@@@@ @@гA*expression>zOz?zO@@ @@@'@@@@@*@@@0@@-3 @@@LzOO@ k . Integer tagging. [tag_int x = (x lsl 1) + 1] YyZyN@@@@@@@kr@@@ {2@@@@@@L)untag_intp}q}@б@г~*expression{}|}@@ @@@3}||}}}}}@ez8@A@@б@г !t)Debuginfo}}@ }}@@@@@@ @@г*expression}}@@ @@@'@@@@@*@@@0@@-3 @@@}@ ϐ . Integer untagging. [untag_int x = (x asr 1)] ||@@@@@@@s@@@ @@@@@@L+safe_div_bi(*.*9@б@г'is_safe&Lambda<><D@ <E<L@@@@@@3@nA@A @@б@г*expressionPRP\@@ @@@@@б@г *expression`b `l@@ @@@ @@б@г)Primitive-boxed_integer)Primitiveprp{@ !p|"p@@@@@@C: @@б@г V!t)Debuginfo56@ 9:@@@@@@DR @@гJ*expressionGH@@ @@@E_@@@@@Fb@@@.@@Ge6 @@@K@@HhN@@@]@@Ik`@@@q@@Jny@@@^**@} 1 Specific division operations for boxed integers kl)@@@@@@@}t@@'@D@@@@@@+safe_mod_bi)@б@гH'is_safe&Lambda@ @@@@@@K3@A@A @@б@г*expression@@ @@@L@@б@г*expression@@ @@@M @@б@г-boxed_integer)Primitive@  @@@@@@N8 @@б@г!t)Debuginfo@ @@@@@@OP @@г*expression!+@@ @@@P]@@@@@Q`@@@.@@Rc6 @@@I@@SfL@@@[@@Ti^@@@o@@Ulw@@@ @@u@@@@r/mk_if_then_else*-@б@гE!t)Debuginfo$02%0;@ (0<)0=@@@@@@V3+**+++++@(@A @@б@г=*expression:AC;AM@@ @@@W@@б@гn!t)DebuginfoMQSNQ\@ QQ]RQ^@@@@@@X) @@б@гd*expressionaQbbQl@@ @@@Y8@@б@г!t)Debuginfotprup{@ xp|yp}@@@@@@ZP @@б@г*expressionpp@@ @@@[_@@г*expression@@ @@@\l@@@@@]o@@@%@@^r- @@@@@@_uC@@@R@@`xZ@@@m@@a{p@@@@@b~@@@@ΐ If-Then-Else expression [mk_if_then_else dbg cond ifso_dbg ifso ifnot_dbg ifnot] associates [dbg] to the global if-then-else expression, [ifso_dbg] to the then branch [ifso], and [ifnot_dbg] to the else branch [ifnot] --@@@@@@@v@@*@@@@@@@&mk_not+@б@г!t)Debuginfo@ @@@@@@c3@A@A @@б@г*expression@@ @@@d@@г*expression@@ @@@e@@@@@f!@@@'@@g$/ @@@@22 Boolean negation  !@@@@@@@2w@@@B@@@@@@C/mk_compare_ints,7)-8)<@б@гg!t)DebuginfoF)?G)H@ J)IK)J@@@@@@h3MLLMMMMM@eA@A @@б@г_*expression\)N])X@@ @@@i@@б@гn*expressionk)\l)f@@ @@@j @@г{*expressionx)jy)t@@ @@@k-@@@@@l0@@@%@@m3( @@@9@@n6A@@@))@ 8 Integer and float comparison that returns int not bool (@@@@@@@x@@!@o@@@@@@U1mk_compare_floats-uyu@б@г!t)Debuginfouu@ uu@@@@@@o3@wA@A @@б@г*expressionuu@@ @@@p@@б@г*expressionuu@@ @@@q @@г*expressionuu@@ @@@r-@@@@@s0@@@%@@t3( @@@9@@u6A@@@uu@@y@@@@<+create_loop. ! ,@б@г*expression/9@@ @@@v3@Us@A@@б@гK!t)Debuginfo*=+F@ .G/H@@@@@@w @@г?*expression<L=V@@ @@@x'@@@@@y*@@@0@@z-3 @@@J@i S Loop construction (while true do expr done). Used to be represented as Cloop. WX@@@@@@@iz@@@y0@@@@@@L,raise_symbol/nquoq@б@г!t)Debuginfo}q~q@ qq@@@@@@{3@nA@A @@б@гY&stringqq@@ @@@|@@г*expressionqq@@ @@@}@@@@@~!@@@'@@$/ @@@qq@͐3 Exception raising XXXp@@@@@@@{@@@@@@@@@C)test_bool0@б@г!t)Debuginfo @   @@@@@@3@eA@A @@б@г*expression@@ @@@@@г*expression(@@ @@@@@@@@!@@@'@@$/ @@@@1 B Convert a tagged integer into a raw integer with boolean meaning  @@@@@@@1|@@@A@@@@@@C)box_float16KO7KX@б@гf!t)DebuginfoEK[FKd@ IKeJKf@@@@@@3LKKLLLLL@eA@A @@б@г^*expression[Kj\Kt@@ @@@@@гk*expressionhKxiK@@ @@@@@@@@!@@@'@@$/ @@@vKK@; Float boxing and unboxing ***J@@@@@@@}@@@\@@@@@@C+unbox_float2@б@г!t)Debuginfo@ @@@@@@3@eA@A @@б@г*expression@@ @@@@@г*expression@@ @@@@@@@@!@@@'@@$/ @@@@@~@@@@*0float_of_float163@б@г!t)Debuginfo@ @@@@@@3@Lj(@A @@б@г *expression   @@ @@@@@г*expression!@@ @@@@@@@@!@@@'@@$/ @@@%@D? Conversions for 16-bit floats 23@@@@@@@D@@@T @@@@@@C0float16_of_float4I"&J"6@б@гy!t)DebuginfoX"9Y"B@ \"C]"D@@@@@@3_^^_____@eA@A @@б@гq*expressionn"Ho"R@@ @@@@@г~*expression{"V|"`@@ @@@@@@@@!@@@'@@$/ @@@""@@@@@@@*+box_complex5@б@г!t)Debuginfo@ @@@@@@3@Lj(@A @@б@г*expression@@ @@@@@б@г*expression@@ @@@ @@г*expression@@ @@@-@@@@@0@@@%@@3( @@@9@@6A@@@@ $ Complex number creation and access bbb@@@@@@@A@@!@̐@@@@@@U*complex_re6  @б@г*expression@@ @@@3@n8@A@@б@гK!t)Debuginfo*+@ ./@@@@@@ @@г?*expression<= @@ @@@'@@@@@*@@@0@@-3 @@@J@@[B@@@@3*complex_im7U V @б@гc*expression` a (@@ @@@3baabbbbb@La@A@@б@г!t)Debuginfou ,v 5@ y 6z 7@@@@@@ @@г*expression ; E@@ @@@'@@@@@*@@@0@@-3 @@@  @@C@@@@3+return_unit8||@б@г!t)Debuginfo||@ ||@@@@@@3@Uj(@A @@б@г*expression||@@ @@@@@г*expression||@@ @@@@@@@@!@@@'@@$/ @@@||@ / Make the given expression return a unit value GGG{@@@@@@@D@@@Ɛ@@@@@@C+remove_unit9@б@г*expression@@ @@@3@\z8@A@@г!*expression @@ @@@@@@@@@@@) @H & Remove a trailing unit return if any 67@@@@@@@HE@@@X@@@@@@1( Blocks TU@@@@@@3SRRSSSSS@CX1@A+mk_load_mut:`HLaHW@б@гn,memory_chunkkHZlHf@@ @@@@@г{)operationxHjyHs@@ @@@'@@@@@*@@@HH @ $ Non-atomic load of a mutable field G@@@@@@@F@@@i@@@@@@I.mk_load_atomic;@б@г,memory_chunk@@ @@@3@b]8@A@@г)operation@@ @@@@@@@@@@@ @될 - Atomic load. All atomic fields are mutable. uuu@@@@@@@G@@@@@@@@@1-field_address<W[Wh@б@г*expressionWkWu@@ @@@3@J_8@A@@б@гޠ#int Wy W|@@ @@@@@б@г@!t)DebuginfoW W@ #W$W@@@@@@) @@г4*expression1W2W@@ @@@6@@@@@9@@@.@@<1 @@@B@@?E@@@BWW@a y [field_address ptr n dbg] returns an expression for the address of the [n]th field of the block pointed to by [ptr] OP#V@@@@@@@aH@@!@q(@@@@@@^-get_field_genLf,0g,=@б,memory_chunkгv,memory_chunks@Pt@\@@ @@@3uttuuuuu@y:@A@@б@г(Asttypes,mutable_flag(Asttypes@`@h@ @i@u@@@@@@ @@б@г*expression@y@@@ @@@+@@б@г#int@@@@ @@@:@@б@г!t)Debuginfo@ @@@@@@R @@г*expression@@ @@@_@@@@@b@@@.@@e1 @@@@@@hC@@@R@@kZ@@|Hu@@@ @@s@B@@ @,,@ [get_field_gen ?memory_chunk mut ptr n dbg] returns an expression for the access to the [n]th field of the block pointed to by [ptr]. +@@@@@@@I@@-@Ր@@@@@@)set_fieldM7;7D@б@г!*expressionGIGS@@ @@@3      @8@A@@б@г#int/GW0GZ@@ @@@@@б@гA*expression>G^?Gh@@ @@@ @@б@г *expression;#5#j<#5#t@@ @@@''@@@@@(*@@@0@@)-3 @@@I#5#5@h Check whether the given array is an array of regular OCaml values (as opposed to unboxed floats), from its header or pointer V""W"#4@@@@@@@hR@@@x/@@@@@@L1is_addr_array_ptrVm#u#yn#u#@б@г{*expressionx#u#y#u#@@ @@@*3zyyzzzzz@ez8@A@@б@г!t)Debuginfo#u##u#@ #u##u#@@@@@@+ @@г*expression#u##u#@@ @@@,'@@@@@-*@@@0@@.-3 @@@#u#u@@S@@@@39addr_array_length_shiftedW$$$% @б@г*expression$% $%@@ @@@/3@La@A@@б@г!t)Debuginfo$%$%#@ $%$$%%@@@@@@0 @@г*expression$%)$%3@@ @@@1'@@@@@2*@@@0@@3-3 @@@$$@ 0 Get the length of an array from its header Shifts by one bit less than necessary, keeping one of the GC colour bits, to save an operation when returning the length as a caml integer or when comparing it to a caml integer. Assumes that the reserved bits are clear (see get_header_masked) ##$$@@@@@@@T@@@'ސ@@@@@@L:float_array_length_shiftedX%4%8%4%R@б@г**expression'%4%U(%4%_@@ @@@43)(()))))@ez8@A@@б@г]!t)Debuginfo<%4%c=%4%l@ @%4%mA%4%n@@@@@@5 @@гQ*expressionN%4%rO%4%|@@ @@@6'@@@@@7*@@@0@@8-3 @@@\%4%4@@mU@@@@3.array_indexingYg'|'h'|'@б#typгw2machtype_componentt''u''@@ @@@93vuuvvvvv@Nc!@A@@б@гW#int''''@@ @@@:@@б@г*expression''''@@ @@@; @@б@г*expression''''@@ @@@</@@б@г!t)Debuginfo''''@ ''''@@@@@@=G @@г*expression''''@@ @@@>T@@@@@?W@@@.@@@Z1 @@@@@@A]C@@@R@@B`U@@qi@@@C @@Dg''@@ @'|'|@  For [array_indexing ?typ log2size ptr ofs dbg] : Produces a pointer to the element of the array [ptr] on the position [ofs] with the given element [log2size] log2 element size. [ofs] is given as a tagged int expression. The optional ?typ argument is the C-- type of the result. By default, it is Addr, meaning we are constructing a derived pointer into the heap. If we know the pointer is outside the heap (this is the case for bigarray indexing), we give type Int instead. %~%~'1'{@@@@@@@V@@,@ʐ@@@@@@.addr_array_refZ ((  ((@б@г*expression (( ((@@ @@@E3@8@A@@б@г'*expression$ ((% ((@@ @@@F@@б@гX!t)Debuginfo7 ((8 ((@ ; ((< ((@@@@@@G) @@гL*expressionI ((J ((@@ @@@H6@@@@@I9@@@.@@J<1 @@@B@@K?E@@@Z ((@y Array loads and stores [unboxed_float_array_ref] and [float_array_ref] differ in the boxing of the result; [float_array_set] takes an unboxed float g''h(K(@@@@@@@yW@@!@@@@@@@@^-int_array_ref[~ (( ((@б@г*expression (( ((@@ @@@L3@w8@A@@б@г*expression (( ()@@ @@@M@@б@г!t)Debuginfo ()  ()@  () ()@@@@@@N) @@г*expression () ()%@@ @@@O6@@@@@P9@@@.@@Q<1 @@@B@@R?E@@@ ((@@X@@@@E7unboxed_float_array_ref\ )&)* )&)A@б@г*expression )D)F )D)P@@ @@@S3@^s@A@@б@г*expression )D)T )D)^@@ @@@T@@б@г+!t)Debuginfo  )D)b  )D)k@  )D)l )D)m@@@@@@U) @@г*expression )D)q )D){@@ @@@V6@@@@@W9@@@.@@X<1 @@@B@@Y?E@@@- )&)&@@>Y@@@@E/float_array_ref]8 )|)9 )|)@б@гF*expressionC )|)D )|)@@ @@@Z3EDDEEEEE@^s@A@@б@гW*expressionT )|)U )|)@@ @@@[@@б@г!t)Debuginfog )|)h )|)@ k )|)l )|)@@@@@@\) @@г|*expressiony )|)z )|)@@ @@@]6@@@@@^9@@@.@@_<1 @@@B@@`?E@@@ )|)|@@Z@@@@E.addr_array_set^))))@б@г*expression))))@@ @@@a3@^s@A@@б@г*expression))))@@ @@@b@@б@г*expression)))*@@ @@@c @@б@г!t)Debuginfo)* )*@ )*)*@@@@@@d8 @@г*expression)*)*"@@ @@@eE@@@@@fH@@@.@@gK1 @@@@@@hNC@@@T@@iQW@@@))@@ [@@@@W5addr_array_initialize_ *#*' *#*<@б@г *expression *?*A *?*K@@ @@@j3        @p@A@@б@г #*expression *?*O !*?*Y@@ @@@k@@б@г 2*expression /*?*] 0*?*g@@ @@@l @@б@гc!t)Debuginfo B*?*k C*?*t@  F*?*u G*?*v@@@@@@m8 @@г W*expression T*?*z U*?*@@ @@@nE@@@@@oH@@@.@@pK1 @@@@@@qNC@@@T@@rQW@@@ h*#*#@@ y\@@@@W-int_array_set` s** t**@б@г *expression ~** **@@ @@@s3        @p@A@@б@г *expression ** **@@ @@@t@@б@г *expression ** **@@ @@@u @@б@г!t)Debuginfo ** **@  ** **@@@@@@v8 @@г *expression ** **@@ @@@wE@@@@@xH@@@.@@yK1 @@@@@@zNC@@@T@@{QW@@@ **@@ ]@@@@W/float_array_seta ** **@б@г *expression ** *+@@ @@@|3        @p@A@@б@г!*expression *+ *+@@ @@@}@@б@г!*expression! *+!*+@@ @@@~ @@б@гA!t)Debuginfo! *+!!!*+*@ !$*++!%*+,@@@@@@8 @@г!5*expression!2*+0!3*+:@@ @@@E@@@@@H@@@.@@K1 @@@@@@NC@@@T@@QW@@@!F**@@!W^@@@@W! ) Strings !X+<+<!Y+<+J@@@@@@3!W!V!V!W!W!W!W!W@i~@A-string_lengthb!d+L+P!e+L+]@б@г!r*expression!o+L+`!p+L+j@@ @@@@@б@г!t)Debuginfo!+L+n!+L+w@ !+L+x!+L+y@@@@@@2 @@г!*expression!+L+}!+L+@@ @@@?@@@@@B@@@.@@E1 @@@!+L+L@@!_@@@@K0bigstring_lengthc!++!++@б@г!*expression!++!++@@ @@@3!!!!!!!!@d_@A@@б@г!t)Debuginfo!++!++@ !++!++@@@@@@ @@г!*expression!++!++@@ @@@'@@@@@*@@@0@@-3 @@@!++@@!`@@@@3q!ǐ) Objects !++"++@@@@@@3!!!!!!!!@EZ@A*lookup_tagd" ",," ",,@б@г"*expression"",,"",,@@ @@@@@б@г"(*expression"%",,"&",,@@ @@@)@@б@гY!t)Debuginfo"8",,"9",,@ "<",,"=",,@@@@@@A @@г"M*expression"J",,"K",,@@ @@@N@@@@@Q@@@.@@T1 @@@@@@WC@@@"[",,@ z Lookup a method by its hash, using [caml_get_public_method] Arguments : - obj : the object from which to lookup - tag : the hash of the method name, as a tagged integer "h++"i!,T,@@@@@@@"za@@!@ "A@@@@@@v,lookup_labele")--")--@б@г"*expression")--")--@@ @@@3""""""""@8@A@@б@г"*expression")--")--@@ @@@@@б@г!t)Debuginfo")--")--@ ")--")--@@@@@@) @@г"*expression")--")--@@ @@@6@@@@@9@@@.@@<1 @@@B@@?E@@@")--@ 𐠠 Lookup a method by its offset in the method table Arguments : - obj : the object from which to lookup - lab : the position of the required method in the object's method array, as a tagged integer "$,,"(--@@@@@@@"b@@!@!"@@@@@@^2call_cached_methodf"2/N/R"2/N/d@б@г#*expression#3/g/i#3/g/s@@ @@@3########@w8@A@@б@г#*expression#3/g/w#3/g/@@ @@@@@б@г##*expression# 3/g/#!3/g/@@ @@@ @@б@г#2*expression#/3/g/#03/g/@@ @@@/@@б@г"$list#>3/g/#?3/g/@г#K*expression#H3/g/#I3/g/@@ @@@H@@@@@@M @@б@г !t)Debuginfo#`4//#a4//@ #d4//#e4//@@@@@@e @@г#u*expression#r4//#s4//@@ @@@r@@@@@u@@@/@@x6 @@@O@@{R@@@a@@~d@@@s@@v@@@@@@@@#2/N/N@! G Lookup and call a method using the method cache Arguments : - obj : the object from which to lookup - tag : the hash of the method name, as a tagged integer - cache : the method cache array - pos : the position of the cache entry in the cache array - args : the additional arguments to the method call #+..#1//M@@@@@@@#c@@*@!#r@@@@@@!)#- Allocations #6//#6//@@@@@@3########@1@A*make_allocg#90"0&#90"00@б@г !t)Debuginfo#90"03#90"0<@ #90"0=#90"0>@@@@@@# @@б@г##int#90"0B#90"0E@@ @@@2@@б@г#m$list#90"0T#90"0X@г$*expression#90"0I$90"0S@@ @@@K@@@@@@P @@г$*expression$90"0\$90"0f@@ @@@]@@@@@`@@@4@@c7 @@@F@@fN@@@$"90"0"@"A 7 Allocate a block of regular values with the given tag $/8//$08/0!@@@@@@@$Ad@@!@"Q$@@@@@@0make_float_alloch$F<00$G<00@б@г!v!t)Debuginfo$U<00$V<00@ $Y<00$Z<00@@@@@@3$\$[$[$\$\$\$\$\@A@A @@б@г$=#int$k<00$l<00@@ @@@@@б@г#$list$z<00${<00@г$*expression$<00$<00@@ @@@*@@@@@@/ @@г$*expression$<00$<00@@ @@@<@@@@@?@@@4@@B7 @@@H@@EP@@@$<00@"Ɛ 7 Allocate a block of unboxed floats with the given tag $;0h0h$;0h0@@@@@@@$e@@!@"$@@@@@@d"D$1 Bounds checking $>00$>01@@@@@@3$$$$$$$$@v1@A/make_checkboundi$A1.12$A1.1A@б@г"!t)Debuginfo$A1.1D$A1.1M@ $A1.1N$A1.1O@@@@@@# @@б@г$y$list%A1.1^%A1.1b@г%*expression% A1.1S% A1.1]@@ @@@<@@@@@@A @@г% *expression%A1.1f%A1.1p@@ @@@N@@@@@Q@@@4@@T< @@@%+A1.1.@#J? Generate a [Ccheckbound] term %8@1 1 %9@1 1-@@@@@@@%Jf@@@#Z%@@@@@@s+check_bound|%OG2o2s%PG2o2~@б@г'is_safe&Lambda%^H22%_H22@ %bH22%cH22@@@@@@3%e%d%d%e%e%e%e%e@A@A @@б@г2Clambda_primitives2memory_access_size2Clambda_primitives%zH22%{H22@ %~H22%H22@@@@@@ @@б@г"!t)Debuginfo%H22%H22@ %H22%H22@@@@@@4 @@б@г%*expression%I22%I22@@ @@@C@@б@г%*expression%I22%I22@@ @@@R@@б@г%*expression%I22%I22@@ @@@a@@г%*expression%J22%J23@@ @@@n@@@@@q@@@%@@t( @@@7@@w:@@@I@@zQ@@@d@@}l@@@@@@@@%G2o2o@$ [check_bound safety access_size dbg length a2 k] prefixes expression [k] with a check that reading [access_size] bits starting at position [a2] in a string/bytes value of length [length] is within bounds, unless [safety] is [Unsafe]. %C1r1r%F2R2n@@@@@@@& i@@*@$%ѐ@@@@@@&opaque}&M3"3&&M3"3,@б@г&*expression&M3"3/&M3"39@@ @@@3&&&&&&&&@8@A@@б@г#P!t)Debuginfo&/M3"3=&0M3"3F@ &3M3"3G&4M3"3H@@@@@@ @@г&D*expression&AM3"3L&BM3"3V@@ @@@'@@@@@*@@@0@@-3 @@@&OM3"3"@$n5 Sys.opaque_identity &\L33&]L33!@@@@@@@&nj@@@$~&5@@@@@@L#&B? Generic application functions &zO3X3X&{O3X3|@@@@@@3&y&x&x&y&y&y&y&y@^s1@A2apply_function_sym~&S34&S34@б@г&c#int&S34&S34@@ @@@@@г&d&string&S34&S34$@@ @@@'@@@@@*@@@&S33 @$Ȑ z Get the symbol for the generic application with [n] arguments, and ensure its presence in the set of defined symbols &Q3~3~&R33@@@@@@@&k@@@$&@@@@@@I2curry_function_sym&X55&X55$@б@г&#int&X55'&X55*@@ @@@3&&&&&&&&@b]8@A@@г&&string&X55.&X554@@ @@@@@@@@@@@&X55 @% If [n] is positive, get the symbol for the generic currying wrapper with [n] arguments, and ensure its presence in the set of defined symbols. Otherwise, do the same for the generic tuple wrapper with [-n] arguments. &U4&4&'W45 @@@@@@@'l@@@%!&ؐ@@@@@@1$&吠+ Bigarrays 'Z5656'Z565F@@@@@@3''''''''@CX1@A,bigarray_get')d66'*d66@б@г&$bool'4e66'5e66@@ @@@@@б@г-bigarray_kind&Lambda'Ge66'He66@ 'Ke66'Le66@@@@@@2 @@б@г/bigarray_layout&Lambda'_e66'`e66@ 'ce66'de67@@@@@@J @@б@г'v*expression'sf7 7 'tf7 7@@ @@@Y@@б@г&$list'f7 7$'f7 7(@г'*expression'f7 7'f7 7#@@ @@@r@@@@@@w @@б@г$!t)Debuginfo'f7 7,'f7 75@ 'f7 76'f7 77@@@@@@ @@г'*expression'g7;7='g7;7G@@ @@@@@@@@@@@/@@6 @@@O@@R@@@a@@i@@@|@@@@@@@@@@'d66@% l [bigarray_get unsafe kind layout b args dbg] - unsafe : if true, do not insert bound checks - kind : see [Lambda.bigarray_kind] - layout : see [Lambda.bigarray_layout] - b : the bigarray to load from - args : a list of tagged integer expressions, corresponding to the indices in the respective dimensions - dbg : debugging information '\5H5H'c66@@@@@@@'m@@*@%'@@@@@@,bigarray_set'k77'k77@б@г'$bool'l77(l77@@ @@@3((((((((@8@A@@б@г-bigarray_kind&Lambda(l77(l77@ (l77(l77@@@@@@ @@б@г/bigarray_layout&Lambda(,l77(-l78@ (0l78(1l78@@@@@@2 @@б@г(C*expression(@m88(Am88"@@ @@@A@@б@г'Ǡ$list(Om881(Pm885@г(\*expression(Ym88&(Zm880@@ @@@Z@@@@@@_ @@б@г(p*expression(mm889(nm88C@@ @@@n@@б@г%!t)Debuginfo(m88G(m88P@ (m88Q(m88R@@@@@@ @@г(*expression(n8V8X(n8V8b@@ @@@@@@@@@@@.@@1 @@@A@@H@@@a@@d@@@s@@{@@@@@@@@@@@@@(k77@&ΐ x [bigarray_set unsafe kind layout b args newval dbg] Same as [bigarray_get], with [newval] the value being assigned (i7I7I(j77@@@@@@@(n@@-@&(@@@@@@&L(? Operations on 32-bit integers (p8d8d(p8d8@@@@@@3((((((((@1@A&low_32(s88(s88@б@г&!t)Debuginfo(s88(s88@ (s88(s88@@@@@@# @@б@г) *expression) s88) s88@@ @@@2@@г)*expression)s89)s89 @@ @@@?@@@@@B@@@%@@E- @@@)$s88@'C I [low_32 _ x] is a value which agrees with x on at least the low 32 bits )1r88)2r88@@@@@@@)Co@@@'S) @@@@@@d.sign_extend_32)Hv9@9D)Iv9@9R@б@г&x!t)Debuginfo)Wv9@9U)Xv9@9^@ )[v9@9_)\v9@9`@@@@@@3)^)])])^)^)^)^)^@A@A @@б@г)p*expression)mv9@9d)nv9@9n@@ @@@@@г)}*expression)zv9@9r){v9@9|@@ @@@@@@@@!@@@'@@$/ @@@)v9@9@@' + Sign extend from 32 bits to the word size )u99)u99?@@@@@@@)p@@@')n@@@@@@C.zero_extend_32)y99)y99@б@г&!t)Debuginfo)y99)y99@ )y99)y99@@@@@@3))))))))@eA@A @@б@г)*expression)y99)y99@@ @@@@@г)*expression)y99)y99@@ @@@@@@@@!@@@'@@$/ @@@)y99@( + Zero extend from 32 bits to the word size )x9~9~)x9~9@@@@@@@* q@@@()Ґ@@@@@@C')ߐ/ Boxed numbers *{99*{9:@@@@@@3********@Us1@A2caml_nativeint_ops*#~:=:A*$~:=:S@г)&string*,~:=:V*-~:=:\@@ @@@@@@*4~:=:=@(S 4 Global symbols for the ops field of boxed integers *A}::*B}::<@@@@@@@*Sr@@@(c*@@@@@@7.caml_int32_ops*X:]:a*Y:]:o@г*'&string*a:]:r*b:]:x@@ @@@3*c*b*b*c*c*c*c*c@NI6@A@@@*k:]:] @@*|s@@ @@.caml_int64_ops*v:y:}*w:y:@г*E&string*:y:*:y:@@ @@@3********@2@A@@@*:y:y @@*t@@ @@+box_int_gen*::*::@б@г'!t)Debuginfo*::*::@ *::*::@@@@@@3********@*=(@A @@б@г-boxed_integer)Primitive*::*::@ *::*:; @@@@@@ @@б@г**expression*:; *:;@@ @@@)@@г**expression*:;*:;%@@ @@@6@@@@@9@@@%@@<- @@@B@@?J@@@*::@) 3 Box a given integer, without sharing of constants *::*::@@@@@@@+u@@!@)*Ր@@@@@@^)unbox_int+;J;N+;J;W@б@г(C!t)Debuginfo+";Z;\+#;Z;e@ +&;Z;f+';Z;g@@@@@@3+)+(+(+)+)+)+)+)@A@A @@б@г!-boxed_integer)Primitive+<;Z;k+=;Z;t@ +@;Z;u+A;Z;@@@@@@ @@б@г+S*expression+P;Z;+Q;Z;@@ @@@)@@г+`*expression+];Z;+^;Z;@@ @@@6@@@@@9@@@%@@<- @@@B@@?J@@@+n;J;J@)= Unbox a given boxed integer +{;';'+|;';I@@@@@@@+v@@!@)+T@@@@@@^1make_unsigned_int+;;+;<@б@г-boxed_integer)Primitive+<< +<<@ +<<+<< @@@@@@3++++++++@A@A @@б@г+*expression+<<$+<<.@@ @@@@@б@г(!t)Debuginfo+<<2+<<;@ +<<<+<<=@@@@@@) @@г+*expression+<@б@г.*expression.>> .>>@@ @@@$3........@^s@A@@б@г.%*expression.">>.#>>"@@ @@@%@@б@г.4*expression.1>>&.2>>0@@ @@@& @@б@г+e!t)Debuginfo.D>>4.E>>=@ .H>>>.I>>?@@@@@@'8 @@г.Y*expression.V>>C.W>>M@@ @@@(E@@@@@)H@@@.@@*K1 @@@@@@+NC@@@T@@,QW@@@.j==@@.{}@@@@W+.D5 Raw memory accesses .|>O>O.}>O>i@@@@@@3.{.z.z.{.{.{.{.{@i~@A-unaligned_set.>>.>>@б@г 2memory_access_size2Clambda_primitives.>>.>>@ .>>.>>@@@@@@-# @@б@г.*expression.>>.>>@@ @@@.2@@б@г.*expression.>>.>>@@ @@@/A@@б@г.*expression.>>.>?@@ @@@0P@@б@г+!t)Debuginfo.>?.>?@ .>?.>?@@@@@@1h @@г.*expression.>?.>?@@ @@@2u@@@@@3x@@@.@@4{1 @@@@@@5~C@@@R@@6U@@@d@@7l@@@/>>@-$ ) [unaligned_set size ptr idx newval dbg] />k>k/>k>@@@@@@@/$~@@'@-4.될@@@@@@.unaligned_load/)?I?M/*?I?[@б@г 2memory_access_size2Clambda_primitives/8?^?`/9?^?r@ /<?^?s/=?^?@@@@@@83/?/>/>/?/?/?/?/?@A@A @@б@г/Q*expression/N??/O??@@ @@@9@@б@г/`*expression/]??/^??@@ @@@: @@б@г,!t)Debuginfo/p??/q??@ /t??/u??@@@@@@;8 @@г/*expression/??/??@@ @@@<E@@@@@=H@@@.@@>K1 @@@@@@?NC@@@T@@@Q\@@@/?I?I@- # [unaligned_load size ptr idx dbg] /? ? /? ?H@@@@@@@/@@$@-/|@@@@@@p)box_sized/??/??@б@г Q2memory_access_size2Clambda_primitives/??/?@@ /?@/?@@@@@@@A3////////@A@A @@б@г-!t)Debuginfo/@@/@@(@ /@@)/@@*@@@@@@B @@б@г/*expression/@@./@@8@@ @@@C)@@г0*expression0@@<0@@F@@ @@@D6@@@@@E9@@@%@@F<- @@@B@@G?J@@@0??@.4: [box_sized size dbg exp] 0"??0#??@@@@@@@04@@!@.D/@@@@@@^-0, Primitives 0@@H@H0A@H@Y@@@@@@30?0>0>0?0?0?0?0?@p1@A1simplif_primitive0L@[@_0M@[@p@б@г )primitive2Clambda_primitives0[@s@u0\@s@@ 0_@s@0`@s@@@@@@@H# @@г )primitive2Clambda_primitives0q@s@0r@s@@ 0u@s@0v@s@@@@@@@I9 @@@@@J<$ @@@0@[@[ @@0@@@@BA+/unary_primitiveA0@@0@@@@;@@@A@0*expression@@@L@-!t@@@M0*expression@@@N@@O@@P@@@@0@@0@@@@@@0@@@Aб@г0@@0@@@@ 300000000@to8.;@@@A6@@@c@K@@@@@@@@A@@б@г()Debuginfo0@@0@@@/0@@0@@@@@7@@г230@@1@@8%2@@A&3@@I'*4@@6@@300000000@'@A76@*floatfield0AQAU0AQA_@б@г0à#int0AQAb0AQAe@@ @@@g300000000@Boi@A@@гs/unary_primitive1AQAi1AQAx@@ @@@h@@@@@i@@@1 AQAQ @/* X Return the n-th field of a float array (or float-only record), as an unboxed float 1@@1A<AP@@@@@@@1*@@@/:0񐠠@@@@@@1.int_as_pointer1/AA10AA@г/unary_primitive18AA19AA@@ @@@j31:19191:1:1:1:1:@H]6@A@@@1BAA @/a: Int_as_pointer primitive 1OAzAz1PAzA@@@@@@@1a@@@/q1(@@@@@@!*raise_prim1fAA1gAA@б@г#,*raise_kind&Lambda1uAA1vAA@ 1yAA1zAA@@@@@@k31|1{1{1|1|1|1|1|@CVA@A @@г/unary_primitive1AA1AB @@ @@@l@@@@@m@@@1AA @/1 Raise primitive 1AA1AA@@@@@@@1@@@/1z@@@@@@1&negint1B8B<1B8BB@г4/unary_primitive1B8BE1B8BT@@ @@@n311111111@Hf6@A@@@1B8B8 @/ꐠ $ Unary negation of an OCaml integer 1BB1BB7@@@@@@@1@@@/1@@@@@@!)offsetint1BB1BB@б@г1̠#int1BB1BB@@ @@@o311111111@:M8@A@@г|/unary_primitive2 BB2 BB@@ @@@p@@@@@q@@@2BB @03 + Add a constant number to an OCaml integer 2!BVBV2"BVB@@@@@@@23@@@0C1@@@@@@1)offsetref28BB29BB@б@г2#int2CBB2DBB@@ @@@r32E2D2D2E2E2E2E2E@J_8@A@@гŠ/unary_primitive2RBC2SBC@@ @@@s@@@@@t@@@2]BB @0| 5 Add a constant number to an OCaml integer reference 2jBB2kBB@@@@@@@2|@@@02C@@@@@@1+arraylength2CVCZ2CVCe@б@г$G*array_kind&Lambda2CVCh2CVCn@ 2CVCo2CVCy@@@@@@u322222222@ShA@A @@г/unary_primitive2CVC}2CVC@@ @@@v@@@@@w@@@2CVCV @0ΐ > Return the length of the array argument, as an OCaml integer 2CC2CCU@@@@@@@2@@@02@@@@@@1&bbswap2CC2CC@б@г"-boxed_integer)Primitive2CC2CC@ 2CC2CC@@@@@@x322222222@SqA@A @@гi/unary_primitive2CC2CD@@ @@@y@@@@@z@@@3CC @1 C Byte swap primitive Operates on Cmm integers (unboxed values) 3CC3CC@@@@@@@3 @@@102琠@@@@@@1'bswap163%DcDg3&DcDn@г/unary_primitive3.DcDq3/DcD@@ @@@{3303/3/3030303030@Hf6@A@@@38DcDc @1W M 16-bit byte swap primitive Operates on Cmm integers (untagged integers) 3EDD3FD/Db@@@@@@@3W@@@1g3@@@@@@!A+0binary_primitiveB3]DD3^DD@@;@@A@3m*expression@@@}@3t*expression@@@~@0!t@@@3*expression@@@@@@@@@@@@@3}DD3~DD@@@@3@@@Aб@г !3DD3DD@@'333333333@YlW4;@@@A<@@@@|@@@@@@@@A@@б@г/03DD3DD@@6@@б@г2)Debuginfo3DD3DD@93DD3DD@@@A(@@г<=3DD;@@B/<@@K0=@@S1>@@[25?@@A@@333333333@2@ABA@A+/assignment_kindC3DD3DD@@;@@+Caml_modify@@3DD3DD@@3@/Caml_initialize@@3DD3DE@@3@&Simple@@3DE3DE@@3@@@A@@@@@3DD@@A@3@@#@@@@@#3DD@@@@@#3DE@@@@@@A@@@333333333@r@A@(setfield4EIEM4EIEU@б@г3䠐#int4EXEZ4EXE]@@ @@@344444444@UO@A@@б@г%4immediate_or_pointer&Lambda4'EXEa4(EXEg@ 4+EXEh4,EXE|@@@@@@ @@б@г% Operations on OCaml integers 5 FF5 FF@@@@@@@5@@@3,4㐠@@@@@@!,sub_int_caml5!FF5"FF@г͠0binary_primitive5*FF5+FF@@ @@@35,5+5+5,5,5,5,5,@8K6@A@@@54FF @@5E@@ @@,mul_int_caml5?FF5@FF@г렐0binary_primitive5HFG5IFG@@ @@@35J5I5I5J5J5J5J5J@2@A@@@5RFF @@5c@@ @@,div_int_caml5]GG5^GG!@б@г'#'is_safe&Lambda5lGG$5mGG*@ 5pGG+5qGG2@@@@@@35s5r5r5s5s5s5s5s@*=(@A @@г#0binary_primitive5GG65GGF@@ @@@@@@@@@@@5GG @@5@@ @@,mod_int_caml5GGGK5GGGW@б@г'\'is_safe&Lambda5GGGZ5GGG`@ 5GGGa5GGGh@@@@@@355555555@:X(@A @@г\0binary_primitive5GGGl5GGG|@@ @@@@@@@@@@@5GGGG @@5@@ @@,and_int_caml5G}G5G}G@г{0binary_primitive5G}G5G}G@@ @@@355555555@/M@A@@@5G}G} @@5@@ @@+or_int_caml5GG5GG@г0binary_primitive5GG5GG@@ @@@355555555@2@A@@@6GG @@6@@ @@,xor_int_caml6 GG6 GG@г0binary_primitive6GG6GG@@ @@@366666666@2@A@@@6GG @@6/@@ @@,lsl_int_caml6)GG6*GG@гՠ0binary_primitive62GG63GH @@ @@@36463636464646464@2@A@@@6<GG @@6M@@ @@,lsr_int_caml6GH H6HH H@г0binary_primitive6PH H6QH H/@@ @@@36R6Q6Q6R6R6R6R6R@2@A@@@6ZH H  @@6k@@ @@,asr_int_caml6eH0H46fH0H@@г0binary_primitive6nH0HC6oH0HS@@ @@@36p6o6o6p6p6p6p6p@2@A@@@6xH0H0 @@6@@ @@-int_comp_caml6HTHX6HTHe@б@г(I2integer_comparison&Lambda6HTHh6HTHn@ 6HTHo6HTH@@@@@@366666666@*=(@A @@гI0binary_primitive6HTH6HTH@@ @@@@@@@@@@@6HTHT @@6@@ @@456? Strings, Bytes and Bigstrings 6HH6HH@@@@@@366666666@*H@A0stringref_unsafe6HH6HI@г{0binary_primitive6HI6HI"@@ @@@@@@6HH@4 8 Regular string/bytes access. Args: string/bytes, index 6HH6HH@@@@@@@6@@@56Ɛ@@@@@@7.stringref_safe7I#I'7I#I5@г0binary_primitive7 I#I87I#IH@@ @@@377777777@NI6@A@@@7I#I# @@7(@@ @@+string_load7"II7#II@б@г2memory_access_size2Clambda_primitives71II72II@ 75II76II@@@@@@37877777878787878@*=(@A @@б@г)'is_safe&Lambda7KII7LII@ 7OII7PII@@@@@@ @@г0binary_primitive7]II7^II@@ @@@'@@@@@*@@@0@@-8 @@@7kII@5 A Load by chunk from string/bytes, bigstring. Args: string, index 7xIJIJ7yIJI@@@@@@@7@@@57Q@@@@@@L.bigstring_load7II7IJ@б@г&2memory_access_size2Clambda_primitives7JJ7JJ@ 7JJ7JJ-@@@@@@377777777@nA@A @@б@г)o'is_safe&Lambda7JJ17JJ7@ 7JJ87JJ?@@@@@@ @@гm0binary_primitive7JJC7JJS@@ @@@'@@@@@*@@@0@@-8 @@@7II@@7@@@@35\7( Arrays 7JUJU7JUJb@@@@@@377777777@Ec@A/arrayref_unsafe7JJ7JJ@б@г)*array_kind&Lambda8JJ8JJ@ 8 JJ8 JJ@@@@@@# @@г0binary_primitive8JJ8JJ@@ @@@0@@@@@3@@@8"JJ @6A " Array access. Args: array, index 8/JdJd80JdJ@@@@@@@8A@@@6Q8@@@@@@R-arrayref_safe8FJJ8GJJ@б@г* *array_kind&Lambda8UJJ8VJJ@ 8YJJ8ZJJ@@@@@@38\8[8[8\8\8\8\8\@toA@A @@г 0binary_primitive8iJJ8jJK@@ @@@@@@@@@@@8tJJ @@8@@ @@A+1ternary_primitiveD8KK8KK@@;@@A@8*expression@@@@8*expression@@@@8*expression@@@@5!t@@@8*expression@@@@@@@@@@@@@@@8KK8KKa@@@@8@@@Aб@г'(8KK8KK(@@.388888888@WuE;;@@@AC@@@@@@@@@@@@A@@б@г678KK,8KK6@@=@@б@г9:8KK:8KKD@@@ @@б@г<)Debuginfo8KKH8KKQ@C8KKR8KKS@@@K2@@гFG8KKWE@@L9F@@U:G@@];H@@e<)I@@m=@J@@L@@388888888@=@AML@1setfield_computed8KK8KK@б@г*4immediate_or_pointer&Lambda9 KK9 KK@ 9KK9KL@@@@@@399999999@a@A @@б@г*NxNx @@:O@@ @@)bytes_set:IOO:JOO@б@г2memory_access_size2Clambda_primitives:XOO:YOO@ :\OO:]OO@@@@@@ 3:_:^:^:_:_:_:_:_@:X(@A @@б@г,)'is_safe&Lambda:rOO:sOO@ :vOO:wOO@@@@@@  @@г1ternary_primitive:OO:OO@@ @@@'@@@@@*@@@0@@-8 @@@:OO@8 Set a chunk of data in the given bytes or bigstring structure. See also [string_load] and [bigstring_load]. Note: [value] is expected to be an unboxed number of the given size. Args: pointer, index, value :NN:OqO@@@@@@@:@@@8:x@@@@@@L-bigstring_set:OO:OP@б@гM2memory_access_size2Clambda_primitives:PP :PP@ :PP:PP.@@@@@@3::::::::@nA@A @@б@г,'is_safe&Lambda:PP2:PP8@ :PP9:PP@@@@@@@ @@гq1ternary_primitive:PPD:PPU@@ @@@'@@@@@*@@@0@@-8 @@@:OO@@;@@@@38:ِ( Switch ;PWPW;PWPd@@@@@@3;;;;;;;;@Ec@A,transl_isout;PP;PP@б@г;+*expression;(PP;)PP@@ @@@@@б@г;:*expression;7PP;8PP@@ @@@)@@б@г8k!t)Debuginfo;JPP;KPP@ ;NPP;OPP@@@@@@A @@г;_*expression;\PP;]PP@@ @@@N@@@@@Q@@@.@@T1 @@@@@@WC@@@;mPP@9: [transl_isout h arg dbg] ;zPfPf;{PfP@@@@@@@;@@!@9;S@@@@@@vA+*switch_argE; PP; PP@@;@@&Tagged;*expression@@@@@; PP; PP@@;@(UntaggedÐ;*expression@@@@@; PP; PQ@9ѐ } [make_switch arg cases actions dbg] : Generate a Cswitch construct, or optimize as a static table lookup when possible. ;!QQ;#QQ@@@@@@@;@@@A@@@@@; PP@@@@;@@#00(; PP@'@г12; PP0@@73;;;;;;;;@kH;@@@A@@@@@@@@@A6@@@@8@#44; PP; PQ@@г67; PQ5@@<6@@@@8:;65@55@@@5@5@@A@1@@3;;;;;;;;@@A2C@+make_switchĠ;$QQ;$QQ@б@гv*switch_arg<%QQ< %QQ@@ @@@(3< < < < < < < < @:{@A@@б@г;%array<%QQ<%QQ@г;#int<#%QQ<$%QQ@@ @@@)@@@@@@+  @@б@г;%array<7%QQ<8%QQ@В@г@@ @@@MH@@@@@@OM @@г=*expression=/SSH=/SSR@@ @@@PZ@@@@@Q]@@@5@@R`< @@@U@@ScX@@@i@@Tfq@@@>.RR@<% - [transl_switch_clambda loc arg index cases] >-RR>-RR@@@@@@@>%@@$@<5=쐠@@@@@@0strmatch_compileǠ>*2SS>+2SS@б@г;Z!t)Debuginfo>93SS>:3SS@ >=3SS>>3SS@@@@@@U3>@>?>?>@>@>@>@>@@A@A @@б@г>R*expression>O3SS>P3SS@@ @@@V@@б@г=&option>^3SS>_3SS@г>k*expression>h3SS>i3SS@@ @@@W*@@@@@@Y/ @@б@г=$list>|4SS>}4SS@В@г>P&string>4SS>4SS@@ @@@ZL@@@г>*expression>4SS>4SS@@ @@@[[@@@@@ @@\b @@@1 @@@^g>4SS/@@г>*expression>4SS>4SS@@ @@@_u@@@@@`x@@@P@@a{W @@@p@@b~s@@@@@c@@@>2SS@<搠 * [strmatch_compile dbg arg default cases] >1STST>1STS@@@@@@@>@@$@<>@@@@@@ $ Closures and function applications >6SS>6ST$@@@@@@3>>>>>>>>@1@A*ptr_offsetȠ>9TdTh>9TdTr@б@г? *expression? 9TdTu? 9TdT@@ @@@d@@б@г>ꠐ#int?9TdT?9TdT@@ @@@e)@@б@г9TdT@@ @@@gN@@@@@hQ@@@.@@iT1 @@@@@@jWC@@@?N9TdTd@=m 8 Adds a constant offset to a pointer (for infix access) ?[8T&T&?\8T&Tc@@@@@@@?m@@!@=}?4@@@@@@v,direct_applyɠ?r<TT?s<TT@б@г?C&string?}<TT?~<TT@@ @@@k3??~?~?????@8@A@@б@г?$list?<TU?<TU@г?*expression?<TT?<TU@@ @@@l@@@@@@n  @@б@г?@@@@@@m-generic_applyʠ?CVbVf?CVbVs@б@г'~,mutable_flag(Asttypes@DVvVx@DVvV@ @ DVvV@ DVvV@@@@@@t3@ @ @ @ @ @ @ @ @A@A @@б@г@*expression@EVV@EVV@@ @@@u@@б@г?$list@+EVV@,EVV@г@8*expression@5EVV@6EVV@@ @@@v*@@@@@@x/ @@б@г=n!t)Debuginfo@MEVV@NEVV@ @QEVV@REVV@@@@@@yG @@г@b*expression@_EVV@`EVV@@ @@@zT@@@@@{W@@@/@@|Z6 @@@O@@}]R@@@c@@~`k@@@@sCVbVb@> 7 Generic application of a function to one or several arguments. The mutable_flag argument annotates the loading of the code pointer from the closure. The Cmmgen code uses a mutable load by default, with a special case when the load is from (the first function of) the currently defined closure. @>U%U%@BV<Va@@@@@@@@@@$@>@Y@@@@@@$sendˠ@NXjXn@NXjXr@б@г2])meth_kind&Lambda@OXuXw@OXuX}@ @OXuX~@OXuX@@@@@@3@@@@@@@@@A@A @@б@г@*expression@OXuX@OXuX@@ @@@@@б@г@*expression@OXuX@OXuX@@ @@@ @@б@г@R$list@OXuX@OXuX@г@*expression@OXuX@OXuX@@ @@@9@@@@@@> @@б@г>!t)Debuginfo@PXX@PXX@ APXXAPXX@@@@@@V @@гA*expressionAPXXAPXX@@ @@@c@@@@@f@@@/@@i6 @@@O@@lR@@@a@@od@@@u@@r}@@@A%NXjXj@?D  Method call : [send kind met obj args dbg] - [met] is a method identifier, which can be a hashed variant or an index in [obj]'s method table, depending on [kind] - [obj] is the object whose method is being called - [args] is the extra arguments to the method call (Note: I'm not aware of any way for the frontend to generate any arguments other than the cache and cache position) A2GVVA3MXIXi@@@@@@@AD@@'@?TA @@@@@@>A7 Generic Cmm fragments APRXXAQRXX@@@@@@3AOANANAOAOAOAOAO@1@A1generic_functionsϠA\UYYA]UYY,@б@гA!$boolAgUYY/AhUYY3@@ @@@@@б@г@$listAvUYYMAwUYYQ@г*Cmx_format*unit_infos*Cmx_formatAUYY7AUYYA@ AUYYBAUYYL@@@@@@> @@@"@@@C@@гA$listAUYY`AUYYd@гA&phrase#CmmAUYYUAUYYX@ AUYYYAUYY_@@@@@@c @@@ @@@h@@@,@@k8 @@@W@@nZ#@@@AUYY&@?␠< Generate generic functions ATXXATXY@@@@@@@A@@6@?A@@@@@@/placeholder_dbgРAWYfYjAWYfYy@б@гA$unitAWYfY|AWYfY@@ @@@3AAAAAAAA@8@A@@г?&!t)DebuginfoBWYfYBWYfY@ B WYfYB WYfY@@@@@@ @@@@@! @@@BWYfYf @@B&@@@@!3placeholder_fun_dbgѠB XYYB!XYY@б*human_nameгA&stringB-XYYB.XYY@@ @@@3B/B.B.B/B/B/B/B/@<Q!@A@@г?a!t)DebuginfoB@XYYBAXYY@ BDXYYBEXYY@@@@@@ @@)@@BNXYY @@@BQXYY @@Bb@@@@"+entry_pointҠB\[YYB][YY@б@гAߠ$listBg[YYBh[YY@гB7&stringBq[YYBr[YY@@ @@@3BsBrBrBsBsBsBsBs@E\)@A@@@ @@@ @@гB&phraseB[YZB[YZ@@ @@@@@@@@@@@B[YY @@- Entry point BZYYBZYY@@@@@@@B@@@@Bv@@@@@@6,global_tableӠB^Z/Z3B^Z/Z?@б@гB7$listB^Z/ZHB^Z/ZL@гB&stringB^Z/ZAB^Z/ZG@@ @@@3BBBBBBBB@YxB@A@@@ @@@ @@гB&phraseB^Z/ZPB^Z/ZV@@ @@@@@@@@@@@B^Z/Z/ @A ! Generate the caml_globals table B]ZZB]ZZ.@@@@@@@C@@@ABΐ@@@@@@61reference_symbolsԠC aZZC aZZ@б@гB$listCaZZCaZZ@гB砐&stringC!aZZC"aZZ@@ @@@3C#C"C"C#C#C#C#C#@YxB@A@@@ @@@ @@гC8&phraseC5aZZC6aZZ@@ @@@@@@@@@@@C@aZZ @A_ % Add references to the given symbols CM`ZXZXCN`ZXZ@@@@@@@C_@@@AoC&@@@@@@6+globals_mapCdd[[Ced[[@б@гB砐$listCoe[[OCpe[[S@В@гCC&stringC}e[[C~e[[@@ @@@3CC~C~CCCCC@]|F@A@@@гB預&optionCe[['Ce[[-@гB&Digest!tCe[[Ce[[$@ Ce[[%Ce[[&@@@@@@R$ @@@ @@@T)@@@гC&optionCe[[9Ce[[?@гBD&Digest!tCe[[0Ce[[6@ Ce[[7Ce[[8@@@@@@UK @@@ @@@WP@@@гCT$listCe[[ICe[[M@гC&stringCe[[BCe[[H@@ @@@Xi@@@@@@Zn @@@@v@P@+@@@[y@@@@@@]~De[[@@гD &phraseD e[[WD e[[]@@ @@@^@@@@@_@@@Dd[[ @B3 J Generate the caml_globals_map structure, as a marshalled string constant D!cZZD"cZ[@@@@@@@D3@@@BCC@@@@@@+frame_tableD8i[[D9i[[@б@гC$listDCi[[DDi[[@гD&stringDMi[[DNi[[@@ @@@`3DODNDNDODODODODO@B@A@@@ @@@b @@гDd&phraseDai[[Dbi[[@@ @@@c@@@@@d@@@Dli[[ @B f Generate the caml_frametable table, referencing the frametables from the given compilation units Dyg[_[_Dzh[[@@@@@@@D@@@BDR@@@@@@62data_segment_tableDm\Z\^Dm\Z\p@б@гD$listDm\Z\yDm\Z\}@гDk&stringDm\Z\rDm\Z\x@@ @@@e3DDDDDDDD@YxB@A@@@ @@@g @@гD&phraseDm\Z\Dm\Z\@@ @@@h@@@@@i@@@Dm\Z\Z @B㐠 a Generate the tables for data and code positions respectively of the given compilation units Dk[[Dl\A\Y@@@@@@@D@@@BD@@@@@@62code_segment_tableDn\\Dn\\@б@гDk$listDn\\Dn\\@гDà&stringDn\\Dn\\@@ @@@j3DDDDDDDD@YxB@A@@@ @@@l @@гE&phraseEn\\En\\@@ @@@m@@@@@n@@@En\\ @@E-@@ @@0predef_exceptionE'q\\E(q\\@б@гE#intE2q\\E3q\]@@ @@@o3E4E3E3E4E4E4E4E4@6U@A@@б@гE &stringECq\]EDq\] @@ @@@p@@гES&phraseEPq\]EQq\]@@ @@@q@@@@@r!@@@'@@s$* @@@E^q\\@C} * Generate data for a predefined exception Ekp\\Elp\\@@@@@@@E}@@@CED@@@@@@C-plugin_headerEs]]Es]]'@б@гE$listEs]]LEs]]P@В@г*unit_infos*Cmx_formatEs]]*Es]]4@ Es]]5Es]]?@@@@@@t3EEEEEEEE@sO@A @@@гD:&Digest!tEs]]BEs]]H@ Es]]IEs]]J@@@@@@u @@@@"@ @@v!, @@@E @@@x&Es]])C@@гE&phraseEs]]TEs]]Z@@ @@@y4@@@@@z7@@@Es]] @@E@@ @@=CgE7 Emit constant symbols Eu]\]\Eu]\]x@@@@@@3EEEEEEEE@O{@A.cdefine_symbolFx]]Fx]]@б@В@гE֠&stringFx]]Fx]]@@ @@@{@@@г,Cmmgen_state)is_global,Cmmgen_stateF%x]]F&x]]@ F)x]]F*x]]@@@@@@8 @@@@"@ @@?' @@гE$listF>x]^F?x]^ @гFK)data_itemFHx]]FIx]^@@ @@@V@@@@@@[ @@@%@@^FVx]]@@@FYx]]@Dx A Produce the data_item list corresponding to a symbol definition Ffw]z]zFgw]z]@@@@@@@Fx@@+@DF?@@@@@@~*emit_blockF}~^^F~~^^@б@В@гFR&stringF^^F^^@@ @@@3FFFFFFFF@<@A@@@г~)is_global,Cmmgen_stateF^^F^_ @ F^_ F^_@@@@@@ @@@@"@ @@!' @@б@гF)nativeintF^_F^_#@@ @@@0@@б@гFC$listF^_1F^_5@гF)data_itemF^_'F^_0@@ @@@I@@@@@@N @@гF_$listF_9_EF_9_I@гF)data_itemF_9_;F_9_D@@ @@@e@@@@@@j @@@#@@m*@@@C@@pF@@@X@@sG^^@@@G~^^!@E' [emit_block symb white_header cont] prepends to [cont] the header and symbol for the block. [cont] must already contain the fields of the block (and may contain additional data items afterwards). Gz^ ^ G}^^@@@@@@@G'@@1@E7F@@@@@@3emit_float_constantG,__G-__@б@В@гG&stringG;__G<__@@ @@@3G=G<G<G=G=G=G=G=@<@A@@@г-)is_global,Cmmgen_stateGP__GQ__@ GT__GU__@@@@@@ @@@@"@ @@!' @@б@гG)%floatGk__Gl__@@ @@@0@@б@гF$listGz__G{__@гG)data_itemG__G__@@ @@@I@@@@@@N @@гG$listG__G__@гG)data_itemG__G__@@ @@@e@@@@@@j @@@#@@m*@@@C@@pF@@@X@@sG__@@@G__!@E֐ 6 Emit specific kinds of constant blocks as data items G_K_KG_K_@@@@@@@G@@1@EG@@@@@@4emit_string_constantG__G_` @б@В@гG&stringG``G``@@ @@@3GGGGGGGG@<@A@@@г)is_global,Cmmgen_stateG``H``'@ H``(H``1@@@@@@ @@@@"@ @@!' @@б@гGࠐ&stringH``6H``<@@ @@@0@@б@гG$listH)``JH*``N@гH6)data_itemH3``@H4``I@@ @@@I@@@@@@N @@гG$listHE`R`^HF`R`b@гHR)data_itemHO`R`THP`R`]@@ @@@e@@@@@@j @@@#@@m*@@@C@@ pF@@@X@@ sHc``@@@Hf__!@@Hw@@#@@z3emit_int32_constantHq`c`gHr`c`z@б@В@гHF&stringH`}`H`}`@@ @@@ 3HHHHHHHH@#@A@@@гr)is_global,Cmmgen_stateH`}`H`}`@ H`}`H`}`@@@@@@  @@@@"@ @@ !' @@б@гG%int32H`}`H`}`@@ @@@0@@б@гH7$listH`}`H`}`@гH)data_itemH`}`H`}`@@ @@@I@@@@@@N @@гHS$listH``H``@гH)data_itemH``H``@@ @@@e@@@@@@j @@@#@@m*@@@C@@pF@@@X@@sH`}`@@@H`c`c!@@I @@#@@z3emit_int64_constantI``I``@б@В@гHܠ&stringI``I``@@ @@@3IIIIIIII@#@A@@@г)is_global,Cmmgen_stateI+``I,`a@ I/`aI0`a @@@@@@ @@@@"@ @@!' @@б@гH%int64IF`aIG`a@@ @@@0@@б@гH͠$listIU`a$IV`a(@гIb)data_itemI_`aI``a#@@ @@@I@@@@@@N @@гH預$listIqa,a8Ira,a<@гI~)data_itemI{a,a.I|a,a7@@ @@@e@@@@@@!j @@@#@@"m*@@@C@@#pF@@@X@@$sI``@@@I``!@@I@@#@@z7emit_nativeint_constantIa=aAIa=aX@б@В@гIr&stringIa[a^Ia[ad@@ @@@%3IIIIIIII@#@A@@@г)is_global,Cmmgen_stateIa[agIa[as@ Ia[atIa[a}@@@@@@& @@@@"@ @@'!' @@б@гI )nativeintIa[aIa[a@@ @@@(0@@б@гIc$listIa[aIa[a@гI)data_itemIa[aIa[a@@ @@@)I@@@@@@+N @@гI$listJaaJaa@гJ)data_itemJaaJaa@@ @@@,e@@@@@@.j @@@#@@/m*@@@C@@0pF@@@X@@1sJ%a[a]@@@J(a=a=!@@J9@@#@@z9emit_float_array_constantJ3aaJ4aa@б@В@гJ&stringJBaaJCaa@@ @@@23JDJCJCJDJDJDJDJD@#@A@@@г4)is_global,Cmmgen_stateJWaaJXaa@ J[aaJ\aa@@@@@@3 @@@@"@ @@4!' @@б@гIꠐ$listJraaJsab@гJ:%floatJ|aaJ}aa@@ @@@5:@@@@@@7? @@б@гJ$listJabJab@гJ)data_itemJabJab@@ @@@8X@@@@@@:] @@гJ$$listJbb%Jbb)@гJ)data_itemJbbJbb$@@ @@@;t@@@@@@=y @@@#@@>|*@@@D@@?K@@@g@@@Jaa@@@Jaa!@@J@@#@@-fundecls_sizeJb+b/Jb+b<@б@гJ[$listJb+bQJb+bU@г'Clambda)ufunction'ClambdaJb+b?Jb+bF@ Jb+bGJb+bP@@@@@@3JJJJJJJJ@4@A @@@$ @@@!@@гJޠ#intK b+bYK b+b\@@ @@@@@@@@"@@@Kb+b+ @@K(@@ @@5emit_constant_closureK"b^bbK#b^bw@б@В@гJ&stringK1bzb}K2bzb@@ @@@3K3K2K2K3K3K3K3K3@:d#@A@@@г#)is_global,Cmmgen_stateKFbzbKGbzb@ KJbzbKKbzb@@@@@@ @@@@"@ @@!' @@б@гJ٠$listKabzbKbbzb@г~)ufunction'ClambdaKobzbKpbzb@ KsbzbKtbzb@@@@@@C @@@ @@@H@@б@гK$listKbbKbb@гK)data_itemKbbKbb@@ @@@a@@@@@@f @@б@гK$listKbbKbb@гK)data_itemKbbKbb@@ @@@@@@@@@ @@гK:$listKbbKbb@гK)data_itemKbbKbb@@ @@@@@@@@@ @@@#@@*@@@D@@K@@@e@@q@@@@@Kbzb|!@@@Kb^b^$@@K@@&@@8emit_preallocated_blocksKbbKbc @б@гKt$listKcc-Kcc1@г2preallocated_block'ClambdaL ccL cc@ LccLcc,@@@@@@3LLLLLLLL@2@A @@@" @@@@@б@гK$listL%cc<L&cc@@гL2&phraseL/cc5L0cc;@@ @@@ @@@@@@% @@гK$listLAccKLBccO@гLN&phraseLKccDLLccJ@@ @@@<@@@@@@A @@@#@@D*@@@D@@GR@@@L^bb@@Lo@@@@M@JJ@JbJ@II@IIk@IKI@HH@HHr@HRH+@H$G@GG@GG@GaG:@GG@FF@FF@FFn@FNF@EE@EEs@ElE*@E#D@DD@DD[@DTD$@D C@CC@CCy@CYC2@C+B@BB@BB3@BA@AAo@AhAA@A!@@@@@@f@@@ ?@??\@?U?@>>@>>.@>'=@==o@=O= @<@:9@99@9a9@88@88[@8;7@77@77N@7G6@66@66H@6A5@55@55`@5@5@44@43@33Y@392@22@2c2!@21@11]@1*1@10@00@00P@0I0@//@//@..@..7@.0-@--@-z-@- ,@,,:@,3+@++s@+l+*@+*@**J@**)@)^(@((z@(G'@'':@'&@&&@&`&9@&%]@%=$@$M$ @##@##I@##@""@""@""N@".!@!!T@!4 @  s@ l @ @P@I@J@*@>@ @A@uN@.@@@tM@-@@f@F1@ A@A@j @@v@VA@:%@@@@@xc@\G@@+@$@@@v@o$@@q@Q!@A@T@4@@@c@\@@:@A@@M@-@@e@E @  D@ $ @ a @  @  n@ g 1@  @  @ e @  ]@ = @@q@Q@z@Z@ @s@l@K@D@@ @@@@3MMMMMMMM@@A@ H************************************************************************MA@@MA@L@ H MBMMMBM@ H OCaml MCMC@ H MDMD3@ H Xavier Leroy, projet Cristal, INRIA Rocquencourt NE44NE4@ H N FN F@ H Copyright 1996 Institut National de Recherche en Informatique et NGNG@ H en Automatique. NHNHg@ H NIhhNIh@ H All rights reserved. This file is distributed under the terms of N!JN"J@ H the GNU Lesser General Public License version 2.1, with the N'KN(KN@ H special exception on linking described in the file LICENSE. N-LOON.LO@ H N3MN4M@ H************************************************************************N9NN:N5@ t* [bind name arg fn] is equivalent to [let name = arg in fn name], or simply [fn arg] if [arg] is simple enough LO B* Same as [bind], but also treats loads from a variable as simple KҠ** Headers K ** A null header with GC bits set to black K /* A constant equal to the tag for float arrays K> Y* [block_header tag size] creates a header with tag [tag] for a block of size [size] J栠 6* Same as block_header, but with GC bits set to black J $* Closure headers of the given size JH #* Infix header at the given offset IҠ !* Header for a boxed float value I 6* Header for an unboxed float array of the given size IX 5* Header for a string (or bytes) of the given length I8* Boxed integer headers Hޠ H* Closure info for a closure of given arity and distance to environment HD+* Wrappers G+* Integers E렠 h* Minimal/maximal OCaml integer values whose backend representation fits in a regular OCaml integer EĠ E* Make an integer constant from the given integer (tags the integer) EE * Make a Cmm constant holding the given nativeint value. Uses [Cconst_int] instead of [Cconst_nativeint] when possible to preserve peephole optimisations. Dp )* Add an integer to the given expression C "* Increment/decrement of integers C L* Simplify the given expression knowing its last bit will be irrelevant C M* Simplify the given expression knowing its first bit will be irrelevant BŠ &* Arithmetical operations on integers BR /* Integer tagging. [tag_int x = (x lsl 1) + 1] ?. /* Integer untagging. [untag_int x = (x asr 1)] >͠ 2* Specific division operations for boxed integers >" * If-Then-Else expression [mk_if_then_else dbg cond ifso_dbg ifso ifnot_dbg ifnot] associates [dbg] to the global if-then-else expression, [ifso_dbg] to the then branch [ifso], and [ifnot_dbg] to the else branch [ifnot] <Ԡ3* Boolean negation * Unbox a given boxed integer # J* Used to prepare 32-bit integers on 64-bit platforms for a lsr operation #56* Raw memory accesses  ** [unaligned_set size ptr idx newval dbg]  # $* [unaligned_load size ptr idx dbg] ;* [box_sized size dbg exp] -* Primitives  Y* Return the n-th field of a float array (or float-only record), as an unboxed float );* Int_as_pointer primitive 2* Raise primitive  %* Unary negation of an OCaml integer r ,* Add a constant number to an OCaml integer , 6* Add a constant number to an OCaml integer reference 栠 ?* Return the length of the array argument, as an OCaml integer  D* Byte swap primitive Operates on Cmm integers (unboxed values) H N* 16-bit byte swap primitive Operates on Cmm integers (untagged integers)  4* [setfield offset value_is_ptr init ptr value dbg]  k* [setfloatfield offset init ptr value dbg] [value] is expected to be an unboxed floating point number ?* Operations on OCaml integers X * Strings, Bytes and Bigstrings  9* Regular string/bytes access. Args: string/bytes, index { B* Load by chunk from string/bytes, bigstring. Args: string, index )* Arrays  #* Array access. Args: array, index B u* Same as setfield, except the offset is one of the arguments. Args: pointer (structure/array/...), index, value " U* Set the byte at the given offset to the given value. Args: bytes, index, value  ;* Set the element at the given index in the given array to the given value. WARNING: if [kind] is [Pfloatarray], then [value] is expected to be an _unboxed_ float. Otherwise, it is expected to be a regular caml value, including in the case where the array contains floats. Args: array, index, value  * Set a chunk of data in the given bytes or bigstring structure. See also [string_load] and [bigstring_load]. Note: [value] is expected to be an unboxed number of the given size. Args: pointer, index, value ޠ)* Switch o;* [transl_isout h arg dbg]  ~* [make_switch arg cases actions dbg] : Generate a Cswitch construct, or optimize as a static table lookup when possible. Ǡ 5* [transl_int_switch loc arg low high cases default]  .* [transl_switch_clambda loc arg index cases] y +* [strmatch_compile dbg arg default cases]  %* Closures and function applications  9* Adds a constant offset to a pointer (for infix access) : 0* Direct application of a function via a symbol  8* Generic application of a function to one or several arguments. The mutable_flag argument annotates the loading of the code pointer from the closure. The Cmmgen code uses a mutable load by default, with a special case when the load is from (the first function of) the currently defined closure.  * Method call : [send kind met obj args dbg] - [met] is a method identifier, which can be a hashed variant or an index in [obj]'s method table, depending on [kind] - [obj] is the object whose method is being called - [args] is the extra arguments to the method call (Note: I'm not aware of any way for the frontend to generate any arguments other than the cache and cache position) l8* Generic Cmm fragments Q=* Generate generic functions  Ԡ.* Entry point  "* Generate the caml_globals table  &* Add references to the given symbols  ` K* Generate the caml_globals_map structure, as a marshalled string constant  g* Generate the caml_frametable table, referencing the frametables from the given compilation units  : b* Generate the tables for data and code positions respectively of the given compilation units  堠 +* Generate data for a predefined exception  N8* Emit constant symbols  Ǡ B* Produce the data_item list corresponding to a symbol definition  Y * [emit_block symb white_header cont] prepends to [cont] the header and symbol for the block. [cont] must already contain the fields of the block (and may contain additional data items afterwards).  7* Emit specific kinds of constant blocks as data items @-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I'asmcomp"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-cOP J/home/ci/builds/workspace/precheck/flambda/false/label/ocaml-ubuntu-latest >10/.-,+*)('&%$#"! @@0L^}.i 3PPPPPPPP@P@@/Allocated_const0ЖݔTWŠ(Asttypes0>n{T8cئ+Backend_var0G}afTd5Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ'Clambda0l>\~"=*ː01U1/Closure_element0YWZ̡Q.hV&*Closure_id05:z[ކ.Closure_origin0vˆtT{(}z*Cmi_format0c˯7͗ԩmݠP]0rhmsT4u%{Pn0)<esG`^  @0B[TqZ0}Du)|lx/̠0Compilation_unit0 {p-Vg_*Data_types0I'Ue`wq]Ѡ)Debuginfo0PtJ=^w/#Env0zV L{YWI)Export_id0-bw+LO+Export_info0G[CE!O pr'Flambda0Idvu "*Format_doc0]mWϓ:Mݠ*Freshening0/^*b1R%Ident0">WA+9*X,Identifiable0 {d\FX'`7Internal_variable_names0HdeՄL ԩ&Lambda0z1x]&ZT,Linkage_name0EwKсڊs)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0ob]6>Vê>0Mutable_variable0~emPs&Symbol0ҡ4d,#Tag0\݅}x)Targetint0!2JTI ϝ.Type_immediacy0A^abOhՠ%Types0^Y~# )Unit_info0ڀh%(2Var_within_closure00SSJh6 (Variable0' Gr㠠(Warnings0mJɒkgr?JK6@@L@GH@ ݐ Em@I$%a;֐<=@@"("BtB@@(:(56 @@@Ր%\@,-@ː@1t1߰8>8@#$>-.&KL@ ʐ :W:N&Nr@@-7-@dr@@g@۰=t=ɰH̐I!IPIv@@3.3@@ؐj!!$Ր%.@6`6=>=AB=@@԰; ;u@;G2G@?@H@@#$@|Ű()=LϐM @@@  @ Ґ 070~@@R@ ,    ϰݐ<<@O$OiOzO@@eI1c1ΰGGM@@IiI@5:5@#/#>?AJK,@4@@rtİD?DHH@77e< @Mp@696@!" D DDE=@ 1 \8"8w@&;&KKѰPQ"@(9(S9:G@','@BCC@:^:ŰJJ@@@@c33LEL@@Ɛ@АJJ@CD5@@@~O]O@ !%,%11@&Ր'E;;հNN@ܐ78O@181}@  3T3MZM@v=; ;FFMFNݐO@ ' ǰ6A6@HtH@((ְ55G9Gs@G|'(m@@55@@NENm@89U@@+(+7 7$@ x @@@?P?@((JJ@B B@=>8PQ@  -#-@@@FGR@MqM@@@P@@