1;; copied from a historical cranelift-wasm test and provided here as proof that
2;; this still compiles on various platforms and such
3
4(module
5  (type $0 (;0;) (func (param i32 i32 i32) (result i32)))
6  (type $1 (;1;) (func (param i32 i32) (result i32)))
7  (type $2 (;2;) (func (param i32)))
8  (type $3 (;3;) (func (param i32) (result i32)))
9  (type $4 (;4;) (func (param i32 i32)))
10  (type $5 (;5;) (func (param i64 i32) (result i32)))
11  (type $6 (;6;) (func (param i32) (result i64)))
12  (type $7 (;7;) (func))
13  (type $8 (;8;) (func (param i32 i32)))
14  (type $9 (;9;) (func (param i32 i32 i32) (result i32)))
15  (func $0 (;0;) (type $7)
16    (local $0 i32) (local $1 i32)
17    i32.const 1
18    local.set $0
19    block $label$1 ;; label = @1
20      block $label$2 ;; label = @2
21        block $label$3 ;; label = @3
22          i32.const 1049232
23          i32.load
24          i32.const 1
25          i32.eq
26          if ;; label = @4
27            block ;; label = @5
28              i32.const 1049236
29              i32.const 1049236
30              i32.load
31              i32.const 1
32              i32.add
33              local.tee $0
34              i32.store
35              local.get $0
36              i32.const 3
37              i32.lt_u
38              br_if 2 (;@3;)
39              br 3 (;@2;)
40            end
41          end
42          i32.const 1049232
43          i64.const 4294967297
44          i64.store
45        end
46        i32.const 1049240
47        i32.load
48        local.tee $1
49        i32.const -1
50        i32.le_s
51        br_if 0 (;@2;)
52        i32.const 1049240
53        local.get $1
54        i32.store
55        local.get $0
56        i32.const 2
57        i32.lt_u
58        br_if 1 (;@1;)
59      end
60      unreachable
61    end
62    unreachable
63  )
64  (func $1 (;1;) (type $2) (param $0 i32)
65    (local $1 i32)
66    global.get $global$0
67    i32.const 16
68    i32.sub
69    local.tee $1
70    global.set $global$0
71    local.get $0
72    i32.load offset=8
73    i32.eqz
74    if ;; label = @1
75      block ;; label = @2
76        i32.const 1049172
77        call $2
78        unreachable
79      end
80    end
81    local.get $1
82    local.get $0
83    i32.const 20
84    i32.add
85    i64.load align=4
86    i64.store offset=8
87    local.get $1
88    local.get $0
89    i64.load offset=12 align=4
90    i64.store
91    call $0
92    unreachable
93  )
94  (func $2 (;2;) (type $2) (param $0 i32)
95    (local $1 i32) (local $2 i64) (local $3 i64) (local $4 i64)
96    global.get $global$0
97    i32.const 48
98    i32.sub
99    local.tee $1
100    global.set $global$0
101    local.get $0
102    i64.load offset=8 align=4
103    local.set $2
104    local.get $0
105    i64.load offset=16 align=4
106    local.set $3
107    local.get $0
108    i64.load align=4
109    local.set $4
110    local.get $1
111    i32.const 20
112    i32.add
113    i32.const 0
114    i32.store
115    local.get $1
116    local.get $4
117    i64.store offset=24
118    local.get $1
119    i32.const 1048656
120    i32.store offset=16
121    local.get $1
122    i64.const 1
123    i64.store offset=4 align=4
124    local.get $1
125    local.get $1
126    i32.const 24
127    i32.add
128    i32.store
129    local.get $1
130    local.get $3
131    i64.store offset=40
132    local.get $1
133    local.get $2
134    i64.store offset=32
135    local.get $1
136    local.get $1
137    i32.const 32
138    i32.add
139    call $5
140    unreachable
141  )
142  (func $3 (;3;) (type $8) (param $0 i32) (param $1 i32)
143    (local $2 i32)
144    global.get $global$0
145    i32.const 48
146    i32.sub
147    local.tee $2
148    global.set $global$0
149    local.get $2
150    i32.const 16
151    i32.store offset=4
152    local.get $2
153    local.get $1
154    i32.store
155    local.get $2
156    i32.const 44
157    i32.add
158    i32.const 1
159    i32.store
160    local.get $2
161    i32.const 28
162    i32.add
163    i32.const 2
164    i32.store
165    local.get $2
166    i32.const 1
167    i32.store offset=36
168    local.get $2
169    i64.const 2
170    i64.store offset=12 align=4
171    local.get $2
172    i32.const 1049140
173    i32.store offset=8
174    local.get $2
175    local.get $2
176    i32.store offset=40
177    local.get $2
178    local.get $2
179    i32.const 4
180    i32.add
181    i32.store offset=32
182    local.get $2
183    local.get $2
184    i32.const 32
185    i32.add
186    i32.store offset=24
187    local.get $2
188    i32.const 8
189    i32.add
190    local.get $0
191    call $5
192    unreachable
193  )
194  (func $4 (;4;) (type $1) (param $0 i32) (param $1 i32) (result i32)
195    local.get $0
196    i64.load32_u
197    local.get $1
198    call $6
199  )
200  (func $5 (;5;) (type $4) (param $0 i32) (param $1 i32)
201    (local $2 i32) (local $3 i64)
202    global.get $global$0
203    i32.const 32
204    i32.sub
205    local.tee $2
206    global.set $global$0
207    local.get $1
208    i64.load align=4
209    local.set $3
210    local.get $2
211    i32.const 20
212    i32.add
213    local.get $1
214    i64.load offset=8 align=4
215    i64.store align=4
216    local.get $2
217    local.get $3
218    i64.store offset=12 align=4
219    local.get $2
220    local.get $0
221    i32.store offset=8
222    local.get $2
223    i32.const 1049156
224    i32.store offset=4
225    local.get $2
226    i32.const 1048656
227    i32.store
228    local.get $2
229    call $1
230    unreachable
231  )
232  (func $6 (;6;) (type $5) (param $0 i64) (param $1 i32) (result i32)
233    (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) (local $13 i64) (local $14 i32) (local $15 i32)
234    global.get $global$0
235    i32.const 48
236    i32.sub
237    local.tee $6
238    global.set $global$0
239    i32.const 39
240    local.set $2
241    block $label$1 ;; label = @1
242      block $label$2 ;; label = @2
243        local.get $0
244        i64.const 10000
245        i64.ge_u
246        if ;; label = @3
247          block ;; label = @4
248            loop $label$4 ;; label = @5
249              local.get $6
250              i32.const 9
251              i32.add
252              local.get $2
253              i32.add
254              local.tee $3
255              i32.const -4
256              i32.add
257              local.get $0
258              local.get $0
259              i64.const 10000
260              i64.div_u
261              local.tee $13
262              i64.const -10000
263              i64.mul
264              i64.add
265              i32.wrap_i64
266              local.tee $4
267              i32.const 100
268              i32.div_u
269              local.tee $5
270              i32.const 1
271              i32.shl
272              i32.const 1048706
273              i32.add
274              i32.load16_u align=1
275              i32.store16 align=1
276              local.get $3
277              i32.const -2
278              i32.add
279              local.get $5
280              i32.const -100
281              i32.mul
282              local.get $4
283              i32.add
284              i32.const 1
285              i32.shl
286              i32.const 1048706
287              i32.add
288              i32.load16_u align=1
289              i32.store16 align=1
290              local.get $2
291              i32.const -4
292              i32.add
293              local.set $2
294              block (result i32) ;; label = @6
295                local.get $0
296                i64.const 99999999
297                i64.gt_u
298                local.set $14
299                local.get $13
300                local.set $0
301                local.get $14
302              end
303              br_if 0 (;@5;)
304            end
305            local.get $13
306            i32.wrap_i64
307            local.tee $3
308            i32.const 99
309            i32.le_s
310            br_if 3 (;@1;)
311            br 2 (;@2;)
312          end
313        end
314        local.get $0
315        local.tee $13
316        i32.wrap_i64
317        local.tee $3
318        i32.const 99
319        i32.le_s
320        br_if 1 (;@1;)
321      end
322      local.get $2
323      i32.const -2
324      i32.add
325      local.tee $2
326      local.get $6
327      i32.const 9
328      i32.add
329      i32.add
330      local.get $13
331      i32.wrap_i64
332      local.tee $4
333      i32.const 65535
334      i32.and
335      i32.const 100
336      i32.div_u
337      local.tee $3
338      i32.const -100
339      i32.mul
340      local.get $4
341      i32.add
342      i32.const 65535
343      i32.and
344      i32.const 1
345      i32.shl
346      i32.const 1048706
347      i32.add
348      i32.load16_u align=1
349      i32.store16 align=1
350    end
351    block $label$5 ;; label = @1
352      local.get $3
353      i32.const 9
354      i32.le_s
355      if ;; label = @2
356        block ;; label = @3
357          local.get $2
358          i32.const -1
359          i32.add
360          local.tee $2
361          local.get $6
362          i32.const 9
363          i32.add
364          i32.add
365          local.get $3
366          i32.const 48
367          i32.add
368          i32.store8
369          br 2 (;@1;)
370        end
371      end
372      local.get $2
373      i32.const -2
374      i32.add
375      local.tee $2
376      local.get $6
377      i32.const 9
378      i32.add
379      i32.add
380      local.get $3
381      i32.const 1
382      i32.shl
383      i32.const 1048706
384      i32.add
385      i32.load16_u align=1
386      i32.store16 align=1
387    end
388    i32.const 39
389    local.get $2
390    i32.sub
391    local.set $7
392    i32.const 1
393    local.set $3
394    i32.const 43
395    i32.const 1114112
396    local.get $1
397    i32.load
398    local.tee $4
399    i32.const 1
400    i32.and
401    local.tee $11
402    select
403    local.set $8
404    local.get $4
405    i32.const 29
406    i32.shl
407    i32.const 31
408    i32.shr_s
409    i32.const 1048656
410    i32.and
411    local.set $9
412    local.get $6
413    i32.const 9
414    i32.add
415    local.get $2
416    i32.add
417    local.set $10
418    block $label$7 ;; label = @1
419      block $label$8 ;; label = @2
420        block $label$9 ;; label = @3
421          block $label$10 ;; label = @4
422            block $label$11 ;; label = @5
423              block $label$12 ;; label = @6
424                block $label$13 ;; label = @7
425                  block $label$14 ;; label = @8
426                    block $label$15 (result i32) ;; label = @9
427                      block $label$16 ;; label = @10
428                        block $label$17 ;; label = @11
429                          block $label$18 ;; label = @12
430                            block $label$19 ;; label = @13
431                              local.get $1
432                              i32.load offset=8
433                              i32.const 1
434                              i32.eq
435                              if ;; label = @14
436                                block ;; label = @15
437                                  local.get $1
438                                  i32.const 12
439                                  i32.add
440                                  i32.load
441                                  local.tee $5
442                                  local.get $7
443                                  local.get $11
444                                  i32.add
445                                  local.tee $2
446                                  i32.le_u
447                                  br_if 2 (;@13;)
448                                  local.get $4
449                                  i32.const 8
450                                  i32.and
451                                  br_if 3 (;@12;)
452                                  local.get $5
453                                  local.get $2
454                                  i32.sub
455                                  local.set $4
456                                  i32.const 1
457                                  local.get $1
458                                  i32.load8_u offset=48
459                                  local.tee $3
460                                  local.get $3
461                                  i32.const 3
462                                  i32.eq
463                                  select
464                                  local.tee $3
465                                  i32.const 3
466                                  i32.and
467                                  i32.eqz
468                                  br_if 4 (;@11;)
469                                  local.get $3
470                                  i32.const 2
471                                  i32.eq
472                                  br_if 5 (;@10;)
473                                  i32.const 0
474                                  local.set $5
475                                  local.get $4
476                                  br 6 (;@9;)
477                                end
478                              end
479                              local.get $1
480                              local.get $8
481                              local.get $9
482                              call $9
483                              br_if 10 (;@3;)
484                              br 11 (;@2;)
485                            end
486                            local.get $1
487                            local.get $8
488                            local.get $9
489                            call $9
490                            br_if 9 (;@3;)
491                            br 10 (;@2;)
492                          end
493                          local.get $1
494                          i32.const 1
495                          i32.store8 offset=48
496                          local.get $1
497                          i32.const 48
498                          i32.store offset=4
499                          local.get $1
500                          local.get $8
501                          local.get $9
502                          call $9
503                          br_if 8 (;@3;)
504                          local.get $5
505                          local.get $2
506                          i32.sub
507                          local.set $3
508                          i32.const 1
509                          local.get $1
510                          i32.const 48
511                          i32.add
512                          i32.load8_u
513                          local.tee $4
514                          local.get $4
515                          i32.const 3
516                          i32.eq
517                          select
518                          local.tee $4
519                          i32.const 3
520                          i32.and
521                          i32.eqz
522                          br_if 3 (;@8;)
523                          local.get $4
524                          i32.const 2
525                          i32.eq
526                          br_if 4 (;@7;)
527                          i32.const 0
528                          local.set $4
529                          br 5 (;@6;)
530                        end
531                        local.get $4
532                        local.set $5
533                        i32.const 0
534                        br 1 (;@9;)
535                      end
536                      local.get $4
537                      i32.const 1
538                      i32.add
539                      i32.const 1
540                      i32.shr_u
541                      local.set $5
542                      local.get $4
543                      i32.const 1
544                      i32.shr_u
545                    end
546                    local.set $3
547                    i32.const -1
548                    local.set $2
549                    local.get $1
550                    i32.const 4
551                    i32.add
552                    local.set $4
553                    local.get $1
554                    i32.const 24
555                    i32.add
556                    local.set $11
557                    local.get $1
558                    i32.const 28
559                    i32.add
560                    local.set $12
561                    block $label$21 ;; label = @9
562                      loop $label$22 ;; label = @10
563                        local.get $2
564                        i32.const 1
565                        i32.add
566                        local.tee $2
567                        local.get $3
568                        i32.ge_u
569                        br_if 1 (;@9;)
570                        local.get $11
571                        i32.load
572                        local.get $4
573                        i32.load
574                        local.get $12
575                        i32.load
576                        i32.load offset=16
577                        call_indirect (type $1)
578                        i32.eqz
579                        br_if 0 (;@10;)
580                      end
581                      br 8 (;@1;)
582                    end
583                    local.get $1
584                    i32.const 4
585                    i32.add
586                    i32.load
587                    local.set $4
588                    i32.const 1
589                    local.set $3
590                    local.get $1
591                    local.get $8
592                    local.get $9
593                    call $9
594                    br_if 5 (;@3;)
595                    local.get $1
596                    i32.const 24
597                    i32.add
598                    local.tee $2
599                    i32.load
600                    local.get $10
601                    local.get $7
602                    local.get $1
603                    i32.const 28
604                    i32.add
605                    local.tee $1
606                    i32.load
607                    i32.load offset=12
608                    call_indirect (type $0)
609                    br_if 5 (;@3;)
610                    local.get $2
611                    i32.load
612                    local.set $7
613                    i32.const -1
614                    local.set $2
615                    local.get $1
616                    i32.load
617                    i32.const 16
618                    i32.add
619                    local.set $1
620                    loop $label$23 ;; label = @9
621                      local.get $2
622                      i32.const 1
623                      i32.add
624                      local.tee $2
625                      local.get $5
626                      i32.ge_u
627                      br_if 4 (;@5;)
628                      local.get $7
629                      local.get $4
630                      local.get $1
631                      i32.load
632                      call_indirect (type $1)
633                      i32.eqz
634                      br_if 0 (;@9;)
635                    end
636                    br 5 (;@3;)
637                  end
638                  local.get $3
639                  local.set $4
640                  i32.const 0
641                  local.set $3
642                  br 1 (;@6;)
643                end
644                local.get $3
645                i32.const 1
646                i32.add
647                i32.const 1
648                i32.shr_u
649                local.set $4
650                local.get $3
651                i32.const 1
652                i32.shr_u
653                local.set $3
654              end
655              i32.const -1
656              local.set $2
657              local.get $1
658              i32.const 4
659              i32.add
660              local.set $5
661              local.get $1
662              i32.const 24
663              i32.add
664              local.set $8
665              local.get $1
666              i32.const 28
667              i32.add
668              local.set $9
669              block $label$24 ;; label = @6
670                loop $label$25 ;; label = @7
671                  local.get $2
672                  i32.const 1
673                  i32.add
674                  local.tee $2
675                  local.get $3
676                  i32.ge_u
677                  br_if 1 (;@6;)
678                  local.get $8
679                  i32.load
680                  local.get $5
681                  i32.load
682                  local.get $9
683                  i32.load
684                  i32.load offset=16
685                  call_indirect (type $1)
686                  i32.eqz
687                  br_if 0 (;@7;)
688                end
689                br 5 (;@1;)
690              end
691              local.get $1
692              i32.const 4
693              i32.add
694              i32.load
695              local.set $5
696              i32.const 1
697              local.set $3
698              local.get $1
699              i32.const 24
700              i32.add
701              local.tee $2
702              i32.load
703              local.get $10
704              local.get $7
705              local.get $1
706              i32.const 28
707              i32.add
708              local.tee $1
709              i32.load
710              i32.load offset=12
711              call_indirect (type $0)
712              br_if 2 (;@3;)
713              local.get $2
714              i32.load
715              local.set $7
716              i32.const -1
717              local.set $2
718              local.get $1
719              i32.load
720              i32.const 16
721              i32.add
722              local.set $1
723              loop $label$26 ;; label = @6
724                local.get $2
725                i32.const 1
726                i32.add
727                local.tee $2
728                local.get $4
729                i32.ge_u
730                br_if 2 (;@4;)
731                local.get $7
732                local.get $5
733                local.get $1
734                i32.load
735                call_indirect (type $1)
736                i32.eqz
737                br_if 0 (;@6;)
738              end
739              br 2 (;@3;)
740            end
741            local.get $6
742            i32.const 48
743            i32.add
744            global.set $global$0
745            i32.const 0
746            return
747          end
748          i32.const 0
749          local.set $3
750        end
751        local.get $6
752        i32.const 48
753        i32.add
754        global.set $global$0
755        local.get $3
756        return
757      end
758      block (result i32) ;; label = @2
759        local.get $1
760        i32.load offset=24
761        local.get $10
762        local.get $7
763        local.get $1
764        i32.const 28
765        i32.add
766        i32.load
767        i32.load offset=12
768        call_indirect (type $0)
769        local.set $15
770        local.get $6
771        i32.const 48
772        i32.add
773        global.set $global$0
774        local.get $15
775      end
776      return
777    end
778    local.get $6
779    i32.const 48
780    i32.add
781    global.set $global$0
782    i32.const 1
783  )
784  (func $7 (;7;) (type $2) (param $0 i32)
785    nop
786  )
787  (func $8 (;8;) (type $6) (param $0 i32) (result i64)
788    i64.const -2357177763932378009
789  )
790  (func $9 (;9;) (type $9) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
791    block $label$1 ;; label = @1
792      block $label$2 (result i32) ;; label = @2
793        local.get $1
794        i32.const 1114112
795        i32.ne
796        if ;; label = @3
797          i32.const 1
798          local.get $0
799          i32.load offset=24
800          local.get $1
801          local.get $0
802          i32.const 28
803          i32.add
804          i32.load
805          i32.load offset=16
806          call_indirect (type $1)
807          br_if 1 (;@2;)
808          drop
809        end
810        local.get $2
811        i32.eqz
812        br_if 1 (;@1;)
813        local.get $0
814        i32.load offset=24
815        local.get $2
816        i32.const 0
817        local.get $0
818        i32.const 28
819        i32.add
820        i32.load
821        i32.load offset=12
822        call_indirect (type $0)
823      end
824      return
825    end
826    i32.const 0
827  )
828  (func $10 (;10;) (type $3) (param $0 i32) (result i32)
829    (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) (local $17 i32) (local $18 i32) (local $19 i32) (local $20 i32) (local $21 i32) (local $22 i32) (local $23 i32) (local $24 i32) (local $25 i32) (local $26 i32) (local $27 i32) (local $28 i32) (local $29 i32) (local $30 i32) (local $31 i32) (local $32 i32) (local $33 i32) (local $34 i32) (local $35 i32) (local $36 i32) (local $37 i32) (local $38 i32) (local $39 i32) (local $40 i32) (local $41 i32) (local $42 i32) (local $43 i32) (local $44 i32) (local $45 i32) (local $46 i32)
830    global.get $global$0
831    i32.const 256
832    i32.sub
833    local.tee $1
834    global.set $global$0
835    local.get $1
836    i64.const 4294967297
837    i64.store offset=56 align=4
838    local.get $1
839    i64.const 4294967297
840    i64.store offset=48 align=4
841    local.get $1
842    i64.const 4294967297
843    i64.store offset=40 align=4
844    local.get $1
845    i64.const 4294967297
846    i64.store offset=32 align=4
847    local.get $1
848    i64.const 4294967297
849    i64.store offset=24 align=4
850    local.get $1
851    i64.const 4294967297
852    i64.store offset=16 align=4
853    local.get $1
854    i64.const 4294967297
855    i64.store offset=8 align=4
856    local.get $1
857    i64.const 4294967297
858    i64.store align=4
859    block $label$1 ;; label = @1
860      local.get $0
861      i32.const 1
862      i32.add
863      local.tee $11
864      i32.const 2
865      i32.ge_u
866      if ;; label = @2
867        block ;; label = @3
868          local.get $1
869          local.set $3
870          i32.const 1
871          local.set $2
872          loop $label$3 ;; label = @4
873            local.get $2
874            i32.const 16
875            i32.ge_u
876            br_if 3 (;@1;)
877            local.get $3
878            i32.const 4
879            i32.add
880            local.tee $4
881            local.get $3
882            i32.load
883            local.get $2
884            i32.mul
885            i32.store
886            local.get $4
887            local.set $3
888            local.get $2
889            i32.const 1
890            i32.add
891            local.tee $4
892            local.set $2
893            local.get $4
894            local.get $11
895            i32.lt_u
896            br_if 0 (;@4;)
897          end
898        end
899      end
900      local.get $0
901      i32.const 16
902      i32.lt_u
903      if ;; label = @2
904        block ;; label = @3
905          i32.const 1
906          local.set $20
907          local.get $1
908          local.get $0
909          i32.const 2
910          i32.shl
911          i32.add
912          i32.load
913          local.tee $9
914          local.set $21
915          local.get $9
916          i32.const 24
917          i32.ge_u
918          if ;; label = @4
919            i32.const 24
920            i32.const 25
921            local.get $9
922            local.get $9
923            i32.const 24
924            i32.div_u
925            local.tee $21
926            i32.const 24
927            i32.mul
928            i32.eq
929            select
930            local.set $20
931          end
932          i32.const 0
933          local.get $0
934          i32.sub
935          local.set $40
936          local.get $1
937          i32.const 196
938          i32.add
939          local.set $12
940          local.get $1
941          i32.const 132
942          i32.add
943          local.set $41
944          local.get $1
945          i32.const 124
946          i32.add
947          local.set $42
948          local.get $1
949          i32.const 68
950          i32.add
951          local.set $11
952          local.get $0
953          i32.const 2
954          i32.lt_u
955          local.set $43
956          loop $label$6 ;; label = @4
957            local.get $1
958            i32.const 120
959            i32.add
960            i64.const 0
961            i64.store
962            local.get $1
963            i32.const 112
964            i32.add
965            i64.const 0
966            i64.store
967            local.get $1
968            i32.const 104
969            i32.add
970            i64.const 0
971            i64.store
972            local.get $1
973            i32.const 96
974            i32.add
975            i64.const 0
976            i64.store
977            local.get $1
978            i32.const 88
979            i32.add
980            i64.const 0
981            i64.store
982            local.get $1
983            i32.const 80
984            i32.add
985            i64.const 0
986            i64.store
987            local.get $1
988            i32.const 72
989            i32.add
990            i64.const 0
991            i64.store
992            local.get $1
993            i64.const 0
994            i64.store offset=64
995            local.get $1
996            i32.const 184
997            i32.add
998            local.tee $26
999            i64.const 0
1000            i64.store
1001            local.get $1
1002            i32.const 176
1003            i32.add
1004            local.tee $27
1005            i64.const 0
1006            i64.store
1007            local.get $1
1008            i32.const 168
1009            i32.add
1010            local.tee $28
1011            i64.const 0
1012            i64.store
1013            local.get $1
1014            i32.const 160
1015            i32.add
1016            local.tee $29
1017            i64.const 0
1018            i64.store
1019            local.get $1
1020            i32.const 152
1021            i32.add
1022            local.tee $30
1023            i64.const 0
1024            i64.store
1025            local.get $1
1026            i32.const 144
1027            i32.add
1028            local.tee $31
1029            i64.const 0
1030            i64.store
1031            local.get $1
1032            i32.const 136
1033            i32.add
1034            local.tee $32
1035            i64.const 0
1036            i64.store
1037            local.get $1
1038            i64.const 0
1039            i64.store offset=128
1040            local.get $1
1041            i32.const 248
1042            i32.add
1043            local.tee $33
1044            i64.const 64424509454
1045            i64.store align=4
1046            local.get $1
1047            i32.const 240
1048            i32.add
1049            local.tee $34
1050            i64.const 55834574860
1051            i64.store align=4
1052            local.get $1
1053            i32.const 232
1054            i32.add
1055            local.tee $35
1056            i64.const 47244640266
1057            i64.store align=4
1058            local.get $1
1059            i32.const 224
1060            i32.add
1061            local.tee $36
1062            i64.const 38654705672
1063            i64.store align=4
1064            local.get $1
1065            i32.const 216
1066            i32.add
1067            local.tee $37
1068            i64.const 30064771078
1069            i64.store align=4
1070            local.get $1
1071            i32.const 208
1072            i32.add
1073            local.tee $38
1074            i64.const 21474836484
1075            i64.store align=4
1076            local.get $1
1077            i32.const 200
1078            i32.add
1079            local.tee $39
1080            i64.const 12884901890
1081            i64.store align=4
1082            local.get $1
1083            i64.const 4294967296
1084            i64.store offset=192 align=4
1085            local.get $13
1086            local.get $21
1087            i32.mul
1088            local.set $7
1089            block $label$7 (result i32) ;; label = @5
1090              block $label$8 ;; label = @6
1091                local.get $43
1092                i32.eqz
1093                if ;; label = @7
1094                  block ;; label = @8
1095                    local.get $40
1096                    local.set $23
1097                    local.get $7
1098                    local.set $14
1099                    local.get $0
1100                    local.set $15
1101                    i32.const 0
1102                    local.set $5
1103                    br 2 (;@6;)
1104                  end
1105                end
1106                i32.const 0
1107                br 1 (;@5;)
1108              end
1109              i32.const 1
1110            end
1111            local.set $2
1112            loop $label$10 ;; label = @5
1113              block $label$11 ;; label = @6
1114                block $label$12 ;; label = @7
1115                  block $label$13 (result i32) ;; label = @8
1116                    block $label$14 ;; label = @9
1117                      block $label$15 ;; label = @10
1118                        block $label$16 ;; label = @11
1119                          block $label$17 ;; label = @12
1120                            block $label$18 ;; label = @13
1121                              block $label$19 ;; label = @14
1122                                local.get $2
1123                                i32.eqz
1124                                if ;; label = @15
1125                                  block ;; label = @16
1126                                    local.get $13
1127                                    i32.const 1
1128                                    i32.add
1129                                    local.set $13
1130                                    local.get $9
1131                                    local.get $7
1132                                    local.get $21
1133                                    i32.add
1134                                    local.tee $3
1135                                    local.get $3
1136                                    local.get $9
1137                                    i32.gt_u
1138                                    select
1139                                    i32.const -1
1140                                    i32.add
1141                                    local.set $44
1142                                    i32.const 0
1143                                    local.set $24
1144                                    local.get $1
1145                                    i32.load offset=192
1146                                    local.tee $6
1147                                    i32.const 1
1148                                    i32.ge_s
1149                                    br_if 2 (;@14;)
1150                                    br 3 (;@13;)
1151                                  end
1152                                end
1153                                block $label$21 ;; label = @15
1154                                  block $label$22 ;; label = @16
1155                                    block $label$23 ;; label = @17
1156                                      block $label$24 ;; label = @18
1157                                        block $label$25 ;; label = @19
1158                                          block $label$26 ;; label = @20
1159                                            block $label$27 ;; label = @21
1160                                              block $label$28 ;; label = @22
1161                                                block $label$29 ;; label = @23
1162                                                  block $label$30 ;; label = @24
1163                                                    block $label$31 ;; label = @25
1164                                                      local.get $5
1165                                                      br_table 0 (;@25;) 1 (;@24;) 2 (;@23;)
1166                                                    end
1167                                                    local.get $15
1168                                                    i32.const -1
1169                                                    i32.add
1170                                                    local.tee $4
1171                                                    i32.const 16
1172                                                    i32.ge_u
1173                                                    br_if 6 (;@18;)
1174                                                    local.get $1
1175                                                    local.get $4
1176                                                    i32.const 2
1177                                                    i32.shl
1178                                                    local.tee $2
1179                                                    i32.add
1180                                                    i32.load
1181                                                    local.tee $3
1182                                                    i32.eqz
1183                                                    br_if 7 (;@17;)
1184                                                    local.get $14
1185                                                    i32.const -2147483648
1186                                                    i32.eq
1187                                                    if ;; label = @25
1188                                                      local.get $3
1189                                                      i32.const -1
1190                                                      i32.eq
1191                                                      br_if 9 (;@16;)
1192                                                    end
1193                                                    local.get $1
1194                                                    i32.const -64
1195                                                    i32.sub
1196                                                    local.get $2
1197                                                    i32.add
1198                                                    local.get $14
1199                                                    local.get $3
1200                                                    i32.div_s
1201                                                    local.tee $16
1202                                                    i32.store
1203                                                    local.get $32
1204                                                    local.get $39
1205                                                    i64.load align=4
1206                                                    i64.store
1207                                                    local.get $31
1208                                                    local.get $38
1209                                                    i64.load align=4
1210                                                    i64.store
1211                                                    local.get $30
1212                                                    local.get $37
1213                                                    i64.load align=4
1214                                                    i64.store
1215                                                    local.get $29
1216                                                    local.get $36
1217                                                    i64.load align=4
1218                                                    i64.store
1219                                                    local.get $28
1220                                                    local.get $35
1221                                                    i64.load align=4
1222                                                    i64.store
1223                                                    local.get $27
1224                                                    local.get $34
1225                                                    i64.load align=4
1226                                                    i64.store
1227                                                    local.get $26
1228                                                    local.get $33
1229                                                    i64.load align=4
1230                                                    i64.store
1231                                                    local.get $1
1232                                                    local.get $1
1233                                                    i64.load offset=192 align=4
1234                                                    i64.store offset=128
1235                                                    local.get $16
1236                                                    local.get $23
1237                                                    i32.add
1238                                                    local.set $45
1239                                                    local.get $14
1240                                                    local.get $3
1241                                                    local.get $16
1242                                                    i32.mul
1243                                                    i32.sub
1244                                                    local.set $14
1245                                                    i32.const 0
1246                                                    local.set $2
1247                                                    local.get $1
1248                                                    i32.const 192
1249                                                    i32.add
1250                                                    local.set $8
1251                                                    loop $label$33 ;; label = @25
1252                                                      block $label$34 ;; label = @26
1253                                                        local.get $2
1254                                                        local.get $16
1255                                                        i32.add
1256                                                        local.tee $3
1257                                                        local.get $4
1258                                                        i32.gt_u
1259                                                        if ;; label = @27
1260                                                          block ;; label = @28
1261                                                            local.get $2
1262                                                            local.get $45
1263                                                            i32.add
1264                                                            local.tee $46
1265                                                            i32.const 15
1266                                                            i32.gt_u
1267                                                            br_if 7 (;@21;)
1268                                                            local.get $3
1269                                                            local.get $15
1270                                                            i32.sub
1271                                                            local.set $3
1272                                                            local.get $2
1273                                                            i32.const 15
1274                                                            i32.le_u
1275                                                            br_if 2 (;@26;)
1276                                                            br 6 (;@22;)
1277                                                          end
1278                                                        end
1279                                                        local.get $3
1280                                                        i32.const 16
1281                                                        i32.ge_u
1282                                                        br_if 6 (;@20;)
1283                                                        local.get $2
1284                                                        i32.const 15
1285                                                        i32.gt_u
1286                                                        br_if 4 (;@22;)
1287                                                      end
1288                                                      local.get $8
1289                                                      local.get $1
1290                                                      i32.const 128
1291                                                      i32.add
1292                                                      local.get $3
1293                                                      i32.const 2
1294                                                      i32.shl
1295                                                      i32.add
1296                                                      i32.load
1297                                                      i32.store
1298                                                      local.get $8
1299                                                      i32.const 4
1300                                                      i32.add
1301                                                      local.set $8
1302                                                      local.get $2
1303                                                      i32.const 1
1304                                                      i32.add
1305                                                      local.tee $2
1306                                                      local.get $15
1307                                                      i32.lt_u
1308                                                      br_if 0 (;@25;)
1309                                                    end
1310                                                    local.get $23
1311                                                    i32.const 1
1312                                                    i32.add
1313                                                    local.set $23
1314                                                    local.get $4
1315                                                    local.tee $15
1316                                                    i32.const 1
1317                                                    i32.gt_u
1318                                                    br_if 9 (;@15;)
1319                                                    i32.const 0
1320                                                    local.set $2
1321                                                    br 19 (;@5;)
1322                                                  end
1323                                                  local.get $26
1324                                                  local.get $33
1325                                                  i64.load align=4
1326                                                  i64.store
1327                                                  local.get $27
1328                                                  local.get $34
1329                                                  i64.load align=4
1330                                                  i64.store
1331                                                  local.get $28
1332                                                  local.get $35
1333                                                  i64.load align=4
1334                                                  i64.store
1335                                                  local.get $29
1336                                                  local.get $36
1337                                                  i64.load align=4
1338                                                  i64.store
1339                                                  local.get $30
1340                                                  local.get $37
1341                                                  i64.load align=4
1342                                                  i64.store
1343                                                  local.get $31
1344                                                  local.get $38
1345                                                  i64.load align=4
1346                                                  i64.store
1347                                                  local.get $32
1348                                                  local.get $39
1349                                                  i64.load align=4
1350                                                  i64.store
1351                                                  local.get $1
1352                                                  local.get $1
1353                                                  i64.load offset=192 align=4
1354                                                  i64.store offset=128
1355                                                  local.get $6
1356                                                  i32.const 15
1357                                                  i32.gt_u
1358                                                  br_if 4 (;@19;)
1359                                                  i32.const 1
1360                                                  local.set $17
1361                                                  local.get $6
1362                                                  local.set $10
1363                                                  i32.const 0
1364                                                  br 15 (;@8;)
1365                                                end
1366                                                local.get $7
1367                                                local.get $44
1368                                                i32.lt_u
1369                                                if ;; label = @23
1370                                                  block ;; label = @24
1371                                                    local.get $12
1372                                                    i32.load
1373                                                    local.set $25
1374                                                    local.get $12
1375                                                    local.get $6
1376                                                    i32.store
1377                                                    local.get $1
1378                                                    local.get $25
1379                                                    i32.store offset=192
1380                                                    local.get $11
1381                                                    local.set $18
1382                                                    local.get $1
1383                                                    i32.load offset=68
1384                                                    local.tee $2
1385                                                    i32.const 1
1386                                                    i32.lt_s
1387                                                    br_if 18 (;@6;)
1388                                                    i32.const 1
1389                                                    local.set $19
1390                                                    br 15 (;@9;)
1391                                                  end
1392                                                end
1393                                                local.get $22
1394                                                local.get $24
1395                                                i32.add
1396                                                local.set $22
1397                                                local.get $13
1398                                                local.get $20
1399                                                i32.lt_u
1400                                                br_if 18 (;@4;)
1401                                                local.get $1
1402                                                i32.const 256
1403                                                i32.add
1404                                                global.set $global$0
1405                                                local.get $22
1406                                                return
1407                                              end
1408                                              i32.const 1049076
1409                                              local.get $2
1410                                              call $3
1411                                              unreachable
1412                                            end
1413                                            i32.const 1049060
1414                                            local.get $46
1415                                            call $3
1416                                            unreachable
1417                                          end
1418                                          i32.const 1049044
1419                                          local.get $2
1420                                          local.get $16
1421                                          i32.add
1422                                          call $3
1423                                          unreachable
1424                                        end
1425                                        local.get $6
1426                                        local.set $10
1427                                        br 11 (;@7;)
1428                                      end
1429                                      i32.const 1048980
1430                                      local.get $4
1431                                      call $3
1432                                      unreachable
1433                                    end
1434                                    i32.const 1048996
1435                                    call $2
1436                                    unreachable
1437                                  end
1438                                  i32.const 1049020
1439                                  call $2
1440                                  unreachable
1441                                end
1442                                i32.const 0
1443                                local.set $5
1444                                br 2 (;@12;)
1445                              end
1446                              i32.const 1
1447                              local.set $5
1448                              br 2 (;@11;)
1449                            end
1450                            i32.const 2
1451                            local.set $5
1452                            br 2 (;@10;)
1453                          end
1454                          i32.const 1
1455                          local.set $2
1456                          br 6 (;@5;)
1457                        end
1458                        i32.const 1
1459                        local.set $2
1460                        br 5 (;@5;)
1461                      end
1462                      i32.const 1
1463                      local.set $2
1464                      br 4 (;@5;)
1465                    end
1466                    i32.const 1
1467                  end
1468                  local.set $2
1469                  loop $label$37 ;; label = @8
1470                    block $label$38 ;; label = @9
1471                      block $label$39 ;; label = @10
1472                        local.get $2
1473                        i32.eqz
1474                        if ;; label = @11
1475                          block ;; label = @12
1476                            local.get $10
1477                            local.tee $3
1478                            i32.const 2
1479                            i32.shl
1480                            local.tee $4
1481                            local.get $1
1482                            i32.const 128
1483                            i32.add
1484                            i32.add
1485                            local.tee $5
1486                            i32.load
1487                            local.tee $10
1488                            if ;; label = @13
1489                              block ;; label = @14
1490                                local.get $5
1491                                local.get $3
1492                                i32.store
1493                                block $label$42 ;; label = @15
1494                                  local.get $3
1495                                  i32.const 3
1496                                  i32.lt_u
1497                                  br_if 0 (;@15;)
1498                                  local.get $3
1499                                  i32.const -1
1500                                  i32.add
1501                                  i32.const 1
1502                                  i32.shr_u
1503                                  local.tee $8
1504                                  i32.eqz
1505                                  br_if 0 (;@15;)
1506                                  local.get $4
1507                                  local.get $42
1508                                  i32.add
1509                                  local.set $2
1510                                  local.get $41
1511                                  local.set $3
1512                                  loop $label$43 ;; label = @16
1513                                    local.get $3
1514                                    i32.load
1515                                    local.set $4
1516                                    local.get $3
1517                                    local.get $2
1518                                    i32.load
1519                                    i32.store
1520                                    local.get $2
1521                                    local.get $4
1522                                    i32.store
1523                                    local.get $3
1524                                    i32.const 4
1525                                    i32.add
1526                                    local.set $3
1527                                    local.get $2
1528                                    i32.const -4
1529                                    i32.add
1530                                    local.set $2
1531                                    local.get $8
1532                                    i32.const -1
1533                                    i32.add
1534                                    local.tee $8
1535                                    br_if 0 (;@16;)
1536                                  end
1537                                end
1538                                local.get $17
1539                                i32.const 1
1540                                i32.add
1541                                local.set $17
1542                                local.get $10
1543                                i32.const 16
1544                                i32.lt_u
1545                                br_if 5 (;@9;)
1546                                br 7 (;@7;)
1547                              end
1548                            end
1549                            i32.const 0
1550                            local.get $17
1551                            i32.sub
1552                            local.get $17
1553                            local.get $7
1554                            i32.const 1
1555                            i32.and
1556                            select
1557                            local.get $24
1558                            i32.add
1559                            local.set $24
1560                            i32.const 2
1561                            local.set $5
1562                            br 2 (;@10;)
1563                          end
1564                        end
1565                        i32.const 0
1566                        local.set $2
1567                        local.get $18
1568                        i32.const 0
1569                        i32.store
1570                        local.get $1
1571                        local.get $6
1572                        local.tee $4
1573                        i32.store offset=192
1574                        local.get $19
1575                        i32.const 1
1576                        i32.add
1577                        local.set $5
1578                        local.get $12
1579                        local.set $3
1580                        block $label$44 ;; label = @11
1581                          block $label$45 ;; label = @12
1582                            loop $label$46 ;; label = @13
1583                              local.get $2
1584                              i32.const 2
1585                              i32.add
1586                              i32.const 16
1587                              i32.ge_u
1588                              br_if 1 (;@12;)
1589                              local.get $3
1590                              local.get $3
1591                              i32.const 4
1592                              i32.add
1593                              local.tee $3
1594                              i32.load
1595                              i32.store
1596                              local.get $2
1597                              i32.const 1
1598                              i32.add
1599                              local.tee $2
1600                              local.get $19
1601                              i32.lt_u
1602                              br_if 0 (;@13;)
1603                            end
1604                            local.get $5
1605                            i32.const 16
1606                            i32.ge_u
1607                            br_if 1 (;@11;)
1608                            local.get $5
1609                            i32.const 2
1610                            i32.shl
1611                            local.tee $3
1612                            local.get $1
1613                            i32.const 192
1614                            i32.add
1615                            i32.add
1616                            local.get $25
1617                            i32.store
1618                            local.get $1
1619                            i32.const -64
1620                            i32.sub
1621                            local.get $3
1622                            i32.add
1623                            local.tee $18
1624                            i32.load
1625                            local.tee $2
1626                            local.get $19
1627                            i32.le_s
1628                            br_if 6 (;@6;)
1629                            local.get $12
1630                            i32.load
1631                            local.set $6
1632                            local.get $5
1633                            local.set $19
1634                            local.get $4
1635                            local.set $25
1636                            i32.const 1
1637                            local.set $2
1638                            br 4 (;@8;)
1639                          end
1640                          i32.const 1049108
1641                          local.get $2
1642                          i32.const 2
1643                          i32.add
1644                          call $3
1645                          unreachable
1646                        end
1647                        i32.const 1049124
1648                        local.get $5
1649                        call $3
1650                        unreachable
1651                      end
1652                      i32.const 1
1653                      local.set $2
1654                      br 4 (;@5;)
1655                    end
1656                    i32.const 0
1657                    local.set $2
1658                    br 0 (;@8;)
1659                  end
1660                end
1661                i32.const 1049092
1662                local.get $10
1663                call $3
1664                unreachable
1665              end
1666              local.get $7
1667              i32.const 1
1668              i32.add
1669              local.set $7
1670              local.get $18
1671              local.get $2
1672              i32.const 1
1673              i32.add
1674              i32.store
1675              block $label$47 ;; label = @6
1676                block $label$48 ;; label = @7
1677                  local.get $1
1678                  i32.load offset=192
1679                  local.tee $6
1680                  i32.const 1
1681                  i32.ge_s
1682                  if ;; label = @8
1683                    block ;; label = @9
1684                      i32.const 1
1685                      local.set $5
1686                      br 2 (;@7;)
1687                    end
1688                  end
1689                  i32.const 2
1690                  local.set $5
1691                  br 1 (;@6;)
1692                end
1693                i32.const 1
1694                local.set $2
1695                br 1 (;@5;)
1696              end
1697              i32.const 1
1698              local.set $2
1699              br 0 (;@5;)
1700            end
1701          end
1702        end
1703      end
1704      i32.const 1049212
1705      local.get $0
1706      call $3
1707      unreachable
1708    end
1709    i32.const 1049196
1710    local.get $2
1711    call $3
1712    unreachable
1713  )
1714  (table $0 (;0;) 4 4 funcref)
1715  (memory $0 (;0;) 17)
1716  (global $global$0 (;0;) (mut i32) i32.const 1048576)
1717  (global $global$1 (;1;) i32 i32.const 1049244)
1718  (global $global$2 (;2;) i32 i32.const 1049244)
1719  (export "memory" (memory $0))
1720  (export "__heap_base" (global $global$1))
1721  (export "__data_end" (global $global$2))
1722  (export "run_fannkuch" (func $10))
1723  (elem (;0;) (i32.const 1) func $4 $7 $8)
1724  (data (;0;) (i32.const 1048576) "src/lib.rs\00\00\00\00\00\00attempt to divide by zero\00\00\00\00\00\00\00attempt to divide with overflow\00index out of bounds: the len is  but the index is 00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899called `Option::unwrap()` on a `None` valuesrc/libcore/option.rssrc/lib.rs")
1725  (data (;1;) (i32.const 1048982) "\10\00\0a\00\00\00%\00\00\00\1d\00\00\00\10\00\10\00\19\00\00\00\00\00\10\00\0a\00\00\00&\00\00\00\15\00\00\000\00\10\00\1f\00\00\00\00\00\10\00\0a\00\00\00&\00\00\00\15\00\00\00\00\00\10\00\0a\00\00\00.\00\00\00\15\00\00\00\00\00\10\00\0a\00\00\000\00\00\00\15\00\00\00\00\00\10\00\0a\00\00\00-\00\00\00\11\00\00\00\00\00\10\00\0a\00\00\00E\00\00\00\17\00\00\00\00\00\10\00\0a\00\00\00q\00\00\00\22\00\00\00\00\00\10\00\0a\00\00\00s\00\00\00\11\00\00\00P\00\10\00 \00\00\00p\00\10\00\12\00\00\00\02\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00J\01\10\00+\00\00\00u\01\10\00\15\00\00\00Y\01\00\00\15\00\00\00\8a\01\10\00\0a\00\00\00\08\00\00\00\09\00\00\00\8a\01\10\00\0a\00\00\00\0a\00\00\00\14")
1726)
1727