Ticket #1421: PrimOps.raw_s

File PrimOps.raw_s, 71.2 KB (added by maeder@…, 8 years ago)
Line 
1        .file   "ghc23253_0.hc"
2        .text
3        .p2align 2,,3
4        .type   mknod, @function
5mknod:
6        subl    $12, %esp
7        pushl   24(%esp)
8        pushl   24(%esp)
9        pushl   24(%esp)
10        pushl   $2
11        call    _xmknod
12        addl    $28, %esp
13        ret
14        .size   mknod, .-mknod
15        .p2align 2,,3
16        .type   _uname, @function
17_uname:
18        jmp     _nuname
19        .size   _uname, .-_uname
20        .p2align 2,,3
21        .type   uname, @function
22uname:
23        jmp     _nuname
24        .size   uname, .-uname
25        .p2align 2,,3
26.globl newByteArrayzh_fast
27        .type   newByteArrayzh_fast, @function
28newByteArrayzh_fast:
29        subl    $12, %esp
30/APP
31        --- BEGIN ---
32/NO_APP
33        call    __DISCARD__
34        movl    %ebx, %edx
35        movl    104(%ebx), %eax
36        movl    8(%eax), %eax
37        testl   %eax, %eax
38        je      .L8
39        movl    alloc_blocks, %eax
40        cmpl    alloc_blocks_lim, %eax
41        jb      .L10
42.L8:
43        movl    $255, 32(%edx)
44        movl    $newByteArrayzh_fast, 36(%ebx)
45        movl    $0, 112(%ebx)
46        call    __DISCARD__
47        movl    $stg_gc_gen_hp, %eax
48        jmp     *%eax
49        .p2align 2,,3
50.L10:
51        leal    3(%esi), %eax
52        shrl    $2, %eax
53        movl    %eax, 8(%esp)
54        subl    $8, %esp
55        movl    16(%esp), %eax
56        addl    $2, %eax
57        pushl   %eax
58        leal    -8(%ebx), %eax
59        pushl   %eax
60        call    allocateLocal
61        addl    $16, %esp
62        movl    $stg_ARR_WORDS_info, (%eax)
63        movl    8(%esp), %edx
64        movl    %edx, 4(%eax)
65        movl    %eax, %esi
66        call    __DISCARD__
67        movl    (%ebp), %eax
68        jmp     *%eax
69        .size   newByteArrayzh_fast, .-newByteArrayzh_fast
70        .p2align 2,,3
71.globl newPinnedByteArrayzh_fast
72        .type   newPinnedByteArrayzh_fast, @function
73newPinnedByteArrayzh_fast:
74        subl    $12, %esp
75/APP
76        --- BEGIN ---
77/NO_APP
78        call    __DISCARD__
79        movl    %ebx, %edx
80        movl    104(%ebx), %eax
81        movl    8(%eax), %ecx
82        testl   %ecx, %ecx
83        je      .L15
84        movl    alloc_blocks, %eax
85        cmpl    alloc_blocks_lim, %eax
86        jae     .L15
87.L17:
88        leal    3(%esi), %eax
89        shrl    $2, %eax
90        movl    %eax, 8(%esp)
91.L19:
92        subl    $12, %esp
93        movl    20(%esp), %eax
94        addl    $2, %eax
95        pushl   %eax
96        call    allocatePinned
97        addl    $16, %esp
98.L20:
99        movl    $stg_ARR_WORDS_info, (%eax)
100        movl    8(%esp), %edx
101        movl    %edx, 4(%eax)
102        movl    %eax, %esi
103        call    __DISCARD__
104        movl    (%ebp), %eax
105        jmp     *%eax
106        .p2align 2,,3
107.L15:
108        movl    $255, 32(%edx)
109        movl    $newPinnedByteArrayzh_fast, 36(%ebx)
110        movl    $0, 112(%ebx)
111        call    __DISCARD__
112        movl    $stg_gc_gen_hp, %eax
113        jmp     *%eax
114        .size   newPinnedByteArrayzh_fast, .-newPinnedByteArrayzh_fast
115        .p2align 2,,3
116.globl newArrayzh_fast
117        .type   newArrayzh_fast, @function
118newArrayzh_fast:
119        subl    $28, %esp
120/APP
121        --- BEGIN ---
122/NO_APP
123        call    __DISCARD__
124        movl    %esi, 20(%esp)
125        movl    %ebx, %edx
126        movl    104(%ebx), %eax
127        movl    8(%eax), %eax
128        testl   %eax, %eax
129        je      .L23
130        movl    alloc_blocks, %eax
131        cmpl    alloc_blocks_lim, %eax
132        jb      .L25
133.L23:
134        movl    $253, 32(%edx)
135        movl    $newArrayzh_fast, 36(%ebx)
136        movl    $0, 112(%ebx)
137        call    __DISCARD__
138        movl    $stg_gc_gen_hp, %eax
139        jmp     *%eax
140        .p2align 2,,3
141.L25:
142        movl    20(%esp), %eax
143        addl    $2, %eax
144        movl    %eax, 24(%esp)
145        subl    $8, %esp
146        pushl   %eax
147        leal    -8(%ebx), %eax
148        pushl   %eax
149        call    allocateLocal
150        addl    $16, %esp
151        movl    %eax, 16(%esp)
152        movl    $stg_MUT_ARR_PTRS_DIRTY_info, (%eax)
153        movl    20(%esp), %edx
154        movl    %edx, 4(%eax)
155        movl    4(%ebx), %ecx
156        movl    %ecx, 12(%esp)
157        movl    16(%esp), %eax
158        addl    $8, %eax
159        movl    24(%esp), %edx
160        movl    16(%esp), %ecx
161        leal    (%ecx,%edx,4), %edx
162        movl    %edx, 8(%esp)
163        cmpl    %edx, %eax
164        jae     .L28
165.L27:
166        .p2align 2,,3
167.L31:
168        movl    12(%esp), %ecx
169        movl    %ecx, (%eax)
170        addl    $4, %eax
171.L29:
172        cmpl    8(%esp), %eax
173        jb      .L31
174.L28:
175        movl    16(%esp), %esi
176        call    __DISCARD__
177        movl    (%ebp), %eax
178        jmp     *%eax
179        .size   newArrayzh_fast, .-newArrayzh_fast
180        .p2align 2,,3
181.globl unsafeThawArrayzh_fast
182        .type   unsafeThawArrayzh_fast, @function
183unsafeThawArrayzh_fast:
184        subl    $12, %esp
185/APP
186        --- BEGIN ---
187/NO_APP
188        call    __DISCARD__
189        cmpl    $stg_MUT_ARR_PTRS_FROZEN0_info, (%esi)
190        je      .L40
191.L34:
192        movl    $stg_MUT_ARR_PTRS_DIRTY_info, (%esi)
193        movl    %esi, 4(%esp)
194        movl    %esi, %eax
195        andl    $1044480, %eax
196        shrl    $7, %eax
197        movl    %esi, %edx
198        andl    $-1048576, %edx
199        orl     %edx, %eax
200        movl    16(%eax), %eax
201        sall    $2, %eax
202        movl    %eax, (%esp)
203        movl    212(%ebx), %edx
204        addl    %edx, %eax
205        movl    %eax, (%esp)
206        movl    (%eax), %ecx
207        movl    %ecx, 8(%esp)
208        movl    %ecx, %edx
209        addl    $4, %edx
210        movl    (%ecx), %eax
211        addl    $4096, %eax
212        cmpl    %eax, 4(%ecx)
213        jae     .L41
214.L37:
215        movl    (%edx), %eax
216        movl    4(%esp), %ecx
217        movl    %ecx, (%eax)
218        addl    $4, %eax
219        movl    %eax, (%edx)
220        call    __DISCARD__
221        movl    (%ebp), %eax
222        jmp     *%eax
223.L38:
224        .p2align 2,,3
225.L41:
226        call    allocBlock_lock
227        movl    8(%esp), %edx
228        movl    %edx, 8(%eax)
229        movl    (%esp), %ecx
230        movl    %eax, (%ecx)
231        leal    4(%eax), %edx
232        jmp     .L37
233        .p2align 2,,3
234.L40:
235        movl    $stg_MUT_ARR_PTRS_DIRTY_info, (%esi)
236        call    __DISCARD__
237        movl    (%ebp), %eax
238        jmp     *%eax
239        .size   unsafeThawArrayzh_fast, .-unsafeThawArrayzh_fast
240        .p2align 2,,3
241.globl newMutVarzh_fast
242        .type   newMutVarzh_fast, @function
243newMutVarzh_fast:
244        subl    $12, %esp
245/APP
246        --- BEGIN ---
247/NO_APP
248        call    __DISCARD__
249        leal    8(%edi), %edx
250        movl    %edx, %edi
251        cmpl    92(%ebx), %edx
252        ja      .L43
253        leal    -4(%edx), %eax
254        movl    $stg_MUT_VAR_DIRTY_info, -4(%edx)
255        movl    %esi, 4(%eax)
256        movl    %eax, %esi
257        call    __DISCARD__
258        movl    (%ebp), %eax
259        jmp     *%eax
260        .p2align 2,,3
261.L43:
262        movl    $8, 112(%ebx)
263        movl    $254, 32(%ebx)
264        movl    $newMutVarzh_fast, 36(%ebx)
265        call    __DISCARD__
266        movl    $stg_gc_gen, %eax
267        jmp     *%eax
268        .size   newMutVarzh_fast, .-newMutVarzh_fast
269        .p2align 2,,3
270.globl atomicModifyMutVarzh_fast
271        .type   atomicModifyMutVarzh_fast, @function
272atomicModifyMutVarzh_fast:
273        subl    $12, %esp
274/APP
275        --- BEGIN ---
276/NO_APP
277        call    __DISCARD__
278        leal    40(%edi), %eax
279        movl    %eax, 4(%esp)
280        movl    %eax, %edi
281        cmpl    92(%ebx), %edi
282        ja      .L48
283        movl    4(%esi), %edx
284        movl    %edi, %ecx
285        subl    $12, %ecx
286        movl    %ecx, 8(%esp)
287        movl    $stg_ap_2_upd_info, -12(%edi)
288        movl    4(%ebx), %eax
289        movl    %eax, 8(%ecx)
290        movl    %edx, 12(%ecx)
291        movl    4(%esp), %eax
292        subl    $24, %eax
293        movl    4(%esp), %edx
294        movl    $stg_sel_0_upd_info, -24(%edx)
295        movl    %ecx, 8(%eax)
296        movl    %eax, 4(%esi)
297        subl    $8, %esp
298        pushl   %esi
299        pushl   %ebx
300        call    dirty_MUT_VAR
301        addl    $16, %esp
302        movl    4(%esp), %eax
303        subl    $36, %eax
304        movl    4(%esp), %ecx
305        movl    $stg_sel_1_upd_info, -36(%ecx)
306        movl    8(%esp), %edx
307        movl    %edx, 8(%eax)
308        movl    %eax, %esi
309        call    __DISCARD__
310        movl    (%ebp), %eax
311        jmp     *%eax
312        .p2align 2,,3
313.L48:
314        movl    $40, 112(%ebx)
315        movl    $252, 32(%ebx)
316        movl    $atomicModifyMutVarzh_fast, 36(%ebx)
317        call    __DISCARD__
318        movl    $stg_gc_gen, %eax
319        jmp     *%eax
320        .size   atomicModifyMutVarzh_fast, .-atomicModifyMutVarzh_fast
321.globl stg_weak_msg
322        .data
323        .type   stg_weak_msg, @object
324        .size   stg_weak_msg, 24
325stg_weak_msg:
326        .string "New weak pointer at %p\n"
327        .text
328        .p2align 2,,3
329.globl mkWeakzh_fast
330        .type   mkWeakzh_fast, @function
331mkWeakzh_fast:
332        subl    $12, %esp
333/APP
334        --- BEGIN ---
335/NO_APP
336        call    __DISCARD__
337        movl    8(%ebx), %edx
338        testl   %edx, %edx
339        jne     .L53
340.L54:
341        movl    $stg_NO_FINALIZER_closure, 8(%ebx)
342.L53:
343        leal    20(%edi), %eax
344        movl    %eax, %edi
345        cmpl    92(%ebx), %eax
346        ja      .L55
347        leal    -16(%eax), %edx
348        movl    $stg_WEAK_info, -16(%eax)
349        movl    %esi, 4(%edx)
350        movl    4(%ebx), %eax
351        movl    %eax, 8(%edx)
352        movl    8(%ebx), %eax
353        movl    %eax, 12(%edx)
354        movl    weak_ptr_list, %eax
355        movl    %eax, 16(%edx)
356        movl    %edx, weak_ptr_list
357        movl    %edx, %esi
358        call    __DISCARD__
359        movl    (%ebp), %eax
360        jmp     *%eax
361        .p2align 2,,3
362.L55:
363        movl    $20, 112(%ebx)
364        movl    $248, 32(%ebx)
365        movl    $mkWeakzh_fast, 36(%ebx)
366        call    __DISCARD__
367        movl    $stg_gc_gen, %eax
368        jmp     *%eax
369        .size   mkWeakzh_fast, .-mkWeakzh_fast
370        .p2align 2,,3
371.globl finalizzeWeakzh_fast
372        .type   finalizzeWeakzh_fast, @function
373finalizzeWeakzh_fast:
374        subl    $12, %esp
375/APP
376        --- BEGIN ---
377/NO_APP
378        call    __DISCARD__
379        cmpl    $stg_DEAD_WEAK_info, (%esi)
380        je      .L66
381.L60:
382        movl    $stg_DEAD_WEAK_info, (%esi)
383        movl    12(%esi), %ecx
384        movl    16(%esi), %eax
385        movl    %eax, 4(%esi)
386        cmpl    $stg_NO_FINALIZER_closure, %ecx
387        je      .L63
388        movl    $1, %esi
389        movl    %ecx, -4(%ebp)
390        subl    $4, %ebp
391        call    __DISCARD__
392        movl    4(%ebp), %eax
393        jmp     *%eax
394        .p2align 2,,3
395.L63:
396        xorl    %esi, %esi
397        movl    $stg_NO_FINALIZER_closure, -4(%ebp)
398        subl    $4, %ebp
399        call    __DISCARD__
400        movl    4(%ebp), %eax
401        jmp     *%eax
402.L61:
403        .p2align 2,,3
404.L66:
405        xorl    %esi, %esi
406        movl    $stg_NO_FINALIZER_closure, -4(%ebp)
407        subl    $4, %ebp
408        call    __DISCARD__
409        movl    4(%ebp), %eax
410        jmp     *%eax
411        .size   finalizzeWeakzh_fast, .-finalizzeWeakzh_fast
412        .p2align 2,,3
413.globl deRefWeakzh_fast
414        .type   deRefWeakzh_fast, @function
415deRefWeakzh_fast:
416        subl    $12, %esp
417/APP
418        --- BEGIN ---
419/NO_APP
420        call    __DISCARD__
421        movl    %esi, %eax
422        cmpl    $stg_WEAK_info, (%esi)
423        je      .L68
424        xorl    %edx, %edx
425.L70:
426        movl    %edx, %esi
427        movl    %eax, -4(%ebp)
428        subl    $4, %ebp
429        call    __DISCARD__
430        jmp     *4(%ebp)
431        .p2align 2,,3
432.L68:
433        movl    8(%esi), %eax
434        movl    $1, %edx
435        movl    %edx, %esi
436        movl    %eax, -4(%ebp)
437        subl    $4, %ebp
438        call    __DISCARD__
439        jmp     *4(%ebp)
440        .size   deRefWeakzh_fast, .-deRefWeakzh_fast
441        .p2align 2,,3
442.globl int2Integerzh_fast
443        .type   int2Integerzh_fast, @function
444int2Integerzh_fast:
445        subl    $12, %esp
446/APP
447        --- BEGIN ---
448/NO_APP
449        call    __DISCARD__
450        movl    %esi, %ecx
451        leal    12(%edi), %eax
452        movl    %eax, %edi
453        cmpl    92(%ebx), %eax
454        ja      .L73
455        leal    -8(%eax), %edx
456        movl    $stg_ARR_WORDS_info, -8(%eax)
457        movl    $1, 4(%edx)
458        cmpl    $0, %esi
459        jl      .L75
460        jne     .L77
461        xorl    %eax, %eax
462.L79:
463        movl    %eax, %esi
464        movl    %edx, -4(%ebp)
465        subl    $4, %ebp
466        call    __DISCARD__
467        movl    4(%ebp), %eax
468        jmp     *%eax
469        .p2align 2,,3
470.L77:
471        movl    %esi, (%edi)
472        movl    $1, %eax
473        jmp     .L79
474        .p2align 2,,3
475.L73:
476        movl    $12, 112(%ebx)
477        movl    $255, 32(%ebx)
478        movl    $int2Integerzh_fast, 36(%ebx)
479        call    __DISCARD__
480        movl    $stg_gc_gen, %eax
481        jmp     *%eax
482        .p2align 2,,3
483.L75:
484        negl    %ecx
485        movl    %ecx, (%edi)
486        movl    $-1, %eax
487        jmp     .L79
488        .size   int2Integerzh_fast, .-int2Integerzh_fast
489        .p2align 2,,3
490.globl word2Integerzh_fast
491        .type   word2Integerzh_fast, @function
492word2Integerzh_fast:
493        subl    $12, %esp
494/APP
495        --- BEGIN ---
496/NO_APP
497        call    __DISCARD__
498        leal    12(%edi), %eax
499        movl    %eax, %edi
500        cmpl    92(%ebx), %eax
501        ja      .L83
502        leal    -8(%eax), %edx
503        movl    $stg_ARR_WORDS_info, -8(%eax)
504        movl    $1, 4(%edx)
505        testl   %esi, %esi
506        jne     .L85
507        xorl    %eax, %eax
508.L87:
509        movl    %eax, %esi
510        movl    %edx, -4(%ebp)
511        subl    $4, %ebp
512        call    __DISCARD__
513        movl    4(%ebp), %eax
514        jmp     *%eax
515        .p2align 2,,3
516.L85:
517        movl    %esi, (%edi)
518        movl    $1, %eax
519        jmp     .L87
520        .p2align 2,,3
521.L83:
522        movl    $12, 112(%ebx)
523        movl    $255, 32(%ebx)
524        movl    $word2Integerzh_fast, 36(%ebx)
525        call    __DISCARD__
526        movl    $stg_gc_gen, %eax
527        jmp     *%eax
528        .size   word2Integerzh_fast, .-word2Integerzh_fast
529        .p2align 2,,3
530.globl int64ToIntegerzh_fast
531        .type   int64ToIntegerzh_fast, @function
532int64ToIntegerzh_fast:
533        subl    $44, %esp
534/APP
535        --- BEGIN ---
536/NO_APP
537        call    __DISCARD__
538        movl    %ebx, 20(%esp)
539        movl    72(%ebx), %eax
540        movl    76(%ebx), %edx
541        movl    %eax, 8(%esp)
542        movl    %edx, 12(%esp)
543        cmpl    $0, %edx
544        jle     .L111
545.L91:
546        movl    $2, 28(%esp)
547        movl    $8, 36(%esp)
548.L96:
549        movl    36(%esp), %ecx
550        leal    8(%edi,%ecx), %ecx
551        movl    %ecx, 4(%esp)
552        movl    %ecx, %edi
553        movl    20(%esp), %eax
554        cmpl    92(%eax), %ecx
555        ja      .L97
556        subl    36(%esp), %ecx
557        movl    %ecx, 4(%esp)
558        subl    $4, %ecx
559        movl    %ecx, 32(%esp)
560        movl    4(%esp), %edx
561        movl    $stg_ARR_WORDS_info, -4(%edx)
562        movl    28(%esp), %eax
563        movl    %eax, 4(%ecx)
564        movl    12(%esp), %eax
565        testl   %eax, %eax
566        js      .L99
567        movl    $0, 24(%esp)
568.L101:
569        cmpl    $2, 28(%esp)
570        je      .L103
571        movl    12(%esp), %ecx
572        orl     8(%esp), %ecx
573        jne     .L105
574        xorl    %eax, %eax
575.L107:
576        movl    24(%esp), %ecx
577        testl   %ecx, %ecx
578        je      .L108
579.L109:
580        negl    %eax
581.L108:
582        movl    %eax, %esi
583        movl    32(%esp), %edx
584        movl    %edx, -4(%ebp)
585        subl    $4, %ebp
586        call    __DISCARD__
587        movl    4(%ebp), %eax
588        jmp     *%eax
589        .p2align 2,,3
590.L103:
591        movl    8(%esp), %edx
592        movl    %edx, -4(%edi)
593        movl    8(%esp), %eax
594        movl    12(%esp), %edx
595        movl    %edx, %eax
596        xorl    %edx, %edx
597        movl    %eax, (%edi)
598        movl    $2, %eax
599        jmp     .L107
600        .p2align 2,,3
601.L97:
602        movl    36(%esp), %eax
603        addl    $8, %eax
604        movl    20(%esp), %edx
605        movl    %eax, 112(%edx)
606        movl    $255, 32(%ebx)
607        movl    $int64ToIntegerzh_fast, 36(%ebx)
608        call    __DISCARD__
609        movl    $stg_gc_gen, %eax
610        jmp     *%eax
611        .p2align 2,,3
612.L105:
613        movl    8(%esp), %eax
614        movl    %eax, (%edi)
615        movl    $1, %eax
616        jmp     .L107
617        .p2align 2,,3
618.L111:
619        cmpl    $-1, 12(%esp)
620        jl      .L91
621        jle     .L112
622.L95:
623        movl    $1, 28(%esp)
624        movl    $4, 36(%esp)
625        jmp     .L96
626        .p2align 2,,3
627.L99:
628        negl    8(%esp)
629        adcl    $0, 12(%esp)
630        negl    12(%esp)
631        movl    $1, 24(%esp)
632        jmp     .L101
633.L112:
634        cmpl    $0, %eax
635        jbe     .L91
636        jmp     .L95
637        .size   int64ToIntegerzh_fast, .-int64ToIntegerzh_fast
638        .p2align 2,,3
639.globl word64ToIntegerzh_fast
640        .type   word64ToIntegerzh_fast, @function
641word64ToIntegerzh_fast:
642        subl    $44, %esp
643/APP
644        --- BEGIN ---
645/NO_APP
646        call    __DISCARD__
647        movl    %ebx, 24(%esp)
648        movl    72(%ebx), %eax
649        movl    76(%ebx), %edx
650        movl    %eax, 16(%esp)
651        movl    %edx, 20(%esp)
652        cmpl    $0, %edx
653        jbe     .L128
654        movl    $2, 28(%esp)
655        movl    $8, 36(%esp)
656.L117:
657        movl    36(%esp), %ecx
658        leal    8(%edi,%ecx), %ecx
659        movl    %ecx, 12(%esp)
660        movl    %ecx, %edi
661        movl    24(%esp), %eax
662        cmpl    92(%eax), %ecx
663        ja      .L118
664        subl    36(%esp), %ecx
665        movl    %ecx, 12(%esp)
666        subl    $4, %ecx
667        movl    %ecx, 32(%esp)
668        movl    12(%esp), %edx
669        movl    $stg_ARR_WORDS_info, -4(%edx)
670        movl    28(%esp), %eax
671        movl    %eax, 4(%ecx)
672        cmpl    $0, 20(%esp)
673        jbe     .L129
674.L120:
675        movl    16(%esp), %edx
676        movl    %edx, -4(%edi)
677        movl    16(%esp), %eax
678        movl    20(%esp), %edx
679        movl    %edx, %eax
680        xorl    %edx, %edx
681        movl    %eax, (%edi)
682        movl    $2, %eax
683.L125:
684        movl    %eax, %esi
685        movl    32(%esp), %edx
686        movl    %edx, -4(%ebp)
687        subl    $4, %ebp
688        call    __DISCARD__
689        movl    4(%ebp), %eax
690        jmp     *%eax
691        .p2align 2,,3
692.L128:
693        movl    $1, 28(%esp)
694        movl    $4, 36(%esp)
695        jmp     .L117
696        .p2align 2,,3
697.L129:
698        movl    20(%esp), %edx
699        orl     16(%esp), %edx
700        je      .L130
701.L123:
702        movl    16(%esp), %eax
703        movl    %eax, (%edi)
704        movl    $1, %eax
705        jmp     .L125
706        .p2align 2,,3
707.L118:
708        movl    36(%esp), %eax
709        addl    $8, %eax
710        movl    24(%esp), %ecx
711        movl    %eax, 112(%ecx)
712        movl    $255, 32(%ebx)
713        movl    $word64ToIntegerzh_fast, 36(%ebx)
714        call    __DISCARD__
715        movl    $stg_gc_gen, %eax
716        jmp     *%eax
717        .p2align 2,,3
718.L130:
719        xorl    %eax, %eax
720        jmp     .L125
721        .size   word64ToIntegerzh_fast, .-word64ToIntegerzh_fast
722        .p2align 2,,3
723.globl plusIntegerzh_fast
724        .type   plusIntegerzh_fast, @function
725plusIntegerzh_fast:
726        subl    $12, %esp
727/APP
728        --- BEGIN ---
729/NO_APP
730        call    __DISCARD__
731        movl    %ebx, %ecx
732        movl    104(%ebx), %eax
733        movl    8(%eax), %eax
734        testl   %eax, %eax
735        je      .L132
736        movl    alloc_blocks, %eax
737        cmpl    alloc_blocks_lim, %eax
738        jb      .L134
739.L132:
740        movl    $245, 32(%ecx)
741        movl    $plusIntegerzh_fast, 36(%ebx)
742        movl    $0, 112(%ebx)
743        call    __DISCARD__
744        movl    $stg_gc_gen_hp, %eax
745        jmp     *%eax
746        .p2align 2,,3
747.L134:
748        movl    4(%ebx), %edx
749        movl    8(%ebx), %eax
750        movl    %eax, 8(%esp)
751        movl    12(%ebx), %ecx
752        movl    4(%edx), %eax
753        movl    %eax, mp_tmp1
754        movl    %esi, mp_tmp1+4
755        addl    $8, %edx
756        movl    %edx, mp_tmp1+8
757        movl    4(%ecx), %eax
758        movl    %eax, mp_tmp2
759        movl    8(%esp), %eax
760        movl    %eax, mp_tmp2+4
761        addl    $8, %ecx
762        movl    %ecx, mp_tmp2+8
763        subl    $12, %esp
764        pushl   $mp_result1
765        call    __gmpz_init
766        addl    $12, %esp
767        pushl   $mp_tmp2
768        pushl   $mp_tmp1
769        pushl   $mp_result1
770        call    __gmpz_add
771        addl    $16, %esp
772        movl    mp_result1+4, %esi
773        movl    mp_result1+8, %eax
774        subl    $8, %eax
775        movl    %eax, -4(%ebp)
776        subl    $4, %ebp
777        call    __DISCARD__
778        movl    4(%ebp), %eax
779        jmp     *%eax
780        .size   plusIntegerzh_fast, .-plusIntegerzh_fast
781        .p2align 2,,3
782.globl minusIntegerzh_fast
783        .type   minusIntegerzh_fast, @function
784minusIntegerzh_fast:
785        subl    $12, %esp
786/APP
787        --- BEGIN ---
788/NO_APP
789        call    __DISCARD__
790        movl    %ebx, %ecx
791        movl    104(%ebx), %eax
792        movl    8(%eax), %eax
793        testl   %eax, %eax
794        je      .L138
795        movl    alloc_blocks, %eax
796        cmpl    alloc_blocks_lim, %eax
797        jb      .L140
798.L138:
799        movl    $245, 32(%ecx)
800        movl    $minusIntegerzh_fast, 36(%ebx)
801        movl    $0, 112(%ebx)
802        call    __DISCARD__
803        movl    $stg_gc_gen_hp, %eax
804        jmp     *%eax
805        .p2align 2,,3
806.L140:
807        movl    4(%ebx), %edx
808        movl    8(%ebx), %eax
809        movl    %eax, 8(%esp)
810        movl    12(%ebx), %ecx
811        movl    4(%edx), %eax
812        movl    %eax, mp_tmp1
813        movl    %esi, mp_tmp1+4
814        addl    $8, %edx
815        movl    %edx, mp_tmp1+8
816        movl    4(%ecx), %eax
817        movl    %eax, mp_tmp2
818        movl    8(%esp), %eax
819        movl    %eax, mp_tmp2+4
820        addl    $8, %ecx
821        movl    %ecx, mp_tmp2+8
822        subl    $12, %esp
823        pushl   $mp_result1
824        call    __gmpz_init
825        addl    $12, %esp
826        pushl   $mp_tmp2
827        pushl   $mp_tmp1
828        pushl   $mp_result1
829        call    __gmpz_sub
830        addl    $16, %esp
831        movl    mp_result1+4, %esi
832        movl    mp_result1+8, %eax
833        subl    $8, %eax
834        movl    %eax, -4(%ebp)
835        subl    $4, %ebp
836        call    __DISCARD__
837        movl    4(%ebp), %eax
838        jmp     *%eax
839        .size   minusIntegerzh_fast, .-minusIntegerzh_fast
840        .p2align 2,,3
841.globl timesIntegerzh_fast
842        .type   timesIntegerzh_fast, @function
843timesIntegerzh_fast:
844        subl    $12, %esp
845/APP
846        --- BEGIN ---
847/NO_APP
848        call    __DISCARD__
849        movl    %ebx, %ecx
850        movl    104(%ebx), %eax
851        movl    8(%eax), %eax
852        testl   %eax, %eax
853        je      .L144
854        movl    alloc_blocks, %eax
855        cmpl    alloc_blocks_lim, %eax
856        jb      .L146
857.L144:
858        movl    $245, 32(%ecx)
859        movl    $timesIntegerzh_fast, 36(%ebx)
860        movl    $0, 112(%ebx)
861        call    __DISCARD__
862        movl    $stg_gc_gen_hp, %eax
863        jmp     *%eax
864        .p2align 2,,3
865.L146:
866        movl    4(%ebx), %edx
867        movl    8(%ebx), %eax
868        movl    %eax, 8(%esp)
869        movl    12(%ebx), %ecx
870        movl    4(%edx), %eax
871        movl    %eax, mp_tmp1
872        movl    %esi, mp_tmp1+4
873        addl    $8, %edx
874        movl    %edx, mp_tmp1+8
875        movl    4(%ecx), %eax
876        movl    %eax, mp_tmp2
877        movl    8(%esp), %eax
878        movl    %eax, mp_tmp2+4
879        addl    $8, %ecx
880        movl    %ecx, mp_tmp2+8
881        subl    $12, %esp
882        pushl   $mp_result1
883        call    __gmpz_init
884        addl    $12, %esp
885        pushl   $mp_tmp2
886        pushl   $mp_tmp1
887        pushl   $mp_result1
888        call    __gmpz_mul
889        addl    $16, %esp
890        movl    mp_result1+4, %esi
891        movl    mp_result1+8, %eax
892        subl    $8, %eax
893        movl    %eax, -4(%ebp)
894        subl    $4, %ebp
895        call    __DISCARD__
896        movl    4(%ebp), %eax
897        jmp     *%eax
898        .size   timesIntegerzh_fast, .-timesIntegerzh_fast
899        .p2align 2,,3
900.globl gcdIntegerzh_fast
901        .type   gcdIntegerzh_fast, @function
902gcdIntegerzh_fast:
903        subl    $12, %esp
904/APP
905        --- BEGIN ---
906/NO_APP
907        call    __DISCARD__
908        movl    %ebx, %ecx
909        movl    104(%ebx), %eax
910        movl    8(%eax), %eax
911        testl   %eax, %eax
912        je      .L150
913        movl    alloc_blocks, %eax
914        cmpl    alloc_blocks_lim, %eax
915        jb      .L152
916.L150:
917        movl    $245, 32(%ecx)
918        movl    $gcdIntegerzh_fast, 36(%ebx)
919        movl    $0, 112(%ebx)
920        call    __DISCARD__
921        movl    $stg_gc_gen_hp, %eax
922        jmp     *%eax
923        .p2align 2,,3
924.L152:
925        movl    4(%ebx), %edx
926        movl    8(%ebx), %eax
927        movl    %eax, 8(%esp)
928        movl    12(%ebx), %ecx
929        movl    4(%edx), %eax
930        movl    %eax, mp_tmp1
931        movl    %esi, mp_tmp1+4
932        addl    $8, %edx
933        movl    %edx, mp_tmp1+8
934        movl    4(%ecx), %eax
935        movl    %eax, mp_tmp2
936        movl    8(%esp), %eax
937        movl    %eax, mp_tmp2+4
938        addl    $8, %ecx
939        movl    %ecx, mp_tmp2+8
940        subl    $12, %esp
941        pushl   $mp_result1
942        call    __gmpz_init
943        addl    $12, %esp
944        pushl   $mp_tmp2
945        pushl   $mp_tmp1
946        pushl   $mp_result1
947        call    __gmpz_gcd
948        addl    $16, %esp
949        movl    mp_result1+4, %esi
950        movl    mp_result1+8, %eax
951        subl    $8, %eax
952        movl    %eax, -4(%ebp)
953        subl    $4, %ebp
954        call    __DISCARD__
955        movl    4(%ebp), %eax
956        jmp     *%eax
957        .size   gcdIntegerzh_fast, .-gcdIntegerzh_fast
958        .p2align 2,,3
959.globl quotIntegerzh_fast
960        .type   quotIntegerzh_fast, @function
961quotIntegerzh_fast:
962        subl    $12, %esp
963/APP
964        --- BEGIN ---
965/NO_APP
966        call    __DISCARD__
967        movl    %ebx, %ecx
968        movl    104(%ebx), %eax
969        movl    8(%eax), %eax
970        testl   %eax, %eax
971        je      .L156
972        movl    alloc_blocks, %eax
973        cmpl    alloc_blocks_lim, %eax
974        jb      .L158
975.L156:
976        movl    $245, 32(%ecx)
977        movl    $quotIntegerzh_fast, 36(%ebx)
978        movl    $0, 112(%ebx)
979        call    __DISCARD__
980        movl    $stg_gc_gen_hp, %eax
981        jmp     *%eax
982        .p2align 2,,3
983.L158:
984        movl    4(%ebx), %edx
985        movl    8(%ebx), %eax
986        movl    %eax, 8(%esp)
987        movl    12(%ebx), %ecx
988        movl    4(%edx), %eax
989        movl    %eax, mp_tmp1
990        movl    %esi, mp_tmp1+4
991        addl    $8, %edx
992        movl    %edx, mp_tmp1+8
993        movl    4(%ecx), %eax
994        movl    %eax, mp_tmp2
995        movl    8(%esp), %eax
996        movl    %eax, mp_tmp2+4
997        addl    $8, %ecx
998        movl    %ecx, mp_tmp2+8
999        subl    $12, %esp
1000        pushl   $mp_result1
1001        call    __gmpz_init
1002        addl    $12, %esp
1003        pushl   $mp_tmp2
1004        pushl   $mp_tmp1
1005        pushl   $mp_result1
1006        call    __gmpz_tdiv_q
1007        addl    $16, %esp
1008        movl    mp_result1+4, %esi
1009        movl    mp_result1+8, %eax
1010        subl    $8, %eax
1011        movl    %eax, -4(%ebp)
1012        subl    $4, %ebp
1013        call    __DISCARD__
1014        movl    4(%ebp), %eax
1015        jmp     *%eax
1016        .size   quotIntegerzh_fast, .-quotIntegerzh_fast
1017        .p2align 2,,3
1018.globl remIntegerzh_fast
1019        .type   remIntegerzh_fast, @function
1020remIntegerzh_fast:
1021        subl    $12, %esp
1022/APP
1023        --- BEGIN ---
1024/NO_APP
1025        call    __DISCARD__
1026        movl    %ebx, %ecx
1027        movl    104(%ebx), %eax
1028        movl    8(%eax), %edx
1029        testl   %edx, %edx
1030        je      .L162
1031        movl    alloc_blocks, %eax
1032        cmpl    alloc_blocks_lim, %eax
1033        jb      .L164
1034.L162:
1035        movl    $245, 32(%ecx)
1036        movl    $remIntegerzh_fast, 36(%ebx)
1037        movl    $0, 112(%ebx)
1038        call    __DISCARD__
1039        movl    $stg_gc_gen_hp, %eax
1040        jmp     *%eax
1041        .p2align 2,,3
1042.L164:
1043        movl    4(%ebx), %edx
1044        movl    8(%ebx), %eax
1045        movl    %eax, 8(%esp)
1046        movl    12(%ebx), %ecx
1047        movl    4(%edx), %eax
1048        movl    %eax, mp_tmp1
1049        movl    %esi, mp_tmp1+4
1050        addl    $8, %edx
1051        movl    %edx, mp_tmp1+8
1052        movl    4(%ecx), %eax
1053        movl    %eax, mp_tmp2
1054        movl    8(%esp), %eax
1055        movl    %eax, mp_tmp2+4
1056        addl    $8, %ecx
1057        movl    %ecx, mp_tmp2+8
1058        subl    $12, %esp
1059        pushl   $mp_result1
1060        call    __gmpz_init
1061        addl    $12, %esp
1062        pushl   $mp_tmp2
1063        pushl   $mp_tmp1
1064        pushl   $mp_result1
1065        call    __gmpz_tdiv_r
1066        addl    $16, %esp
1067        movl    mp_result1+4, %esi
1068        movl    mp_result1+8, %eax
1069        subl    $8, %eax
1070        movl    %eax, -4(%ebp)
1071        subl    $4, %ebp
1072        call    __DISCARD__
1073        movl    4(%ebp), %eax
1074        jmp     *%eax
1075        .size   remIntegerzh_fast, .-remIntegerzh_fast
1076        .p2align 2,,3
1077.globl divExactIntegerzh_fast
1078        .type   divExactIntegerzh_fast, @function
1079divExactIntegerzh_fast:
1080        subl    $12, %esp
1081/APP
1082        --- BEGIN ---
1083/NO_APP
1084        call    __DISCARD__
1085        movl    %ebx, %ecx
1086        movl    104(%ebx), %eax
1087        movl    8(%eax), %eax
1088        testl   %eax, %eax
1089        je      .L168
1090        movl    alloc_blocks, %eax
1091        cmpl    alloc_blocks_lim, %eax
1092        jb      .L170
1093.L168:
1094        movl    $245, 32(%ecx)
1095        movl    $divExactIntegerzh_fast, 36(%ebx)
1096        movl    $0, 112(%ebx)
1097        call    __DISCARD__
1098        movl    $stg_gc_gen_hp, %eax
1099        jmp     *%eax
1100        .p2align 2,,3
1101.L170:
1102        movl    4(%ebx), %edx
1103        movl    8(%ebx), %eax
1104        movl    %eax, 8(%esp)
1105        movl    12(%ebx), %ecx
1106        movl    4(%edx), %eax
1107        movl    %eax, mp_tmp1
1108        movl    %esi, mp_tmp1+4
1109        addl    $8, %edx
1110        movl    %edx, mp_tmp1+8
1111        movl    4(%ecx), %eax
1112        movl    %eax, mp_tmp2
1113        movl    8(%esp), %eax
1114        movl    %eax, mp_tmp2+4
1115        addl    $8, %ecx
1116        movl    %ecx, mp_tmp2+8
1117        subl    $12, %esp
1118        pushl   $mp_result1
1119        call    __gmpz_init
1120        addl    $12, %esp
1121        pushl   $mp_tmp2
1122        pushl   $mp_tmp1
1123        pushl   $mp_result1
1124        call    __gmpz_divexact
1125        addl    $16, %esp
1126        movl    mp_result1+4, %esi
1127        movl    mp_result1+8, %eax
1128        subl    $8, %eax
1129        movl    %eax, -4(%ebp)
1130        subl    $4, %ebp
1131        call    __DISCARD__
1132        movl    4(%ebp), %eax
1133        jmp     *%eax
1134        .size   divExactIntegerzh_fast, .-divExactIntegerzh_fast
1135        .p2align 2,,3
1136.globl andIntegerzh_fast
1137        .type   andIntegerzh_fast, @function
1138andIntegerzh_fast:
1139        subl    $12, %esp
1140/APP
1141        --- BEGIN ---
1142/NO_APP
1143        call    __DISCARD__
1144        movl    %ebx, %ecx
1145        movl    104(%ebx), %eax
1146        movl    8(%eax), %eax
1147        testl   %eax, %eax
1148        je      .L174
1149        movl    alloc_blocks, %eax
1150        cmpl    alloc_blocks_lim, %eax
1151        jb      .L176
1152.L174:
1153        movl    $245, 32(%ecx)
1154        movl    $andIntegerzh_fast, 36(%ebx)
1155        movl    $0, 112(%ebx)
1156        call    __DISCARD__
1157        movl    $stg_gc_gen_hp, %eax
1158        jmp     *%eax
1159        .p2align 2,,3
1160.L176:
1161        movl    4(%ebx), %edx
1162        movl    8(%ebx), %eax
1163        movl    %eax, 8(%esp)
1164        movl    12(%ebx), %ecx
1165        movl    4(%edx), %eax
1166        movl    %eax, mp_tmp1
1167        movl    %esi, mp_tmp1+4
1168        addl    $8, %edx
1169        movl    %edx, mp_tmp1+8
1170        movl    4(%ecx), %eax
1171        movl    %eax, mp_tmp2
1172        movl    8(%esp), %eax
1173        movl    %eax, mp_tmp2+4
1174        addl    $8, %ecx
1175        movl    %ecx, mp_tmp2+8
1176        subl    $12, %esp
1177        pushl   $mp_result1
1178        call    __gmpz_init
1179        addl    $12, %esp
1180        pushl   $mp_tmp2
1181        pushl   $mp_tmp1
1182        pushl   $mp_result1
1183        call    __gmpz_and
1184        addl    $16, %esp
1185        movl    mp_result1+4, %esi
1186        movl    mp_result1+8, %eax
1187        subl    $8, %eax
1188        movl    %eax, -4(%ebp)
1189        subl    $4, %ebp
1190        call    __DISCARD__
1191        movl    4(%ebp), %eax
1192        jmp     *%eax
1193        .size   andIntegerzh_fast, .-andIntegerzh_fast
1194        .p2align 2,,3
1195.globl orIntegerzh_fast
1196        .type   orIntegerzh_fast, @function
1197orIntegerzh_fast:
1198        subl    $12, %esp
1199/APP
1200        --- BEGIN ---
1201/NO_APP
1202        call    __DISCARD__
1203        movl    %ebx, %ecx
1204        movl    104(%ebx), %eax
1205        movl    8(%eax), %eax
1206        testl   %eax, %eax
1207        je      .L180
1208        movl    alloc_blocks, %eax
1209        cmpl    alloc_blocks_lim, %eax
1210        jb      .L182
1211.L180:
1212        movl    $245, 32(%ecx)
1213        movl    $orIntegerzh_fast, 36(%ebx)
1214        movl    $0, 112(%ebx)
1215        call    __DISCARD__
1216        movl    $stg_gc_gen_hp, %eax
1217        jmp     *%eax
1218        .p2align 2,,3
1219.L182:
1220        movl    4(%ebx), %edx
1221        movl    8(%ebx), %eax
1222        movl    %eax, 8(%esp)
1223        movl    12(%ebx), %ecx
1224        movl    4(%edx), %eax
1225        movl    %eax, mp_tmp1
1226        movl    %esi, mp_tmp1+4
1227        addl    $8, %edx
1228        movl    %edx, mp_tmp1+8
1229        movl    4(%ecx), %eax
1230        movl    %eax, mp_tmp2
1231        movl    8(%esp), %eax
1232        movl    %eax, mp_tmp2+4
1233        addl    $8, %ecx
1234        movl    %ecx, mp_tmp2+8
1235        subl    $12, %esp
1236        pushl   $mp_result1
1237        call    __gmpz_init
1238        addl    $12, %esp
1239        pushl   $mp_tmp2
1240        pushl   $mp_tmp1
1241        pushl   $mp_result1
1242        call    __gmpz_ior
1243        addl    $16, %esp
1244        movl    mp_result1+4, %esi
1245        movl    mp_result1+8, %eax
1246        subl    $8, %eax
1247        movl    %eax, -4(%ebp)
1248        subl    $4, %ebp
1249        call    __DISCARD__
1250        movl    4(%ebp), %eax
1251        jmp     *%eax
1252        .size   orIntegerzh_fast, .-orIntegerzh_fast
1253        .p2align 2,,3
1254.globl xorIntegerzh_fast
1255        .type   xorIntegerzh_fast, @function
1256xorIntegerzh_fast:
1257        subl    $12, %esp
1258/APP
1259        --- BEGIN ---
1260/NO_APP
1261        call    __DISCARD__
1262        movl    %ebx, %ecx
1263        movl    104(%ebx), %eax
1264        movl    8(%eax), %eax
1265        testl   %eax, %eax
1266        je      .L186
1267        movl    alloc_blocks, %eax
1268        cmpl    alloc_blocks_lim, %eax
1269        jb      .L188
1270.L186:
1271        movl    $245, 32(%ecx)
1272        movl    $xorIntegerzh_fast, 36(%ebx)
1273        movl    $0, 112(%ebx)
1274        call    __DISCARD__
1275        movl    $stg_gc_gen_hp, %eax
1276        jmp     *%eax
1277        .p2align 2,,3
1278.L188:
1279        movl    4(%ebx), %edx
1280        movl    8(%ebx), %eax
1281        movl    %eax, 8(%esp)
1282        movl    12(%ebx), %ecx
1283        movl    4(%edx), %eax
1284        movl    %eax, mp_tmp1
1285        movl    %esi, mp_tmp1+4
1286        addl    $8, %edx
1287        movl    %edx, mp_tmp1+8
1288        movl    4(%ecx), %eax
1289        movl    %eax, mp_tmp2
1290        movl    8(%esp), %eax
1291        movl    %eax, mp_tmp2+4
1292        addl    $8, %ecx
1293        movl    %ecx, mp_tmp2+8
1294        subl    $12, %esp
1295        pushl   $mp_result1
1296        call    __gmpz_init
1297        addl    $12, %esp
1298        pushl   $mp_tmp2
1299        pushl   $mp_tmp1
1300        pushl   $mp_result1
1301        call    __gmpz_xor
1302        addl    $16, %esp
1303        movl    mp_result1+4, %esi
1304        movl    mp_result1+8, %eax
1305        subl    $8, %eax
1306        movl    %eax, -4(%ebp)
1307        subl    $4, %ebp
1308        call    __DISCARD__
1309        movl    4(%ebp), %eax
1310        jmp     *%eax
1311        .size   xorIntegerzh_fast, .-xorIntegerzh_fast
1312        .p2align 2,,3
1313.globl complementIntegerzh_fast
1314        .type   complementIntegerzh_fast, @function
1315complementIntegerzh_fast:
1316        subl    $12, %esp
1317/APP
1318        --- BEGIN ---
1319/NO_APP
1320        call    __DISCARD__
1321        movl    %ebx, %edx
1322        movl    104(%ebx), %eax
1323        movl    8(%eax), %ecx
1324        testl   %ecx, %ecx
1325        je      .L192
1326        movl    alloc_blocks, %eax
1327        cmpl    alloc_blocks_lim, %eax
1328        jb      .L194
1329.L192:
1330        movl    $253, 32(%edx)
1331        movl    $complementIntegerzh_fast, 36(%ebx)
1332        movl    $0, 112(%ebx)
1333        call    __DISCARD__
1334        movl    $stg_gc_gen_hp, %eax
1335        jmp     *%eax
1336        .p2align 2,,3
1337.L194:
1338        movl    4(%ebx), %eax
1339        movl    4(%eax), %edx
1340        movl    %edx, mp_tmp1
1341        movl    %esi, mp_tmp1+4
1342        addl    $8, %eax
1343        movl    %eax, mp_tmp1+8
1344        subl    $12, %esp
1345        pushl   $mp_result1
1346        call    __gmpz_init
1347        popl    %eax
1348        popl    %edx
1349        pushl   $mp_tmp1
1350        pushl   $mp_result1
1351        call    __gmpz_com
1352        addl    $16, %esp
1353        movl    mp_result1+4, %esi
1354        movl    mp_result1+8, %eax
1355        subl    $8, %eax
1356        movl    %eax, -4(%ebp)
1357        subl    $4, %ebp
1358        call    __DISCARD__
1359        movl    4(%ebp), %eax
1360        jmp     *%eax
1361        .size   complementIntegerzh_fast, .-complementIntegerzh_fast
1362        .p2align 2,,3
1363.globl quotRemIntegerzh_fast
1364        .type   quotRemIntegerzh_fast, @function
1365quotRemIntegerzh_fast:
1366        subl    $12, %esp
1367/APP
1368        --- BEGIN ---
1369/NO_APP
1370        call    __DISCARD__
1371        movl    %ebx, %ecx
1372        movl    104(%ebx), %eax
1373        movl    8(%eax), %eax
1374        testl   %eax, %eax
1375        je      .L198
1376        movl    alloc_blocks, %eax
1377        cmpl    alloc_blocks_lim, %eax
1378        jb      .L200
1379.L198:
1380        movl    $245, 32(%ecx)
1381        movl    $quotRemIntegerzh_fast, 36(%ebx)
1382        movl    $0, 112(%ebx)
1383        call    __DISCARD__
1384        movl    $stg_gc_gen_hp, %eax
1385        jmp     *%eax
1386        .p2align 2,,3
1387.L200:
1388        movl    4(%ebx), %edx
1389        movl    8(%ebx), %eax
1390        movl    %eax, 8(%esp)
1391        movl    12(%ebx), %ecx
1392        movl    4(%edx), %eax
1393        movl    %eax, mp_tmp1
1394        movl    %esi, mp_tmp1+4
1395        addl    $8, %edx
1396        movl    %edx, mp_tmp1+8
1397        movl    4(%ecx), %eax
1398        movl    %eax, mp_tmp2
1399        movl    8(%esp), %eax
1400        movl    %eax, mp_tmp2+4
1401        addl    $8, %ecx
1402        movl    %ecx, mp_tmp2+8
1403        subl    $12, %esp
1404        pushl   $mp_result1
1405        call    __gmpz_init
1406        movl    $mp_result2, (%esp)
1407        call    __gmpz_init
1408        addl    $16, %esp
1409        pushl   $mp_tmp2
1410        pushl   $mp_tmp1
1411        pushl   $mp_result2
1412        pushl   $mp_result1
1413        call    __gmpz_tdiv_qr
1414        addl    $16, %esp
1415        movl    mp_result1+4, %esi
1416        movl    mp_result1+8, %eax
1417        subl    $8, %eax
1418        movl    %eax, -8(%ebp)
1419        movl    mp_result2+8, %eax
1420        subl    $8, %eax
1421        movl    %eax, -4(%ebp)
1422        movl    mp_result2+4, %eax
1423        movl    %eax, -12(%ebp)
1424        subl    $12, %ebp
1425        call    __DISCARD__
1426        movl    12(%ebp), %eax
1427        jmp     *%eax
1428        .size   quotRemIntegerzh_fast, .-quotRemIntegerzh_fast
1429        .p2align 2,,3
1430.globl divModIntegerzh_fast
1431        .type   divModIntegerzh_fast, @function
1432divModIntegerzh_fast:
1433        subl    $12, %esp
1434/APP
1435        --- BEGIN ---
1436/NO_APP
1437        call    __DISCARD__
1438        movl    %ebx, %ecx
1439        movl    104(%ebx), %eax
1440        movl    8(%eax), %eax
1441        testl   %eax, %eax
1442        je      .L204
1443        movl    alloc_blocks, %eax
1444        cmpl    alloc_blocks_lim, %eax
1445        jb      .L206
1446.L204:
1447        movl    $245, 32(%ecx)
1448        movl    $divModIntegerzh_fast, 36(%ebx)
1449        movl    $0, 112(%ebx)
1450        call    __DISCARD__
1451        movl    $stg_gc_gen_hp, %eax
1452        jmp     *%eax
1453        .p2align 2,,3
1454.L206:
1455        movl    4(%ebx), %edx
1456        movl    8(%ebx), %eax
1457        movl    %eax, 8(%esp)
1458        movl    12(%ebx), %ecx
1459        movl    4(%edx), %eax
1460        movl    %eax, mp_tmp1
1461        movl    %esi, mp_tmp1+4
1462        addl    $8, %edx
1463        movl    %edx, mp_tmp1+8
1464        movl    4(%ecx), %eax
1465        movl    %eax, mp_tmp2
1466        movl    8(%esp), %eax
1467        movl    %eax, mp_tmp2+4
1468        addl    $8, %ecx
1469        movl    %ecx, mp_tmp2+8
1470        subl    $12, %esp
1471        pushl   $mp_result1
1472        call    __gmpz_init
1473        movl    $mp_result2, (%esp)
1474        call    __gmpz_init
1475        addl    $16, %esp
1476        pushl   $mp_tmp2
1477        pushl   $mp_tmp1
1478        pushl   $mp_result2
1479        pushl   $mp_result1
1480        call    __gmpz_fdiv_qr
1481        addl    $16, %esp
1482        movl    mp_result1+4, %esi
1483        movl    mp_result1+8, %eax
1484        subl    $8, %eax
1485        movl    %eax, -8(%ebp)
1486        movl    mp_result2+8, %eax
1487        subl    $8, %eax
1488        movl    %eax, -4(%ebp)
1489        movl    mp_result2+4, %eax
1490        movl    %eax, -12(%ebp)
1491        subl    $12, %ebp
1492        call    __DISCARD__
1493        movl    12(%ebp), %eax
1494        jmp     *%eax
1495        .size   divModIntegerzh_fast, .-divModIntegerzh_fast
1496        .p2align 2,,3
1497.globl gcdIntzh_fast
1498        .type   gcdIntzh_fast, @function
1499gcdIntzh_fast:
1500        subl    $12, %esp
1501/APP
1502        --- BEGIN ---
1503/NO_APP
1504        call    __DISCARD__
1505        movl    %esi, mp_tmp_w
1506        pushl   %eax
1507        pushl   4(%ebx)
1508        pushl   $1
1509        pushl   $mp_tmp_w
1510        call    __gmpn_gcd_1
1511        addl    $16, %esp
1512        movl    %eax, %esi
1513        call    __DISCARD__
1514        jmp     *(%ebp)
1515        .size   gcdIntzh_fast, .-gcdIntzh_fast
1516        .p2align 2,,3
1517.globl gcdIntegerIntzh_fast
1518        .type   gcdIntegerIntzh_fast, @function
1519gcdIntegerIntzh_fast:
1520        subl    $12, %esp
1521/APP
1522        --- BEGIN ---
1523/NO_APP
1524        call    __DISCARD__
1525        pushl   %edx
1526        pushl   8(%ebx)
1527        pushl   %esi
1528        movl    4(%ebx), %eax
1529        addl    $8, %eax
1530        pushl   %eax
1531        call    __gmpn_gcd_1
1532        addl    $16, %esp
1533        movl    %eax, %esi
1534        call    __DISCARD__
1535        jmp     *(%ebp)
1536        .size   gcdIntegerIntzh_fast, .-gcdIntegerIntzh_fast
1537        .p2align 2,,3
1538.globl cmpIntegerIntzh_fast
1539        .type   cmpIntegerIntzh_fast, @function
1540cmpIntegerIntzh_fast:
1541        subl    $12, %esp
1542/APP
1543        --- BEGIN ---
1544/NO_APP
1545        call    __DISCARD__
1546        movl    %esi, %eax
1547        movl    %ebx, 8(%esp)
1548        movl    8(%ebx), %ecx
1549        cmpl    $0, %ecx
1550        jle     .L214
1551        movl    $1, %edx
1552.L216:
1553        cmpl    %eax, %edx
1554        je      .L219
1555.L220:
1556        movl    %eax, %esi
1557        subl    %edx, %esi
1558        call    __DISCARD__
1559        movl    (%ebp), %eax
1560        jmp     *%eax
1561        .p2align 2,,3
1562.L219:
1563        testl   %edx, %edx
1564        je      .L230
1565.L222:
1566        movl    8(%esp), %eax
1567        movl    4(%eax), %eax
1568        movl    %eax, 4(%esp)
1569        cmpl    8(%eax), %ecx
1570        je      .L231
1571.L224:
1572        jb      .L226
1573        movl    %edx, %esi
1574        negl    %esi
1575.L228:
1576        call    __DISCARD__
1577        movl    (%ebp), %eax
1578        jmp     *%eax
1579        .p2align 2,,3
1580.L214:
1581        je      .L232
1582.L217:
1583        negl    %ecx
1584        movl    $-1, %edx
1585        jmp     .L216
1586        .p2align 2,,3
1587.L226:
1588        movl    %edx, %esi
1589        call    __DISCARD__
1590        movl    (%ebp), %eax
1591        jmp     *%eax
1592        .p2align 2,,3
1593.L232:
1594        xorl    %edx, %edx
1595        jmp     .L216
1596.L223:
1597        .p2align 2,,3
1598.L230:
1599        xorl    %esi, %esi
1600        call    __DISCARD__
1601        movl    (%ebp), %eax
1602        jmp     *%eax
1603.L225:
1604.L231:
1605        xorl    %esi, %esi
1606        call    __DISCARD__
1607        movl    (%ebp), %eax
1608        jmp     *%eax
1609        .size   cmpIntegerIntzh_fast, .-cmpIntegerIntzh_fast
1610        .p2align 2,,3
1611.globl cmpIntegerzh_fast
1612        .type   cmpIntegerzh_fast, @function
1613cmpIntegerzh_fast:
1614        subl    $12, %esp
1615/APP
1616        --- BEGIN ---
1617/NO_APP
1618        call    __DISCARD__
1619        movl    %esi, 8(%esp)
1620        movl    %ebx, %edx
1621        movl    8(%ebx), %eax
1622        cmpl    %eax, %esi
1623        je      .L234
1624.L235:
1625        subl    %eax, %esi
1626        call    __DISCARD__
1627        movl    (%ebp), %eax
1628        jmp     *%eax
1629        .p2align 2,,3
1630.L234:
1631        cmpl    $0, 8(%esp)
1632        je      .L248
1633.L237:
1634        jl      .L239
1635        movl    8(%esp), %eax
1636.L241:
1637        pushl   %ecx
1638        pushl   %eax
1639        movl    12(%edx), %eax
1640        addl    $8, %eax
1641        pushl   %eax
1642        movl    4(%edx), %eax
1643        addl    $8, %eax
1644        pushl   %eax
1645        call    __gmpn_cmp
1646        addl    $16, %esp
1647        testl   %eax, %eax
1648        je      .L249
1649.L242:
1650        notl    %eax
1651        shrl    $31, %eax
1652        shrl    $31, 8(%esp)
1653        xorl    8(%esp), %eax
1654        cmpb    $1, %al
1655        sbbl    %eax, %eax
1656        movl    %eax, %esi
1657        orl     $1, %esi
1658.L244:
1659.L246:
1660        call    __DISCARD__
1661        movl    (%ebp), %eax
1662        jmp     *%eax
1663.L238:
1664        .p2align 2,,3
1665.L248:
1666        xorl    %esi, %esi
1667        call    __DISCARD__
1668        movl    (%ebp), %eax
1669        jmp     *%eax
1670.L243:
1671        .p2align 2,,3
1672.L249:
1673        xorl    %esi, %esi
1674        call    __DISCARD__
1675        movl    (%ebp), %eax
1676        jmp     *%eax
1677.L239:
1678        movl    8(%esp), %eax
1679        negl    %eax
1680        jmp     .L241
1681        .size   cmpIntegerzh_fast, .-cmpIntegerzh_fast
1682        .p2align 2,,3
1683.globl integer2Intzh_fast
1684        .type   integer2Intzh_fast, @function
1685integer2Intzh_fast:
1686        subl    $12, %esp
1687/APP
1688        --- BEGIN ---
1689/NO_APP
1690        call    __DISCARD__
1691        cmpl    $0, %esi
1692        jne     .L251
1693        xorl    %eax, %eax
1694.L253:
1695        movl    %eax, %esi
1696        call    __DISCARD__
1697        jmp     *(%ebp)
1698        .p2align 2,,3
1699.L251:
1700        movl    4(%ebx), %eax
1701        movl    8(%eax), %eax
1702        jge     .L253
1703.L254:
1704        negl    %eax
1705        movl    %eax, %esi
1706        call    __DISCARD__
1707        jmp     *(%ebp)
1708        .size   integer2Intzh_fast, .-integer2Intzh_fast
1709        .p2align 2,,3
1710.globl integer2Wordzh_fast
1711        .type   integer2Wordzh_fast, @function
1712integer2Wordzh_fast:
1713        subl    $12, %esp
1714/APP
1715        --- BEGIN ---
1716/NO_APP
1717        call    __DISCARD__
1718        cmpl    $0, %esi
1719        jne     .L258
1720        xorl    %eax, %eax
1721.L260:
1722        movl    %eax, %esi
1723        call    __DISCARD__
1724        jmp     *(%ebp)
1725        .p2align 2,,3
1726.L258:
1727        movl    4(%ebx), %eax
1728        movl    8(%eax), %eax
1729        jge     .L260
1730.L261:
1731        negl    %eax
1732        movl    %eax, %esi
1733        call    __DISCARD__
1734        jmp     *(%ebp)
1735        .size   integer2Wordzh_fast, .-integer2Wordzh_fast
1736        .p2align 2,,3
1737.globl decodeFloatzh_fast
1738        .type   decodeFloatzh_fast, @function
1739decodeFloatzh_fast:
1740        subl    $28, %esp
1741/APP
1742        --- BEGIN ---
1743/NO_APP
1744        call    __DISCARD__
1745        movl    40(%ebx), %eax
1746        movl    %eax, 24(%esp)
1747        leal    12(%edi), %eax
1748        movl    %eax, %edi
1749        cmpl    92(%ebx), %eax
1750        ja      .L265
1751        leal    -8(%eax), %edx
1752        movl    %edx, 8(%esp)
1753        movl    $stg_ARR_WORDS_info, -8(%eax)
1754        movl    $1, 4(%edx)
1755        movl    %eax, mp_tmp1+8
1756        pushl   %eax
1757        pushl   28(%esp)
1758        pushl   $mp_tmp_w
1759        pushl   $mp_tmp1
1760        call    __decodeFloat
1761        addl    $16, %esp
1762        movl    mp_tmp_w, %esi
1763        movl    8(%esp), %eax
1764        movl    %eax, -4(%ebp)
1765        movl    mp_tmp1+4, %eax
1766        movl    %eax, -8(%ebp)
1767        subl    $8, %ebp
1768        call    __DISCARD__
1769        movl    8(%ebp), %eax
1770        jmp     *%eax
1771        .p2align 2,,3
1772.L265:
1773        movl    $12, 112(%ebx)
1774        movl    $255, 32(%ebx)
1775        movl    $decodeFloatzh_fast, 36(%ebx)
1776        call    __DISCARD__
1777        movl    $stg_gc_gen, %eax
1778        jmp     *%eax
1779        .size   decodeFloatzh_fast, .-decodeFloatzh_fast
1780        .p2align 2,,3
1781.globl decodeDoublezh_fast
1782        .type   decodeDoublezh_fast, @function
1783decodeDoublezh_fast:
1784        subl    $28, %esp
1785/APP
1786        --- BEGIN ---
1787/NO_APP
1788        call    __DISCARD__
1789        movl    56(%ebx), %eax
1790        movl    60(%ebx), %edx
1791        movl    %eax, 16(%esp)
1792        movl    %edx, 20(%esp)
1793        leal    16(%edi), %eax
1794        movl    %eax, %edi
1795        cmpl    92(%ebx), %eax
1796        ja      .L270
1797        leal    -12(%eax), %edx
1798        movl    %edx, 4(%esp)
1799        movl    $stg_ARR_WORDS_info, -12(%eax)
1800        movl    $2, 4(%edx)
1801        subl    $4, %eax
1802        movl    %eax, mp_tmp1+8
1803        pushl   20(%esp)
1804        pushl   20(%esp)
1805        pushl   $mp_tmp_w
1806        pushl   $mp_tmp1
1807        call    __decodeDouble
1808        addl    $16, %esp
1809        movl    mp_tmp_w, %esi
1810        movl    4(%esp), %eax
1811        movl    %eax, -4(%ebp)
1812        movl    mp_tmp1+4, %eax
1813        movl    %eax, -8(%ebp)
1814        subl    $8, %ebp
1815        call    __DISCARD__
1816        movl    8(%ebp), %eax
1817        jmp     *%eax
1818        .p2align 2,,3
1819.L270:
1820        movl    $16, 112(%ebx)
1821        movl    $255, 32(%ebx)
1822        movl    $decodeDoublezh_fast, 36(%ebx)
1823        call    __DISCARD__
1824        movl    $stg_gc_gen, %eax
1825        jmp     *%eax
1826        .size   decodeDoublezh_fast, .-decodeDoublezh_fast
1827        .p2align 2,,3
1828.globl forkzh_fast
1829        .type   forkzh_fast, @function
1830forkzh_fast:
1831        subl    $12, %esp
1832/APP
1833        --- BEGIN ---
1834/NO_APP
1835        call    __DISCARD__
1836        movl    %ebx, %edx
1837        movl    104(%ebx), %eax
1838        movl    8(%eax), %eax
1839        testl   %eax, %eax
1840        je      .L275
1841        movl    alloc_blocks, %eax
1842        cmpl    alloc_blocks_lim, %eax
1843        jb      .L277
1844.L275:
1845        movl    $254, 32(%edx)
1846        movl    $forkzh_fast, 36(%ebx)
1847        movl    $0, 112(%ebx)
1848        call    __DISCARD__
1849        movl    $stg_gc_gen_hp, %eax
1850        jmp     *%eax
1851        .p2align 2,,3
1852.L277:
1853        pushl   %eax
1854        pushl   %esi
1855        pushl   RtsFlags+12
1856        leal    -8(%ebx), %eax
1857        pushl   %eax
1858        call    createIOThread
1859        popl    %edx
1860        popl    %ecx
1861        movl    %eax, 16(%esp)
1862        pushl   16(%esp)
1863        leal    -8(%ebx), %eax
1864        pushl   %eax
1865        call    scheduleThread
1866        addl    $16, %esp
1867        movl    $1, context_switch
1868        movl    8(%esp), %esi
1869        call    __DISCARD__
1870        movl    (%ebp), %eax
1871        jmp     *%eax
1872        .size   forkzh_fast, .-forkzh_fast
1873        .p2align 2,,3
1874.globl forkOnzh_fast
1875        .type   forkOnzh_fast, @function
1876forkOnzh_fast:
1877        subl    $12, %esp
1878/APP
1879        --- BEGIN ---
1880/NO_APP
1881        call    __DISCARD__
1882        movl    %ebx, %edx
1883        movl    104(%ebx), %eax
1884        movl    8(%eax), %eax
1885        testl   %eax, %eax
1886        je      .L281
1887        movl    alloc_blocks, %eax
1888        cmpl    alloc_blocks_lim, %eax
1889        jb      .L283
1890.L281:
1891        movl    $253, 32(%edx)
1892        movl    $forkOnzh_fast, 36(%ebx)
1893        movl    $0, 112(%ebx)
1894        call    __DISCARD__
1895        movl    $stg_gc_gen_hp, %eax
1896        jmp     *%eax
1897        .p2align 2,,3
1898.L283:
1899        movl    %esi, 8(%esp)
1900        pushl   %eax
1901        pushl   4(%ebx)
1902        pushl   RtsFlags+12
1903        leal    -8(%ebx), %eax
1904        pushl   %eax
1905        call    createIOThread
1906        addl    $12, %esp
1907        movl    %eax, 8(%esp)
1908        pushl   8(%esp)
1909        pushl   16(%esp)
1910        leal    -8(%ebx), %eax
1911        pushl   %eax
1912        call    scheduleThreadOn
1913        addl    $16, %esp
1914        movl    $1, context_switch
1915        movl    4(%esp), %esi
1916        call    __DISCARD__
1917        movl    (%ebp), %eax
1918        jmp     *%eax
1919        .size   forkOnzh_fast, .-forkOnzh_fast
1920        .p2align 2,,3
1921.globl yieldzh_fast
1922        .type   yieldzh_fast, @function
1923yieldzh_fast:
1924        subl    $12, %esp
1925/APP
1926        --- BEGIN ---
1927/NO_APP
1928        call    __DISCARD__
1929        call    __DISCARD__
1930        movl    $stg_yield_noregs, %eax
1931        jmp     *%eax
1932        .size   yieldzh_fast, .-yieldzh_fast
1933        .p2align 2,,3
1934.globl myThreadIdzh_fast
1935        .type   myThreadIdzh_fast, @function
1936myThreadIdzh_fast:
1937        subl    $12, %esp
1938/APP
1939        --- BEGIN ---
1940/NO_APP
1941        call    __DISCARD__
1942        movl    96(%ebx), %esi
1943        call    __DISCARD__
1944        jmp     *(%ebp)
1945        .size   myThreadIdzh_fast, .-myThreadIdzh_fast
1946        .p2align 2,,3
1947.globl labelThreadzh_fast
1948        .type   labelThreadzh_fast, @function
1949labelThreadzh_fast:
1950        subl    $12, %esp
1951/APP
1952        --- BEGIN ---
1953/NO_APP
1954        call    __DISCARD__
1955        call    __DISCARD__
1956        jmp     *(%ebp)
1957        .size   labelThreadzh_fast, .-labelThreadzh_fast
1958        .p2align 2,,3
1959.globl isCurrentThreadBoundzh_fast
1960        .type   isCurrentThreadBoundzh_fast, @function
1961isCurrentThreadBoundzh_fast:
1962        subl    $12, %esp
1963/APP
1964        --- BEGIN ---
1965/NO_APP
1966        call    __DISCARD__
1967        subl    $12, %esp
1968        pushl   96(%ebx)
1969        call    isThreadBound
1970        addl    $16, %esp
1971        movl    %eax, %esi
1972        call    __DISCARD__
1973        jmp     *(%ebp)
1974        .size   isCurrentThreadBoundzh_fast, .-isCurrentThreadBoundzh_fast
1975        .data
1976        .align 32
1977        .type   cee_str, @object
1978        .size   cee_str, 39
1979cee_str:
1980        .string "catch_retry_frame incorrectly entered!"
1981        .text
1982        .p2align 2,,3
1983.globl stg_catch_retry_frame_0_ret
1984        .type   stg_catch_retry_frame_0_ret, @function
1985stg_catch_retry_frame_0_ret:
1986        subl    $12, %esp
1987/APP
1988        --- BEGIN ---
1989/NO_APP
1990        call    __DISCARD__
1991        subl    $12, %esp
1992        pushl   $cee_str
1993        call    barf
1994        .size   stg_catch_retry_frame_0_ret, .-stg_catch_retry_frame_0_ret
1995        .data
1996        .align 32
1997        .type   cef_str, @object
1998        .size   cef_str, 39
1999cef_str:
2000        .string "catch_retry_frame incorrectly entered!"
2001        .text
2002        .p2align 2,,3
2003.globl stg_catch_retry_frame_1_ret
2004        .type   stg_catch_retry_frame_1_ret, @function
2005stg_catch_retry_frame_1_ret:
2006        subl    $12, %esp
2007/APP
2008        --- BEGIN ---
2009/NO_APP
2010        call    __DISCARD__
2011        subl    $12, %esp
2012        pushl   $cef_str
2013        call    barf
2014        .size   stg_catch_retry_frame_1_ret, .-stg_catch_retry_frame_1_ret
2015        .data
2016        .align 32
2017        .type   ceg_str, @object
2018        .size   ceg_str, 39
2019ceg_str:
2020        .string "catch_retry_frame incorrectly entered!"
2021        .text
2022        .p2align 2,,3
2023.globl stg_catch_retry_frame_2_ret
2024        .type   stg_catch_retry_frame_2_ret, @function
2025stg_catch_retry_frame_2_ret:
2026        subl    $12, %esp
2027/APP
2028        --- BEGIN ---
2029/NO_APP
2030        call    __DISCARD__
2031        subl    $12, %esp
2032        pushl   $ceg_str
2033        call    barf
2034        .size   stg_catch_retry_frame_2_ret, .-stg_catch_retry_frame_2_ret
2035        .data
2036        .align 32
2037        .type   ceh_str, @object
2038        .size   ceh_str, 39
2039ceh_str:
2040        .string "catch_retry_frame incorrectly entered!"
2041        .text
2042        .p2align 2,,3
2043.globl stg_catch_retry_frame_3_ret
2044        .type   stg_catch_retry_frame_3_ret, @function
2045stg_catch_retry_frame_3_ret:
2046        subl    $12, %esp
2047/APP
2048        --- BEGIN ---
2049/NO_APP
2050        call    __DISCARD__
2051        subl    $12, %esp
2052        pushl   $ceh_str
2053        call    barf
2054        .size   stg_catch_retry_frame_3_ret, .-stg_catch_retry_frame_3_ret
2055        .data
2056        .align 32
2057        .type   cei_str, @object
2058        .size   cei_str, 39
2059cei_str:
2060        .string "catch_retry_frame incorrectly entered!"
2061        .text
2062        .p2align 2,,3
2063.globl stg_catch_retry_frame_4_ret
2064        .type   stg_catch_retry_frame_4_ret, @function
2065stg_catch_retry_frame_4_ret:
2066        subl    $12, %esp
2067/APP
2068        --- BEGIN ---
2069/NO_APP
2070        call    __DISCARD__
2071        subl    $12, %esp
2072        pushl   $cei_str
2073        call    barf
2074        .size   stg_catch_retry_frame_4_ret, .-stg_catch_retry_frame_4_ret
2075        .data
2076        .align 32
2077        .type   cej_str, @object
2078        .size   cej_str, 39
2079cej_str:
2080        .string "catch_retry_frame incorrectly entered!"
2081        .text
2082        .p2align 2,,3
2083.globl stg_catch_retry_frame_5_ret
2084        .type   stg_catch_retry_frame_5_ret, @function
2085stg_catch_retry_frame_5_ret:
2086        subl    $12, %esp
2087/APP
2088        --- BEGIN ---
2089/NO_APP
2090        call    __DISCARD__
2091        subl    $12, %esp
2092        pushl   $cej_str
2093        call    barf
2094        .size   stg_catch_retry_frame_5_ret, .-stg_catch_retry_frame_5_ret
2095        .data
2096        .align 32
2097        .type   cek_str, @object
2098        .size   cek_str, 39
2099cek_str:
2100        .string "catch_retry_frame incorrectly entered!"
2101        .text
2102        .p2align 2,,3
2103.globl stg_catch_retry_frame_6_ret
2104        .type   stg_catch_retry_frame_6_ret, @function
2105stg_catch_retry_frame_6_ret:
2106        subl    $12, %esp
2107/APP
2108        --- BEGIN ---
2109/NO_APP
2110        call    __DISCARD__
2111        subl    $12, %esp
2112        pushl   $cek_str
2113        call    barf
2114        .size   stg_catch_retry_frame_6_ret, .-stg_catch_retry_frame_6_ret
2115        .data
2116        .align 32
2117        .type   cel_str, @object
2118        .size   cel_str, 39
2119cel_str:
2120        .string "catch_retry_frame incorrectly entered!"
2121        .text
2122        .p2align 2,,3
2123.globl stg_catch_retry_frame_7_ret
2124        .type   stg_catch_retry_frame_7_ret, @function
2125stg_catch_retry_frame_7_ret:
2126        subl    $12, %esp
2127/APP
2128        --- BEGIN ---
2129/NO_APP
2130        call    __DISCARD__
2131        subl    $12, %esp
2132        pushl   $cel_str
2133        call    barf
2134        .size   stg_catch_retry_frame_7_ret, .-stg_catch_retry_frame_7_ret
2135.globl stg_catch_retry_frame_info
2136        .data
2137        .align 32
2138        .type   stg_catch_retry_frame_info, @object
2139        .size   stg_catch_retry_frame_info, 44
2140stg_catch_retry_frame_info:
2141        .long   stg_catch_retry_frame_7_ret
2142        .long   stg_catch_retry_frame_6_ret
2143        .long   stg_catch_retry_frame_5_ret
2144        .long   stg_catch_retry_frame_4_ret
2145        .long   stg_catch_retry_frame_3_ret
2146        .long   stg_catch_retry_frame_2_ret
2147        .long   stg_catch_retry_frame_1_ret
2148        .long   stg_catch_retry_frame_0_ret
2149        .long   0
2150        .long   36
2151        .long   69
2152        .text
2153        .p2align 2,,3
2154.globl stg_catch_retry_frame_ret
2155        .type   stg_catch_retry_frame_ret, @function
2156stg_catch_retry_frame_ret:
2157        subl    $12, %esp
2158/APP
2159        --- BEGIN ---
2160/NO_APP
2161        call    __DISCARD__
2162        movl    %ebp, (%esp)
2163        movl    96(%ebx), %eax
2164        movl    40(%eax), %eax
2165        movl    %eax, 4(%esp)
2166        subl    $12, %esp
2167        pushl   %eax
2168        call    stmGetEnclosingTRec
2169        popl    %edx
2170        popl    %ecx
2171        movl    %eax, 16(%esp)
2172        pushl   12(%esp)
2173        leal    -8(%ebx), %eax
2174        pushl   %eax
2175        call    stmCommitNestedTransaction
2176        addl    $16, %esp
2177        testl   %eax, %eax
2178        jne     .L311
2179        subl    $8, %esp
2180        pushl   16(%esp)
2181        leal    -8(%ebx), %eax
2182        pushl   %eax
2183        call    stmStartTransaction
2184        addl    $16, %esp
2185        movl    %eax, %edx
2186        movl    96(%ebx), %eax
2187        movl    %edx, 40(%eax)
2188        movl    (%esp), %eax
2189        movl    4(%eax), %ecx
2190        testl   %ecx, %ecx
2191        jne     .L313
2192        movl    8(%eax), %esi
2193        movl    %edx, 16(%eax)
2194.L315:
2195        call    __DISCARD__
2196        movl    $stg_ap_v_fast, %eax
2197        jmp     *%eax
2198        .p2align 2,,3
2199.L311:
2200        movl    96(%ebx), %eax
2201        movl    8(%esp), %edx
2202        movl    %edx, 40(%eax)
2203        addl    $20, %ebp
2204        call    __DISCARD__
2205        movl    (%ebp), %eax
2206        jmp     *%eax
2207        .p2align 2,,3
2208.L313:
2209        movl    (%esp), %edx
2210        movl    12(%edx), %esi
2211        call    __DISCARD__
2212        movl    $stg_ap_v_fast, %eax
2213        jmp     *%eax
2214        .size   stg_catch_retry_frame_ret, .-stg_catch_retry_frame_ret
2215        .data
2216        .align 32
2217        .type   ceq_str, @object
2218        .size   ceq_str, 38
2219ceq_str:
2220        .string "atomically_frame incorrectly entered!"
2221        .text
2222        .p2align 2,,3
2223.globl stg_atomically_frame_0_ret
2224        .type   stg_atomically_frame_0_ret, @function
2225stg_atomically_frame_0_ret:
2226        subl    $12, %esp
2227/APP
2228        --- BEGIN ---
2229/NO_APP
2230        call    __DISCARD__
2231        subl    $12, %esp
2232        pushl   $ceq_str
2233        call    barf
2234        .size   stg_atomically_frame_0_ret, .-stg_atomically_frame_0_ret
2235        .data
2236        .align 32
2237        .type   cer_str, @object
2238        .size   cer_str, 38
2239cer_str:
2240        .string "atomically_frame incorrectly entered!"
2241        .text
2242        .p2align 2,,3
2243.globl stg_atomically_frame_1_ret
2244        .type   stg_atomically_frame_1_ret, @function
2245stg_atomically_frame_1_ret:
2246        subl    $12, %esp
2247/APP
2248        --- BEGIN ---
2249/NO_APP
2250        call    __DISCARD__
2251        subl    $12, %esp
2252        pushl   $cer_str
2253        call    barf
2254        .size   stg_atomically_frame_1_ret, .-stg_atomically_frame_1_ret
2255        .data
2256        .align 32
2257        .type   ces_str, @object
2258        .size   ces_str, 38
2259ces_str:
2260        .string "atomically_frame incorrectly entered!"
2261        .text
2262        .p2align 2,,3
2263.globl stg_atomically_frame_2_ret
2264        .type   stg_atomically_frame_2_ret, @function
2265stg_atomically_frame_2_ret:
2266        subl    $12, %esp
2267/APP
2268        --- BEGIN ---
2269/NO_APP
2270        call    __DISCARD__
2271        subl    $12, %esp
2272        pushl   $ces_str
2273        call    barf
2274        .size   stg_atomically_frame_2_ret, .-stg_atomically_frame_2_ret
2275        .data
2276        .align 32
2277        .type   cet_str, @object
2278        .size   cet_str, 38
2279cet_str:
2280        .string "atomically_frame incorrectly entered!"
2281        .text
2282        .p2align 2,,3
2283.globl stg_atomically_frame_3_ret
2284        .type   stg_atomically_frame_3_ret, @function
2285stg_atomically_frame_3_ret:
2286        subl    $12, %esp
2287/APP
2288        --- BEGIN ---
2289/NO_APP
2290        call    __DISCARD__
2291        subl    $12, %esp
2292        pushl   $cet_str
2293        call    barf
2294        .size   stg_atomically_frame_3_ret, .-stg_atomically_frame_3_ret
2295        .data
2296        .align 32
2297        .type   ceu_str, @object
2298        .size   ceu_str, 38
2299ceu_str:
2300        .string "atomically_frame incorrectly entered!"
2301        .text
2302        .p2align 2,,3
2303.globl stg_atomically_frame_4_ret
2304        .type   stg_atomically_frame_4_ret, @function
2305stg_atomically_frame_4_ret:
2306        subl    $12, %esp
2307/APP
2308        --- BEGIN ---
2309/NO_APP
2310        call    __DISCARD__
2311        subl    $12, %esp
2312        pushl   $ceu_str
2313        call    barf
2314        .size   stg_atomically_frame_4_ret, .-stg_atomically_frame_4_ret
2315        .data
2316        .align 32
2317        .type   cev_str, @object
2318        .size   cev_str, 38
2319cev_str:
2320        .string "atomically_frame incorrectly entered!"
2321        .text
2322        .p2align 2,,3
2323.globl stg_atomically_frame_5_ret
2324        .type   stg_atomically_frame_5_ret, @function
2325stg_atomically_frame_5_ret:
2326        subl    $12, %esp
2327/APP
2328        --- BEGIN ---
2329/NO_APP
2330        call    __DISCARD__
2331        subl    $12, %esp
2332        pushl   $cev_str
2333        call    barf
2334        .size   stg_atomically_frame_5_ret, .-stg_atomically_frame_5_ret
2335        .data
2336        .align 32
2337        .type   cew_str, @object
2338        .size   cew_str, 38
2339cew_str:
2340        .string "atomically_frame incorrectly entered!"
2341        .text
2342        .p2align 2,,3
2343.globl stg_atomically_frame_6_ret
2344        .type   stg_atomically_frame_6_ret, @function
2345stg_atomically_frame_6_ret:
2346        subl    $12, %esp
2347/APP
2348        --- BEGIN ---
2349/NO_APP
2350        call    __DISCARD__
2351        subl    $12, %esp
2352        pushl   $cew_str
2353        call    barf
2354        .size   stg_atomically_frame_6_ret, .-stg_atomically_frame_6_ret
2355        .data
2356        .align 32
2357        .type   cex_str, @object
2358        .size   cex_str, 38
2359cex_str:
2360        .string "atomically_frame incorrectly entered!"
2361        .text
2362        .p2align 2,,3
2363.globl stg_atomically_frame_7_ret
2364        .type   stg_atomically_frame_7_ret, @function
2365stg_atomically_frame_7_ret:
2366        subl    $12, %esp
2367/APP
2368        --- BEGIN ---
2369/NO_APP
2370        call    __DISCARD__
2371        subl    $12, %esp
2372        pushl   $cex_str
2373        call    barf
2374        .size   stg_atomically_frame_7_ret, .-stg_atomically_frame_7_ret
2375.globl stg_atomically_frame_info
2376        .data
2377        .align 32
2378        .type   stg_atomically_frame_info, @object
2379        .size   stg_atomically_frame_info, 44
2380stg_atomically_frame_info:
2381        .long   stg_atomically_frame_7_ret
2382        .long   stg_atomically_frame_6_ret
2383        .long   stg_atomically_frame_5_ret
2384        .long   stg_atomically_frame_4_ret
2385        .long   stg_atomically_frame_3_ret
2386        .long   stg_atomically_frame_2_ret
2387        .long   stg_atomically_frame_1_ret
2388        .long   stg_atomically_frame_0_ret
2389        .long   0
2390        .long   1
2391        .long   68
2392        .text
2393        .p2align 2,,3
2394.globl stg_atomically_frame_ret
2395        .type   stg_atomically_frame_ret, @function
2396stg_atomically_frame_ret:
2397        subl    $12, %esp
2398/APP
2399        --- BEGIN ---
2400/NO_APP
2401        call    __DISCARD__
2402        movl    %ebp, 8(%esp)
2403        movl    %ebx, %eax
2404        subl    $8, %esp
2405        movl    96(%ebx), %edx
2406        pushl   40(%edx)
2407        subl    $8, %eax
2408        pushl   %eax
2409        call    stmCommitTransaction
2410        addl    $16, %esp
2411        testl   %eax, %eax
2412        jne     .L335
2413        subl    $8, %esp
2414        pushl   $stg_NO_TREC_closure
2415        leal    -8(%ebx), %eax
2416        pushl   %eax
2417        call    stmStartTransaction
2418        addl    $16, %esp
2419        movl    96(%ebx), %edx
2420        movl    %eax, 40(%edx)
2421        movl    8(%esp), %eax
2422        movl    4(%eax), %esi
2423        call    __DISCARD__
2424        movl    $stg_ap_v_fast, %eax
2425        jmp     *%eax
2426        .p2align 2,,3
2427.L335:
2428        movl    96(%ebx), %eax
2429        movl    $stg_NO_TREC_closure, 40(%eax)
2430        addl    $8, %ebp
2431        call    __DISCARD__
2432        movl    (%ebp), %eax
2433        jmp     *%eax
2434        .size   stg_atomically_frame_ret, .-stg_atomically_frame_ret
2435.globl stg_atomically_waiting_frame_info
2436        .data
2437        .align 32
2438        .type   stg_atomically_waiting_frame_info, @object
2439        .size   stg_atomically_waiting_frame_info, 44
2440stg_atomically_waiting_frame_info:
2441        .long   stg_atomically_frame_7_ret
2442        .long   stg_atomically_frame_6_ret
2443        .long   stg_atomically_frame_5_ret
2444        .long   stg_atomically_frame_4_ret
2445        .long   stg_atomically_frame_3_ret
2446        .long   stg_atomically_frame_2_ret
2447        .long   stg_atomically_frame_1_ret
2448        .long   stg_atomically_frame_0_ret
2449        .long   0
2450        .long   1
2451        .long   68
2452        .text
2453        .p2align 2,,3
2454.globl stg_atomically_waiting_frame_ret
2455        .type   stg_atomically_waiting_frame_ret, @function
2456stg_atomically_waiting_frame_ret:
2457        subl    $12, %esp
2458/APP
2459        --- BEGIN ---
2460/NO_APP
2461        call    __DISCARD__
2462        movl    %ebp, 8(%esp)
2463        movl    %ebx, %eax
2464        subl    $8, %esp
2465        pushl   96(%ebx)
2466        subl    $8, %eax
2467        pushl   %eax
2468        call    stmReWait
2469        addl    $16, %esp
2470        testl   %eax, %eax
2471        jne     .L340
2472        subl    $8, %esp
2473        pushl   $stg_NO_TREC_closure
2474        leal    -8(%ebx), %eax
2475        pushl   %eax
2476        call    stmStartTransaction
2477        addl    $16, %esp
2478        movl    96(%ebx), %edx
2479        movl    %eax, 40(%edx)
2480        movl    8(%esp), %eax
2481        movl    $stg_atomically_frame_info, (%eax)
2482        movl    4(%eax), %esi
2483        call    __DISCARD__
2484        movl    $stg_ap_v_fast, %eax
2485        jmp     *%eax
2486        .p2align 2,,3
2487.L340:
2488        call    __DISCARD__
2489        movl    $stg_block_noregs, %eax
2490        jmp     *%eax
2491        .size   stg_atomically_waiting_frame_ret, .-stg_atomically_waiting_frame_ret
2492        .p2align 2,,3
2493.globl stg_catch_stm_frame_0_ret
2494        .type   stg_catch_stm_frame_0_ret, @function
2495stg_catch_stm_frame_0_ret:
2496        subl    $12, %esp
2497/APP
2498        --- BEGIN ---
2499/NO_APP
2500        call    __DISCARD__
2501        addl    $8, %ebp
2502        call    __DISCARD__
2503        movl    (%ebp), %eax
2504        addl    -16(%eax), %eax
2505        jmp     *%eax
2506        .size   stg_catch_stm_frame_0_ret, .-stg_catch_stm_frame_0_ret
2507        .p2align 2,,3
2508.globl stg_catch_stm_frame_1_ret
2509        .type   stg_catch_stm_frame_1_ret, @function
2510stg_catch_stm_frame_1_ret:
2511        subl    $12, %esp
2512/APP
2513        --- BEGIN ---
2514/NO_APP
2515        call    __DISCARD__
2516        addl    $8, %ebp
2517        call    __DISCARD__
2518        movl    (%ebp), %eax
2519        addl    -20(%eax), %eax
2520        jmp     *%eax
2521        .size   stg_catch_stm_frame_1_ret, .-stg_catch_stm_frame_1_ret
2522        .p2align 2,,3
2523.globl stg_catch_stm_frame_2_ret
2524        .type   stg_catch_stm_frame_2_ret, @function
2525stg_catch_stm_frame_2_ret:
2526        subl    $12, %esp
2527/APP
2528        --- BEGIN ---
2529/NO_APP
2530        call    __DISCARD__
2531        addl    $8, %ebp
2532        call    __DISCARD__
2533        movl    (%ebp), %eax
2534        addl    -24(%eax), %eax
2535        jmp     *%eax
2536        .size   stg_catch_stm_frame_2_ret, .-stg_catch_stm_frame_2_ret
2537        .p2align 2,,3
2538.globl stg_catch_stm_frame_3_ret
2539        .type   stg_catch_stm_frame_3_ret, @function
2540stg_catch_stm_frame_3_ret:
2541        subl    $12, %esp
2542/APP
2543        --- BEGIN ---
2544/NO_APP
2545        call    __DISCARD__
2546        addl    $8, %ebp
2547        call    __DISCARD__
2548        movl    (%ebp), %eax
2549        addl    -28(%eax), %eax
2550        jmp     *%eax
2551        .size   stg_catch_stm_frame_3_ret, .-stg_catch_stm_frame_3_ret
2552        .p2align 2,,3
2553.globl stg_catch_stm_frame_4_ret
2554        .type   stg_catch_stm_frame_4_ret, @function
2555stg_catch_stm_frame_4_ret:
2556        subl    $12, %esp
2557/APP
2558        --- BEGIN ---
2559/NO_APP
2560        call    __DISCARD__
2561        addl    $8, %ebp
2562        call    __DISCARD__
2563        movl    (%ebp), %eax
2564        addl    -32(%eax), %eax
2565        jmp     *%eax
2566        .size   stg_catch_stm_frame_4_ret, .-stg_catch_stm_frame_4_ret
2567        .p2align 2,,3
2568.globl stg_catch_stm_frame_5_ret
2569        .type   stg_catch_stm_frame_5_ret, @function
2570stg_catch_stm_frame_5_ret:
2571        subl    $12, %esp
2572/APP
2573        --- BEGIN ---
2574/NO_APP
2575        call    __DISCARD__
2576        addl    $8, %ebp
2577        call    __DISCARD__
2578        movl    (%ebp), %eax
2579        addl    -36(%eax), %eax
2580        jmp     *%eax
2581        .size   stg_catch_stm_frame_5_ret, .-stg_catch_stm_frame_5_ret
2582        .p2align 2,,3
2583.globl stg_catch_stm_frame_6_ret
2584        .type   stg_catch_stm_frame_6_ret, @function
2585stg_catch_stm_frame_6_ret:
2586        subl    $12, %esp
2587/APP
2588        --- BEGIN ---
2589/NO_APP
2590        call    __DISCARD__
2591        addl    $8, %ebp
2592        call    __DISCARD__
2593        movl    (%ebp), %eax
2594        addl    -40(%eax), %eax
2595        jmp     *%eax
2596        .size   stg_catch_stm_frame_6_ret, .-stg_catch_stm_frame_6_ret
2597        .p2align 2,,3
2598.globl stg_catch_stm_frame_7_ret
2599        .type   stg_catch_stm_frame_7_ret, @function
2600stg_catch_stm_frame_7_ret:
2601        subl    $12, %esp
2602/APP
2603        --- BEGIN ---
2604/NO_APP
2605        call    __DISCARD__
2606        addl    $8, %ebp
2607        call    __DISCARD__
2608        movl    (%ebp), %eax
2609        addl    -44(%eax), %eax
2610        jmp     *%eax
2611        .size   stg_catch_stm_frame_7_ret, .-stg_catch_stm_frame_7_ret
2612.globl stg_catch_stm_frame_info
2613        .data
2614        .align 32
2615        .type   stg_catch_stm_frame_info, @object
2616        .size   stg_catch_stm_frame_info, 44
2617stg_catch_stm_frame_info:
2618        .long   stg_catch_stm_frame_7_ret
2619        .long   stg_catch_stm_frame_6_ret
2620        .long   stg_catch_stm_frame_5_ret
2621        .long   stg_catch_stm_frame_4_ret
2622        .long   stg_catch_stm_frame_3_ret
2623        .long   stg_catch_stm_frame_2_ret
2624        .long   stg_catch_stm_frame_1_ret
2625        .long   stg_catch_stm_frame_0_ret
2626        .long   0
2627        .long   1
2628        .long   70
2629        .text
2630        .p2align 2,,3
2631.globl stg_catch_stm_frame_ret
2632        .type   stg_catch_stm_frame_ret, @function
2633stg_catch_stm_frame_ret:
2634        subl    $12, %esp
2635/APP
2636        --- BEGIN ---
2637/NO_APP
2638        call    __DISCARD__
2639        addl    $8, %ebp
2640        call    __DISCARD__
2641        jmp     *(%ebp)
2642        .size   stg_catch_stm_frame_ret, .-stg_catch_stm_frame_ret
2643        .p2align 2,,3
2644.globl atomicallyzh_fast
2645        .type   atomicallyzh_fast, @function
2646atomicallyzh_fast:
2647        subl    $12, %esp
2648/APP
2649        --- BEGIN ---
2650/NO_APP
2651        call    __DISCARD__
2652        movl    %ebx, %edx
2653        movl    104(%ebx), %eax
2654        movl    8(%eax), %eax
2655        testl   %eax, %eax
2656        je      .L363
2657        movl    alloc_blocks, %eax
2658        cmpl    alloc_blocks_lim, %eax
2659        jae     .L363
2660.L365:
2661        movl    %ebp, %ecx
2662        leal    -12(%ebp), %eax
2663        cmpl    84(%ebx), %eax
2664        jb      .L367
2665        movl    96(%ebx), %eax
2666        cmpl    $stg_NO_TREC_closure, 40(%eax)
2667        je      .L373
2668.L369:
2669        movl    $base_GHCziIOBase_NestedAtomically_closure, %esi
2670        call    __DISCARD__
2671        movl    $raisezh_fast, %eax
2672        jmp     *%eax
2673        .p2align 2,,3
2674.L363:
2675        movl    $254, 32(%edx)
2676        movl    $atomicallyzh_fast, 36(%ebx)
2677        movl    $0, 112(%ebx)
2678        call    __DISCARD__
2679        movl    $stg_gc_gen_hp, %eax
2680        jmp     *%eax
2681.L373:
2682.L370:
2683        leal    -8(%ebp), %eax
2684        movl    %eax, %ebp
2685        movl    $stg_atomically_frame_info, -8(%ecx)
2686        movl    %esi, 4(%eax)
2687        subl    $8, %esp
2688        pushl   $stg_NO_TREC_closure
2689        leal    -8(%ebx), %eax
2690        pushl   %eax
2691        call    stmStartTransaction
2692        addl    $16, %esp
2693        movl    96(%ebx), %edx
2694        movl    %eax, 40(%edx)
2695        call    __DISCARD__
2696        movl    $stg_ap_v_fast, %eax
2697        jmp     *%eax
2698        .p2align 2,,3
2699.L367:
2700        movl    $254, 32(%ebx)
2701        movl    $atomicallyzh_fast, 36(%ebx)
2702        call    __DISCARD__
2703        movl    $stg_gc_gen, %eax
2704        jmp     *%eax
2705        .size   atomicallyzh_fast, .-atomicallyzh_fast
2706        .p2align 2,,3
2707.globl catchSTMzh_fast
2708        .type   catchSTMzh_fast, @function
2709catchSTMzh_fast:
2710        subl    $12, %esp
2711/APP
2712        --- BEGIN ---
2713/NO_APP
2714        call    __DISCARD__
2715        movl    %ebp, %ecx
2716        leal    -12(%ebp), %eax
2717        cmpl    84(%ebx), %eax
2718        jb      .L375
2719        leal    -8(%ebp), %edx
2720        movl    %edx, %ebp
2721        movl    $stg_catch_stm_frame_info, -8(%ecx)
2722        movl    4(%ebx), %eax
2723        movl    %eax, 4(%edx)
2724        call    __DISCARD__
2725        movl    $stg_ap_v_fast, %eax
2726        jmp     *%eax
2727        .p2align 2,,3
2728.L375:
2729        movl    $252, 32(%ebx)
2730        movl    $catchSTMzh_fast, 36(%ebx)
2731        call    __DISCARD__
2732        movl    $stg_gc_gen, %eax
2733        jmp     *%eax
2734        .size   catchSTMzh_fast, .-catchSTMzh_fast
2735        .p2align 2,,3
2736.globl catchRetryzh_fast
2737        .type   catchRetryzh_fast, @function
2738catchRetryzh_fast:
2739        subl    $12, %esp
2740/APP
2741        --- BEGIN ---
2742/NO_APP
2743        call    __DISCARD__
2744        movl    %ebx, %edx
2745        movl    104(%ebx), %eax
2746        movl    8(%eax), %eax
2747        testl   %eax, %eax
2748        je      .L380
2749        movl    alloc_blocks, %eax
2750        cmpl    alloc_blocks_lim, %eax
2751        jae     .L380
2752.L382:
2753        leal    -24(%ebp), %eax
2754        cmpl    84(%ebx), %eax
2755        jae     .L387
2756.L384:
2757        movl    $252, 32(%ebx)
2758        movl    $catchRetryzh_fast, 36(%ebx)
2759        call    __DISCARD__
2760        movl    $stg_gc_gen, %eax
2761        jmp     *%eax
2762        .p2align 2,,3
2763.L380:
2764        movl    $252, 32(%edx)
2765        movl    $catchRetryzh_fast, 36(%ebx)
2766        movl    $0, 112(%ebx)
2767        call    __DISCARD__
2768        movl    $stg_gc_gen_hp, %eax
2769        jmp     *%eax
2770        .p2align 2,,3
2771.L387:
2772        subl    $8, %esp
2773        movl    96(%ebx), %eax
2774        pushl   40(%eax)
2775        leal    -8(%ebx), %eax
2776        pushl   %eax
2777        call    stmStartTransaction
2778        addl    $16, %esp
2779        movl    96(%ebx), %edx
2780        movl    %eax, 40(%edx)
2781        leal    -20(%ebp), %edx
2782        movl    %edx, %ebp
2783        movl    $stg_catch_retry_frame_info, (%edx)
2784        movl    $0, 4(%edx)
2785        movl    %esi, 8(%edx)
2786        movl    4(%ebx), %ecx
2787        movl    %ecx, 12(%edx)
2788        movl    %eax, 16(%edx)
2789        call    __DISCARD__
2790        movl    $stg_ap_v_fast, %eax
2791        jmp     *%eax
2792        .size   catchRetryzh_fast, .-catchRetryzh_fast
2793        .p2align 2,,3
2794.globl retryzh_fast
2795        .type   retryzh_fast, @function
2796retryzh_fast:
2797        subl    $28, %esp
2798/APP
2799        --- BEGIN ---
2800/NO_APP
2801        call    __DISCARD__
2802        movl    %ebx, %edx
2803        movl    104(%ebx), %eax
2804        movl    8(%eax), %ecx
2805        testl   %ecx, %ecx
2806        je      .L389
2807        movl    alloc_blocks, %eax
2808        cmpl    alloc_blocks_lim, %eax
2809        jb      .L406
2810.L389:
2811        movl    $255, 32(%edx)
2812        movl    $retryzh_fast, 36(%ebx)
2813        movl    $0, 112(%ebx)
2814        call    __DISCARD__
2815        movl    $stg_gc_gen_hp, %eax
2816        jmp     *%eax
2817.L394:
2818        .p2align 2,,3
2819.L408:
2820        addl    $4, %edx
2821        movl    %edx, 8(%esp)
2822        movl    %ebp, %eax
2823        movl    4(%ebp), %ecx
2824        testl   %ecx, %ecx
2825        je      .L395
2826        addl    $16, %eax
2827        movl    %eax, 12(%esp)
2828        subl    $8, %esp
2829        movl    32(%esp), %edx
2830        pushl   16(%edx)
2831        leal    -8(%ebx), %eax
2832        pushl   %eax
2833        call    stmCommitNestedTransaction
2834        addl    $16, %esp
2835        testl   %eax, %eax
2836        je      .L407
2837.L397:
2838        subl    $8, %esp
2839        pushl   24(%esp)
2840        leal    -8(%ebx), %eax
2841        pushl   %eax
2842        call    stmCommitNestedTransaction
2843        addl    $16, %esp
2844.L400:
2845        testl   %eax, %eax
2846        je      .L399
2847.L401:
2848        movl    96(%ebx), %eax
2849        movl    20(%esp), %edx
2850        movl    %edx, 40(%eax)
2851        addl    $20, %ebp
2852.L406:
2853        movl    96(%ebx), %eax
2854        movl    40(%eax), %eax
2855        movl    %eax, 16(%esp)
2856        subl    $12, %esp
2857        pushl   %eax
2858        call    stmGetEnclosingTRec
2859        popl    %edx
2860        movl    %eax, 32(%esp)
2861        movl    96(%ebx), %eax
2862        movl    %ebp, 56(%eax)
2863        pushl   96(%ebx)
2864        call    findRetryFrameHelper
2865        addl    $16, %esp
2866        movl    96(%ebx), %edx
2867        movl    56(%edx), %edx
2868        movl    %edx, 24(%esp)
2869        movl    %edx, %ebp
2870        cmpl    $69, %eax
2871        je      .L408
2872.L393:
2873.L402:
2874        movl    %ebx, %eax
2875        pushl   %edx
2876        pushl   20(%esp)
2877        pushl   96(%ebx)
2878        subl    $8, %eax
2879        pushl   %eax
2880        call    stmWait
2881        addl    $16, %esp
2882        testl   %eax, %eax
2883        je      .L409
2884.L403:
2885        movl    24(%esp), %edx
2886        movl    $stg_atomically_waiting_frame_info, (%edx)
2887        movl    %edx, %ebp
2888        movl    16(%esp), %eax
2889        movl    %eax, 8(%ebx)
2890        call    __DISCARD__
2891        movl    $stg_block_stmwait, %eax
2892        jmp     *%eax
2893.L407:
2894        subl    $8, %esp
2895        pushl   24(%esp)
2896        leal    -8(%ebx), %eax
2897        pushl   %eax
2898        call    stmAbortTransaction
2899        addl    $16, %esp
2900.L399:
2901        subl    $8, %esp
2902        pushl   28(%esp)
2903        leal    -8(%ebx), %eax
2904        pushl   %eax
2905        call    stmStartTransaction
2906        addl    $16, %esp
2907        movl    12(%esp), %edx
2908        movl    %eax, (%edx)
2909        movl    8(%esp), %edx
2910        movl    $0, (%edx)
2911        movl    96(%ebx), %edx
2912        movl    %eax, 40(%edx)
2913        movl    24(%esp), %eax
2914        movl    8(%eax), %esi
2915        call    __DISCARD__
2916        movl    $stg_ap_v_fast, %eax
2917        jmp     *%eax
2918.L395:
2919        subl    $8, %esp
2920        pushl   28(%esp)
2921        leal    -8(%ebx), %eax
2922        pushl   %eax
2923        call    stmStartTransaction
2924        addl    $16, %esp
2925        movl    96(%ebx), %edx
2926        movl    %eax, 40(%edx)
2927        movl    8(%esp), %eax
2928        movl    $1, (%eax)
2929        movl    24(%esp), %edx
2930        movl    12(%edx), %esi
2931        call    __DISCARD__
2932        movl    $stg_ap_v_fast, %eax
2933        jmp     *%eax
2934.L409:
2935        subl    $8, %esp
2936        pushl   28(%esp)
2937        leal    -8(%ebx), %eax
2938        pushl   %eax
2939        call    stmStartTransaction
2940        addl    $16, %esp
2941        movl    96(%ebx), %edx
2942        movl    %eax, 40(%edx)
2943        movl    24(%esp), %eax
2944        movl    4(%eax), %esi
2945        movl    %eax, %ebp
2946        call    __DISCARD__
2947        movl    $stg_ap_v_fast, %eax
2948        jmp     *%eax
2949        .size   retryzh_fast, .-retryzh_fast
2950        .p2align 2,,3
2951.globl newTVarzh_fast
2952        .type   newTVarzh_fast, @function
2953newTVarzh_fast:
2954        subl    $12, %esp
2955/APP
2956        --- BEGIN ---
2957/NO_APP
2958        call    __DISCARD__
2959        movl    %ebx, %edx
2960        movl    104(%ebx), %eax
2961        movl    8(%eax), %eax
2962        testl   %eax, %eax
2963        je      .L411
2964        movl    alloc_blocks, %eax
2965        cmpl    alloc_blocks_lim, %eax
2966        jb      .L413
2967.L411:
2968        movl    $254, 32(%edx)
2969        movl    $newTVarzh_fast, 36(%ebx)
2970        movl    $0, 112(%ebx)
2971        call    __DISCARD__
2972        movl    $stg_gc_gen_hp, %eax
2973        jmp     *%eax
2974        .p2align 2,,3
2975.L413:
2976        subl    $8, %esp
2977        pushl   %esi
2978        leal    -8(%ebx), %eax
2979        pushl   %eax
2980        call    stmNewTVar
2981        addl    $16, %esp
2982        movl    %eax, %esi
2983        call    __DISCARD__
2984        movl    (%ebp), %eax
2985        jmp     *%eax
2986        .size   newTVarzh_fast, .-newTVarzh_fast
2987        .p2align 2,,3
2988.globl readTVarzh_fast
2989        .type   readTVarzh_fast, @function
2990readTVarzh_fast:
2991        subl    $12, %esp
2992/APP
2993        --- BEGIN ---
2994/NO_APP
2995        call    __DISCARD__
2996        movl    %ebx, %edx
2997        movl    104(%ebx), %eax
2998        movl    8(%eax), %eax
2999        testl   %eax, %eax
3000        je      .L417
3001        movl    alloc_blocks, %eax
3002        cmpl    alloc_blocks_lim, %eax
3003        jb      .L419
3004.L417:
3005        movl    $254, 32(%edx)
3006        movl    $readTVarzh_fast, 36(%ebx)
3007        movl    $0, 112(%ebx)
3008        call    __DISCARD__
3009        movl    $stg_gc_gen_hp, %eax
3010        jmp     *%eax
3011        .p2align 2,,3
3012.L419:
3013        pushl   %eax
3014        pushl   %esi
3015        movl    96(%ebx), %eax
3016        pushl   40(%eax)
3017        leal    -8(%ebx), %eax
3018        pushl   %eax
3019        call    stmReadTVar
3020        addl    $16, %esp
3021        movl    %eax, %esi
3022        call    __DISCARD__
3023        movl    (%ebp), %eax
3024        jmp     *%eax
3025        .size   readTVarzh_fast, .-readTVarzh_fast
3026        .p2align 2,,3
3027.globl writeTVarzh_fast
3028        .type   writeTVarzh_fast, @function
3029writeTVarzh_fast:
3030        subl    $12, %esp
3031/APP
3032        --- BEGIN ---
3033/NO_APP
3034        call    __DISCARD__
3035        movl    %ebx, %edx
3036        movl    104(%ebx), %eax
3037        movl    8(%eax), %eax
3038        testl   %eax, %eax
3039        je      .L423
3040        movl    alloc_blocks, %eax
3041        cmpl    alloc_blocks_lim, %eax
3042        jb      .L425
3043.L423:
3044        movl    $252, 32(%edx)
3045        movl    $writeTVarzh_fast, 36(%ebx)
3046        movl    $0, 112(%ebx)
3047        call    __DISCARD__
3048        movl    $stg_gc_gen_hp, %eax
3049        jmp     *%eax
3050        .p2align 2,,3
3051.L425:
3052        pushl   4(%ebx)
3053        pushl   %esi
3054        movl    96(%ebx), %eax
3055        pushl   40(%eax)
3056        leal    -8(%ebx), %eax
3057        pushl   %eax
3058        call    stmWriteTVar
3059        addl    $16, %esp
3060        call    __DISCARD__
3061        movl    (%ebp), %eax
3062        jmp     *%eax
3063        .size   writeTVarzh_fast, .-writeTVarzh_fast
3064        .p2align 2,,3
3065.globl isEmptyMVarzh_fast
3066        .type   isEmptyMVarzh_fast, @function
3067isEmptyMVarzh_fast:
3068        subl    $12, %esp
3069/APP
3070        --- BEGIN ---
3071/NO_APP
3072        call    __DISCARD__
3073        cmpl    $stg_EMPTY_MVAR_info, (%esi)
3074        je      .L429
3075        xorl    %esi, %esi
3076        call    __DISCARD__
3077        movl    (%ebp), %eax
3078        jmp     *%eax
3079        .p2align 2,,3
3080.L429:
3081        movl    $1, %esi
3082        call    __DISCARD__
3083        movl    (%ebp), %eax
3084        jmp     *%eax
3085        .size   isEmptyMVarzh_fast, .-isEmptyMVarzh_fast
3086        .p2align 2,,3
3087.globl newMVarzh_fast
3088        .type   newMVarzh_fast, @function
3089newMVarzh_fast:
3090        subl    $12, %esp
3091/APP
3092        --- BEGIN ---
3093/NO_APP
3094        call    __DISCARD__
3095        leal    16(%edi), %edx
3096        movl    %edx, %edi
3097        cmpl    92(%ebx), %edx
3098        ja      .L434
3099        leal    -12(%edx), %eax
3100        movl    $stg_EMPTY_MVAR_info, -12(%edx)
3101        movl    $stg_END_TSO_QUEUE_closure, 4(%eax)
3102        movl    $stg_END_TSO_QUEUE_closure, 8(%eax)
3103        movl    $stg_END_TSO_QUEUE_closure, 12(%eax)
3104        movl    %eax, %esi
3105        call    __DISCARD__
3106        movl    (%ebp), %eax
3107        jmp     *%eax
3108        .p2align 2,,3
3109.L434:
3110        movl    $16, 112(%ebx)
3111        movl    $255, 32(%ebx)
3112        movl    $newMVarzh_fast, 36(%ebx)
3113        call    __DISCARD__
3114        movl    $stg_gc_gen, %eax
3115        jmp     *%eax
3116        .size   newMVarzh_fast, .-newMVarzh_fast
3117        .p2align 2,,3
3118.globl takeMVarzh_fast
3119        .type   takeMVarzh_fast, @function
3120takeMVarzh_fast:
3121        subl    $12, %esp
3122/APP
3123        --- BEGIN ---
3124/NO_APP
3125        call    __DISCARD__
3126        movl    %esi, 4(%esp)
3127        cmpl    $stg_EMPTY_MVAR_info, (%esi)
3128        je      .L450
3129.L439:
3130        movl    4(%esp), %ecx
3131        movl    12(%ecx), %ecx
3132        movl    %ecx, 8(%esp)
3133        movl    4(%esp), %eax
3134        movl    4(%eax), %edx
3135        cmpl    $stg_END_TSO_QUEUE_closure, %edx
3136        je      .L451
3137.L445:
3138        movl    56(%edx), %eax
3139        addl    $12, %eax
3140        movl    %eax, 56(%edx)
3141        movl    -4(%eax), %eax
3142        movl    4(%esp), %ecx
3143        movl    %eax, 12(%ecx)
3144        orl     $1, 16(%edx)
3145        subl    $8, %esp
3146        pushl   4(%ecx)
3147        leal    -8(%ebx), %eax
3148        pushl   %eax
3149        call    unblockOne
3150        addl    $16, %esp
3151        movl    4(%esp), %edx
3152        movl    %eax, 4(%edx)
3153        movl    $stg_END_TSO_QUEUE_closure, %edx
3154        cmpl    %eax, %edx
3155        je      .L452
3156.L447:
3157        movl    8(%esp), %esi
3158        call    __DISCARD__
3159        movl    (%ebp), %eax
3160.L444:
3161        jmp     *%eax
3162.L440:
3163        .p2align 2,,3
3164.L450:
3165        cmpl    $stg_END_TSO_QUEUE_closure, 4(%esi)
3166        je      .L441
3167        movl    %esi, %ecx
3168        addl    $8, %ecx
3169        movl    8(%esi), %edx
3170        movl    96(%ebx), %eax
3171        movl    %eax, 4(%edx)
3172.L443:
3173        movl    96(%ebx), %eax
3174        movl    $stg_END_TSO_QUEUE_closure, 4(%eax)
3175        movl    96(%ebx), %eax
3176        movw    $1, 14(%eax)
3177        movl    96(%ebx), %eax
3178        movl    4(%esp), %edx
3179        movl    %edx, 20(%eax)
3180        movl    96(%ebx), %eax
3181        movl    %eax, (%ecx)
3182        call    __DISCARD__
3183        movl    $stg_block_takemvar, %eax
3184        jmp     *%eax
3185        .p2align 2,,3
3186.L451:
3187        movl    $stg_END_TSO_QUEUE_closure, 12(%eax)
3188        movl    $stg_EMPTY_MVAR_info, (%eax)
3189        movl    %ecx, %esi
3190        call    __DISCARD__
3191        movl    (%ebp), %eax
3192        jmp     *%eax
3193.L448:
3194        .p2align 2,,3
3195.L452:
3196        movl    4(%esp), %ecx
3197        movl    %edx, 8(%ecx)
3198        movl    8(%esp), %esi
3199        call    __DISCARD__
3200        movl    (%ebp), %eax
3201        jmp     *%eax
3202.L441:
3203        movl    96(%ebx), %eax
3204        movl    4(%esp), %edx
3205        movl    %eax, 4(%edx)
3206        movl    %edx, %ecx
3207        addl    $8, %ecx
3208        jmp     .L443
3209        .size   takeMVarzh_fast, .-takeMVarzh_fast
3210        .p2align 2,,3
3211.globl tryTakeMVarzh_fast
3212        .type   tryTakeMVarzh_fast, @function
3213tryTakeMVarzh_fast:
3214        subl    $12, %esp
3215/APP
3216        --- BEGIN ---
3217/NO_APP
3218        call    __DISCARD__
3219        movl    %esi, 4(%esp)
3220        cmpl    $stg_EMPTY_MVAR_info, (%esi)
3221        je      .L463
3222.L454:
3223        movl    4(%esp), %eax
3224        movl    12(%eax), %eax
3225        movl    %eax, 8(%esp)
3226        movl    4(%esp), %ecx
3227        movl    4(%ecx), %edx
3228        cmpl    $stg_END_TSO_QUEUE_closure, %edx
3229        je      .L464
3230.L457:
3231        movl    56(%edx), %eax
3232        addl    $12, %eax
3233        movl    %eax, 56(%edx)
3234        movl    -4(%eax), %eax
3235        movl    4(%esp), %ecx
3236        movl    %eax, 12(%ecx)
3237        orl     $1, 16(%edx)
3238        subl    $8, %esp
3239        pushl   4(%ecx)
3240        leal    -8(%ebx), %eax
3241        pushl   %eax
3242        call    unblockOne
3243        addl    $16, %esp
3244        movl    4(%esp), %edx
3245        movl    %eax, 4(%edx)
3246        movl    $stg_END_TSO_QUEUE_closure, %edx
3247        cmpl    %eax, %edx
3248        je      .L465
3249.L459:
3250.L461:
3251        movl    $1, %esi
3252        movl    8(%esp), %eax
3253        movl    %eax, -4(%ebp)
3254        subl    $4, %ebp
3255        call    __DISCARD__
3256        movl    4(%ebp), %eax
3257        jmp     *%eax
3258        .p2align 2,,3
3259.L464:
3260        movl    $stg_END_TSO_QUEUE_closure, 12(%ecx)
3261        movl    $stg_EMPTY_MVAR_info, (%ecx)
3262        jmp     .L461
3263.L455:
3264        .p2align 2,,3
3265.L463:
3266        xorl    %esi, %esi
3267        movl    $stg_NO_FINALIZER_closure, -4(%ebp)
3268        subl    $4, %ebp
3269        call    __DISCARD__
3270        movl    4(%ebp), %eax
3271        jmp     *%eax
3272.L460:
3273        .p2align 2,,3
3274.L465:
3275        movl    4(%esp), %ecx
3276        movl    %edx, 8(%ecx)
3277        jmp     .L461
3278        .size   tryTakeMVarzh_fast, .-tryTakeMVarzh_fast
3279        .p2align 2,,3
3280.globl putMVarzh_fast
3281        .type   putMVarzh_fast, @function
3282putMVarzh_fast:
3283        subl    $12, %esp
3284/APP
3285        --- BEGIN ---
3286/NO_APP
3287        call    __DISCARD__
3288        movl    %esi, 8(%esp)
3289        cmpl    $stg_FULL_MVAR_info, (%esi)
3290        je      .L478
3291.L467:
3292        movl    8(%esp), %eax
3293        movl    4(%eax), %ecx
3294        cmpl    $stg_END_TSO_QUEUE_closure, %ecx
3295        je      .L479
3296.L473:
3297        movl    56(%ecx), %edx
3298        movl    4(%ebx), %eax
3299        movl    %eax, 4(%edx)
3300        movl    56(%ecx), %eax
3301        movl    $stg_gc_unpt_r1_info, (%eax)
3302        orl     $1, 16(%ecx)
3303        subl    $8, %esp
3304        movl    16(%esp), %eax
3305        pushl   4(%eax)
3306        leal    -8(%ebx), %eax
3307        pushl   %eax
3308        call    unblockOne
3309        addl    $16, %esp
3310        movl    8(%esp), %edx
3311        movl    %eax, 4(%edx)
3312        movl    $stg_END_TSO_QUEUE_closure, %edx
3313        cmpl    %eax, %edx
3314        je      .L480
3315.L475:
3316        call    __DISCARD__
3317        movl    (%ebp), %eax
3318.L472:
3319        jmp     *%eax
3320.L468:
3321        .p2align 2,,3
3322.L478:
3323        cmpl    $stg_END_TSO_QUEUE_closure, 4(%esi)
3324        je      .L469
3325        movl    %esi, %ecx
3326        addl    $8, %ecx
3327        movl    8(%esi), %edx
3328        movl    96(%ebx), %eax
3329        movl    %eax, 4(%edx)
3330.L471:
3331        movl    96(%ebx), %eax
3332        movl    $stg_END_TSO_QUEUE_closure, 4(%eax)
3333        movl    96(%ebx), %eax
3334        movw    $1, 14(%eax)
3335        movl    96(%ebx), %eax
3336        movl    8(%esp), %edx
3337        movl    %edx, 20(%eax)
3338        movl    96(%ebx), %eax
3339        movl    %eax, (%ecx)
3340        call    __DISCARD__
3341        movl    $stg_block_putmvar, %eax
3342        jmp     *%eax
3343        .p2align 2,,3
3344.L479:
3345        movl    4(%ebx), %eax
3346        movl    8(%esp), %edx
3347        movl    %eax, 12(%edx)
3348        movl    $stg_FULL_MVAR_info, (%edx)
3349        call    __DISCARD__
3350        movl    (%ebp), %eax
3351        jmp     *%eax
3352.L476:
3353        .p2align 2,,3
3354.L480:
3355        movl    8(%esp), %eax
3356        movl    %edx, 8(%eax)
3357        call    __DISCARD__
3358        movl    (%ebp), %eax
3359        jmp     *%eax
3360.L469:
3361        movl    96(%ebx), %eax
3362        movl    8(%esp), %edx
3363        movl    %eax, 4(%edx)
3364        movl    %edx, %ecx
3365        addl    $8, %ecx
3366        jmp     .L471
3367        .size   putMVarzh_fast, .-putMVarzh_fast
3368        .p2align 2,,3
3369.globl tryPutMVarzh_fast
3370        .type   tryPutMVarzh_fast, @function
3371tryPutMVarzh_fast:
3372        subl    $12, %esp
3373/APP
3374        --- BEGIN ---
3375/NO_APP
3376        call    __DISCARD__
3377        movl    %esi, 8(%esp)
3378        cmpl    $stg_FULL_MVAR_info, (%esi)
3379        je      .L491
3380.L482:
3381        movl    8(%esp), %eax
3382        movl    4(%eax), %ecx
3383        cmpl    $stg_END_TSO_QUEUE_closure, %ecx
3384        je      .L492
3385.L485:
3386        movl    56(%ecx), %edx
3387        movl    4(%ebx), %eax
3388        movl    %eax, 4(%edx)
3389        movl    56(%ecx), %eax
3390        movl    $stg_gc_unpt_r1_info, (%eax)
3391        orl     $1, 16(%ecx)
3392        subl    $8, %esp
3393        movl    16(%esp), %eax
3394        pushl   4(%eax)
3395        leal    -8(%ebx), %eax
3396        pushl   %eax
3397        call    unblockOne
3398        addl    $16, %esp
3399        movl    8(%esp), %edx
3400        movl    %eax, 4(%edx)
3401        movl    $stg_END_TSO_QUEUE_closure, %edx
3402        cmpl    %eax, %edx
3403        je      .L493
3404.L487:
3405.L489:
3406        movl    $1, %esi
3407        call    __DISCARD__
3408        movl    (%ebp), %eax
3409        jmp     *%eax
3410        .p2align 2,,3
3411.L492:
3412        movl    4(%ebx), %eax
3413        movl    8(%esp), %edx
3414        movl    %eax, 12(%edx)
3415        movl    $stg_FULL_MVAR_info, (%edx)
3416        movl    $1, %esi
3417        call    __DISCARD__
3418        movl    (%ebp), %eax
3419        jmp     *%eax
3420.L483:
3421        .p2align 2,,3
3422.L491:
3423        xorl    %esi, %esi
3424        call    __DISCARD__
3425        movl    (%ebp), %eax
3426        jmp     *%eax
3427.L488:
3428        .p2align 2,,3
3429.L493:
3430        movl    8(%esp), %eax
3431        movl    %edx, 8(%eax)
3432        movl    $1, %esi
3433        call    __DISCARD__
3434        movl    (%ebp), %eax
3435        jmp     *%eax
3436        .size   tryPutMVarzh_fast, .-tryPutMVarzh_fast
3437        .p2align 2,,3
3438.globl makeStableNamezh_fast
3439        .type   makeStableNamezh_fast, @function
3440makeStableNamezh_fast:
3441        subl    $12, %esp
3442/APP
3443        --- BEGIN ---
3444/NO_APP
3445        call    __DISCARD__
3446        leal    8(%edi), %eax
3447        movl    %eax, %edi
3448        cmpl    92(%ebx), %eax
3449        ja      .L495
3450        subl    $12, %esp
3451        pushl   %esi
3452        call    lookupStableName
3453        addl    $16, %esp
3454        movl    %eax, %ecx
3455        sall    $4, %eax
3456        movl    %eax, 8(%esp)
3457        movl    stable_ptr_table, %eax
3458        movl    8(%esp), %edx
3459        movl    12(%eax,%edx), %eax
3460        testl   %eax, %eax
3461        je      .L497
3462        movl    %eax, %edx
3463.L499:
3464        movl    %edx, %esi
3465        call    __DISCARD__
3466        movl    (%ebp), %eax
3467        jmp     *%eax
3468        .p2align 2,,3
3469.L495:
3470        movl    $8, 112(%ebx)
3471        movl    $254, 32(%ebx)
3472        movl    $makeStableNamezh_fast, 36(%ebx)
3473        call    __DISCARD__
3474        movl    $stg_gc_gen, %eax
3475        jmp     *%eax
3476        .p2align 2,,3
3477.L497:
3478        leal    -4(%edi), %edx
3479        movl    $stg_STABLE_NAME_info, (%edx)
3480        movl    %ecx, 4(%edx)
3481        movl    stable_ptr_table, %eax
3482        movl    8(%esp), %ecx
3483        movl    %edx, 12(%eax,%ecx)
3484        movl    %edx, %esi
3485        call    __DISCARD__
3486        movl    (%ebp), %eax
3487        jmp     *%eax
3488        .size   makeStableNamezh_fast, .-makeStableNamezh_fast
3489        .p2align 2,,3
3490.globl makeStablePtrzh_fast
3491        .type   makeStablePtrzh_fast, @function
3492makeStablePtrzh_fast:
3493        subl    $12, %esp
3494/APP
3495        --- BEGIN ---
3496/NO_APP
3497        call    __DISCARD__
3498        movl    %ebx, %edx
3499        movl    104(%ebx), %eax
3500        movl    8(%eax), %eax
3501        testl   %eax, %eax
3502        je      .L503
3503        movl    alloc_blocks, %eax
3504        cmpl    alloc_blocks_lim, %eax
3505        jb      .L505
3506.L503:
3507        movl    $254, 32(%edx)
3508        movl    $makeStablePtrzh_fast, 36(%ebx)
3509        movl    $0, 112(%ebx)
3510        call    __DISCARD__
3511        movl    $stg_gc_gen_hp, %eax
3512        jmp     *%eax
3513        .p2align 2,,3
3514.L505:
3515        subl    $12, %esp
3516        pushl   %esi
3517        call    getStablePtr
3518        addl    $16, %esp
3519        movl    %eax, %esi
3520        call    __DISCARD__
3521        movl    (%ebp), %eax
3522        jmp     *%eax
3523        .size   makeStablePtrzh_fast, .-makeStablePtrzh_fast
3524        .p2align 2,,3
3525.globl deRefStablePtrzh_fast
3526        .type   deRefStablePtrzh_fast, @function
3527deRefStablePtrzh_fast:
3528        subl    $12, %esp
3529/APP
3530        --- BEGIN ---
3531/NO_APP
3532        call    __DISCARD__
3533        movl    %esi, %edx
3534        sall    $4, %edx
3535        movl    stable_ptr_table, %eax
3536        movl    (%edx,%eax), %esi
3537        call    __DISCARD__
3538        jmp     *(%ebp)
3539        .size   deRefStablePtrzh_fast, .-deRefStablePtrzh_fast
3540        .p2align 2,,3
3541.globl newBCOzh_fast
3542        .type   newBCOzh_fast, @function
3543newBCOzh_fast:
3544        subl    $28, %esp
3545/APP
3546        --- BEGIN ---
3547/NO_APP
3548        call    __DISCARD__
3549        movl    20(%ebx), %eax
3550        movl    %eax, 16(%esp)
3551        addl    $4, %eax
3552        movl    %eax, 12(%esp)
3553        movl    16(%esp), %edx
3554        movl    4(%edx), %eax
3555        addl    $6, %eax
3556        movl    %eax, 20(%esp)
3557        movl    %eax, %edx
3558        sall    $2, %edx
3559        leal    (%edx,%edi), %eax
3560        movl    %eax, %edi
3561        cmpl    92(%ebx), %eax
3562        ja      .L511
3563        subl    %edx, %eax
3564        movl    %eax, 8(%esp)
3565        addl    $4, %eax
3566        movl    %eax, 24(%esp)
3567        movl    8(%esp), %edx
3568        movl    $stg_BCO_info, 4(%edx)
3569        movl    %esi, 4(%eax)
3570        movl    4(%ebx), %eax
3571        movl    24(%esp), %ecx
3572        movl    %eax, 8(%ecx)
3573        movl    8(%ebx), %eax
3574        movl    %eax, 12(%ecx)
3575        movl    12(%ebx), %eax
3576        movl    %eax, 16(%ecx)
3577        movl    16(%ebx), %eax
3578        movw    %ax, 20(%ecx)
3579        movl    20(%esp), %eax
3580        movw    %ax, 22(%ecx)
3581        movl    16(%esp), %edx
3582        movl    4(%edx), %eax
3583        testl   %eax, %eax
3584        je      .L513
3585        xorl    %edx, %edx
3586        .p2align 2,,3
3587.L515:
3588        movl    16(%esp), %ecx
3589        movl    8(%ecx,%edx,4), %eax
3590        movl    8(%esp), %ecx
3591        movl    %eax, 28(%ecx,%edx,4)
3592        incl    %edx
3593.L517:
3594        movl    12(%esp), %eax
3595        cmpl    %edx, (%eax)
3596        ja      .L515
3597.L513:
3598        movl    24(%esp), %esi
3599        call    __DISCARD__
3600        movl    (%ebp), %eax
3601        jmp     *%eax
3602.L511:
3603        movl    %edx, 112(%ebx)
3604        movl    $208, 32(%ebx)
3605        movl    $newBCOzh_fast, 36(%ebx)
3606        call    __DISCARD__
3607        movl    $stg_gc_gen, %eax
3608        jmp     *%eax
3609        .size   newBCOzh_fast, .-newBCOzh_fast
3610        .p2align 2,,3
3611.globl mkApUpd0zh_fast
3612        .type   mkApUpd0zh_fast, @function
3613mkApUpd0zh_fast:
3614        subl    $12, %esp
3615/APP
3616        --- BEGIN ---
3617/NO_APP
3618        call    __DISCARD__
3619        leal    16(%edi), %edx
3620        movl    %edx, %edi
3621        cmpl    92(%ebx), %edx
3622        ja      .L521
3623        leal    -12(%edx), %eax
3624        movl    $stg_AP_info, -12(%edx)
3625        movw    $0, 10(%eax)
3626        movl    %esi, 12(%eax)
3627        movl    %eax, %esi
3628        call    __DISCARD__
3629        movl    (%ebp), %eax
3630        jmp     *%eax
3631        .p2align 2,,3
3632.L521:
3633        movl    $16, 112(%ebx)
3634        movl    $254, 32(%ebx)
3635        movl    $mkApUpd0zh_fast, 36(%ebx)
3636        call    __DISCARD__
3637        movl    $stg_gc_gen, %eax
3638        jmp     *%eax
3639        .size   mkApUpd0zh_fast, .-mkApUpd0zh_fast
3640        .p2align 2,,3
3641.globl waitReadzh_fast
3642        .type   waitReadzh_fast, @function
3643waitReadzh_fast:
3644        subl    $12, %esp
3645/APP
3646        --- BEGIN ---
3647/NO_APP
3648        call    __DISCARD__
3649        movl    96(%ebx), %eax
3650        movw    $4, 14(%eax)
3651        movl    96(%ebx), %eax
3652        movl    %esi, 20(%eax)
3653        cmpl    $stg_END_TSO_QUEUE_closure, blocked_queue_hd
3654        je      .L526
3655        movl    96(%ebx), %edx
3656        movl    blocked_queue_tl, %eax
3657        movl    %edx, 4(%eax)
3658.L528:
3659        movl    96(%ebx), %eax
3660        movl    %eax, blocked_queue_tl
3661        call    __DISCARD__
3662        movl    $stg_block_noregs, %eax
3663        jmp     *%eax
3664        .p2align 2,,3
3665.L526:
3666        movl    96(%ebx), %eax
3667        movl    %eax, blocked_queue_hd
3668        jmp     .L528
3669        .size   waitReadzh_fast, .-waitReadzh_fast
3670        .p2align 2,,3
3671.globl waitWritezh_fast
3672        .type   waitWritezh_fast, @function
3673waitWritezh_fast:
3674        subl    $12, %esp
3675/APP
3676        --- BEGIN ---
3677/NO_APP
3678        call    __DISCARD__
3679        movl    96(%ebx), %eax
3680        movw    $5, 14(%eax)
3681        movl    96(%ebx), %eax
3682        movl    %esi, 20(%eax)
3683        cmpl    $stg_END_TSO_QUEUE_closure, blocked_queue_hd
3684        je      .L531
3685        movl    96(%ebx), %edx
3686        movl    blocked_queue_tl, %eax
3687        movl    %edx, 4(%eax)
3688.L533:
3689        movl    96(%ebx), %eax
3690        movl    %eax, blocked_queue_tl
3691        call    __DISCARD__
3692        movl    $stg_block_noregs, %eax
3693        jmp     *%eax
3694        .p2align 2,,3
3695.L531:
3696        movl    96(%ebx), %eax
3697        movl    %eax, blocked_queue_hd
3698        jmp     .L533
3699        .size   waitWritezh_fast, .-waitWritezh_fast
3700.globl stg_delayzh_malloc_str
3701        .data
3702        .type   stg_delayzh_malloc_str, @object
3703        .size   stg_delayzh_malloc_str, 13
3704stg_delayzh_malloc_str:
3705        .string "delayzh_fast"
3706        .text
3707        .p2align 2,,3
3708.globl delayzh_fast
3709        .type   delayzh_fast, @function
3710delayzh_fast:
3711        subl    $12, %esp
3712/APP
3713        --- BEGIN ---
3714/NO_APP
3715        call    __DISCARD__
3716        movl    96(%ebx), %eax
3717        movw    $6, 14(%eax)
3718        call    getourtimeofday
3719        movl    %eax, 4(%esp)
3720        movl    RtsFlags+92, %edx
3721        leal    (%edx,%edx,4), %edx
3722        leal    (%edx,%edx,4), %edx
3723        leal    (%edx,%edx,4), %edx
3724        sall    $3, %edx
3725        movl    %edx, (%esp)
3726        leal    -1(%esi,%edx), %ecx
3727        movl    %ecx, %eax
3728        xorl    %edx, %edx
3729        divl    (%esp)
3730        movl    %eax, %ecx
3731        movl    4(%esp), %eax
3732        leal    1(%ecx,%eax), %ecx
3733        movl    %ecx, 8(%esp)
3734        movl    96(%ebx), %eax
3735        movl    %ecx, 20(%eax)
3736        movl    sleeping_queue, %ecx
3737        movl    $stg_END_TSO_QUEUE_closure, %edx
3738        cmpl    %ecx, %edx
3739        je      .L536
3740        movl    8(%esp), %eax
3741        cmpl    20(%ecx), %eax
3742        ja      .L547
3743        jmp     .L536
3744.L541:
3745        .p2align 2,,3
3746.L548:
3747        movl    8(%esp), %eax
3748        cmpl    20(%edx), %eax
3749        jbe     .L540
3750        movl    %edx, %ecx
3751.L538:
3752.L547:
3753        movl    4(%ecx), %edx
3754.L539:
3755        movl    $stg_END_TSO_QUEUE_closure, %eax
3756        cmpl    %edx, %eax
3757        jne     .L548
3758.L540:
3759        movl    96(%ebx), %eax
3760        movl    %edx, 4(%eax)
3761        testl   %ecx, %ecx
3762        je      .L543
3763        movl    96(%ebx), %eax
3764        movl    %eax, 4(%ecx)
3765.L545:
3766        call    __DISCARD__
3767        movl    $stg_block_noregs, %eax
3768        jmp     *%eax
3769.L536:
3770        movl    96(%ebx), %eax
3771        movl    %ecx, 4(%eax)
3772.L543:
3773        movl    96(%ebx), %eax
3774        movl    %eax, sleeping_queue
3775        call    __DISCARD__
3776        movl    $stg_block_noregs, %eax
3777        jmp     *%eax
3778        .size   delayzh_fast, .-delayzh_fast
3779        .p2align 2,,3
3780.globl noDuplicatezh_fast
3781        .type   noDuplicatezh_fast, @function
3782noDuplicatezh_fast:
3783        subl    $12, %esp
3784/APP
3785        --- BEGIN ---
3786/NO_APP
3787        call    __DISCARD__
3788        movl    96(%ebx), %eax
3789        movl    %ebp, 56(%eax)
3790        movl    104(%ebx), %edx
3791        leal    4(%edi), %eax
3792        movl    %eax, 4(%edx)
3793        movl    %ebx, %eax
3794        subl    $8, %esp
3795        pushl   96(%ebx)
3796        subl    $8, %eax
3797        pushl   %eax
3798        call    threadPaused
3799        addl    $16, %esp
3800        movl    96(%ebx), %eax
3801        cmpw    $3, 12(%eax)
3802        je      .L550
3803        movl    56(%eax), %ebp
3804        addl    $144, %eax
3805        movl    %eax, 84(%ebx)
3806        movl    104(%ebx), %edx
3807        movl    4(%edx), %edi
3808        subl    $4, %edi
3809        movl    24(%edx), %eax
3810        sall    $12, %eax
3811        movl    (%edx), %edx
3812        decl    %edx
3813        addl    %edx, %eax
3814        movl    %eax, 92(%ebx)
3815        call    __DISCARD__
3816        movl    (%ebp), %eax
3817        jmp     *%eax
3818        .p2align 2,,3
3819.L550:
3820        call    __DISCARD__
3821        movl    $stg_threadFinished, %eax
3822        jmp     *%eax
3823        .size   noDuplicatezh_fast, .-noDuplicatezh_fast
3824.globl GHC_ZCCCallable_static_info
3825        .bss
3826        .align 4
3827        .type   GHC_ZCCCallable_static_info, @object
3828        .size   GHC_ZCCCallable_static_info, 4
3829GHC_ZCCCallable_static_info:
3830        .zero   4
3831.globl GHC_ZCCReturnable_static_info
3832        .align 4
3833        .type   GHC_ZCCReturnable_static_info, @object
3834        .size   GHC_ZCCReturnable_static_info, 4
3835GHC_ZCCReturnable_static_info:
3836        .zero   4
3837        .comm   mp_tmp1,12,1
3838        .comm   mp_tmp2,12,1
3839        .comm   mp_result1,12,1
3840        .comm   mp_result2,12,1
3841        .comm   mp_tmp_w,4,1
3842        .ident  "GCC: (GNU) 4.1.2"