/*
 * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
 * 
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */

#ifdef __x86_64__

#include <mach/vm_param.h>

.text
.globl __objc_blockTrampolineImpl
.globl __objc_blockTrampolineStart
.globl __objc_blockTrampolineLast

.align PAGE_SHIFT
__objc_blockTrampolineImpl:
    popq %r10
    andq $0xFFFFFFFFFFFFFFF8, %r10
    subq $ 2*PAGE_SIZE, %r10
    movq %rdi, %rsi // arg1 -> arg2
    movq (%r10), %rdi // block -> arg1
    jmp  *16(%rdi)

.macro TrampolineEntry
    callq __objc_blockTrampolineImpl
    nop
    nop
    nop
.endmacro

.align 5
__objc_blockTrampolineStart:
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
    TrampolineEntry
__objc_blockTrampolineLast:
    TrampolineEntry


.text
.globl __objc_blockTrampolineImpl_stret
.globl __objc_blockTrampolineStart_stret
.globl __objc_blockTrampolineLast_stret

.align PAGE_SHIFT
__objc_blockTrampolineImpl_stret:
    popq %r10
    andq $0xFFFFFFFFFFFFFFF8, %r10
    subq $ 3*PAGE_SIZE, %r10
    // %rdi -- first arg -- is address of return value's space. Don't mess with it.
    movq %rsi, %rdx // arg2 -> arg3
    movq (%r10), %rsi // block -> arg2
    jmp  *16(%rsi)

.macro TrampolineEntry_stret
    callq __objc_blockTrampolineImpl_stret
    nop
    nop
    nop
.endmacro

.align 5
__objc_blockTrampolineStart_stret:
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
    TrampolineEntry_stret
__objc_blockTrampolineLast_stret:
    TrampolineEntry_stret

#endif
