Ticket #1421: PrimOps.s

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