Ticket #1421: PrimOps.2.s

File PrimOps.2.s, 57.8 KB (added by maeder@…, 7 years ago)

after changed mangler

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