1 .text 2 .align 2 3 .globl privateSnippetExecutor 4 .type privateSnippetExecutor, @function 5 privateSnippetExecutor: 6 .LFB3: 7 pushq %rbp 8 .LCFI0: 9 movq %rsp, %rbp 10 .LCFI1: 11 subq $160, %rsp 12 .LCFI2: 13 movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex 14 15 movq %rdi, -112(%rbp) # Save GP registers 16 movq %rsi, -104(%rbp) 17 movq %rdx, -96(%rbp) 18 movq %rcx, -88(%rbp) 19 movq %r8 , -80(%rbp) 20 movq %r9 , -72(%rbp) 21 22 movsd %xmm0, -64(%rbp) # Save FP registers 23 movsd %xmm1, -56(%rbp) 24 movsd %xmm2, -48(%rbp) 25 movsd %xmm3, -40(%rbp) 26 movsd %xmm4, -32(%rbp) 27 movsd %xmm5, -24(%rbp) 28 movsd %xmm6, -16(%rbp) 29 movsd %xmm7, -8(%rbp) 30 31 leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn 32 leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw 33 leaq -64(%rbp), %rcx # 4th param: void ** fpreg 34 leaq -112(%rbp), %rdx # 3rd param: void ** gpreg 35 movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset 36 movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex 37 38 call cpp_vtable_call 39 40 cmp $10, %rax # typelib_TypeClass_FLOAT 41 je .Lfloat 42 cmp $11, %rax # typelib_TypeClass_DOUBLE 43 je .Lfloat 44 45 movq -144(%rbp), %rax # Return value (int case) 46 movq -136(%rbp), %rdx # Return value (int case) 47 movq -144(%rbp), %xmm0 # Return value (int case) 48 movq -136(%rbp), %xmm1 # Return value (int case) 49 jmp .Lfinish 50 .Lfloat: 51 movlpd -144(%rbp), %xmm0 # Return value (float/double case) 52 53 .Lfinish: 54 leave 55 ret 56 .LFE3: 57 .size privateSnippetExecutor, .-privateSnippetExecutor 58 .section .eh_frame,"a",@progbits 59 .Lframe1: 60 .long .LECIE1-.LSCIE1 61 .LSCIE1: 62 .long 0x0 63 .byte 0x1 64 .string "zR" 65 .uleb128 0x1 66 .sleb128 -8 67 .byte 0x10 68 .uleb128 0x1 69 .byte 0x1b 70 .byte 0xc 71 .uleb128 0x7 72 .uleb128 0x8 73 .byte 0x90 74 .uleb128 0x1 75 .align 8 76 .LECIE1: 77 .LSFDE1: 78 .long .LEFDE1-.LASFDE1 79 .LASFDE1: 80 .long .LASFDE1-.Lframe1 81 .long .LFB3-. 82 .long .LFE3-.LFB3 83 .uleb128 0x0 84 .byte 0x4 85 .long .LCFI0-.LFB3 86 .byte 0xe 87 .uleb128 0x10 88 .byte 0x86 89 .uleb128 0x2 90 .byte 0x4 91 .long .LCFI1-.LCFI0 92 .byte 0xd 93 .uleb128 0x6 94 .align 8 95 .LEFDE1: 96 .section .note.GNU-stack,"",@progbits 97