#include "ksia64.h"

        LEAF_ENTRY (ChkSum)

        alloc    t22 = ar.pfs, 3, 0, 0, 0
        mov      t10 = 0xffff
        zxt4     a2 = a2
        ;;

        cmp4.eq  pt0 = zero, a2
        zxt4     a0 = a0
(pt0)   br.cond.spnt cs20

cs10:
        ld2      t0 = [a1], 2
        add      a2 = -1, a2
        ;;
        add      a0 = t0, a0
        ;;

        cmp4.ne  pt1 = zero, a2
        extr.u   t1 = a0, 16, 16
        and      t2 = a0, t10
        ;;

        add      a0 = t1, t2
        nop.f    0
(pt1)   br.cond.sptk cs10
        ;;
        
cs20:
  
        nop.m    0
        extr.u   t1 = a0, 16, 16
        ;;
        add      a0 = t1, a0
        ;;

        nop.m    0
        and      v0 = a0, t10
        br.ret.sptk brp

        LEAF_EXIT (ChkSum)