subroutine mv4dvar(NDIM,a,XX,AX,izs,rzs,dzs),8

      implicit none

      include 'champ.cdk'
      include 'chobs.cdk'

      integer  NDIM, i, izs(1),IR
      integer  NTRAJ1
      real*8   AX(NDIM), XX(NDIM)
      real*8   rzs(1), dzs(1),a(1)
      real     ZRR(N,N),ZRRR(N,N)
      real     J
      real     dl_v(2*N*N*52)
       
       GRFLAG = 0
       OBFLAG = 0
       JXFLAG = 0
        
       NTRAJ1 = 52 

       IR = 0
       DO IW = 1,N
       DO JW = 1,N
          ZR(IW,JW) = XX(IR+1)
          IR        = IR+1
       ENDDO
       ENDDO

       CALL SQRTB(ZR,ZO)
       CALL RK(ZR,ZO,KTX,KTY,IKTX,IKTY,N,N2,LWRK,
     .                  FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)

       CALL LININC(J)

       CALL H_4d(ZTRA2,STRA2,dl_v)

       DO IR = 1, 2*N*N*52
          dl_v(IR) = dl_v(IR)/sigmao(IR)**2
       END DO

       CALL HT_4d(dl_v,ZTRA2,STRA2)

       CALL ADJINC
       CALL KR(ZO,ZR,KTX,KTY,IKTX,IKTY,N,N2,LWRK,
     .                  FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)
       CALL SQRTBT(ZO,ZR)

       IR =0
       DO IW = 1,N
       DO JW = 1,N
          IR = IR +1
          AX(IR) = DBLE(ZR(IW,JW)) + XX(IR)
       ENDDO
       ENDDO

      end subroutine