# 1 "gcc\\win32_asm.asm"
# 1 "<command-line>"
# 1 "gcc\\win32_asm.asm"
# 33 "gcc\\win32_asm.asm"
# 1 "common/fficonfig.h" 1
# 34 "gcc\\win32_asm.asm" 2
# 1 "common/ffi.h" 1
# 63 "common/ffi.h"
# 1 "common/ffitarget.h" 1
# 64 "common/ffi.h" 2
# 35 "gcc\\win32_asm.asm" 2


 .text


        .balign 16
 .globl _ffi_call_win32

 .def _ffi_call_win32; .scl 2; .type 32; .endef

_ffi_call_win32:
.LFB1:
        pushl %ebp
.LCFI0:
        movl %esp,%ebp
.LCFI1:

        movl 20(%ebp),%ecx
        subl %ecx,%esp

        movl %esp,%eax


        pushl 12(%ebp)
        pushl %eax
        call *8(%ebp)


        addl $8,%esp


 cmpl $3, 16(%ebp)
 jz .do_thiscall
 cmpl $4, 16(%ebp)
 jnz .do_fncall
 movl (%esp), %ecx
 movl 4(%esp), %edx
 addl $8, %esp
 jmp .do_fncall
.do_thiscall:
 movl (%esp), %ecx
 addl $4, %esp

.do_fncall:




        call *32(%ebp)




        movl 24(%ebp),%ecx


        cmpl $0,28(%ebp)
        jne 0f



        cmpl $2,%ecx
        jne .Lnoretval
        fstp %st(0)

        jmp .Lepilogue

0:
 call 1f

.Lstore_table:
 .long .Lnoretval
 .long .Lretint
 .long .Lretfloat
 .long .Lretdouble
 .long .Lretlongdouble
 .long .Lretuint8
 .long .Lretsint8
 .long .Lretuint16
 .long .Lretsint16
 .long .Lretint
 .long .Lretint
 .long .Lretint64
 .long .Lretint64
 .long .Lretstruct
 .long .Lretint
 .long .Lretstruct1b
 .long .Lretstruct2b
 .long .Lretstruct4b
 .long .Lretstruct
1:
 add %ecx, %ecx
 add %ecx, %ecx
 add (%esp),%ecx
 add $4, %esp
 jmp *(%ecx)


.Lretsint8:
 movsbl %al, %eax
 jmp .Lretint

.Lretsint16:
 movswl %ax, %eax
 jmp .Lretint

.Lretuint8:
 movzbl %al, %eax
 jmp .Lretint

.Lretuint16:
 movzwl %ax, %eax
 jmp .Lretint

.Lretint:

        movl 28(%ebp),%ecx
        movl %eax,0(%ecx)
        jmp .Lepilogue

.Lretfloat:

        movl 28(%ebp),%ecx
        fstps (%ecx)
        jmp .Lepilogue

.Lretdouble:

        movl 28(%ebp),%ecx
        fstpl (%ecx)
        jmp .Lepilogue

.Lretlongdouble:

        movl 28(%ebp),%ecx
        fstpt (%ecx)
        jmp .Lepilogue

.Lretint64:

        movl 28(%ebp),%ecx
        movl %eax,0(%ecx)
        movl %edx,4(%ecx)
 jmp .Lepilogue

.Lretstruct1b:

        movl 28(%ebp),%ecx
        movb %al,0(%ecx)
        jmp .Lepilogue

.Lretstruct2b:

        movl 28(%ebp),%ecx
        movw %ax,0(%ecx)
        jmp .Lepilogue

.Lretstruct4b:

        movl 28(%ebp),%ecx
        movl %eax,0(%ecx)
        jmp .Lepilogue

.Lretstruct:


.Lnoretval:
.Lepilogue:
        movl %ebp,%esp
        popl %ebp
        ret
.ffi_call_win32_end:
        .balign 16
 .globl _ffi_closure_THISCALL

 .def _ffi_closure_THISCALL; .scl 2; .type 32; .endef

_ffi_closure_THISCALL:
 pushl %ebp
 movl %esp, %ebp
 subl $40, %esp
 leal -24(%ebp), %edx
 movl %edx, -12(%ebp)
 leal 12(%ebp), %edx
 jmp .stub
.LFE1:


        .balign 16
 .globl _ffi_closure_SYSV

 .def _ffi_closure_SYSV; .scl 2; .type 32; .endef

_ffi_closure_SYSV:
.LFB3:
 pushl %ebp
.LCFI4:
 movl %esp, %ebp
.LCFI5:
 subl $40, %esp
 leal -24(%ebp), %edx
 movl %edx, -12(%ebp)
 leal 8(%ebp), %edx
.stub:
 movl %edx, 4(%esp)
 leal -12(%ebp), %edx
 movl %edx, (%esp)
 call _ffi_closure_SYSV_inner
 movl -12(%ebp), %ecx

0:
 call 1f

.Lcls_store_table:
 .long .Lcls_noretval
 .long .Lcls_retint
 .long .Lcls_retfloat
 .long .Lcls_retdouble
 .long .Lcls_retldouble
 .long .Lcls_retuint8
 .long .Lcls_retsint8
 .long .Lcls_retuint16
 .long .Lcls_retsint16
 .long .Lcls_retint
 .long .Lcls_retint
 .long .Lcls_retllong
 .long .Lcls_retllong
 .long .Lcls_retstruct
 .long .Lcls_retint
 .long .Lcls_retstruct1
 .long .Lcls_retstruct2
 .long .Lcls_retstruct4
 .long .Lcls_retmsstruct

1:
 add %eax, %eax
 add %eax, %eax
 add (%esp),%eax
 add $4, %esp
 jmp *(%eax)


.Lcls_retsint8:
 movsbl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retsint16:
 movswl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retuint8:
 movzbl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retuint16:
 movzwl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retint:
 movl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retfloat:
 flds (%ecx)
 jmp .Lcls_epilogue

.Lcls_retdouble:
 fldl (%ecx)
 jmp .Lcls_epilogue

.Lcls_retldouble:
 fldt (%ecx)
 jmp .Lcls_epilogue

.Lcls_retllong:
 movl (%ecx), %eax
 movl 4(%ecx), %edx
 jmp .Lcls_epilogue

.Lcls_retstruct1:
 movsbl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retstruct2:
 movswl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retstruct4:
 movl (%ecx), %eax
 jmp .Lcls_epilogue

.Lcls_retstruct:

 movl %ebp, %esp
 popl %ebp
 ret $0x4

.Lcls_retmsstruct:

 mov %ecx, %eax

 jmp .Lcls_epilogue

.Lcls_noretval:
.Lcls_epilogue:
 movl %ebp, %esp
 popl %ebp
 ret
.ffi_closure_SYSV_end:
.LFE3:







        .balign 16
 .globl _ffi_closure_raw_THISCALL

 .def _ffi_closure_raw_THISCALL; .scl 2; .type 32; .endef

_ffi_closure_raw_THISCALL:
 pushl %ebp
 movl %esp, %ebp
 pushl %esi
 subl $36, %esp
 movl ((52 + 3) & ~3)(%eax), %esi
 movl ((((52 + 3) & ~3) + 4) + 4)(%eax), %edx
 movl %edx, 12(%esp)
 leal 12(%ebp), %edx
 jmp .stubraw

        .balign 16
 .globl _ffi_closure_raw_SYSV

 .def _ffi_closure_raw_SYSV; .scl 2; .type 32; .endef

_ffi_closure_raw_SYSV:
.LFB4:
 pushl %ebp
.LCFI6:
 movl %esp, %ebp
.LCFI7:
 pushl %esi
.LCFI8:
 subl $36, %esp
 movl ((52 + 3) & ~3)(%eax), %esi
 movl ((((52 + 3) & ~3) + 4) + 4)(%eax), %edx
 movl %edx, 12(%esp)
 leal 8(%ebp), %edx
.stubraw:
 movl %edx, 8(%esp)
 leal -24(%ebp), %edx
 movl %edx, 4(%esp)
 movl %esi, (%esp)
 call *(((52 + 3) & ~3) + 4)(%eax)
 movl 20(%esi), %eax
0:
 call 1f

.Lrcls_store_table:
 .long .Lrcls_noretval
 .long .Lrcls_retint
 .long .Lrcls_retfloat
 .long .Lrcls_retdouble
 .long .Lrcls_retldouble
 .long .Lrcls_retuint8
 .long .Lrcls_retsint8
 .long .Lrcls_retuint16
 .long .Lrcls_retsint16
 .long .Lrcls_retint
 .long .Lrcls_retint
 .long .Lrcls_retllong
 .long .Lrcls_retllong
 .long .Lrcls_retstruct
 .long .Lrcls_retint
 .long .Lrcls_retstruct1
 .long .Lrcls_retstruct2
 .long .Lrcls_retstruct4
 .long .Lrcls_retstruct
1:
 add %eax, %eax
 add %eax, %eax
 add (%esp),%eax
 add $4, %esp
 jmp *(%eax)


.Lrcls_retsint8:
 movsbl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retsint16:
 movswl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retuint8:
 movzbl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retuint16:
 movzwl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retint:
 movl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retfloat:
 flds -24(%ebp)
 jmp .Lrcls_epilogue

.Lrcls_retdouble:
 fldl -24(%ebp)
 jmp .Lrcls_epilogue

.Lrcls_retldouble:
 fldt -24(%ebp)
 jmp .Lrcls_epilogue

.Lrcls_retllong:
 movl -24(%ebp), %eax
 movl -20(%ebp), %edx
 jmp .Lrcls_epilogue

.Lrcls_retstruct1:
 movsbl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retstruct2:
 movswl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retstruct4:
 movl -24(%ebp), %eax
 jmp .Lrcls_epilogue

.Lrcls_retstruct:


.Lrcls_noretval:
.Lrcls_epilogue:
 addl $36, %esp
 popl %esi
 popl %ebp
 ret
.ffi_closure_raw_SYSV_end:
.LFE4:




 .balign 16
 .globl _ffi_closure_STDCALL

 .def _ffi_closure_STDCALL; .scl 2; .type 32; .endef

_ffi_closure_STDCALL:
.LFB5:
 pushl %ebp
.LCFI9:
 movl %esp, %ebp
.LCFI10:
 subl $40, %esp
 leal -24(%ebp), %edx
 movl %edx, -12(%ebp)
 leal 12(%ebp), %edx
 movl %edx, 4(%esp)
 leal -12(%ebp), %edx
 movl %edx, (%esp)
 call _ffi_closure_SYSV_inner
 movl -12(%ebp), %ecx
0:
 call 1f

.Lscls_store_table:
 .long .Lscls_noretval
 .long .Lscls_retint
 .long .Lscls_retfloat
 .long .Lscls_retdouble
 .long .Lscls_retldouble
 .long .Lscls_retuint8
 .long .Lscls_retsint8
 .long .Lscls_retuint16
 .long .Lscls_retsint16
 .long .Lscls_retint
 .long .Lscls_retint
 .long .Lscls_retllong
 .long .Lscls_retllong
 .long .Lscls_retstruct
 .long .Lscls_retint
 .long .Lscls_retstruct1
 .long .Lscls_retstruct2
 .long .Lscls_retstruct4
1:
 add %eax, %eax
 add %eax, %eax
 add (%esp),%eax
 add $4, %esp
 jmp *(%eax)


.Lscls_retsint8:
 movsbl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retsint16:
 movswl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retuint8:
 movzbl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retuint16:
 movzwl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retint:
 movl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retfloat:
 flds (%ecx)
 jmp .Lscls_epilogue

.Lscls_retdouble:
 fldl (%ecx)
 jmp .Lscls_epilogue

.Lscls_retldouble:
 fldt (%ecx)
 jmp .Lscls_epilogue

.Lscls_retllong:
 movl (%ecx), %eax
 movl 4(%ecx), %edx
 jmp .Lscls_epilogue

.Lscls_retstruct1:
 movsbl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retstruct2:
 movswl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retstruct4:
 movl (%ecx), %eax
 jmp .Lscls_epilogue

.Lscls_retstruct:


.Lscls_noretval:
.Lscls_epilogue:
 movl %ebp, %esp
 popl %ebp
 ret
.ffi_closure_STDCALL_end:
.LFE5:


 .section .eh_frame,"w"

.Lframe1:
.LSCIE1:
 .long .LECIE1-.LASCIE1
.LASCIE1:
 .long 0x0
 .byte 0x1



 .ascii "\0"

 .byte 0x1
 .byte 0x7c
 .byte 0x8




 .byte 0xc
 .byte 0x4
 .byte 0x4
 .byte 0x88
 .byte 0x1
 .align 4
.LECIE1:

.LSFDE1:
 .long .LEFDE1-.LASFDE1
.LASFDE1:
 .long .LASFDE1-.Lframe1



 .long .LFB1

 .long .LFE1-.LFB1





 .byte 0x4
 .long .LCFI0-.LFB1
 .byte 0xe
 .byte 0x8
 .byte 0x85
 .byte 0x2

 .byte 0x4
 .long .LCFI1-.LCFI0
 .byte 0xd
 .byte 0x5


 .align 4
.LEFDE1:


.LSFDE3:
 .long .LEFDE3-.LASFDE3
.LASFDE3:
 .long .LASFDE3-.Lframe1



 .long .LFB3

 .long .LFE3-.LFB3





 .byte 0x4
 .long .LCFI4-.LFB3
 .byte 0xe
 .byte 0x8
 .byte 0x85
 .byte 0x2

 .byte 0x4
 .long .LCFI5-.LCFI4
 .byte 0xd
 .byte 0x5


 .align 4
.LEFDE3:



.LSFDE4:
 .long .LEFDE4-.LASFDE4
.LASFDE4:
 .long .LASFDE4-.Lframe1



 .long .LFB4

 .long .LFE4-.LFB4





 .byte 0x4
 .long .LCFI6-.LFB4
 .byte 0xe
 .byte 0x8
 .byte 0x85
 .byte 0x2

 .byte 0x4
 .long .LCFI7-.LCFI6
 .byte 0xd
 .byte 0x5

 .byte 0x4
 .long .LCFI8-.LCFI7
 .byte 0x86
 .byte 0x3


 .align 4
.LEFDE4:



.LSFDE5:
 .long .LEFDE5-.LASFDE5
.LASFDE5:
 .long .LASFDE5-.Lframe1



 .long .LFB5

 .long .LFE5-.LFB5





 .byte 0x4
 .long .LCFI9-.LFB5
 .byte 0xe
 .byte 0x8
 .byte 0x85
 .byte 0x2

 .byte 0x4
 .long .LCFI10-.LCFI9
 .byte 0xd
 .byte 0x5


 .align 4
.LEFDE5:
