;I have put only a code for a target en Near True Color FALCON RRRRRVVVVVVBBBBB
;for a better comprehension

;structure YUVBUFS
YBUF EQU 0
UBUF EQU 4
VBUF EQU 8
;stucture bloc
BLOC_X EQU 0
BLOC_Y EQU 2
BLOC_W EQU 4
BLOC_H EQU 6
BLOC_FLAG1 EQU 8
BLOC_FLAG2 EQU 9
BLOC_FLAG3 EQU 10

;datas IVDATA
MODPRED EQU 0
CORRECTORTYPE EQU $400
CORRECTION EQU $3400
CORRECTIONLOWORDER EQU $9400
CORRECTIONHIGHORDER EQU $F400

 TEXT
 
INIT_BUFFERS_IV32:;return error si D0=0
;allocation and initialisation buffers YUVX2

 MOVEM.L D1-A5,-(SP)
 TST.L BUFFER_IV
 BNE \1
 LEA YUVBUFS1,A4
 LEA YUVBUFS2,A5
 MOVEQ #$F,D0
 ADD WIDTH_MOVIE,D0
 MOVEQ #-$10,D2
 AND.L D0,D2;width aligned on 8 points
 MOVEQ #$F,D0
 ADD HEIGHT_MOVIE,D0
 MOVEQ #-$10,D3
 AND.L D0,D3;height aligned on 8 points
 MOVE.L D2,D4;calcul size buffer
 LSR.L #2,D4;width/4
 MOVE.L D3,D0
 LSR.L #2,D0;height/4
 MOVE.L D2,D6
 MULU D3,D6;width * height => size buffer Y
 MOVE.L D4,D5
 MULU D0,D5;width/4 * height/4 => size buffer U or V
 MOVE.L D6,D0;size buffer Y
 ADD.L D2,D0;+ width
 ADD.L D0,D0;*2 buffers (Y1 et Y2)
 MOVE.L D2,A0;width
 ADD.L D0,A0;(size buffer Y + width)*2 + width
 MOVE.L D5,D0;size buffer U or V
 ADD.L D4,D0;+ width/4
 ASL.L #2,D0;*4 buffers (U1, U2, V1 et V2)
 ADD.L A0,D0
 JSR _MALLOC
 BEQ \2;error
 MOVE.L D0,A2
 MOVE.L D0,BUFFER_IV
 LEA (A2,D2.L),A1
 MOVE.L A1,YBUF(A4);buffer Y1
 MOVE.L D6,D0;size buffer Y
 ADD.L D2,D0;+ width
 MOVE.L D2,A0;width
 ADD.L D0,A0
 LEA (A2,A0.L),A1
 MOVE.L A1,YBUF(A5);buffer Y2
 ADD.L D0,A0
 LEA (A2,A0.L),A1
 MOVE.L A1,UBUF(A4);buffer U1
 MOVE.L D5,D0;size buffer U or V
 ADD.L D4,D0;width/4
 ADD.L D0,A0
 LEA (A2,A0.L),A1
 MOVE.L A1,UBUF(A5);buffer U2
 ADD.L D0,A0
 LEA (A2,A0.L),A1
 MOVE.L A1,VBUF(A4);buffer V1
 ADD.L D0,A0
 ADD.L A0,A2
 MOVE.L A2,VBUF(A5);buffer V2
 MOVEQ #$40,D1
 TST D2
 BEQ.S \4
;fill 1 line Y with $40 before Y1
;between Y1 and Y2 and at the end of Y2
 MOVEQ #0,D0
\5:INC D0
  MOVE.L YBUF(A4),A0;buffer Y1
  SUB.L D0,A0
  MOVE.B D1,(A0)
  MOVE.L YBUF(A5),A0;buffer Y2
  SUB.L D0,A0
  MOVE.B D1,(A0)
  MOVE.L UBUF(A4),A0;buffer U1
  SUB.L D0,A0
  MOVE.B D1,(A0)
 CMP.L D0,D2
 BHI.S \5
;the same for buffers U et V
\4:SUB.L A3,A3
 TST D4
 BEQ.S \1
\3:INC A3
  MOVE.L UBUF(A5),A0;buffer U2
  SUB.L A3,A0
  MOVE.B D1,(A0)
  MOVE.L VBUF(A4),A0;buffer V1
  SUB.L A3,A0
  MOVE.B D1,(A0)
  MOVE.L VBUF(A5),A0;buffer V2
  LEA -1(A3,D5.L),A1; + size buffer U or V
  MOVE.B D1,(A1,A0.L)
  SUB.L A3,A0
  MOVE.B D1,(A0)
 CMP.L A3,D4
 BHI.S \3
\1:MOVEQ #-1,D0;OK
\2:MOVEM.L (SP)+,D1-A5
 RTS
 
INIT_BUFFER_YUV:;return D0=0 if out of memory
; else adress buffer for precalculation

 MOVEM.L D1-A6,-(SP)
 MOVEQ #0,D0
 MOVE.L BUFFER_YUV,D0
 BNE \1
 MOVE.L #32*32*512,D0
 JSR _MALLOC
 MOVE.L D0,BUFFER_YUV
 BEQ \1;error
 MOVE.L D0,A0
 TST D_CPU
 BEQ \1;<68020
 LEA TAB_YUV_UB,A3
 LEA TAB_YUV_VR,A4
 LEA TAB_YUV_UG,A5
 LEA TAB_YUV_VG,A6
 MOVEQ #0,D2
 MOVE.L #$F8001F,D7
 MOVE #$100,-(SP);increase y (poids fort)
 MOVEQ #4,D0;count u
 MOVE.L ID_COMPRESS,D1
 CMP.L #"jpeg",D1
 BEQ.S \19
 CMP.L #"yuv9",D1
 BEQ.S \19
 CMP.L #"iv31",D1
 BEQ.S \20
 CMP.L #"iv32",D1
 BNE.S \2
\20:MOVE.B #2,(SP);additionnal increase of y if IV32
\19:BSET #28,D2;flag sign
 BSET #7,D0
\2:SWAP D7
  MOVEQ #31,D6
  MOVEQ #4,D1;count v
  BTST #28,D2;flag sign
  BEQ.S \3
  BSET #7,D1
\3:SWAP D6
   MOVEQ #0,D5;count y
   MOVE #255,D6
\4: MOVE (A4,D1*2),D2;red
    ADD D5,D2;red 0 - 255
    BTST #8,D2
    BEQ.S \5
    SPL.B D2
\5: MOVE (A5,D0*2),D3
    ADD (A6,D1*2),D3;green
    ADD D5,D3;green 0 - 255
    BTST #8,D3
    BEQ.S \6
    SPL.B D3
\6: MOVE (A3,D0*2),D4;blue
    ADD D5,D4;blue 0 - 255
    BTST #8,D4
    BEQ.S \7
    SPL.B D4
\7: AND D7,D2;5 bits red
    ASL #8,D2
    AND #$FC,D3;6 bits green
    ASL #3,D3
    OR D3,D2
    LSR.B #3,D4;5 bits blue
    OR.B D4,D2;Near True Color FALCON RRRRRVVVVVVBBBBB
    MOVE D2,(A0)+;color
    ADD.B (SP),D5;count y
   DBRA D6,\4
   ADDQ.B #8,D1;count v
   SWAP D6
  DBRA D6,\3
  ADDQ.B #8,D0;count u
  SWAP D7
 DBRA D7,\2
 ADDQ #2,SP
 MOVE.L BUFFER_YUV,D0
\1:TST.L D0
 MOVEM.L (SP)+,D1-A6
 RTS
 
DECOMPRESS_IV32:

 MOVEM.L D1-A6,-(SP)
 TST D_CPU
 BEQ \1;<68020
 TST.L BUFFER_IV
 BNE.S \46
 BSR INIT_BUFFERS_IV32
 BEQ \41;error
\46:MOVE.L TAILLE_BLOC_ANIM,A6
 CMP.L #48,A6
 BLS \1;header too little => pass
 MOVE.L BUFFER_ANIM,A2;bloc to decompress
 LEA 16+2(A2),A2;+2 => version
 MOVE (A2)+,D0;flags
 MOVE.L (A2)+,D5;8 * size datas used
 MOVEQ #0,D7
 MOVE.B (A2)+,D7
 MOVE D7,A4;cboffset
 ADDQ #3,A2;pass cbset
 MOVE (A2)+,D7;height
 ROR #8,D7;format intel => motorola
 CMP HEIGHT_MOVIE,D7
 BNE.S \40
 MOVE (A2)+,D6;width
 ROR #8,D6;format intel -> motorola
 CMP WIDTH_MOVIE,D6
 BNE.S \40
 MOVEM.L (A2)+,D2-D4;read 3 offsets
 ROR #8,D2
 SWAP D2
 ROR #8,D2;format intel => motorola
 ROR #8,D3
 SWAP D3
 ROR #8,D3;format intel => motorola
 ROR #8,D4
 SWAP D4
 ROR #8,D4;format intel => motorola
 ADDQ #4,A2
 MOVE.L A2,A5
 CMP.L #128,D5
 BEQ \41;error
 CMP.L A6,D2
 BHI.S \40
 LEA -32(A5,D2.L),A0;offset datas Y
 MOVE.L (A0)+,D1;1.Li
 ROR #8,D1
 SWAP D1
 ROR #8,D1;format intel => motorola
 ADD.L D1,D1
 CMP.L A6,D1
 BHI.S \40
 LEA (A0,D1.L),A1
 BTST #1,D0;buffer swapping
 BEQ.S \43
 LEA YUVBUFS2,A2
 LEA YUVBUFS1,A3
 BRA.S \44
\43:LEA YUVBUFS1,A2
 LEA YUVBUFS2,A3
\44:MOVE D6,D2;width anim
 CMP #160,D6
 BLS.S \45
 MOVE #160,D2
\45:MOVE D2,-(SP);width bloc
 MOVE.L A0,-(SP);datas Y
 MOVE.L A5,-(SP);datas header
 MOVE A4,-(SP);cboffset
 MOVE.L A1,-(SP);compressed datas
 MOVE D7,-(SP);height
 MOVE D6,-(SP);width
 MOVE.L YBUF(A3),-(SP);source
 MOVE.L YBUF(A2),-(SP);target
 BSR DECODE_IV32_PLAN
 LEA 28(SP),SP
 CMP.L A6,D3
 BHI \40
 LEA -32(A5,D3.L),A0;offset datas V
 MOVE.L (A0)+,D1
 ROR #8,D1
 SWAP D1
 ROR #8,D1;format intel => motorola
 ADD.L D1,D1
 CMP.L A6,D1
 BHI \40
 LEA (A0,D1.L),A1
 LSR #2,D6;/4
 ADDQ #3,D6
 AND.B #$FC,D6
 LSR #2,D7;/4
 ADDQ #3,D7
 AND.B #$FC,D7
 MOVE D6,D2;width aligned on 4 pixels
 CMP #40,D2
 BLS.S \47
 MOVEQ #40,D2
\47:MOVE D2,-(SP);width bloc
 MOVE.L A0,-(SP);datas V
 MOVE.L A5,-(SP);datas header
 MOVE A4,-(SP);cboffset
 MOVE.L A1,-(SP);compressed datas
 MOVE D7,-(SP);height/4 aligned on 4 pixels
 MOVE D6,-(SP);width/4 aligned onr 4 pixels
 MOVE.L VBUF(A3),-(SP);source
 MOVE.L VBUF(A2),-(SP);target
 BSR DECODE_IV32_PLAN
 LEA 28(SP),SP
 CMP.L A6,D4
 BHI \40
 LEA -32(A5,D4.L),A0;offset datas U
 MOVE.L (A0)+,D1
 ROR #8,D1
 SWAP D1
 ROR #8,D1;format intel => motorola
 ADD.L D1,D1
 CMP.L A6,D1
 BHI \40
 LEA (A0,D1.L),A1
 MOVE D2,-(SP);width bloc
 MOVE.L A0,-(SP);datas U
 MOVE.L A5,-(SP);datas header
 MOVE A4,-(SP);cboffset
 MOVE.L A1,-(SP);compressed datas
 MOVE D7,-(SP);height/4 aligned on 4 pixels
 MOVE D6,-(SP);width/4 aligned on 4 pixels
 MOVE.L UBUF(A3),-(SP);source
 MOVE.L UBUF(A2),-(SP);target
 BSR DECODE_IV32_PLAN
 LEA 28(SP),SP
 MOVE.L YBUF(A2),A0;source table y
 MOVE.L UBUF(A2),A6;source table u
 MOVE.L VBUF(A2),A5;source table v
 MOVE.L BUFFER_MUL_LIGNE,A2
 MOVE WIDTH_MOVIE,D7
 LSR #2,D7;/4
 NEG D7
 ADD D6,D7;width/4 aligned on 4 pixels
 SWAP D7;vertical increase for alignement to U and V on Y
 MOVE HEIGHT_MOVIE,D7
 LSR #2,D7;/4
 MOVE.L WIDTH_TARGET,D2;width anim or screen in points (BUFFER_MUL_LIGNE)
 SUBQ #4,D2
 MOVE WIDTH_MOVIE,D6
 SUBQ #4,D6
 BSR INIT_BUFFER_YUV
 BNE.S \21
\41:MOVEQ #-1,D0;error
 BRA \20
\21:MOVE.L D0,A3;buffer precalcul YUV
 ADD D2,D2
 MOVE.L WIDTH_TARGET,D3
 MULU #3,D3
 ADD D3,D3
 MOVE WIDTH_MOVIE,D5
 MOVE D5,D1
 MULU #3,D1
 LSR #2,D5;/4
 MOVEQ #0,D0
 BRA \15
\16:MOVE.L (A2),A1;target BUFFER_IMAGE Near True Color FALCON
  MOVE D5,D4
  BRA \17
\18:MOVE.B (A6)+,D0;u
   ASL #6,D0
   MOVE.B (A5)+,D0;v
   ADD.B D0,D0
   AND.B #$F8,D0
   ASL.L #6,D0
   MOVE.L A3,A4
   ADD.L D0,A4
   MOVEQ #0,D0
   MOVE.B (A0)+,D0;y0
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y1
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y2
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y3
   MOVE (A4,D0*2),(A1)+
   ADD D6,A0
   ADD D2,A1
   MOVE.B (A0)+,D0;y0
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y1
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y2
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y3
   MOVE (A4,D0*2),(A1)+
   ADD D6,A0
   ADD D2,A1
   MOVE.B (A0)+,D0;y0
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y1
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y2
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y3
   MOVE (A4,D0*2),(A1)+
   ADD D6,A0
   ADD D2,A1
   MOVE.B (A0)+,D0;y0
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y1
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y2
   MOVE (A4,D0*2),(A1)+
   MOVE.B (A0)+,D0;y3
   MOVE (A4,D0*2),(A1)+
   SUB D1,A0
   SUB D3,A1
\17:DBRA D4,\18
\60:SWAP D7
  ADD D7,A6;vertical increase for alignement of U on Y
  ADD D7,A5;vertical increase for alignement of V on Y
  SWAP D7
  ADD D1,A0
  LEA 16(A2),A2
\15:DBRA D7,\16
\1:MOVEQ #0,D0
\20:MOVEM.L (SP)+,D1-A6
 RTS

MASK:DC.L $7F7F7F7F

DECODE_IV32_PLAN:

 MOVEM.L D1-A6,-(SP)
 LEA -24(SP),SP
 LEA TAB_BLOC_XYWH_IV,A2
 MOVE.L 72+24(SP),A3;compressed datas
 CLR.B CODE_IV
 CLR COUNT2_IV
 MOVE 68+24(SP),D6;width aligned on 4 points
 MOVE D6,D0
 ADD D6,D0
 ADD D6,D0
 MOVE D0,WIDTH_X3_IV;width * 3
 ADD D6,D0
 ADD D6,D0
 MOVE D0,WIDTH_X5_IV;width * 5
 ADD D6,D0
 MOVE D0,WIDTH_X6_IV;width * 6
 MOVE 86+24(SP),D1;width bloc
 MOVE D6,D0;width
 BRA.S \140
\141:ADD D1,D1
\140:CMP D0,D1;width
 BLT.S \141
 MOVE D1,BLOC_W(A2)
 MOVEQ #0,D2
 SUB D1,D0
 BRA.S \138
\139:ADD D1,D2
\138:CMP D2,D0
 BGT.S \139
 MOVE D2,HEIGHT_IV
 MOVE 70+24(SP),BLOC_H(A2);height
 CLR.L BLOC_FLAG1(A2); BLOC_FLAG1/2/3
 CLR.L BLOC_X(A2); BLOC_X, BLOC_Y
 CLR COUNT1_IV
 MOVEQ #0,D5;flags
\2:SUBQ #2,COUNT1_IV
  BPL.S \137
  MOVE #6,COUNT1_IV
  MOVE.B (A3)+,CODE_IV
\137:MOVEQ #0,D0
  MOVE.B CODE_IV,D0
  MOVE COUNT1_IV,D1
  LSR.B D1,D0
  MOVEQ #3,D2
  AND D0,D2
  BEQ.S \136;0
  MOVE D2,D0;count
  DEC D0
  BEQ.S \134;1
  DEC D0
  BEQ \132;2
  BRA \131;3
\136:MOVE.L A2,A0
  LEA 12(A2),A2;copy structure bloc
  LEA TAB_BLOC_XYWH_IV+12*16,A1
  CMP.L A1,A2
  BCC \1;error
  MOVE.L BLOC_X(A0),BLOC_X(A2); BLOC_X, BLOC_Y
  MOVE.L BLOC_W(A0),BLOC_W(A2); BLOC_W, BLOC_H
  ST.B BLOC_FLAG1(A2)
  CLR.B BLOC_FLAG2(A2)
  MOVE BLOC_FLAG3(A0),BLOC_FLAG3(A2)
  MOVE BLOC_H(A2),D0
  MOVEQ #8,D1
  CMP D1,D0
  BLE.S \135
  ADD D1,D0
  LSR #1,D0
  AND.B #$F8,D0
  MOVE D0,BLOC_H(A2)
  BRA \2
\135:MOVE #4,BLOC_H(A2)
  BRA \2
\134:MOVE.L A2,A0
  LEA 12(A2),A2;copy structure bloc
  LEA TAB_BLOC_XYWH_IV+12*16,A1
  CMP.L A1,A2
  BCC \1;error
  MOVE.L BLOC_X(A0),BLOC_X(A2); BLOC_X, BLOC_Y
  MOVE.L BLOC_W(A0),BLOC_W(A2); BLOC_W, BLOC_H
  ST.B BLOC_FLAG1(A2)
  ST.B BLOC_FLAG2(A2)
  MOVE BLOC_FLAG3(A0),BLOC_FLAG3(A2)
  MOVE BLOC_W(A2),D0
  MOVEQ #8,D1
  CMP D1,D0
  BLE.S \133
  ADD D1,D0
  LSR #1,D0
  AND.B #$F8,D0
  MOVE D0,BLOC_W(A2)
  BRA \2
\133:MOVE #4,BLOC_W(A2)
  BRA \2
\132:TST.B BLOC_FLAG3(A2)
  BNE.S \130
  ST.B BLOC_FLAG3(A2)
  BCLR #28,D5
  BRA \2
\131:TST.B BLOC_FLAG3(A2)
  BNE.S \130
  MOVEQ #0,D0
  ST.B BLOC_FLAG3(A2)
  MOVE.B (A3)+,D0
  MOVE.L 82+24(SP),A0;datas
  ADD D0,A0
  ADD D0,A0
  MOVE.L A0,SAUVE_PTR_DATA_IV
  BSET #28,D5
  BRA \2
\130:MOVEM BLOC_X(A2),D3-D4; BLOC_X, BLOC_Y
  MOVE D6,D1;width
  MULU D4,D1;BLOC_Y * width
  MOVE.L 60+24(SP),A5;target (buffer 1)
  ADD D3,A5;+ BLOC_X
  ADD.L D1,A5;+ (BLOC_Y * width)
  MOVE BLOC_W(A2),D0
  BPL.S \129
  ADDQ #3,D0
\129:LSR #2,D0
  MOVE D0,D5;width bloc
  MOVE BLOC_H(A2),D7;count height
  BTST #28,D5
  BEQ.S \128
  MOVE.L SAUVE_PTR_DATA_IV,A0
  MOVE (A0),D0
  MOVE D0,D1
  LSR #8,D1
  EXT.W D1;sign‚
  EXT.W D0;sign‚
  ADD D4,D1;+ BLOC_Y
  MULU D6,D1;* width
  ADD D3,D0;+ BLOC_X
  MOVE.L 64+24(SP),A4;source (buffer 2)
  ADD D0,A4
  ADD.L D1,A4
  BRA.S \127
\128:MOVE.L A5,A4;target (buffer 1)
  SUB D6,A4
\127:SUBQ #2,D2
  BNE \121
  SUBQ #2,COUNT1_IV
  BPL.S \126
  MOVE #6,COUNT1_IV
  MOVE.B (A3)+,CODE_IV
\126:MOVEQ #0,D0
  MOVE.B CODE_IV,D0
  MOVE COUNT1_IV,D1
  LSR.B D1,D0
  MOVEQ #3,D1
  AND D1,D0
  BEQ.S \125
  DEC D1
  BNE \1;error
  BTST #28,D5
  BEQ \7
\125:MOVE D7,D3;count height bloc
  LSR #2,D3;/4
  DEC D3
  BMI \7
  MOVE D5,D4;width bloc
  DEC D4
  BMI \7
  MOVE D6,D1;width
  LSR #2,D1;/4
\122:MOVE.L A4,A0;source
   MOVE.L A5,A1;target
   MOVE D3,D2;count height
\123:MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+3
    ADD D6,A0
    ADD D6,A1
   DBRA D2,\123;count height
   ADDQ #4,A5;target, X+4
   ADDQ #4,A4;source, X+4
  DBRA D4,\122;count width
  BRA \7
\121:MOVEQ #0,D0
  MOVE.B (A3)+,D0
  MOVE D0,D3
  MOVEQ #$F,D4
  LSR.B #4,D3
  AND.L D0,D4
  MOVE D4,INDEX_IV
  ADD 76+24(SP),D4;+ cboffset
  MOVE.L D4,D0
  MOVEQ #9,D1
  ASL.L D1,D0;* 512
  MOVE.L BUFFER_IVDATA,A1
  LEA CORRECTORTYPE(A1),A0
  ADD.L D0,A0
  MOVE.L A0,A6
  MOVE.L A0,4(SP)
  ADD.L D0,D0
  LEA CORRECTION(A1),A0
  ADD.L D0,A0
  MOVE.L A0,8(SP)
  MOVE.L A0,12(SP)
  LEA (A1,D0.L),A0
  ADD.L #CORRECTIONLOWORDER,A0
  MOVE.L A0,16(SP)
  LEA (A1,D0.L),A0
  ADD.L #CORRECTIONHIGHORDER,A0
  MOVE.L A0,20(SP)
  MOVE.L D4,D0
  SUBQ.L #8,D0
  MOVEQ #7,D1
  CMP.L D0,D1
  BCS.S \118
  TST D3
  BEQ.S \120
  CMP #3,D3
  BEQ.S \120
  CMP #10,D3
  BNE.S \118
\120:MOVE D5,D2;width bloc
  BLE.S \118
  ASL #2,D2
  ASL.L #7,D0;* 127
  MOVEQ #0,D1
  ADD.L D0,A1;MODPRED
  MOVE.L A4,A0
  DEC D2
\119:MOVE.B (A0),D1
   MOVE.B (A1,D1),(A0)+
  DBRA D2,\119
  SUB.L D0,A1;BUFFER_IVDATA
\118:TST D3
  BEQ \26
  DEC D3
  BEQ.S \51;1
  SUBQ #2,D3
  BEQ \24;3
  DEC D3
  BEQ \22;4
  SUBQ #6,D3
  BEQ \92;10
  DEC D3
  BEQ \112;11
  BRA \1;error
\51:MOVE.L 78+24(SP),A0;datas header
  MOVE INDEX_IV,D0
  MOVEQ #0,D3
  MOVE.B (A0,D0),D3
  MOVEQ #$F,D0
  AND.B D3,D0
  ADD 76+24(SP),D0;+ cboffset
  MOVEQ #9,D1
  ASL.L D1,D0;* 512
  LEA CORRECTORTYPE(A1),A0
  ADD.L D0,A0
  MOVE.L A0,4(SP)
  ADD.L D0,D0
  LEA CORRECTION(A1),A0
  ADD.L D0,A0
  MOVE.L A0,12(SP)
  LSR.B #4,D3
  ADD 76+24(SP),D3;+ cboffset
  ASL.L D1,D3
  LEA CORRECTORTYPE(A1),A0
  ADD.L D3,A0
  MOVE.L A0,A6
  ADD.L D3,D3
  LEA CORRECTION(A1),A0
  ADD.L D3,A0
  MOVE.L A0,8(SP)
\26:TST D7;count height bloc
  BLE \7
  MOVE.L A2,-(SP);sauve A2
  MOVE.L 4+4(SP),A2;CORRECTORTYPE
  MOVE COUNT2_IV,D3
  MOVEQ #0,D4
\98:MOVE D5,D2;width bloc
   DEC D2
   BMI \99
\100:MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \73;0
    DEC D0
    BEQ.S \94;1
    DEC D0
    BEQ.S \93;2
    DEC D0
    BEQ.S \113;3
    DEC D0
    BEQ \116;4
    DEC D0
    BEQ.S \96;5
    DEC D0
    BEQ \114;6
    DEC D0
    BEQ \115;7
    DEC D0
    BEQ \50;8
    DEC D0
    BEQ \54;9
    BRA \109;error
;code 0
\73:MOVE.L (A4),D1;source
    MOVE.L 12+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    MOVE.L D1,(A5);target
    BRA \108
;code 1
\94:MOVE.B (A3)+,D0
    MOVE.L (A4),D1;source
    SWAP D1
    MOVE.L 12+4(SP),A0;CORRECTION
    ADD 2(A0,D0*4),D1
    SWAP D1
    ADD 2(A0,D4*4),D1
    MOVE.L D1,(A5);target
    BRA \108
;code 2
\93:MOVE.L (A4),(A5);Y
    MOVE.L (A4,D6),(A5,D6);Y+1
    BRA \107
;code 3
\113:MOVE.L A5,A1;target
    MOVE.L A4,A0;source
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    MOVE.L (A0,D6),(A1,D6);Y+2
    BRA \106
;code 5
\96:BCHG #31,D5
    BNE.S \116
    DEC A3
    BRA.S \116
;code 7
\115:BCHG #31,D5
    BNE.S \114
    DEC A3
;code 6
\114:BTST #28,D5
    BEQ \101
;code 4
\116:MOVE.L A4,A0;source
    MOVE.L A5,A1;target
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    MOVE.L (A0,D6),(A1,D6);Y+3
    BRA \101
;code 9
\54:MOVE.L A5,A1;target
    MOVE.B (A3)+,D4
    MOVEQ #$7F,D1
    AND.B D4,D1
    MOVE.B D1,D0
    ASL #8,D1
    MOVE.B D0,D1
    MOVE D1,D0
    SWAP D1
    MOVE D0,D1
    MOVE.L D1,(A1);Y
    ADD D6,A1
    MOVE.L D1,(A1);Y+1
    ADD D6,A1
    MOVE.L D1,(A1);Y+2
    MOVE.L D1,(A1,D6);Y+3
    TST.B D4
    BGE \101
    BCHG #31,D5
    BNE \101
    SUBQ #2,A3
    BRA \101
;code 8
\50:BSET #31,D5
    BNE.S \111
    MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    MOVEQ #32,D0
    CMP D3,D0
    BGE.S \111
    SUB D0,D3
    BCLR #30,D5
\111:DEC A3
    BTST #30,D5
    BNE.S \110
    BTST #28,D5
    BNE.S \110
    DEC D3
    BNE \101
    BCLR #31,D5
    ADDQ #2,A3
    BRA \101
\110:MOVE.L A4,A0;source
    MOVE.L A5,A1;target
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    MOVE.L (A0,D6),(A1,D6);Y+3
    DEC D3
    BNE \101
    BCLR #31,D5
    ADDQ #2,A3
    BRA \101
\108:LEA (A4,D6),A0;source, Y+1
    LEA (A5,D6),A1;target, Y+1
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \35;0
    DEC D0
    BEQ.S \82;1
    SUBQ #2,D0
    BEQ.S \86;3
    DEC D0
    BEQ.S \75;4
    DEC D0
    BEQ.S \117;5
    SUBQ #3,D0
    BEQ.S \88;8
    BRA \109;error
;code 0
\35:MOVE.L (A0),D1;Y+1
    MOVE.L 8+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    MOVE.L D1,(A1);Y+1
    BRA.S \107
;code 1
\82:MOVE.B (A3)+,D0
    MOVE.L (A0),D1;Y+1
    SWAP D1
    MOVE.L 8+4(SP),A0;CORRECTION
    ADD 2(A0,D0*4),D1
    SWAP D1
    ADD 2(A0,D4*4),D1
    MOVE.L D1,(A1);Y+1
    BRA.S \107
;code 3
\86:MOVE.L (A0),(A1);Y+1
    MOVE.L (A0,D6),(A1,D6);Y+2
    BRA \106
;code 8
\88:MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    DEC D3
;code 5
\117:BSET #31,D5
    DEC A3
;code 4
\75:MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    MOVE.L (A0,D6),(A1,D6);Y+3
    BRA \101
\107:LEA (A4,D6*2),A0;source, Y+2
    LEA (A5,D6*2),A1;target, Y+2
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \36;0
    DEC D0
    BEQ.S \41;1
    SUBQ #3,D0
    BEQ.S \40;4
    DEC D0
    BEQ.S \43;5
    SUBQ #3,D0
    BEQ.S \44;8
    BRA \109;error
;code 0
\36:MOVE.L (A0),D1;Y+2
    MOVE.L 12+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    MOVE.L D1,(A1);Y+2
    BRA.S \106
;code 1
\41:MOVE.B (A3)+,D0
    MOVE.L (A0),D1;Y+2
    SWAP D1
    MOVE.L 12+4(SP),A0;CORRECTION
    ADD 2(A0,D0*4),D1
    SWAP D1
    ADD 2(A0,D4*4),D1
    MOVE.L D1,(A1);Y+2
    BRA.S \106
;code 8
\44:MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    DEC D3
;code 5
\43:BSET #31,D5
    DEC A3
;code 4
\40:MOVE.L (A0),(A1);Y+2
    MOVE.L (A0,D6),(A1,D6);Y+3
    BRA.S \101
\106:MOVE WIDTH_X3_IV,D1;width * 3
    LEA (A4,D1),A0;source, Y+3
    LEA (A5,D1),A1;target, Y+3
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \105;0
    DEC D0
    BEQ.S \104;1
    SUBQ #4,D0
    BEQ.S \102;5
    SUBQ #3,D0
    BEQ.S \103;8
    BRA \109;error
;code 0
\105:MOVE.L (A0),D1;Y+3
    MOVE.L 8+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    MOVE.L D1,(A1);Y+3
    BRA.S \101
;code 1
\104:MOVE.B (A3)+,D0
    MOVE.L (A0),D1;Y+3
    SWAP D1
    MOVE.L 8+4(SP),A0;CORRECTION
    ADD 2(A0,D0*4),D1
    SWAP D1
    ADD 2(A0,D4*4),D1
    MOVE.L D1,(A1);Y+3
    BRA.S \101
;code 8
\103:MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    DEC D3
;code 5
\102:BSET #31,D5
    DEC A3
    MOVE.L (A0),(A1);Y+3
\101:ADDQ #4,A5;target, X+4
    ADDQ #4,A4;source, X+4
   DBRA D2,\100;count width bloc
\99:SUBQ #4,D7;count height bloc
   BLE.S \217
   MOVE D6,D0;width
   SUB D5,D0;- width bloc/4
   ASL #2,D0
   ADD D0,A5;target
   ADD D0,A4;source
  BRA \98
\217:MOVE D3,COUNT2_IV
  MOVE.L (SP)+,A2;restitue A2
  BRA \7
\22:MOVE.L 78+24(SP),A0;datas header
  MOVE INDEX_IV,D0
  MOVEQ #0,D3
  MOVE.B (A0,D0),D3
  MOVEQ #$F,D0
  AND.B D3,D0
  ADD 76+24(SP),D0;+ cboffset
  MOVEQ #9,D1
  ASL.L D1,D0;* 512
  LEA CORRECTORTYPE(A1),A0
  ADD.L D0,A0
  MOVE.L A0,4(SP)
  ADD.L D0,D0
  LEA CORRECTION(A1),A0
  ADD.L D0,A0
  MOVE.L A0,12(SP)
  LSR.B #4,D3
  ADD 76+24(SP),D3;+ cboffset
  ASL.L D1,D3
  LEA CORRECTORTYPE(A1),A0
  ADD.L D3,A0
  MOVE.L A0,A6
  ADD.L D3,D3
  LEA CORRECTION(A1),A0
  ADD.L D3,A0
  MOVE.L A0,8(SP)
\24:BTST #28,D5
  BNE \3;fin
  BSET #29,D5
  TST D7;count height bloc
  BLE \7
  MOVE.L A2,-(SP);sauve A2
  MOVE.L MASK(PC),D3
  MOVEQ #0,D4
  BCLR #25,D5
  MOVE BLOC_Y(A2),D0
  MOVE.L 4+4(SP),A2;CORRECTORTYPE
  BEQ.S \77
  BSET #25,D5;flag BLOC_Y <> 0
\77:SWAP D7
   MOVE D5,D7;width bloc
   DEC D7
   BMI \76
\78:MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \209;0
    DEC D0
    BEQ.S \210;1
    DEC D0
    BEQ \211;2
    DEC D0
    BEQ \212;3
    DEC D0
    BEQ \95;4
    DEC D0
    BEQ \14;5
    DEC D0
    BEQ \79;6
    DEC D0
    BEQ \18;7
    DEC D0
    BEQ \27;8
    DEC D0
    BEQ \20;9
    BRA \109;error
;code 0
\209:MOVE D6,D0
    MOVE.L A5,A1;target
    NEG D0
    MOVE.L (A1,D0),D0;Y-1
    MOVE.L D0,D2
    MOVE.L 12+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D0
    MOVE.L D0,(A1,D6);Y+1
    BTST #29,D5
    BEQ.S \97
    BTST #25,D5
    BNE.S \97;BLOC_Y <> 0
    MOVE.L D0,(A1);Y
    BRA \89
;code 1
\210:MOVE.B (A3)+,D0
    MOVE.L A5,A1;target
    MOVE D6,D1
    MOVE.L 12+4(SP),A0;CORRECTION
    NEG D1
    MOVEM.L (A1,D1),D1;Y-1
    MOVE.L D1,D2
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    MOVE.L D1,(A1,D6);Y+1
    BTST #29,D5
    BEQ.S \97
    BTST #25,D5
    BNE.S \97;BLOC_Y <> 0
    MOVE.L (A1,D6),(A1);Y+1 -> Y
    BRA \89
\97:ADD.L (A1,D6),D2;Y+1
    LSR.L #1,D2
    AND.L D3,D2;MASK
    MOVE.L D2,(A1);Y
    BRA \89
;code 2
\211:MOVE D6,D0
    MOVE.L A5,A1;target
    NEG D0
    MOVE.L (A1,D0),D0;Y-1
    MOVE.L D0,(A1);Y
    ADD D6,A1
    MOVE.L D0,(A1);Y+1
    ADD D6,A1
    MOVE.L D0,(A1);Y+2
    MOVE.L D0,(A1,D6);Y+3
    BRA \87
;code 3
\212:MOVE D6,D0
    MOVE.L A5,A1;target
    NEG D0
    MOVE.L (A1,D0),D0;Y-1
    MOVE.L D0,(A1);Y
    ADD D6,A1
    MOVE.L D0,(A1);Y+1
    ADD D6,A1
    MOVE.L D0,(A1);Y+2
    ADD D6,A1
    MOVE.L D0,(A1);Y+3
    ADD D6,A1
    MOVE.L D0,(A1);Y+4
    MOVE.L D0,(A1,D6);Y+5
    BRA \85
;code 5
\14:BCHG #31,D5
    BNE.S \95
    DEC A3
;code 4
\95:MOVE D6,D0
    MOVE.L A5,A1;target
    NEG D0
    MOVE.L (A1,D0),D0;Y-1
    MOVE.L D0,(A1);Y
    ADD D6,A1
    MOVE.L D0,(A1);Y+1
    ADD D6,A1
    MOVE.L D0,(A1);Y+2
    ADD D6,A1
    MOVE.L D0,(A1);Y+3
    ADD D6,A1
    MOVE.L D0,(A1);Y+4
    ADD D6,A1
    MOVE.L D0,(A1);Y+5
    ADD D6,A1
    MOVE.L D0,(A1);Y+6
    MOVE.L D0,(A1,D6);Y+7
    BRA \79
;code 7
\18:BCHG #31,D5
    BNE \79
    DEC A3
    BRA \79
;code 9
\20:MOVE.L A5,A1;target
    MOVE.B (A3)+,D2
    MOVEQ #$7F,D1
    AND.B D2,D1
    MOVE.B D1,D0
    ASL #8,D1
    MOVE.B D0,D1
    MOVE D1,D0
    SWAP D1
    MOVE D0,D1
    MOVE.L D1,(A1);Y
    ADD D6,A1
    MOVE.L D1,(A1);Y+1
    ADD D6,A1
    MOVE.L D1,(A1);Y+2
    MOVE.L D1,(A1,D6);Y+3
    TST.B D2
    BGE \79
    BCHG #31,D5
    BNE \79
    SUBQ #2,A3
    BRA \79
;code 8
\27:BSET #31,D5
    BNE.S \91
    MOVEQ #0,D1
    MOVE.B (A3),D1
    MOVE D1,COUNT2_IV
    BSET #30,D5
    MOVEQ #32,D0
    CMP D1,D0
    BGE.S \91
    SUB D0,COUNT2_IV
    BCLR #30,D5
\91:DEC A3
    BTST #30,D5
    BEQ.S \90
    MOVE D6,D0
    MOVE.L A5,A1;target
    NEG D0
    MOVE.L (A1,D0),D0;Y-1
    MOVE.L D0,(A1);Y
    ADD D6,A1
    MOVE.L D0,(A1);Y+1
    ADD D6,A1
    MOVE.L D0,(A1);Y+2
    ADD D6,A1
    MOVE.L D0,(A1);Y+3
    ADD D6,A1
    MOVE.L D0,(A1);Y+4
    ADD D6,A1
    MOVE.L D0,(A1);Y+5
    ADD D6,A1
    MOVE.L D0,(A1);Y+6
    MOVE.L D0,(A1,D6);Y+7
\90:DEC COUNT2_IV
    BNE \79
    BCLR #31,D5
    ADDQ #2,A3
    BRA \79
\89:LEA (A5,D6),A1;Y+1 target
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \203;0
    DEC D0
    BEQ.S \204;1
    SUBQ #2,D0
    BEQ.S \205;3
    DEC D0
    BEQ \208;4
    DEC D0
    BEQ.S \207;5
    SUBQ #3,D0
    BEQ.S \206;8
    BRA \109;error
;code 0
\203:MOVE.L (A1),D1;Y+1
    MOVE.L D1,D2
    MOVE.L 8+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    ADD D6,A1
    MOVE.L D1,(A1,D6);Y+3
    ADD.L D2,D1
    LSR.L #1,D1
    AND.L D3,D1;MASK
    MOVE.L D1,(A1);Y+2
    BRA.S \87
;code 1
\204:MOVE.B (A3)+,D0
    MOVE.L (A1),D1;Y+1
    MOVE.L D1,D2
    MOVE.L 8+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    ADD D6,A1
    MOVE.L D1,(A1,D6);Y+3
    ADD.L D2,D1
    LSR.L #1,D1
    AND.L D3,D1;MASK
    MOVE.L D1,(A1);Y+2
    BRA.S \87
;code 3
\205:MOVE.L (A1),D1;Y+1
    ADD D6,A1
    MOVE.L D1,(A1);Y+2
    ADD D6,A1
    MOVE.L D1,(A1);Y+3
    ADD D6,A1
    MOVE.L D1,(A1);Y+4
    MOVE.L D1,(A1,D6);Y+5
    BRA \85
;code 8
\206:MOVE.B (A3),D0
    BSET #30,D5
    DEC D0
    MOVE D0,COUNT2_IV
;code 5
\207:BSET #31,D5
    DEC A3
;code 4
\208:MOVE.L (A1),D1;Y+1
    ADD D6,A1
    MOVE.L D1,(A1);Y+2
    ADD D6,A1
    MOVE.L D1,(A1);Y+3
    ADD D6,A1
    MOVE.L D1,(A1);Y+4
    ADD D6,A1
    MOVE.L D1,(A1);Y+5
    ADD D6,A1
    MOVE.L D1,(A1);Y+6
    MOVE.L D1,(A1,D6);Y+7
    BRA \79
\87:MOVE WIDTH_X3_IV,D0;width * 3
    LEA (A5,D0),A1;Y+3 target
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \198;0
    DEC D0
    BEQ.S \199;1
    SUBQ #3,D0
    BEQ.S \202;4
    DEC D0
    BEQ.S \201;5
    SUBQ #3,D0
    BEQ.S \200;8
    BRA \109;error
;code 0
\198:MOVE.L (A1),D1;Y+3
    MOVE.L D1,D2
    MOVE.L 12+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    ADD D6,A1
    MOVE.L D1,(A1,D6);Y+5
    ADD.L D2,D1
    LSR.L #1,D1
    AND.L D3,D1;MASK
    MOVE.L D1,(A1);Y+4
    BRA.S \85
;code 1
\199:MOVE.B (A3)+,D0
    MOVE.L (A1),D1;Y+3
    MOVE.L D1,D2
    MOVE.L 12+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    ADD D6,A1
    MOVE.L D1,(A1,D6);Y+5
    ADD.L D2,D1
    LSR.L #1,D1
    AND.L D3,D1;MASK
    MOVE.L D1,(A1);Y+4
    BRA.S \85
;code 8
\200:MOVE.B (A3),D0
    BSET #30,D5
    DEC D0
    MOVE D0,COUNT2_IV
;code 5
\201:BSET #31,D5
    DEC A3
;code 4
\202:MOVE.L (A1),D1;Y+3
    ADD D6,A1
    MOVE.L D1,(A1);Y+4
    ADD D6,A1
    MOVE.L D1,(A1);Y+5
    ADD D6,A1
    MOVE.L D1,(A1);Y+6
    MOVE.L D1,(A1,D6);Y+7
    BRA \79
\85:MOVE WIDTH_X5_IV,D0;width * 5
    LEA (A5,D0),A1;Y+5 target
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \84;0
    DEC D0
    BEQ.S \83;1
    SUBQ #4,D0
    BEQ.S \80;5
    SUBQ #3,D0
    BEQ.S \81;8
    BRA \109;error
;code 0
\84:MOVE.L (A1),D1;Y+5
    MOVE.L D1,D2
    MOVE.L 8+4(SP),A0;CORRECTION
    ADD.L (A0,D4*4),D1
    ADD D6,A1
    MOVE.L D1,(A1,D6);Y+7
    ADD.L D2,D1
    LSR.L #1,D1
    AND.L D3,D1;MASK
    MOVE.L D1,(A1);Y+6
    BRA.S \79
;code 1
\83:MOVE.B (A3)+,D0
    MOVE.L (A1),D1;Y+5
    MOVE.L D1,D2
    MOVE.L 8+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    ADD D6,A1
    MOVE.L D1,(A1,D6);Y+7
    ADD.L D2,D1
    LSR.L #1,D1
    AND.L D3,D1;MASK
    MOVE.L D1,(A1);Y+6
    BRA.S \79
;code 8
\81:MOVE.B (A3),D0
    BSET #30,D5
    DEC D0
    MOVE D0,COUNT2_IV
;code 5
\80:BSET #31,D5
    DEC A3
    MOVE.L (A1),D1;Y+5
    ADD D6,A1
    MOVE.L D1,(A1);Y+6
    MOVE.L D1,(A1,D6);Y+7
\79:ADDQ #4,A5;target, X+4
   DBRA D7,\78;count width bloc
\76:SWAP D7
   SUBQ #8,D7;count height bloc
   BLE.S \218
   MOVE D6,D0;width
   ADD D0,D0
   SUB D5,D0;- width bloc/4
   ASL #2,D0;*4
   ADD D0,A5;target
   BCLR #29,D5
  BRA \77
\218:MOVE.L (SP)+,A2;restitue A2
  BRA \7
\112:BTST #28,D5
  BEQ \3;fin
  TST D7;count height bloc
  BLE \7
  MOVE.L A2,-(SP);sauve A2
  MOVE.L 4+4(SP),A2;CORRECTORTYPE
  MOVE COUNT2_IV,D3
  MOVEQ #0,D4
\60:SWAP D7
   MOVE D5,D7;width bloc
   DEC D7
   BMI \62
\61:BCLR #24,D5;first points
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \191;0
    DEC D0
    BEQ.S \192;1
    DEC D0
    BEQ.S \193;2
    DEC D0
    BEQ \194;3
    SUBQ #5,D0
    BEQ \197;8
    DEC D0
    BEQ \196;9
    BGT \109;error
    BTST #0,D0
    BNE \74;4/6
    BRA \195;5/7
;code 0
\191:MOVE.L 12+4(SP),A0;CORRECTION
    MOVE.L (A0,D4*4),D1
    MOVE.L (A4),D0;Y source
    ADD.L D1,D0
    MOVE.L D0,(A5);Y target
    MOVE.L (A4,D6),D0;Y+1 source
    ADD.L D1,D0
    MOVE.L D0,(A5,D6);Y+1 target
    BRA \70
;code 1
\192:MOVE.B (A3)+,D0
    MOVE.L 12+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    MOVE.L (A4),D1;Y source
    ADD.L D0,D1
    MOVE.L D1,(A5);Y target
    ADD.L (A4,D6),D0;Y+1 source
    MOVE.L D0,(A5,D6);Y+1 target
    BRA \70
;code 2
\193:MOVE.L A5,A1;target
    MOVE.L A4,A0;source
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    MOVE.L (A0,D6),(A1,D6);Y+3
    BRA \69
;code 3
\194:MOVE.L A5,A1;target
    MOVE.L A4,A0;source
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+3
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+4
    MOVE.L (A0,D6),(A1,D6);Y+5
    BRA \68
;codes 5 et 7
\195:BCHG #31,D5
    BNE.S \74
    DEC A3
;codes 4 et 6
\74:MOVE.L A5,A1;target
    MOVE.L A4,A0;source
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+3
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+4
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+5
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+6
    MOVE.L (A0,D6),(A1,D6);Y+7
    BRA \63
;code 9
\196:MOVE.L A5,A1;target
    MOVE.B (A3)+,D4
    MOVEQ #$7F,D1
    AND.B D4,D1
    MOVE.B D1,D0
    ASL #8,D1
    MOVE.B D0,D1
    MOVE D1,D0
    SWAP D1
    MOVE D0,D1
    MOVE.L D1,(A1);Y
    ADD D6,A1
    MOVE.L D1,(A1);Y+1
    ADD D6,A1
    MOVE.L D1,(A1);Y+2
    MOVE.L D1,(A1,D6);Y+3
    TST.B D4
    BGE \63
    BCHG #31,D5
    BNE \63
    SUBQ #2,A3
    BRA \63
;code 8
\197:BSET #31,D5
    BNE.S \71
    MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    MOVEQ #32,D0
    CMP D3,D0
    BGE.S \71
    SUB D0,D3
    BCLR #30,D5
\71:DEC A3
    MOVE.L A5,A1;target
    MOVE.L A4,A0;source
    MOVE.L (A0),(A1);Y
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+1
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+2
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+3
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+4
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+5
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+6
    MOVE.L (A0,D6),(A1,D6);Y+7
    DEC D3
    BNE \63
    BCLR #31,D5
    ADDQ #2,A3
    BRA \63
\70:LEA (A5,D6*2),A1;target, Y+2
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    LEA (A4,D6*2),A0;source, Y+2
    BEQ.S \185;0
    DEC D0
    BEQ.S \186;1
    SUBQ #2,D0
    BEQ.S \187;3
    DEC D0
    BEQ \190;4
    DEC D0
    BEQ.S \189;5
    SUBQ #3,D0
    BEQ.S \188;8
    BRA \109;error
;code 0
\185:MOVE.L (A0),D0;Y+2 source
    MOVE.L (A0,D6),D1;Y+3 source
    MOVE.L 8+4(SP),A0;CORRECTION
    MOVE.L (A0,D4*4),D2
    ADD.L D2,D0
    MOVE.L D0,(A1);Y+2 target
    ADD.L D2,D1
    MOVE.L D1,(A1,D6);Y+3 target
    BRA \69
;code 1
\186:MOVE.B (A3)+,D0
    MOVE.L (A0),D1;Y+2 source
    MOVE.L (A0,D6),D2;Y+3 source
    MOVE.L 8+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    MOVE.L D1,(A1);Y+2 target
    ADD.L D0,D2
    MOVE.L D2,(A1,D6);Y+3 target
    BRA.S \69
;code 3
\187:MOVE.L (A0),(A1);Y+2
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+3
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+4
    MOVE.L (A0,D6),(A1,D6);Y+5
    BRA \68
;code 8
\188:MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    DEC D3
;code 5
\189:BSET #31,D5
    DEC A3
;code 4
\190:MOVE.L (A0),(A1);Y+2
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+3
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+4
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+5
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+6
    MOVE.L (A0,D6),(A1,D6);Y+7
    BRA \63
\69:LEA (A4,D6*4),A0;source, Y+4
    LEA (A5,D6*4),A1;target, Y+4
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \180;0
    DEC D0
    BEQ.S \181;1
    SUBQ #3,D0
    BEQ.S \184;4
    DEC D0
    BEQ.S \183;5
    SUBQ #3,D0
    BEQ.S \182;8
    BRA \109;error
;code 0
\180:MOVE.L (A0),D0;Y+4 source
    MOVE.L (A0,D6),D1;Y+5 target
    MOVE.L 12+4(SP),A0;CORRECTION
    MOVE.L (A0,D4*4),D2
    ADD.L D2,D0
    MOVE.L D0,(A1);Y+4 target
    ADD.L D2,D1
    MOVE.L D1,(A1,D6);Y+5 target
    BRA.S \68
;code 1
\181:MOVE.B (A3)+,D0
    MOVE.L (A0),D1;Y+4 source
    MOVE.L (A0,D6),D2;Y+5 target
    MOVE.L 12+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    MOVE.L D1,(A1);Y+4 target
    ADD.L D0,D2
    MOVE.L D2,(A1,D6);Y+5 target
    BRA.S \68
;code 8
\182:MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    DEC D3
;code 5
\183:BSET #31,D5
    DEC A3
;code 4
\184:MOVE.L (A0),(A1);Y+4
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+5
    ADD D6,A0
    ADD D6,A1
    MOVE.L (A0),(A1);Y+6
    MOVE.L (A0,D6),(A1,D6);Y+7
    BRA \63
\68:MOVE WIDTH_X6_IV,D1;width * 6
    LEA (A4,D1),A0;source
    LEA (A5,D1),A1;target
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \67;0
    DEC D0
    BEQ.S \66;1
    SUBQ #4,D0
    BEQ.S \64;5
    SUBQ #3,D0
    BEQ.S \65;8
    BRA \109;error
;code 0
\67:MOVE.L (A0),D0;Y+6 source
    MOVE.L (A0,D6),D1;Y+7 source
    MOVE.L 8+4(SP),A0;CORRECTION
    MOVE.L (A0,D4*4),D2
    ADD.L D2,D0
    MOVE.L D0,(A1);Y+6 target
    ADD.L D2,D1
    MOVE.L D1,(A1,D6);Y+7 target
    BRA.S \63
;code 1
\66:MOVE.B (A3)+,D0
    MOVE.L (A0),D1;Y+6 source
    MOVE.L (A0,D6),D2;Y+7 source
    MOVE.L 8+4(SP),A0;CORRECTION
    MOVE 2(A0,D0*4),D0
    SWAP D0
    MOVE 2(A0,D4*4),D0
    ADD.L D0,D1
    MOVE.L D1,(A1);Y+6 target
    ADD.L D0,D2
    MOVE.L D2,(A1,D6);Y+7 target
    BRA.S \63
;code 8
\65:MOVEQ #0,D3
    MOVE.B (A3),D3
    BSET #30,D5
    DEC D3
;code 5
\64:BSET #31,D5
    DEC A3
    MOVE.L (A0),(A1);Y+6
    MOVE.L (A0,D6),(A1,D6);Y+7
\63:ADDQ #4,A5;target, X+4
    ADDQ #4,A4;source, X+4
   DBRA D7,\61;count width bloc
\62:SWAP D7
   SUBQ #8,D7;count height bloc
   BLE.S \214
   MOVE D6,D0;width
   ADD D0,D0
   SUB D5,D0;- width bloc/4
   ASL #2,D0
   ADD D0,A5;target
   ADD D0,A4;source
  BRA \60
\214:MOVE D3,COUNT2_IV
  MOVE.L (SP)+,A2;restitue A2
  BRA \7
\92:BTST #28,D5
  BNE \28
  BSET #26,D5
  TST D7;count height bloc
  BLE \7
  MOVE.L A2,-(SP);sauve A2
  MOVEQ #0,D4
  BCLR #25,D5
  MOVE BLOC_Y(A2),D0
  MOVE.L 4+4(SP),A2;CORRECTORTYPE
  BEQ.S \29
  BSET #25,D5;flag BLOC_Y <> 0
\29:SWAP D7
   MOVE D5,D7;width bloc
   LSR #1,D7
   DEC D7
   BMI \30
\31:MOVE D6,D0
    MOVE.L A5,A1;target
    NEG D0
    MOVEM.L (A1,D0),D2-D3;Y-1
    BTST #26,D5
    BEQ.S \59
    MOVE.L #$FF00FF00,D1
    AND.L D1,D2
    AND.L D1,D3
    MOVE.L D2,D0
    MOVE.L D3,D1
    LSR.L #8,D0
    LSR.L #8,D1
    OR.L D0,D2
    OR.L D1,D3
\59:MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \172;0
    DEC D0
    BEQ.S \173;1
    DEC D0
    BEQ \174;2
    DEC D0
    BEQ \175;3
    DEC D0
    BEQ \53;4
    DEC D0
    BEQ \176;5
    DEC D0
    BEQ \32;6
    DEC D0
    BEQ \177;7
    DEC D0
    BEQ \179;8
    DEC D0
    BEQ \178;9
    BRA \109;error
;code 0
\172:MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    ADD.L (A0,D4*4),D2
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    ADD.L (A0,D4*4),D3
    MOVEM.L D2-D3,(A1,D6);Y+1
    BTST #25,D5
    BNE.S \57;BLOC_Y <> 0
    BTST #26,D5
    BEQ.S \57
    BRA.S \58
;code 1
\173:MOVE.B (A3)+,D0
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    ADD.L (A0,D0*4),D2
    ADD.L (A0,D4*4),D3
    MOVEM.L D2-D3,(A1,D6);Y+1
    BTST #25,D5
    BNE.S \57;BLOC_Y <> 0
    BTST #26,D5
    BEQ.S \57
\58:LEA (A1,D6),A0;Y+1
    MOVE.L (A0)+,(A1)+;Y+1 -> Y
    MOVE.L (A0),(A1)
    BRA \45
\57:MOVE D6,D0
    NEG D0
    MOVEM.L (A1,D0),D0-D1;Y-1
    ADD.L (A1,D6),D0;Y+1
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L 4(A1,D6),D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y
    BRA \45
;code 2
\174:BTST #26,D5
    BEQ.S \56
    MOVE D6,D0
    NEG D0
    MOVEM.L (A1,D0),D0-D1;Y-1
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y
    BRA.S \220
\56:MOVEM.L D2-D3,(A1);Y
\220:ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+1
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+2
    MOVEM.L D2-D3,(A1,D6);Y+3
    BRA \42
;code 3
\175:BTST #26,D5
    BEQ.S \55
    MOVE D6,D0
    NEG D0
    MOVEM.L (A1,D0),D0-D1;Y-1
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y
    BRA.S \215
\55:MOVEM.L D2-D3,(A1);Y
\215:ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+1
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+2
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+3
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+4
    MOVEM.L D2-D3,(A1,D6);Y+6
    BRA \39
;code 5
\176:BCHG #31,D5
    BNE.S \53
    DEC A3
;code 4
\53:BTST #26,D5
    BEQ.S \52
    MOVE D6,D0
    NEG D0
    MOVEM.L (A1,D0),D0-D1;Y-1
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y
    BRA.S \124
\52:MOVEM.L D2-D3,(A1);Y
\124:ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+1
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+2
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+3
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+4
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+5
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+6
    MOVEM.L D2-D3,(A1,D6);Y+7
    BRA \32
;code 7
\177:BCHG #31,D5
    BNE \32
    DEC A3
    BRA \32
;code 9
\178:MOVE.B (A3),D2
    MOVEQ #$7F,D1
    AND.B D2,D1
    MOVE.B D1,D0
    ASL #8,D1
    MOVE.B D0,D1
    MOVE D1,D0
    SWAP D1
    MOVE D0,D1
    MOVE.L D1,D0
    MOVEM.L D0-D1,(A1);Y
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+1
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+2
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+3
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+3
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+4
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+5
    MOVEM.L D0-D1,(A1,D6);Y+6
    TST.B D2
    BGE \32
    BCHG #31,D5
    BNE \32
    SUBQ #2,A3
    BRA \32
;code 8
\179:BSET #31,D5
    BNE.S \48
    MOVEQ #0,D1
    MOVE.B (A3),D1
    MOVE D1,COUNT2_IV
    BSET #30,D5
    MOVEQ #32,D0
    CMP D1,D0
    BGE.S \48
    SUB D0,COUNT2_IV
    BCLR #30,D5
\48:DEC A3
    BTST #30,D5
    BEQ.S \46
    BTST #26,D5
    BEQ.S \47
    MOVE D6,D0
    NEG D0
    MOVEM.L (A1,D0),D0-D1;Y-1
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y
    BRA.S \216
\47:MOVEM.L D2-D3,(A1);Y
\216:ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+1
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+2
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+3
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+4
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+5
    ADD D6,A1
    MOVEM.L D2-D3,(A1);Y+6
    MOVEM.L D2-D3,(A1,D6);Y+7
\46:DEC COUNT2_IV
    BNE \32
    BCLR #31,D5
    ADDQ #2,A3
    BRA \32
\45:LEA (A5,D6),A1;Y+1 target
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D1;CORRECTORTYPE
    BEQ.S \166;0
    DEC D1
    BEQ.S \167;1
    SUBQ #2,D1
    BEQ \168;3
    DEC D1
    BEQ \171;4
    DEC D1
    BEQ \170;5
    SUBQ #3,D1
    BEQ \169;8
    BRA \109;error
;code 0
\166:MOVEM.L (A1),D2-D3;Y+1
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L D2,D0
    ADD.L (A0,D4*4),D2
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L D3,D1
    ADD.L (A0,D4*4),D3
    ADD D6,A1
    MOVEM.L D2-D3,(A1,D6);Y+3
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y+2
    BRA \42
;code 1
\167:MOVE.B (A3)+,D1
    MOVEM.L (A1),D2-D3;Y+1
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L D2,D0
    ADD.L (A0,D1*4),D2
    MOVE.L D3,D1
    ADD.L (A0,D4*4),D3
    ADD D6,A1
    MOVEM.L D2-D3,(A1,D6);Y+3
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y+2
    BRA.S \42
;code 3
\168:MOVEM.L (A1),D1-D2;Y+1
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+2
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+3
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+4
    MOVEM.L D1-D2,(A1,D6);Y+5
    BRA \39
;code 8
\169:MOVE.B (A3),D1
    BSET #30,D5
    DEC D1
    MOVE D1,COUNT2_IV
;code 5
\170:BSET #31,D5
    DEC A3
;code 4
\171:MOVEM.L (A1),D1-D2;Y+1
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+2
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+3
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+4
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+5
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+6
    MOVEM.L D1-D2,(A1,D6);Y+7
    BRA \32
\42:MOVE WIDTH_X3_IV,D0;width * 3
    LEA (A5,D0),A1;Y+3
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D1;CORRECTORTYPE
    BEQ.S \161;0
    DEC D1
    BEQ.S \162;1
    SUBQ #3,D1
    BEQ \165;4
    DEC D1
    BEQ \164;5
    SUBQ #3,D1
    BEQ.S \163;8
    BRA \109;error
;code 0
\161:MOVEM.L (A1),D2-D3;Y+3
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L D2,D0
    ADD.L (A0,D4*4),D2
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L D3,D1
    ADD.L (A0,D4*4),D3
    ADD D6,A1
    MOVEM.L D2-D3,(A1,D6);Y+5
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y+4
    BRA.S \39       
;code 1
\162:MOVE.B (A3)+,D1
    MOVEM.L (A1),D2-D3;Y+3
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L D2,D0
    ADD.L (A0,D1*4),D2
    MOVE.L D3,D1
    ADD.L (A0,D4*4),D3
    ADD D6,A1
    MOVEM.L D2-D3,(A1,D6);Y+5
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y+4
    BRA.S \39       
;code 8
\163:MOVE.B (A3),D1
    BSET #30,D5
    DEC D1
    MOVE D1,COUNT2_IV
;code 5
\164:BSET #31,D5
    DEC A3
;code 4
\165:MOVEM.L (A1),D1-D2;Y+3
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+4
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+5
    ADD D6,A1
    MOVEM.L D1-D2,(A1);Y+6
    MOVEM.L D1-D2,(A1,D6);Y+7
    BRA \32
\39:MOVE WIDTH_X5_IV,D0;width * 5
    LEA (A5,D0),A1;Y+6
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D1;CORRECTORTYPE
    BEQ.S \38;0
    DEC D1
    BEQ.S \37;1
    SUBQ #4,D1
    BEQ \33;5
    SUBQ #3,D1
    BEQ.S \34;8
    BRA \109;error
;code 0
\38:MOVEM.L (A1),D2-D3;Y+5
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L D2,D0
    ADD.L (A0,D4*4),D2
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L D3,D1
    ADD.L (A0,D4*4),D3
    ADD D6,A1
    MOVEM.L D2-D3,(A1,D6);Y+7
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1           
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y+6
    BRA.S \32
;code 1
\37:MOVE.B (A3)+,D1
    MOVEM.L (A1),D2-D3;Y+5
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L D2,D0
    ADD.L (A0,D1*4),D2
    MOVE.L D3,D1
    ADD.L (A0,D4*4),D3
    ADD D6,A1
    MOVEM.L D2-D3,(A1,D6);Y+7
    ADD.L D2,D0
    LSR.L #1,D0
    AND.L MASK(PC),D0
    ADD.L D3,D1
    LSR.L #1,D1
    AND.L MASK(PC),D1
    MOVEM.L D0-D1,(A1);Y+6
    BRA.S \32
;code 8
\34:MOVE.B (A3),D1
    BSET #30,D5
    DEC D1
    MOVE D1,COUNT2_IV
\33:BSET #31,D5
    DEC A3
    MOVEM.L (A1),D0-D1;Y+5
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+6
    MOVEM.L D0-D1,(A1,D6);Y+7
\32:ADDQ #8,A5;target, X+8
   DBRA D7,\31;count width bloc
\30:SWAP D7
   SUBQ #8,D7;count height bloc
   BLE.S \49
   MOVE D6,D0;width
   ADD D0,D0
   SUB D5,D0;- width bloc/4
   ASL #2,D0;*4
   ADD D0,A5;target
   BCLR #26,D5
  BRA \29
\49:MOVE.L (SP)+,A2;restitue A2
  BRA \7
\28:TST D7;count height bloc
  BLE \7
  MOVE.L A2,-(SP);sauve A2
  MOVE.L 4+4(SP),A2;CORRECTORTYPE
\8:SWAP D7
   MOVE D5,D7;width bloc
   LSR #1,D7
   DEC D7
   BMI \9
\10:BCLR #24,D5;first points
    MOVEQ #0,D4
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \154;0
    DEC D0
    BEQ.S \155;1
    DEC D0
    BEQ \156;2
    DEC D0
    BEQ \157;3
    SUBQ #5,D0
    BEQ \159;8
    DEC D0
    BEQ \160;9
    BGT \109;error
    BTST #0,D0
    BNE \25;4/6
    BRA \158;5/7
;code 0
\154:MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D4*4),D0
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L (A0,D4*4),D1
    MOVEM.L (A4),D2-D3;Y source
    LEA (A4,D6),A0;Y+1 source
    ADD.L D0,D2
    ADD.L D1,D3
    MOVEM.L D2-D3,(A5);Y target
    ADD.L (A0)+,D0;Y+1 source
    ADD.L (A0),D1
    MOVEM.L D0-D1,(A5,D6);Y+1 target
    BRA \21
;code 1
\155:MOVE.B (A3)+,D0
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D0*4),D0
    MOVE.L (A0,D4*4),D1
    MOVEM.L (A4),D2-D3;Y source
    LEA (A4,D6),A0;Y+1 source
    ADD.L D0,D2
    ADD.L D1,D3
    MOVEM.L D2-D3,(A5);Y target
    ADD.L (A0)+,D0;Y+1 source
    ADD.L (A0),D1
    MOVEM.L D0-D1,(A5,D6);Y+1 target
    BRA \21
;code 2
\156:MOVE.L A4,A0;source
    MOVE.L A5,A1;target
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+1
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+2
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+3
    MOVE.L (A0),(A1)
    BRA \19
;code 3
\157:MOVE.L A4,A0;source
    MOVE.L A5,A1;target
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+1
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+2
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+3
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+4
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+5
    MOVE.L (A0),(A1)
    BRA \17
;codes 5/7
\158:BCHG #31,D5
    BNE.S \25
    DEC A3
;codes 4/6
\25:MOVE.L A4,A0;source
    MOVE.L A5,A1;target
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+1
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+2
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+3
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+4
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+5
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+6
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+7
    MOVE.L (A0),(A1)
    BRA \11
;code 8
\159:BSET #31,D5
    BNE.S \23
    MOVEQ #0,D1
    MOVE.B (A3),D1
    MOVE D1,COUNT2_IV
    BSET #30,D5
    MOVEQ #32,D0
    CMP D1,D0
    BGE.S \23
    SUB D0,COUNT2_IV
    BCLR #30,D5
\23:DEC A3
    MOVE.L A4,A0;source
    MOVE.L A5,A1;target
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+1
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+2
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+3
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+4
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+5
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+6
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+7
    MOVE.L (A0),(A1)
    DEC COUNT2_IV
    BNE \11
    BCLR #31,D5
    ADDQ #2,A3
    BRA \11
;code 9
\160:MOVE.L A5,A1;target
    MOVE.B (A3),D2
    MOVEQ #$7F,D1
    AND.B D2,D1
    MOVE.B D1,D0
    ASL #8,D1
    MOVE.B D0,D1
    MOVE D1,D0
    SWAP D1
    MOVE D0,D1
    MOVE.L D1,D0
    MOVEM.L D0-D1,(A1);Y
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+1
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+2
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+3
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+4
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+5
    ADD D6,A1
    MOVEM.L D0-D1,(A1);Y+6
    MOVEM.L D0-D1,(A1,D6);Y+7
    TST.B D2
    BGE \11
    BCHG #31,D5
    BNE \11
    SUBQ #2,A3
    BRA \11
\21:LEA (A5,D6*2),A1;target, Y+2
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \148;0
    DEC D0
    BEQ.S \149;1
    SUBQ #2,D0
    BEQ \150;3
    DEC D0
    BEQ \153;4
    DEC D0
    BEQ \152;5
    SUBQ #3,D0
    BEQ \151;8
    BRA \109;error
;code 0
\148:MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D4*4),D0
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L (A0,D4*4),D1
    LEA (A4,D6*2),A0;source, Y+2
    MOVEM.L (A0),D2-D3;Y+2 source
    ADD.L D0,D2
    ADD.L D1,D3
    MOVEM.L D2-D3,(A1);Y+2 target
    ADD D6,A0
    ADD.L (A0)+,D0;Y+3 source
    ADD.L (A0),D1
    MOVEM.L D0-D1,(A1,D6);Y+3 target
    BRA \19
;code 1
\149:MOVE.B (A3)+,D0
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D0*4),D0
    MOVE.L (A0,D4*4),D1
    LEA (A4,D6*2),A0;source, Y+2
    MOVEM.L (A0),D2-D3;Y+2 source
    ADD.L D0,D2
    ADD.L D1,D3
    MOVEM.L D2-D3,(A1);Y+2 target
    ADD D6,A0
    ADD.L (A0)+,D0;Y+3 target
    ADD.L (A0),D1
    MOVEM.L D0-D1,(A1,D6);Y+3 target
    BRA \19
;code 3
\150:LEA (A4,D6*2),A0;source, Y+2
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y+2
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+3
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+4
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+5
    MOVE.L (A0),(A1)
    BRA \17
;code 8
\151:MOVE.B (A3),D0
    BSET #30,D5
    DEC D0
    MOVE D0,COUNT2_IV
;code 5
\152:BSET #31,D5
    DEC A3
;code 4
\153:LEA (A4,D6*2),A0;source, Y+2
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y+2
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+3
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+4
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+5
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+6
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+7
    MOVE.L (A0),(A1)
    BRA \11
\19:LEA (A5,D6*4),A1;target, Y+4
    MOVE.B (A3)+,D4
    MOVE (A2,D4*2),D0;CORRECTORTYPE
    BEQ.S \143;0
    DEC D0
    BEQ.S \144;1
    SUBQ #3,D0
    BEQ \147;4
    DEC D0
    BEQ \146;5
    SUBQ #3,D0
    BEQ.S \145;8
    BRA \109;error
;code 0
\143:MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D4*4),D0
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L (A0,D4*4),D4
    LEA (A4,D6*4),A0;source, Y+4
    MOVEM.L (A0),D2-D3;Y+4 source
    ADD.L D0,D2
    ADD.L D4,D3
    MOVEM.L D2-D3,(A1);Y+4 target
    ADD D6,A0
    ADD.L (A0)+,D0;Y+5 source
    ADD.L (A0),D4
    MOVEM.L D0/D4,(A1,D6);Y+5 target
    BRA \17
;code 1
\144:MOVE.B (A3)+,D0
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D0*4),D0
    MOVE.L (A0,D4*4),D4
    LEA (A4,D6*4),A0;source, Y+4
    MOVEM.L (A0),D2-D3;Y+4 source
    ADD.L D0,D2
    ADD.L D4,D3
    MOVEM.L D2-D3,(A1);Y+4 target
    ADD D6,A0
    ADD.L (A0)+,D0;Y+5 source
    ADD.L (A0),D4
    MOVEM.L D0/D4,(A1,D6);Y+5 target
    BRA.S \17
;code 8
\145:MOVE.B (A3),D0
    BSET #30,D5
    DEC D0
    MOVE D0,COUNT2_IV
;code 5
\146:BSET #31,D5
    DEC A3
;code 4
\147:LEA (A4,D6*4),A0;source, Y+4
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y+4
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+5
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+6
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+7
    MOVE.L (A0),(A1)
    BRA \11
\17:MOVE WIDTH_X6_IV,D1;width * 6
    LEA (A5,D1),A1;target
    MOVEQ #0,D4
    MOVE.B (A3)+,D4
    MOVE (A6,D4*2),D0;CORRECTORTYPE
    BEQ.S \16;0
    DEC D0
    BEQ.S \15;1
    SUBQ #4,D0
    BEQ \12;5
    SUBQ #3,D0
    BEQ.S \13;8
    BRA \109;error
;code 0
\16:MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D4*4),D0
    MOVE.L 20+4(SP),A0;CORRECTIONHIGHORDER
    MOVE.L (A0,D4*4),D4
    LEA (A4,D1),A0
    MOVEM.L (A0),D2-D3;Y+6 source
    ADD.L D0,D2
    ADD.L D4,D3
    MOVEM.L D2-D3,(A1);Y+6 target
    ADD D6,A0
    ADD.L (A0)+,D0;Y+7 source
    ADD.L (A0),D4
    MOVEM.L D0/D4,(A1,D6);Y+7 target
    BRA.S \11
;code 1
\15:MOVE.B (A3)+,D0
    MOVE.L 16+4(SP),A0;CORRECTIONLOWORDER
    MOVE.L (A0,D0*4),D0
    MOVE.L (A0,D4*4),D4
    LEA (A4,D1),A0;Y+6 source
    MOVEM.L (A0),D2-D3;Y+6 source
    ADD.L D0,D2
    ADD.L D4,D3
    MOVEM.L D2-D3,(A1);Y+6 cible
    ADD D6,A0
    ADD.L (A0)+,D0;Y+7 source
    ADD.L (A0),D4
    MOVEM.L D0/D4,(A1,D6);Y+7 cible
    BRA.S \11
;code 8
\13:MOVE.B (A3),D0
    BSET #30,D5
    DEC D0
    MOVE D0,COUNT2_IV
;code 5
\12:BSET #31,D5
    DEC A3
    LEA (A4,D1),A0;Y+6 source
    MOVE D6,D0
    SUBQ #8,D0
    MOVE.L (A0)+,(A1)+;Y+6
    MOVE.L (A0)+,(A1)+
    ADD D0,A0
    ADD D0,A1
    MOVE.L (A0)+,(A1)+;Y+7
    MOVE.L (A0),(A1)
\11:ADDQ #8,A5;cible, X+8
    ADDQ #8,A4;source, X+8
   DBRA D7,\10;count width bloc
\9:SWAP D7
   SUBQ #8,D7;count height bloc
   BLE.S \219
   MOVE D6,D0;width
   ADD D0,D0
   SUB D5,D0;- width bloc/4
   ASL #2,D0
   ADD D0,A5;cible
   ADD D0,A4;source
  BRA \8
\219:MOVE.L (SP)+,A2;restitue A2
;next bloc
\7:LEA TAB_BLOC_XYWH_IV,A0
  CMP.L A0,A2
  BCS.S \3;fin
\4:TST.B BLOC_FLAG1(A2)
   BNE.S \5
   LEA -12(A2),A2
  CMP.L A0,A2
  BCC.S \4
  BRA.S \3;fin
\5:CLR.B BLOC_FLAG1(A2)
  MOVE.B BLOC_FLAG3-12(A2),BLOC_FLAG3(A2)
  TST.B BLOC_FLAG2(A2)
  BEQ.S \6
  MOVE BLOC_W(A2),D1
  ADD D1,BLOC_X(A2)
  MOVE BLOC_W-12(A2),D0
  SUB D1,D0
  MOVE D0,BLOC_W(A2)
  CMP HEIGHT_IV,D1
  BLT \2
  ADD D1,D0
  MOVE 68+24(SP),D2;width aligned on 4 points
  CMP D2,D0
  BLE \2
  SUB D1,D2
  MOVE D2,BLOC_W(A2)
  BRA \2
\6:MOVE BLOC_H(A2),D1
  ADD D1,BLOC_Y(A2)
  MOVE BLOC_H-12(A2),D0
  SUB D1,D0
  MOVE D0,BLOC_H(A2)
 BRA \2
\3:MOVEQ #0,D0;OK
 BRA.S \72
\109:ADDQ #4,SP
\1:MOVEQ #-1,D0;error
\72:LEA 24(SP),SP
 MOVEM.L (SP)+,D1-A6
 RTS
 
 DATA
 
 ;R = Y + 1.40200 * V
;G = Y - 0.34414 * U - 0.71414 * V
;B = Y + 1.77200 * U
TAB_YUV_UB:

 DC.W 0,1,3,5,7,8,$A,$C
 DC.W $E,$F,$11,$13,$15,$17,$18,$1A
 DC.W $1C,$1E,$1F,$21,$23,$25,$26,$28
 DC.W $2A,$2C,$2E,$2F,$31,$33,$35,$36
 DC.W $38,$3A,$3C,$3E,$3F,$41,$43,$45
 DC.W $46,$48,$4A,$4C,$4D,$4F,$51,$53
 DC.W $55,$56,$58,$5A,$5C,$5D,$5F,$61
 DC.W $63,$65,$66,$68,$6A,$6C,$6D,$6F
 DC.W $71,$73,$74,$76,$78,$7A,$7C,$7D
 DC.W $7F,$81,$83,$84,$86,$88,$8A,$8B
 DC.W $8D,$8F,$91,$93,$94,$96,$98,$9A
 DC.W $9B,$9D,$9F,$A1,$A3,$A4,$A6,$A8
 DC.W $AA,$AB,$AD,$AF,$B1,$B2,$B4,$B6
 DC.W $B8,$BA,$BB,$BD,$BF,$C1,$C2,$C4
 DC.W $C6,$C8,$CA,$CB,$CD,$CF,$D1,$D2
 DC.W $D4,$D6,$D8,$D9,$DB,$DD,$DF,$E1
 DC.W $FF1E,$FF1F,$FF21,$FF23,$FF25,$FF27,$FF28,$FF2A
 DC.W $FF2C,$FF2E,$FF2F,$FF31,$FF33,$FF35,$FF36,$FF38
 DC.W $FF3A,$FF3C,$FF3E,$FF3F,$FF41,$FF43,$FF45,$FF46
 DC.W $FF48,$FF4A,$FF4C,$FF4E,$FF4F,$FF51,$FF53,$FF55
 DC.W $FF56,$FF58,$FF5A,$FF5C,$FF5D,$FF5F,$FF61,$FF63
 DC.W $FF65,$FF66,$FF68,$FF6A,$FF6C,$FF6D,$FF6F,$FF71
 DC.W $FF73,$FF75,$FF76,$FF78,$FF7A,$FF7C,$FF7D,$FF7F
 DC.W $FF81,$FF83,$FF84,$FF86,$FF88,$FF8A,$FF8C,$FF8D
 DC.W $FF8F,$FF91,$FF93,$FF94,$FF96,$FF98,$FF9A,$FF9B
 DC.W $FF9D,$FF9F,$FFA1,$FFA3,$FFA4,$FFA6,$FFA8,$FFAA
 DC.W $FFAB,$FFAD,$FFAF,$FFB1,$FFB3,$FFB4,$FFB6,$FFB8
 DC.W $FFBA,$FFBB,$FFBD,$FFBF,$FFC1,$FFC2,$FFC4,$FFC6
 DC.W $FFC8,$FFCA,$FFCB,$FFCD,$FFCF,$FFD1,$FFD2,$FFD4
 DC.W $FFD6,$FFD8,$FFDA,$FFDB,$FFDD,$FFDF,$FFE1,$FFE2
 DC.W $FFE4,$FFE6,$FFE8,$FFE9,$FFEB,$FFED,$FFEF,$FFF1
 DC.W $FFF2,$FFF4,$FFF6,$FFF8,$FFF9,$FFFB,$FFFD,$FFFF

TAB_YUV_VR:

 DC.W 0,1,2,4,5,7,8,9
 DC.W $0B,$0C,$0E,$0F,$10,$12,$13,$15
 DC.W $16,$17,$19,$1A,$1C,$1D,$1E,$20
 DC.W $21,$23,$24,$25,$27,$28,$2A,$2B
 DC.W $2C,$2E,$2F,$31,$32,$33,$35,$36
 DC.W $38,$39,$3A,$3C,$3D,$3F,$40,$41
 DC.W $43,$44,$46,$47,$48,$4A,$4B,$4D
 DC.W $4E,$4F,$51,$52,$54,$55,$56,$58
 DC.W $59,$5B,$5C,$5D,$5F,$60,$62,$63
 DC.W $64,$66,$67,$69,$6A,$6B,$6D,$6E
 DC.W $70,$71,$72,$74,$75,$77,$78,$79
 DC.W $7B,$7C,$7E,$7F,$80,$82,$83,$85
 DC.W $86,$87,$89,$8A,$8C,$8D,$8F,$90
 DC.W $91,$93,$94,$96,$97,$98,$9A,$9B
 DC.W $9D,$9E,$9F,$A1,$A2,$A4,$A5,$A6
 DC.W $A8,$A9,$AB,$AC,$AD,$AF,$B0,$B2
 DC.W $FF4D,$FF4E,$FF50,$FF51,$FF53,$FF54,$FF55,$FF57
 DC.W $FF58,$FF5A,$FF5B,$FF5C,$FF5E,$FF5F,$FF61,$FF62
 DC.W $FF63,$FF65,$FF66,$FF68,$FF69,$FF6A,$FF6C,$FF6D
 DC.W $FF6F,$FF70,$FF71,$FF73,$FF74,$FF76,$FF77,$FF79
 DC.W $FF7A,$FF7B,$FF7D,$FF7E,$FF80,$FF81,$FF82,$FF84
 DC.W $FF85,$FF87,$FF88,$FF89,$FF8B,$FF8C,$FF8E,$FF8F
 DC.W $FF90,$FF92,$FF93,$FF95,$FF96,$FF97,$FF99,$FF9A
 DC.W $FF9C,$FF9D,$FF9E,$FFA0,$FFA1,$FFA3,$FFA4,$FFA5
 DC.W $FFA7,$FFA8,$FFAA,$FFAB,$FFAC,$FFAE,$FFAF,$FFB1
 DC.W $FFB2,$FFB3,$FFB5,$FFB6,$FFB8,$FFB9,$FFBA,$FFBC
 DC.W $FFBD,$FFBF,$FFC0,$FFC1,$FFC3,$FFC4,$FFC6,$FFC7
 DC.W $FFC8,$FFCA,$FFCB,$FFCD,$FFCE,$FFCF,$FFD1,$FFD2
 DC.W $FFD4,$FFD5,$FFD6,$FFD8,$FFD9,$FFDB,$FFDC,$FFDD
 DC.W $FFDF,$FFE0,$FFE2,$FFE3,$FFE4,$FFE6,$FFE7,$FFE9
 DC.W $FFEA,$FFEB,$FFED,$FFEE,$FFF0,$FFF1,$FFF2,$FFF4
 DC.W $FFF5,$FFF7,$FFF8,$FFF9,$FFFB,$FFFC,$FFFE,$FFFF

TAB_YUV_UG:

 DC.W 0,0,0,$FFFF,$FFFF,$FFFF,$FFFE,$FFFE
 DC.W $FFFE,$FFFD,$FFFD,$FFFD,$FFFC,$FFFC,$FFFC,$FFFB
 DC.W $FFFB,$FFFB,$FFFA,$FFFA,$FFFA,$FFF9,$FFF9,$FFF9
 DC.W $FFF8,$FFF8,$FFF8,$FFF7,$FFF7,$FFF7,$FFF6,$FFF6
 DC.W $FFF5,$FFF5,$FFF5,$FFF4,$FFF4,$FFF4,$FFF3,$FFF3
 DC.W $FFF3,$FFF2,$FFF2,$FFF2,$FFF1,$FFF1,$FFF1,$FFF0
 DC.W $FFF0,$FFF0,$FFEF,$FFEF,$FFEF,$FFEE,$FFEE,$FFEE
 DC.W $FFED,$FFED,$FFED,$FFEC,$FFEC,$FFEC,$FFEB,$FFEB
 DC.W $FFEA,$FFEA,$FFEA,$FFE9,$FFE9,$FFE9,$FFE8,$FFE8
 DC.W $FFE8,$FFE7,$FFE7,$FFE7,$FFE6,$FFE6,$FFE6,$FFE5
 DC.W $FFE5,$FFE5,$FFE4,$FFE4,$FFE4,$FFE3,$FFE3,$FFE3
 DC.W $FFE2,$FFE2,$FFE2,$FFE1,$FFE1,$FFE0,$FFE0,$FFE0
 DC.W $FFDF,$FFDF,$FFDF,$FFDE,$FFDE,$FFDE,$FFDD,$FFDD
 DC.W $FFDD,$FFDC,$FFDC,$FFDC,$FFDB,$FFDB,$FFDB,$FFDA
 DC.W $FFDA,$FFDA,$FFD9,$FFD9,$FFD9,$FFD8,$FFD8,$FFD8
 DC.W $FFD7,$FFD7,$FFD7,$FFD6,$FFD6,$FFD5,$FFD5,$FFD5
 DC.W $2C,$2B,$2B,$2B,$2A,$2A,$29,$29
 DC.W $29,$28,$28,$28,$27,$27,$27,$26
 DC.W $26,$26,$25,$25,$25,$24,$24,$24
 DC.W $23,$23,$23,$22,$22,$22,$21,$21
 DC.W $21,$20,$20,$20,$1F,$1F,$1E,$1E
 DC.W $1E,$1D,$1D,$1D,$1C,$1C,$1C,$1B
 DC.W $1B,$1B,$1A,$1A,$1A,$19,$19,$19
 DC.W $18,$18,$18,$17,$17,$17,$16,$16
 DC.W $16,$15,$15,$14,$14,$14,$13,$13
 DC.W $13,$12,$12,$12,$11,$11,$11,$10
 DC.W $10,$10,$0F,$0F,$0F,$0E,$0E,$0E
 DC.W $0D,$0D,$0D,$0C,$0C,$0C,$0B,$0B
 DC.W $0B,$0A,$0A,9,9,9,8,8
 DC.W 8,7,7,7,6,6,6,5
 DC.W 5,5,4,4,4,3,3,3
 DC.W 2,2,2,1,1,1,0,0

TAB_YUV_VG:

 DC.W 0,0,$FFFF,$FFFE,$FFFE,$FFFD,$FFFC,$FFFC
 DC.W $FFFB,$FFFA,$FFF9,$FFF9,$FFF8,$FFF7,$FFF7,$FFF6
 DC.W $FFF5,$FFF4,$FFF4,$FFF3,$FFF2,$FFF2,$FFF1,$FFF0
 DC.W $FFEF,$FFEF,$FFEE,$FFED,$FFED,$FFEC,$FFEB,$FFEA
 DC.W $FFEA,$FFE9,$FFE8,$FFE8,$FFE7,$FFE6,$FFE5,$FFE5
 DC.W $FFE4,$FFE3,$FFE3,$FFE2,$FFE1,$FFE0,$FFE0,$FFDF
 DC.W $FFDE,$FFDE,$FFDD,$FFDC,$FFDB,$FFDB,$FFDA,$FFD9
 DC.W $FFD9,$FFD8,$FFD7,$FFD6,$FFD6,$FFD5,$FFD4,$FFD4
 DC.W $FFD3,$FFD2,$FFD1,$FFD1,$FFD0,$FFCF,$FFCF,$FFCE
 DC.W $FFCD,$FFCC,$FFCC,$FFCB,$FFCA,$FFCA,$FFC9,$FFC8
 DC.W $FFC7,$FFC7,$FFC6,$FFC5,$FFC5,$FFC4,$FFC3,$FFC2
 DC.W $FFC2,$FFC1,$FFC0,$FFC0,$FFBF,$FFBE,$FFBD,$FFBD
 DC.W $FFBC,$FFBB,$FFBB,$FFBA,$FFB9,$FFB8,$FFB8,$FFB7
 DC.W $FFB6,$FFB6,$FFB5,$FFB4,$FFB3,$FFB3,$FFB2,$FFB1
 DC.W $FFB1,$FFB0,$FFAF,$FFAE,$FFAE,$FFAD,$FFAC,$FFAC
 DC.W $FFAB,$FFAA,$FFA9,$FFA9,$FFA8,$FFA7,$FFA7,$FFA6
 DC.W $5B,$5A,$59,$59,$58,$57,$57,$56
 DC.W $55,$54,$54,$53,$52,$52,$51,$50
 DC.W $4F,$4F,$4E,$4D,$4D,$4C,$4B,$4A
 DC.W $4A,$49,$48,$48,$47,$46,$45,$45
 DC.W $44,$43,$43,$42,$41,$40,$40,$3F
 DC.W $3E,$3E,$3D,$3C,$3B,$3B,$3A,$39
 DC.W $39,$38,$37,$36,$36,$35,$34,$34
 DC.W $33,$32,$31,$31,$30,$2F,$2F,$2E
 DC.W $2D,$2C,$2C,$2B,$2A,$2A,$29,$28
 DC.W $27,$27,$26,$25,$25,$24,$23,$22
 DC.W $22,$21,$20,$20,$1F,$1E,$1D,$1D
 DC.W $1C,$1B,$1B,$1A,$19,$18,$18,$17
 DC.W $16,$16,$15,$14,$13,$13,$12,$11
 DC.W $11,$10,$0F,$0E,$0E,$0D,$0C,$0C
 DC.W $0B,$0A,9,9,8,7,7,6
 DC.W 5,4,4,3,2,2,1,0
 
BUFFER_IVDATA:DC.L IVDATA
IVDATA:IBYTES IVDATA.BIN

 ALIGN.W
 BSS

BUFFER_IV:DS.L 1
BUFFER_YUV:DS.L 1
YUVBUFS1:DS.L 3
YUVBUFS2:DS.L 3
TAB_BLOC_XYWH_IV:DS.W 6*16
SAUVE_PTR_DATA_IV:DS.L 1
WIDTH_X3_IV:DS.W 1
WIDTH_X5_IV:DS.W 1
WIDTH_X6_IV:DS.W 1
COUNT1_IV:DS.W 1
COUNT2_IV:DS.W 1
HEIGHT_IV:DS.W 1
CODE_IV:DS.W 1
INDEX_IV:DS.W 1

 END
 
 
 