;$VER: D68k 2.0.7 (21.10.95)

;Disassembled File  : xa1.0_cyuv_sun3.o-amiga
;FileSize in Bytes  : 0001224

;00000001 0837823C 00000040 00000308 0858EF74 00000015 00000010 00000000

        SECTION "",CODE       ;000 000776

gcc2_compiled.:
___gnu_compiled_c:
_CYUV_What_Rev_API:
        LINK    A6,#-$0000
        MOVEQ   #$02,D0
        UNLK    A6
        RTS

L000001:
        dc.b    "Creativ Technology CYUV",0,0
_CYUV_Codec_Query:
        LINK    A6,#-$0000
        MOVE.L  A2,-(A7)
        MOVE.L  D2,-(A7)
        MOVEA.L $0008(A6),A2
        CLR.L   D0
        CLR.L   $0014(A2)
        CLR.L   $001C(A2)
        CLR.L   $0020(A2)
        CLR.L   $0028(A2)
        MOVEQ   #$02,D2
        MOVE.L  D2,$0018(A2)
        MOVE.L  $0004(A2),D1
        CMPI.L  #$43595556,D1                           CYUV
        BEQ.B   L000002
        CMPI.L  #$63797576,D1                           cyuv
        BNE.B   L000004
L000002:
        MOVE.L  #$43595556,$0004(A2)
        MOVE.L  $0008(A2),D0
        ADDQ.L  #3,D0
        MOVEQ   #-$04,D2
        AND.L   D0,D2
        MOVE.L  D2,$0008(A2)                            Round(x,4);
        MOVE.L  #_CYUV_Decode_CYUV,$001C(A2)
        MOVE.L  #L000001,$0020(A2)
        CLR.L   $0024(A2)
L000003:
        CLR.L   -(A7)
        CLR.L   -(A7)
        MOVE.L  $0008(A2),-(A7)
        MOVE.L  (A2),-(A7)
        BSR.L   _JPG_Alloc_MCU_Bufs
        MOVE.L  (A2),-(A7)
        BSR.L   _XA_Gen_YUV_Tabs
        MOVE.L  (A2),-(A7)
        BSR.L   _JPG_Setup_Samp_Limit_Table
        MOVEQ   #$01,D0
L000004:
        MOVE.L  -$0008(A6),D2
        MOVEA.L -$0004(A6),A2
        UNLK    A6
        RTS

_CYUV_Decode_CYUV:
        LINK    A6,#-$002C
        MOVEM.L D2-D7/A2-A5,-(A7)
        MOVEA.L $0014(A6),A4                            decinfo
        MOVE.L  $0008(A4),-$0004(A6)                    width
        MOVE.L  $000C(A4),-$0008(A6)                    height
        MOVE.L  $0018(A4),-$000C(A6)                    mapflag
        MOVE.L  $001C(A4),-$0010(A6)                    map
        MOVE.L  $0014(A4),-$0014(A6)                    chdr
        MOVEA.L $000C(A6),A3                            a3=from
        MOVE.L  -$0004(A6),D7
        ADD.L   D7,D7                                   rowinc=width*2
        MOVE.L  D7,-$0018(A6)
        MOVE.L  $0038(A4),-(A7)
        MOVE.L  A0,-$0024(A6)                           a0 sichern
        BSR.L   _XA_YUV411111_Func
        MOVE.L  D0,-$001C(A6)                           colorfunc=yuv411111func(imagetype)
        CLR.L   $0024(A4)                               ys=0
        CLR.L   $0020(A4)                               xs=0
        MOVE.L  -$0004(A6),$0028(A4)                    xe=width
        MOVE.L  -$0008(A6),$002C(A4)                    ye=height
        ADDQ.W  #4,A7
        MOVEA.L -$0024(A6),A0                           a0 restaurieren
        TST.L   $0004(A4)
        BEQ.B   L000005                                 if(skipflag=0)
        MOVEQ   #$10,D0
        BRA.W   L000010
L000005:
        TST.L   -$0014(A6)                              if(chdr)...
        BEQ.B   L000006
        MOVEA.L -$0014(A6),A1
        MOVE.L  $0024(A1),D0
        BEQ.B   L000006
        MOVE.L  D0,-$0014(A6)
L000006:
        MOVE.L  -$0018(A6),D7
        MULSL.L $0034(A4),D0:D7                         
        MOVE.L  D7,-$0018(A6)                           rowinc*=bytespixel
        LEA     $0010(A3),A4                            a4=from+16
        LEA     $0020(A4),A3                            a3=from+48;
        MOVEQ   #-$30,D7
        ADD.L   D7,$0010(A6)                            dsize-=48
        CLR.L   -$002C(A6)                              ycnt=0
        TST.L   -$0008(A6)                              if(height=0)
        BEQ.W   L00000F
L000007:
        CLR.L   -$0028(A6)
L000008:
        TST.L   $0010(A6)                               if(dsize=0)
        BEQ.W   L00000F                                 dann Ende
        MOVE.L  -$0004(A6),D5
        LSR.L   #2,D5                                   mx=width>>2
        CLR.L   -$0020(A6)                              flag=0
        TST.L   -$002C(A6)                              if(ycnt==0)
        BNE.B   L000009
        MOVEA.L _jpg_YUVBufs,A2                         yp=yuvbufs.ybuf
        MOVEA.L _jpg_YUVBufs+4,A0                       up=yuvbufs.ubuf
        MOVEA.L _jpg_YUVBufs+8,A5                       vp=yuvbufs.vbuf
L000009:
        SUBQ.L  #1,D5
        MOVEQ   #-$01,D7
        CMP.L   D5,D7                                   while(mx--)
        BEQ.W   L00000D
        CLR.L   D6
L00000A:
        TST.L   -$0020(A6)                              if(flag==0)
        BNE.B   L00000B                                 dann nach L00000B
        MOVEA.W #$0001,A1
        MOVE.L  A1,-$0020(A6)                           flag=1
        CLR.L   D4
        MOVE.B  (A3)+,D4                                uh=*from++
        MOVEQ   #$0F,D0
        AND.L   D4,D0                                   ul=uh & 0x0f
        MOVE.L  D0,D2                                   
        ASL.L   #4,D2                                   ul<<=4
        MOVE.B  D2,(A2)+                                *yp++=ul
        CLR.L   D3
        MOVE.B  (A3)+,D3                                vh=*from++
        MOVEQ   #$0F,D0                                 
        AND.L   D3,D0                                   vl=vh & 0x0f
        MOVE.B  $00(A4,D0.L),D6                         d6=from[16+vh]
        ADD.L   D6,D2                                   ul+=d6
        ANDI.L  #$000000FF,D2
        MOVE.B  D2,(A2)+                                *yp++=ul
        ANDI.L  #$000000F0,D4                           uh &= 0xf0
        MOVE.B  D4,(A0)+                                *up++=uh
        ANDI.L  #$000000F0,D3                           vh &= 0xf0
        MOVE.B  D3,(A5)+                                *vp++=vh
        BRA.B   L00000C
L00000B:
        CLR.L   D1
        MOVE.B  (A3)+,D1                                y1=*from++
        MOVE.L  D1,D0
        LSR.L   #4,D0                                   y2=y1>>4
        MOVE.B  $00(A4,D0.L),-$0025(A6)
        ADD.L   -$0028(A6),D4
        ANDI.L  #$000000FF,D4
        MOVE.B  D4,(A0)+
        MOVEQ   #$0F,D0
        AND.L   D1,D0
        MOVE.B  $00(A4,D0.L),D0
        ANDI.L  #$000000FF,D0
        ADD.L   D0,D2
        ANDI.L  #$000000FF,D2
        MOVE.B  D2,(A2)+
        CLR.L   D1
        MOVE.B  (A3)+,D1                                vh=*from++;
        MOVE.L  D1,D0
        LSR.L   #4,D0
        MOVE.B  $00(A4,D0.L),D0
        ANDI.L  #$000000FF,D0
        ADD.L   D0,D3
        ANDI.L  #$000000FF,D3
        MOVE.B  D3,(A5)+
        MOVEQ   #$0F,D0
        AND.L   D1,D0
        MOVE.B  $00(A4,D0.L),D0
        ANDI.L  #$000000FF,D0
        ADD.L   D0,D2
        ANDI.L  #$000000FF,D2
        MOVE.B  D2,(A2)+
L00000C:
        CLR.L   D1
        MOVE.B  (A3)+,D1
        MOVEQ   #$0F,D0
        AND.L   D1,D0
        MOVE.B  $00(A4,D0.L),D0
        ANDI.L  #$000000FF,D0
        ADD.L   D0,D2
        ANDI.L  #$000000FF,D2
        MOVE.B  D2,(A2)+
        MOVE.L  D1,D0
        LSR.L   #4,D0
        MOVE.B  $00(A4,D0.L),D0
        ANDI.L  #$000000FF,D0
        ADD.L   D0,D2
        ANDI.L  #$000000FF,D2
        MOVE.B  D2,(A2)+
        SUBQ.L  #3,$0010(A6)
        DBF     D5,L00000A
        CLR.W   D5
        SUBQ.L  #1,D5
        BCC.W   L00000A
L00000D:
        ADDQ.L  #1,-$002C(A6)                           ycnt++
        SUBQ.L  #1,-$0008(A6)                           height--
        MOVEQ   #$01,D7
        CMP.L   -$002C(A6),D7
        BCS.B   L00000E                                 if ((ycnt>=2) || (height==0)
        TST.L   -$0008(A6)
        BNE.W   L000007
L00000E:
        MOVE.L  -$0014(A6),-(A7)
        MOVE.L  -$0010(A6),-(A7)
        MOVE.L  -$000C(A6),-(A7)
        PEA     _def_yuv_tabs
        PEA     _jpg_YUVBufs
        MOVE.L  -$002C(A6),-(A7)
        MOVE.L  -$0004(A6),-(A7)
        MOVE.L  -$002C(A6),-(A7)
        MOVE.L  -$0004(A6),-(A7)
        MOVE.L  $0008(A6),-(A7)
        MOVE.L  A0,-$0024(A6)                           a0 retten
        MOVEA.L -$001C(A6),A1
        JSR     (A1)                                    yuv411111func(image,width,ycnt,width,ycnt,yuvbufs,yuvtabs,mapflag,map,chdr)
        CLR.L   -$002C(A6)                              ycnt=0
        MOVE.L  -$0018(A6),D7
        ADD.L   D7,$0008(A6)                            ip+=rowinc
        ADDA.W  #$0028,A7
        MOVEA.L -$0024(A6),A0                           a0 restaurieren
        TST.L   -$0008(A6)                              while(imagey>0)
        BNE.W   L000008
L00000F:
        MOVEQ   #$08,D0
        TST.L   -$000C(A6)
        BNE.B   L000010
        CLR.L   D0
L000010:
        MOVEM.L -$0054(A6),D2-D7/A2-A5
        UNLK    A6
        RTS

        dc.w    $0000
