_Indeo_Decode_YUV9:
        LINK    A6,#-$0000
        MOVEM.L D2-D7/A2-A4,-(A7)
        MOVE.L  $000C(A6),D7                delta=to
        MOVEA.L $0014(A6),A0                decinfo
        MOVE.L  $0008(A0),D4                imagex
        MOVE.L  $000C(A0),D3                imagey
        MOVE.L  $0018(A0),D5                mapflag
        MOVEA.L $001C(A0),A4                map
        MOVE.L  $0030(A0),D1                special
        MOVEA.L $0014(A0),A3                chdr
        CLR.L   $0024(A0)                   ys=0
        CLR.L   $0020(A0)                   xs=0
        MOVE.L  D4,$0028(A0)                rowinc=width
        MOVE.L  D3,$002C(A0)                mx=width
        TST.L   A3                          if(chdr) {}
        BEQ.B   L000042
        MOVE.L  $0024(A3),D0
        BEQ.B   L000042
        MOVEA.L D0,A3
L000042:
        TST.L   D1                          if(special)
        BEQ.B   L000043                     ==0
        LEA     _XA_YUV1611_To_RGB,A2       !=0   color_func=_XA_YUV1611_To_RGB
        BRA.W   L000047
L000043:
        MOVE.L  _x11_bytes_pixel,D0
        MOVEQ   #$01,D6
        CMP.L   D0,D6
        BEQ.B   L000044
        TST.L   D5
        BNE.B   L000046
L000044:
        LEA     _XA_YUV1611_To_CLR8,A2
        TST.L   A3
        BEQ.B   L000047
        MOVEQ   #$14,D6
        CMP.L   _x11_display_type,D6
        BNE.B   L000047
        MOVEQ   #$04,D6
        CMP.L   _cmap_color_func,D6
        BNE.B   L000045
        LEA     _XA_YUV1611_To_CF4,A2
        MOVEQ   #$01,D6
        CMP.L   _xa_dither_flag,D6
        BNE.B   L000047
        LEA     _XA_YUV1611_To_CF4_Dither,A2
        BRA.B   L000047
L000045:
        MOVEQ   #$01,D6
        CMP.L   _cmap_true_to_332,D6
        BNE.B   L000047
        CMPI.L  #$00000100,_x11_cmap_size
        BNE.B   L000047
        LEA     _XA_YUV1611_To_332,A2
        CMP.L   _xa_dither_flag,D6
        BNE.B   L000047
        LEA     _XA_YUV1611_To_332_Dither,A2
        BRA.B   L000047
L000046:
        LEA     _XA_YUV1611_To_CLR32,A2
        MOVEQ   #$02,D6
        CMP.L   D0,D6
        BNE.B   L000047
        LEA     _XA_YUV1611_To_CLR16,A2
L000047:
        MOVEQ   #$04,D6
        CMP.L   _cmap_color_func,D6
        BNE.B   L000049
        TST.L   A3
        BEQ.B   L000049
        TST.L   _cmap_cache
        BNE.B   L000048
        CLR.L   -(A7)
        BSR.L   _CMAP_Cache_Init
        ADDQ.W  #4,A7
L000048:
        CMPA.L  _cmap_cache_chdr,A3
        BEQ.B   L000049
        BSR.L   _CMAP_Cache_Clear
        MOVE.L  A3,_cmap_cache_chdr
L000049:
        MOVE.L  D4,D0                       width=(width+3)&0xfffffffc
        ADDQ.L  #3,D0
        MOVEQ   #-$04,D6
        AND.L   D6,D0
        MOVE.L  D3,D1                       height=(height+3)&0xfffffffc
        ADDQ.L  #3,D1
        AND.L   D6,D1
        MOVE.L  D0,D2
        MULSL.L D1,D0:D2                    d2=d0*d1   = w*h
        ADD.L   D7,D2                       d2=d2+d7   = w*h+to
        LSR.L   #2,D0                       d0=d0/4    = w/4
        LSR.L   #2,D1                       d1=d1/4    = h/4
        MULS.L  D1,D0                       d0=d0*d1   = w*h/16
        LEA     L00012E,A0
        MOVE.L  D7,(A0)                     ybuf=to
        ADD.L   D2,D0                       d0=d0+d2   = w*h+to+w*h/16
        MOVE.L  D0,_indeo_tabs
        MOVE.L  D2,L00012F                  vbuf=size
        MOVE.L  A3,-(A7)
        MOVE.L  A4,-(A7)
        MOVE.L  D5,-(A7)
        PEA     _def_yuv_tabs
        MOVE.L  A0,-(A7)
        MOVE.L  D3,-(A7)
        MOVE.L  D4,-(A7)
        MOVE.L  D3,-(A7)
        MOVE.L  D4,-(A7)
        MOVE.L  $0008(A6),-(A7)
        JSR     (A2)                        color_func(image,w,h,w,h,yuvbuf,yuvtabs,mapflag,map,chdr)
        MOVEQ   #$08,D0
        TST.L   D5
        BNE.B   L00004A
        CLR.L   D0
L00004A:
        MOVEM.L -$0024(A6),D2-D7/A2-A4
        UNLK    A6
        RTS

