#include "asmm68k.h"
.text
	.even
.globl C(__vacall)
	DECLARE_FUNCTION(__vacall)
C(__vacall:)
	link $a6,#-32
	moveml #0x3020,$sp@-
	clrl $a6@(-32)
	lea $a6@(8),$a2
	movel $a2,$a6@(-28)
	clrl $a6@(-24)
	clrl $a6@(-20)
	movel $a1,$a6@(-4)
	pea $a6@(-32)
	movel C(vacall_function),$a2
	jbsr $a2@
	addql #4,$sp
	movel $a6@(-20),$d2
	jeq L4
	moveq #1,$d3
	cmpl $d2,$d3
	jeq L49
	moveq #2,$d3
	cmpl $d2,$d3
	jne L7
L49:
	moveb $a6@(-12),$d0
	extbl $d0
	jra L4
	.even
L7:
	moveq #3,$d3
	cmpl $d2,$d3
	jne L9
	clrl $d0
	moveb $a6@(-12),$d0
	jra L4
	.even
L9:
	moveq #4,$d3
	cmpl $d2,$d3
	jne L11
	movew $a6@(-12),$d0
	extl $d0
	jra L4
	.even
L11:
	moveq #5,$d3
	cmpl $d2,$d3
	jne L13
	clrl $d0
	movew $a6@(-12),$d0
	jra L4
	.even
L13:
	moveq #6,$d3
	cmpl $d2,$d3
	jeq L50
	moveq #7,$d3
	cmpl $d2,$d3
	jeq L50
	moveq #8,$d3
	cmpl $d2,$d3
	jeq L50
	moveq #9,$d3
	cmpl $d2,$d3
	jne L21
L50:
	movel $a6@(-12),$d0
	jra L4
	.even
L21:
	moveq #-10,$d3
	addl $d3,$d2
	moveq #1,$d3
	cmpl $d2,$d3
	jcs L23
	movel $a6@(-12),$d0
	movel $a6@(-8),$d1
	jra L4
	.even
L23:
	movel $a6@(-20),$d2
	moveq #12,$d3
	cmpl $d2,$d3
	jne L25
	movel $a6@(-32),$d2
	btst #6,$d2
	jeq L26
	fmoves $a6@(-12),$fp0
	jra L4
	.even
L26:
	btst #5,$d2
	jeq L28
	fmoves $a6@(-12),$fp1
	fmoved $fp1,$sp@-
	movel $sp@+,$d0
	movel $sp@+,$d1
	jra L4
	.even
L28:
	movel $a6@(-12),$d0
	jra L4
	.even
L25:
	moveq #13,$d3
	cmpl $d2,$d3
	jne L31
	btst #6,$a6@(-29)
	jeq L32
	fmoved $a6@(-12),$fp0
	jra L4
	.even
L32:
	movel $a6@(-12),$d0
	movel $a6@(-8),$d1
	jra L4
	.even
L31:
	moveq #14,$d3
	cmpl $d2,$d3
	jne L35
	movel $a6@(-12),$d0
	jra L51
	.even
L35:
	moveq #15,$d3
	cmpl $d2,$d3
	jne L4
	movel $a6@(-32),$d2
	btst #10,$d2
	jeq L38
	movel $a6@(-16),$a2
	moveq #1,$d3
	cmpl $a2,$d3
	jne L39
	movel $a6@(-24),$a2
	clrl $d0
	moveb $a2@,$d0
	jra L4
	.even
L39:
	moveq #2,$d3
	cmpl $a2,$d3
	jne L42
	movel $a6@(-24),$a2
	clrl $d0
	movew $a2@,$d0
	jra L4
	.even
L42:
	moveq #4,$d3
	cmpl $a2,$d3
	jne L44
	movel $a6@(-24),$a2
	movel $a2@,$d0
	jra L4
	.even
L44:
	moveq #8,$d3
	cmpl $a2,$d3
	jne L38
	movel $a6@(-24),$a2
	movel $a2@,$d0
	movel $a2@(4),$d1
	jra L4
	.even
L38:
	btst #0,$d2
	jeq L4
	movel $a6@(-24),$d0
L51:
	movel $d0,$a0
L4:
	moveml $a6@(-44),#0x40c
	unlk $a6
	rts
