! @(#) bbtSPARC.s Version 1.2 (4/22/92). copyright Venue & Fuji Xerox # ! !************************************************************************/ !* */ !* (C) Copyright 1989-92 Venue. All Rights Reserved. */ !* Manufactured in the United States of America. */ !* */ !************************************************************************/ ! Argument stack offsets, for rational naming. ! #define srcbase [%fp+68] #define dstbase [%fp+72] #define sx [%fp+76] #define dx [%fp+80] #define w [%fp+84] #define height [%fp+88] #define srcbpl [%fp+92] #define dstbpl [%fp+96] #define backwardflg [%fp+100] #define src_comp [%fp+104] #define op [%fp+108] #define gray [%fp+112] #define num_gray [%fp+116] #define curr_gray_line [%fp+120] ! ! ! #define num_lines_remaining [%fp-4] #define fwd [%fp-8] #define bb_fast [%fp-12] #define temp #define dstnumL #define src32lbit #define srcLshift #define dst32lbit #define srcRmask #define dstold #define dstdata #define mask #define x32byta #define x32nbyt #define x32ia #define abc #define dst32rbit #define src32rbit [%fp-32] #define OrigSrcAddr [%fp-36] #define OrigDstAddr [%fp-20] #define preloop_mask #define postloop_mask #define sdw_mask [%fp-24] #define dst32addr [%fp-16] #define src32addr [%fp-28] #define shS #define savedS #define newS #define srcRshift ! ! Computed intermediate values ! ! srcbpl_rshift_3 saved value of (srcbpl>>3) ! dstbpl_rshift_3 saved value of (dstbpl>>3) ! num_gray_1 saved value of (num_gray-1) ! ffff saved value of 0xFFFF #define srcbpl_rshift_3 [%fp-52] #define num_gray_1 [%fp-48] #define dstbpl_rshift_3 [%fp-56] #define ffff [%fp-44] ! ! Register Usage ! ! %i0 (arg srcbase) ! %i1 srcLshift (arg dstbase) ! %i2 srcRshift (arg sx) ! %i3 dx, newS (arg dx) ! %i4 (arg width) ! %i5 bb_fast (arg height) ! %i6 ! %i7 ! ! %o0 ! %o1 ! %o2 ! %o3 ! %04 ! %o5 ! %o6 ! %o7 ! ! %g0 [always zero] ! %g1 ! %g2 ! %g3 ! %g4 ! %g5 ! %g6 ! %g7 ! ! %l0 srcRmask ! %l1 op (left shifted 2 by JDS as of 11/7/89) ! %l2 postloop_mask ! %l3 preloop_mask ! %l4 dst32rbit ! %l5 src32lbit ! %l6 dst32lbit ! %l7 ! ! Definitions for register assignments, to make code clear. ! All are of the form R, to indicate the R ! version of the variable, in case there is also a storage place ! for it. ! #define RsrcRmask %l0 #define Rop %l1 #define Rpostloop_mask %l2 #define Rpreloop_mask %l3 #define Rdst32rbit %l4 #define Rsrc32lbit %l5 #define Rdst32lbit %l6 #define RsrcRshift %i2 ! .seg "text" ! [internal] .proc 4 .global _bitblt _bitblt: !#PROLOGUE# 0 !#PROLOGUE# 1 save %sp,-120,%sp ld backwardflg,%o0 st %i5,num_lines_remaining tst %o0 st %i4,w bne L77003 st %i0,srcbase mov 1,%o1 b L77004 st %o1,fwd L77003: st %g0,fwd L77004: ld dstbpl,%o3 ld srcbpl,%o2 or %o2,%o3,%o2 andcc %o2,31,%g0 bne,a L77007 mov 0,%i5 ! bb_fast = %i5 mov 1,%i5 L77007: ld gray,%o5 st %i5,bb_fast tst %o5 ! are we doing the gray case? be,a LY53 ! no => LY53 ld fwd,%o5 tst %i3 ! dx bge,a LY52 sra %i3,3,%o4 mov 7,%o7 sub %o7,%i3,%o7 sra %o7,3,%o7 b LY12 sub %i1,%o7,%i1 LY52: ! [internal] add %i1,%o4,%i1 LY12: ! [internal] and %i1,3,Rdst32lbit sub %i1,Rdst32lbit,%i1 st %i1,dst32addr ld w,%i1 ld dst32addr,%o2 sll Rdst32lbit,3,Rdst32lbit and %i3,7,%i3 add Rdst32lbit,%i3,Rdst32lbit !dst32lbit add Rdst32lbit,%i1,%i1 sub %i1,1,Rdst32rbit tst Rdst32lbit st %o2,OrigDstAddr ! OrigDstAddr? be L77013 and Rdst32rbit,31,Rdst32rbit ! dst32rbit mov 32,%o3 sub %o3,Rdst32lbit,%o3 mov -1,%i3 sll %i3,%o3,%i3 b L77014 xor %i3,-1,%i3 ! preloop_mask L77013: mov -1,%i3 L77014: ld dstbpl,%o3 mov 31,%o2 sub %o2,Rdst32rbit,%o2 mov -1,Rpostloop_mask sll Rpostloop_mask,%o2,Rpostloop_mask ! postloop_mask mov %i3,Rpreloop_mask and Rpreloop_mask,Rpostloop_mask,%o0 andcc %o3,31,%g0 sra %i1,5,%l7 st %o0,sdw_mask ! sdw_mask? bne L77016 dec %l7 ! dstnumL seems to be in %l7. b L77017 mov 1,%i3 L77016: mov 0,%i3 ! bb_fast L77017: st %i3,bb_fast b L77396 and %i2,15,Rsrc32lbit !srclbit ! ! Loop-advance, for either the forward or backward case ! LY53: ! [internal] tst %o5 ! going forward? be,a LY51 ! No. => LY51 ld w,%o3 tst %i3 bge,a LY50 sra %i3,3,%o4 mov 7,%o7 sub %o7,%i3,%o7 sra %o7,3,%o7 b LY13 sub %i1,%o7,%i1 LY50: ! [internal] add %i1,%o4,%i1 LY13: ! [internal] and %i1,3,Rdst32lbit sub %i1,Rdst32lbit,%i1 st %i1,dst32addr ld w,%i1 ld dst32addr,%o2 sll Rdst32lbit,3,Rdst32lbit and %i3,7,%i3 add Rdst32lbit,%i3,Rdst32lbit add Rdst32lbit,%i1,%i1 sub %i1,1,Rdst32rbit tst Rdst32lbit st %o2,OrigDstAddr be L77024 and Rdst32rbit,31,Rdst32rbit mov 32,%o3 sub %o3,Rdst32lbit,%o3 mov -1,%i3 sll %i3,%o3,%i3 b L77025 xor %i3,-1,%i3 L77024: mov -1,%i3 L77025: mov 31,%o2 sub %o2,Rdst32rbit,%o2 mov -1,Rpostloop_mask sll Rpostloop_mask,%o2,Rpostloop_mask mov %i3,Rpreloop_mask and Rpreloop_mask,Rpostloop_mask,%o0 tst %i2 sra %i1,5,%l7 st %o0,sdw_mask bge L77027 dec %l7 ld srcbase,%i3 mov 7,%o3 sub %o3,%i2,%o3 sra %o3,3,%o3 b LY14 sub %i3,%o3,%i3 L77027: ld srcbase,%i3 sra %i2,3,%o2 add %i3,%o2,%i3 LY14: ! [internal] ld w,%o4 and %i3,3,Rsrc32lbit sub %i3,Rsrc32lbit,%i3 sll Rsrc32lbit,3,Rsrc32lbit and %i2,7,%i2 add Rsrc32lbit,%i2,Rsrc32lbit add Rsrc32lbit,%o4,%o4 sub Rsrc32lbit,Rdst32lbit,%i1 and %i1,31,%i1 dec %o4 and %o4,31,%o4 tst %i1 sub Rdst32lbit,Rsrc32lbit,RsrcRshift st %i3,src32addr st %o4,src32rbit be L77030 and RsrcRshift,31,RsrcRshift mov -1,%i3 sll %i3,%i1,%i3 b L77031 xor %i3,-1,%i3 L77030: mov -1,%i3 L77031: ld src32addr,%o2 mov %i3,RsrcRmask b L77396 st %o2,OrigSrcAddr ! ! ! Loop advance for the blt-backward case. ! LY51: ! [internal] add %i3,%o3,%i3 deccc %i3 bpos,a LY49 sra %i3,3,%o4 mov 7,%o7 sub %o7,%i3,%o7 sra %o7,3,%o7 b LY15 sub %i1,%o7,%i1 LY49: ! [internal] add %i1,%o4,%i1 LY15: ! [internal] and %i1,3,Rdst32rbit sub %i1,Rdst32rbit,%i1 sll Rdst32rbit,3,Rdst32rbit and %i3,7,%i3 add Rdst32rbit,%i3,Rdst32rbit sub Rdst32rbit,%o3,Rdst32lbit inc Rdst32lbit and Rdst32lbit,31,Rdst32lbit tst Rdst32lbit ! replaced by andCC st %i1,OrigDstAddr mov -1,Rpostloop_mask be Ldstl0 st %i1,dst32addr mov 32,%o1 sub %o1,Rdst32lbit,%o1 sll Rpostloop_mask,%o1,Rpostloop_mask xor Rpostloop_mask,-1,Rpostloop_mask Ldstl0: ld w,%o1 mov 31,%o3 sub %o3,Rdst32rbit,%o3 sub %o1,Rdst32rbit,%i3 mov -1,Rpreloop_mask sll Rpreloop_mask,%o3,Rpreloop_mask dec %i3 tst %i3 and Rpreloop_mask,Rpostloop_mask,%o0 ble L77037 st %o0,sdw_mask b L77038 sra %i3,5,%i3 L77037: mov 0,%i3 L77038: mov %i3,%l7 add %i2,%o1,%i3 deccc %i3 bpos LY48 ld srcbase,%i1 mov 7,%o1 sub %o1,%i3,%o1 sra %o1,3,%o1 b LY16 sub %i1,%o1,%i1 LY48: ! [internal] sra %i3,3,%o0 add %i1,%o0,%i1 LY16: ! [internal] ld w,Rsrc32lbit and %i1,3,%i2 sub %i1,%i2,%i1 sll %i2,3,%i2 and %i3,7,%i3 add %i2,%i3,%i2 !src32rbit st %i2,src32rbit ! moved from below for clarity sub %i2,Rsrc32lbit,Rsrc32lbit inc Rsrc32lbit and Rsrc32lbit,31,Rsrc32lbit st %i1,src32addr sub Rsrc32lbit,Rdst32lbit,%i1 and %i1,31,%i1 ! st %i2,src32rbit sub Rdst32lbit,Rsrc32lbit,RsrcRshift tst %i1 be L77043 and RsrcRshift,31,RsrcRshift mov -1,%i3 sll %i3,%i1,%i3 b L77044 xor %i3,-1,%i3 L77043: mov 0,%i3 L77044: ld src32addr,%o1 mov %i3,RsrcRmask ! srcRmask st %o1,OrigSrcAddr L77396: ld srcbpl,%o3 ld num_lines_remaining,%i5 ld num_gray,%o0 ld dstbpl,%o5 ld op,Rop sll Rop,2,Rop ! op << 2, for jump dispatch sra %o3,3,%o3 st %o3,srcbpl_rshift_3 ! srcbpl >> 3, for later use. ld num_lines_remaining,%o3 dec %o0 sethi %hi(0xffff),%o2 or %o2,%lo(0xffff),%o2 ! [internal] sll %o0,1,%o0 dec %o3 sra %o5,3,%o5 tst %i5 st %o2,ffff st %o0,num_gray_1 st %o3,num_lines_remaining ble LY1 st %o5,dstbpl_rshift_3 LY8: ! [internal] ld gray,%o4 tst %o4 be,a LY47 ld fwd,%o3 ld srcbase,%i5 ld ffff,%o0 lduh [%i5],%i5 sub Rsrc32lbit,Rdst32lbit,%i1 sll %i5,16,%o3 or %i5,%o3,%i5 ld src_comp,%o3 and %i1,15,%i1 sll %i5,%i1,%i5 srl %i5,16,%o7 and %o7,%o0,%o7 tst %o3 be L77051 or %i5,%o7,%i5 xor %i5,-1,%i5 L77051: ld w,%o5 add Rdst32lbit,%o5,%o5 cmp %o5,32 bg,a LY46 ld dst32addr,%i4 b L77305 ld sdw_mask,%i0 LY46: ! [internal] ! cmp Rop,3 ld [%i4],%i4 ! sll Rop,2,%o0 ! bgu L77060 andn %i4,Rpreloop_mask,%i0 sethi %hi(L2000000),%o1 or %o1,%lo(L2000000),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop b L77060 L2000000: .word L77054 .word L77055 .word L77056 .word L77057 L77054: mov %i5,%i4 L77055: and %i4,%i5,%i4 L77056: or %i4,%i5,%i4 L77057: xor %i4,%i5,%i4 L77060: ld dst32addr,%o7 ! o7 = dst32addr down to ~ LY45 and %i4,Rpreloop_mask,%i4 or %i4,%i0,%i4 st %i4,[%o7] ! ld dst32addr,%o7 ! cmp Rop,3 inc 4,%o7 ! sll Rop,2,%o0 ! bgu L77079 ! st %o7,dst32addr sethi %hi(L2000001),%o1 or %o1,%lo(L2000001),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i4 L2000001: .word L77061 .word L77065 .word L77069 .word L77073 L77061: ! mov %l7,%i4 L77062: deccc %i4 bneg,a LY45 cmp Rdst32rbit,31 ! ld dst32addr,%o0 st %i5,[%o7] ! ld dst32addr,%o1 ! inc 4,%o1 b L77062 inc 4,%o7 ! st %o1,dst32addr L77065: ! mov %l7,%i4 L77066: deccc %i4 bneg,a LY45 cmp Rdst32rbit,31 ld [%o7],%o3 and %o3,%i5,%o3 st %o3,[%o7] ! ld dst32addr,%o7 ! inc 4,%o7 b L77066 inc 4,%o7 ! st %o7,dst32addr L77069: ! mov %l7,%i4 L77070: deccc %i4 bneg,a LY45 cmp Rdst32rbit,31 ! ld dst32addr,%o0 ld [%o7],%o1 or %o1,%i5,%o1 st %o1,[%o7] ! ld dst32addr,%o4 ! inc 4,%o4 b L77070 inc 4,%o7 ! st %o4,dst32addr L77073: ! sub %l7,1,%i4 ! tst %i4 deccc %i4 bl,a LY45 cmp Rdst32rbit,31 !LY9: ! [internal] ! ld dst32addr,%o5 LY9a: deccc %i4 ld [%o7],%o1 xor %o1,%i5,%o1 st %o1,[%o7] ! ld dst32addr,%o2 ! inc 4,%o2 bpos LY9a inc 4,%o7 ! st %o5,dst32addr L77079: cmp Rdst32rbit,31 LY45: ! [internal] ! be,a LY31 be LY31 st %o7,dst32addr ! end of dst32addr in o7 ld gray,%o2 b L77305 mov Rpostloop_mask,%i0 LY47: ! [internal] tst %o3 !fwd be,a LY44 ld src32rbit,%o7 cmp Rsrc32lbit,Rdst32lbit ble,a LY43 cmp Rsrc32lbit,Rdst32lbit ld w,%o4 add Rsrc32lbit,%o4,%o4 cmp %o4,32 ble,a LY43 cmp Rsrc32lbit,Rdst32lbit ld src32addr,%o1 ld [%o1],%i3 inc 4,%o1 ! st %o1,src32addr ld [%o1],%o3 sll %i3,%i1,%i3 srl %o3,RsrcRshift,%i5 and %i5,RsrcRmask,%i5 or %i3,%i5,%i5 sll %o3,%i1,%i3 inc 4,%o1 andn %i3,RsrcRmask,%i3 b LY19 st %o1,src32addr LY43: ! [internal] bg LY42 ld src32addr,%o7 ld [%o7],%i3 inc 4,%o7 srl %i3,RsrcRshift,%i5 sll %i3,%i1,%i3 st %o7,src32addr and %i5,RsrcRmask,%i5 b LY19 andn %i3,RsrcRmask,%i3 LY42: ! [internal] ld [%o7],%i5 inc 4,%o7 st %o7,src32addr sll %i5,%i1,%i5 LY19: ! [internal] ld src_comp,%o1 tst %o1 be,a LY41 ld w,%o3 xor %i5,-1,%i5 ld w,%o3 LY41: ! [internal] add Rdst32lbit,%o3,%o3 cmp %o3,32 bg,a LY40 ld dst32addr,%i4 b L77305 ld sdw_mask,%i0 LY40: ! [internal] ! cmp Rop,3 ld [%i4],%i4 ! sll Rop,2,%o0 ! bgu L77101 andn %i4,Rpreloop_mask,%i0 sethi %hi(L2000002),%o1 or %o1,%lo(L2000002),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop b L77101 L2000002: .word L77095 .word L77096 .word L77097 .word L77098 L77095: ! b L77101 mov %i5,%i4 L77096: ! b L77101 and %i4,%i5,%i4 L77097: ! b L77101 or %i4,%i5,%i4 L77098: xor %i4,%i5,%i4 L77101: ld dst32addr,%o4 ! o4 = dst32addr and %i4,Rpreloop_mask,%i4 or %i4,%i0,%i4 st %i4,[%o4] ! ld dst32addr,%o4 cmp Rsrc32lbit,Rdst32lbit inc 4,%o4 bne L77144 st %o4,dst32addr ld src_comp,%o5 tst %o5 bne LY39 ! cmp Rop,3 ! bgu L77186 ! sll Rop,2,%o0 ld src32addr,%o5 ! o5 = src32addr sethi %hi(L2000004),%o1 or %o1,%lo(L2000004),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i5 L2000004: .word L77124 .word L77128 .word L77132 .word L77136 L77104: ! mov %l7,%i5 L77105: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o7 ! ld dst32addr,%o4 ld [%o5],%o7 xor %o7,-1,%o7 st %o7,[%o4] ! ld src32addr,%o3 ! ld dst32addr,%o4 inc 4,%o4 ! inc 4,%o5 ! st %o3,src32addr b L77105 inc 4,%o5 ! st %o4,dst32addr L77108: ! mov %l7,%i5 L77109: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o5 ! ld dst32addr,%o0 ld [%o5],%o7 ld [%o4],%o1 andn %o1,%o7,%o1 st %o1,[%o4] ! ld src32addr,%o4 ! ld dst32addr,%o5 inc 4,%o4 ! inc 4,%o5 ! st %o4,src32addr b L77109 inc 4,%o5 ! st %o5,dst32addr L77112: ! mov %l7,%i5 L77113: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o7 ! ld dst32addr,%o1 ld [%o5],%o7 ld [%o4],%o2 orn %o2,%o7,%o2 st %o2,[%o4] ! ld src32addr,%o5 ! ld dst32addr,%o7 inc 4,%o5 ! inc 4,%o4 ! st %o5,src32addr b L77113 inc 4,%o4 ! st %o7,dst32addr L77116: ! mov %l7,%i5 L77117: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o0 ! ld dst32addr,%o2 ld [%o5],%o0 ld [%o4],%o3 xnor %o3,%o0,%o3 st %o3,[%o4] ! ld src32addr,%o7 ! ld dst32addr,%o0 inc 4,%o5 ! inc 4,%o4 ! st %o7,src32addr b L77117 inc 4,%o4 ! st %o0,dst32addr LY39: ! [internal] o4 = dst32addr getting here ! bgu L77186 ! sll Rop,2,%o0 ! ld src32addr,%o5 ! o5 = src32addr when getting to LY39 sethi %hi(L2000003),%o1 or %o1,%lo(L2000003),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i5 L2000003: .word L77104 .word L77108 .word L77112 .word L77116 L77124: ! mov %l7,%i5 L77125: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o2 ! ld dst32addr,%o1 ld [%o5],%o2 st %o2,[%o4] ! ld src32addr,%o4 ! ld dst32addr,%o5 inc 4,%o4 ! inc 4,%o5 ! st %o4,src32addr b L77125 inc 4,%o5 ! st %o5,dst32addr L77128: ! mov %l7,%i5 L77129: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o7 ! ld dst32addr,%o1 ld [%o5],%o7 ld [%o4],%o2 and %o2,%o7,%o2 st %o2,[%o4] ! ld src32addr,%o5 ! ld dst32addr,%o7 inc 4,%o5 ! inc 4,%o4 ! st %o5,src32addr b L77129 inc 4,%o4 ! st %o7,dst32addr L77132: ! mov %l7,%i5 L77133: deccc %i5 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o0 ! ld dst32addr,%o2 ld [%o5],%o0 ld [%o4],%o3 or %o3,%o0,%o3 st %o3,[%o4] ! ld src32addr,%o7 ! ld dst32addr,%o0 inc 4,%o4 ! inc 4,%o5 ! st %o7,src32addr b L77133 inc 4,%o5 ! st %o0,dst32addr L77136: ! sub %l7,1,%i5 ! tst %i5 deccc %i5 bl,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 LY10: ! [internal] ! ld src32addr,%o1 ! ld dst32addr,%o3 ld [%o5],%o1 ld [%o4],%o2 deccc %i5 xor %o2,%o1,%o2 st %o2,[%o4] ! ld src32addr,%o0 ! ld dst32addr,%o1 inc 4,%o4 ! inc 4,%o5 ! st %o0,src32addr bpos LY10 inc 4,%o5 ! st %o1,dst32addr L77186: ! cmp Rdst32rbit,31 st %o4,dst32addr LY37: ! [internal] st %o5,src32addr cmp Rdst32rbit,31 be,a LY31 ld gray,%o2 ld src32rbit,%o5 cmp %o5,Rdst32rbit bg,a L77190 mov %i3,%i5 ld src32addr,%i5 ld [%i5],%i5 srl %i5,RsrcRshift,%i5 and %i5,RsrcRmask,%i5 b L77190 or %i3,%i5,%i5 L77144: ! o4 = dst32addr when getting here. ld src_comp,%o2 tst %o2 bne LY38 ! cmp Rop,3 ! bgu L77186 ! sll Rop,2,%o0 ld src32addr,%o5 ! o5 = src322addr sethi %hi(L2000006),%o1 or %o1,%lo(L2000006),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i4 L2000006: .word L77166 .word L77170 .word L77174 .word L77178 L77146: ! mov %l7,%i4 L77147: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o5 ! ld dst32addr,%o3 ld [%o5],%o1 inc 4,%o5 srl %o1,RsrcRshift,%o7 or %i3,%o7,%o7 xor %o7,-1,%o7 ! st %o5,src32addr st %o7,[%o4] sll %o1,%i1,%i3 ! ld dst32addr,%o4 ! inc 4,%o4 b L77147 inc 4,%o4 ! st %o4,dst32addr L77150: ! mov %l7,%i4 L77151: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o0 ! ld dst32addr,%o5 ld [%o5],%o7 inc 4,%o5 srl %o7,RsrcRshift,%o1 or %i3,%o1,%o1 sll %o7,%i1,%i3 ! st %o0,src32addr ld [%o4],%o7 xor %o1,-1,%o1 and %o7,%o1,%o7 st %o7,[%o4] ! ld dst32addr,%o2 ! inc 4,%o2 b L77151 inc 4,%o4 ! st %o2,dst32addr L77154: ! mov %l7,%i4 L77155: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o5 ! ld dst32addr,%o3 ld [%o5],%o1 inc 4,%o5 srl %o1,RsrcRshift,%o7 or %i3,%o7,%o7 sll %o1,%i1,%i3 ! st %o5,src32addr ld [%o4],%o1 xor %o7,-1,%o7 or %o1,%o7,%o1 st %o1,[%o4] ! ld dst32addr,%o0 ! inc 4,%o4 b L77155 inc 4,%o4 ! st %o0,dst32addr L77158: ! mov %l7,%i4 L77159: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o3 ! ld dst32addr,%o1 ld [%o5],%o2 inc 4,%o5 srl %o2,RsrcRshift,%o1 or %i3,%o1,%o1 sll %o2,%i1,%i3 ! st %o3,src32addr ld [%o4],%o2 xor %o1,-1,%o1 xor %o2,%o1,%o2 st %o2,[%o4] ! ld dst32addr,%o5 ! inc 4,%o4 b L77159 inc 4,%o4 ! st %o5,dst32addr LY38: ! [internal] ! bgu L77186 ! sll Rop,2,%o0 ld src32addr,%o5 sethi %hi(L2000005),%o1 or %o1,%lo(L2000005),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i4 L2000005: .word L77146 .word L77150 .word L77154 .word L77158 ! b LY37 ! st %o4,dst32addr ! cmp Rdst32rbit,31 L77166: ! mov %l7,%i4 L77167: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o1 ! ld dst32addr,%o5 ld [%o5],%o0 inc 4,%o5 srl %o0,RsrcRshift,%o2 or %i3,%o2,%o2 ! st %o1,src32addr st %o2,[%o4] ! ld dst32addr,%o7 sll %o0,%i1,%i3 ! inc 4,%o4 b L77167 inc 4,%o4 ! st %o7,dst32addr L77170: ! mov %l7,%i4 L77171: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o2 ! ld dst32addr,%o7 ld [%o5],%o1 inc 4,%o5 srl %o1,RsrcRshift,%o3 or %i3,%o3,%o3 ! st %o2,src32addr ld [%o4],%o0 sll %o1,%i1,%i3 and %o0,%o3,%o0 st %o0,[%o4] ! ld dst32addr,%o3 ! inc 4,%o4 b L77171 inc 4,%o4 ! st %o3,dst32addr L77174: ! mov %l7,%i4 L77175: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o7 ! ld dst32addr,%o3 ld [%o5],%o7 inc 4,%o5 srl %o7,RsrcRshift,%o0 or %i3,%o0,%o0 ! st %o7,src32addr ld [%o4],%o1 sll %o7,%i1,%i3 or %o1,%o0,%o1 st %o1,[%o4] ! ld dst32addr,%o0 ! inc 4,%o4 b L77175 inc 4,%o4 ! st %o0,dst32addr L77178: ! mov %l7,%i4 L77179: deccc %i4 bneg,a LY37 st %o4,dst32addr ! cmp Rdst32rbit,31 ! ld src32addr,%o3 ! ld dst32addr,%o0 ld [%o5],%o2 inc 4,%o5 srl %o2,RsrcRshift,%o3 or %i3,%o3,%o3 ! st %o3,src32addr ld [%o4],%o1 sll %o2,%i1,%i3 xor %o1,%o3,%o1 st %o1,[%o4] ! ld dst32addr,%o4 ! inc 4,%o4 b L77179 inc 4,%o4 ! st %o4,dst32addr L77190: ld src_comp,%o4 b LY17 tst %o4 LY44: ! [internal] cmp %o7,Rdst32rbit bge,a LY36 cmp %o7,Rdst32rbit ld w,%o1 add Rdst32lbit,1,%o0 add Rsrc32lbit,%o1,%o1 cmp %o1,%o0 ble,a LY36 cmp %o7,Rdst32rbit ld src32addr,%o3 ld [%o3],%i3 dec 4,%o3 st %o3,src32addr ld [%o3],%o2 srl %i3,RsrcRshift,%i3 and %i3,RsrcRmask,%i3 sll %o2,%i1,%i5 or %i3,%i5,%i5 srl %o2,RsrcRshift,%i3 dec 4,%o3 and %i3,RsrcRmask,%i3 b LY21 st %o3,src32addr LY36: ! [internal] bl,a LY35 ld src32addr,%o3 ld src32addr,%o4 ld [%o4],%i3 dec 4,%o4 sll %i3,%i1,%i5 srl %i3,RsrcRshift,%i3 st %o4,src32addr b LY21 and %i3,RsrcRmask,%i3 LY35: ! [internal] ld [%o3],%i5 dec 4,%o3 srl %i5,RsrcRshift,%i5 and %i5,RsrcRmask,%i5 st %o3,src32addr LY21: ! [internal] ld src_comp,%o7 tst %o7 be,a LY34 ld w,%o1 xor %i5,-1,%i5 ld w,%o1 LY34: ! [internal] add Rdst32lbit,%o1,%o1 cmp %o1,32 bg,a LY33 ld dst32addr,%i4 b L77305 ld sdw_mask,%i0 LY33: ! [internal] ! cmp Rop,3 ld [%i4],%i4 ! sll Rop,2,%o0 ! bgu L77212 andn %i4,Rpreloop_mask,%i0 sethi %hi(L2000007),%o1 or %o1,%lo(L2000007),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop b L77212 L2000007: .word L77206 .word L77207 .word L77208 .word L77209 L77206: ! b L77212 mov %i5,%i4 L77207: ! b L77212 and %i4,%i5,%i4 L77208: ! b L77212 or %i4,%i5,%i4 L77209: xor %i4,%i5,%i4 L77212: ld dst32addr,%o4 ! o4 = dst32addr ld src32addr,%o5 ! o5 = src32addr and %i4,Rpreloop_mask,%i4 or %i4,%i0,%i4 st %i4,[%o4] ! ld dst32addr,%o4 cmp Rsrc32lbit,Rdst32lbit dec 4,%o4 bne L77255 st %o4,dst32addr ld src_comp,%o3 tst %o3 bne LY32 ! cmp Rop,3 ! bgu L77297 ! sll Rop,2,%o0 sethi %hi(L2000009),%o1 or %o1,%lo(L2000009),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i5 L2000009: .word L77235 .word L77239 .word L77243 .word L77247 L77215: ! mov %l7,%i5 L77216: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o4 ! ld dst32addr,%o0 ld [%o5],%o1 xor %o1,-1,%o1 st %o1,[%o4] ! ld src32addr,%o1 ! ld dst32addr,%o2 dec 4,%o5 ! st %o1,src32addr b L77216 dec 4,%o4 ! st %o2,dst32addr L77219: ! mov %l7,%i5 L77220: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o3 ! ld dst32addr,%o5 ld [%o5],%o3 ld [%o4],%o7 andn %o7,%o3,%o7 st %o7,[%o4] ! ld src32addr,%o2 ! ld dst32addr,%o3 dec 4,%o4 ! st %o2,src32addr b L77220 dec 4,%o5 ! st %o3,dst32addr L77223: ! mov %l7,%i5 L77224: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o4 ! ld dst32addr,%o7 ld [%o5],%o1 ld [%o4],%o0 orn %o0,%o1,%o0 st %o0,[%o4] ! ld src32addr,%o3 ! ld dst32addr,%o4 dec 4,%o5 ! st %o3,src32addr b L77224 dec 4,%o4 ! st %o4,dst32addr L77227: ! mov %l7,%i5 L77228: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o5 ! ld dst32addr,%o0 ld [%o5],%o0 ld [%o4],%o1 xnor %o1,%o0,%o1 st %o1,[%o4] ! ld src32addr,%o4 ! ld dst32addr,%o5 dec 4,%o4 ! st %o4,src32addr b L77228 dec 4,%o5 ! st %o5,dst32addr LY32: ! [internal] ! bgu L77297 ! sll Rop,2,%o0 ld dst32addr,%o4 ld src32addr,%o5 sethi %hi(L2000008),%o1 or %o1,%lo(L2000008),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i5 L2000008: .word L77215 .word L77219 .word L77223 .word L77227 L77235: ! mov %l7,%i5 L77236: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o0 ! ld dst32addr,%o7 ld [%o5],%o0 st %o0,[%o4] ! ld src32addr,%o2 ! ld dst32addr,%o3 dec 4,%o4 ! dec 4,%o5 ! st %o2,src32addr b L77236 dec 4,%o5 ! st %o3,dst32addr L77239: ! mov %l7,%i5 L77240: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o4 ! ld dst32addr,%o7 ld [%o5],%o2 ld [%o4],%o0 and %o0,%o2,%o0 st %o0,[%o4] ! ld src32addr,%o3 ! ld dst32addr,%o4 dec 4,%o5 ! dec 4,%o4 ! st %o3,src32addr b L77240 dec 4,%o4 ! st %o4,dst32addr L77243: ! mov %l7,%i5 L77244: deccc %i5 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o5 ! ld dst32addr,%o0 ld [%o5],%o2 ld [%o4],%o1 or %o1,%o2,%o1 st %o1,[%o4] ! ld src32addr,%o4 ! ld dst32addr,%o5 dec 4,%o4 ! dec 4,%o5 ! st %o4,src32addr b L77244 dec 4,%o5 ! st %o5,dst32addr L77247: ! sub %l7,1,%i5 ! tst %i5 deccc %i5 bl,a LY29 st %o4,dst32addr ! tst Rdst32lbit LY11: ! [internal] ! ld src32addr,%o7 ! ld dst32addr,%o1 ld [%o5],%o7 ld [%o4],%o2 deccc %i5 xor %o2,%o7,%o2 st %o2,[%o4] ! ld src32addr,%o5 ! ld dst32addr,%o7 dec 4,%o5 ! dec 4,%o4 ! st %o5,src32addr bpos LY11 dec 4,%o4 ! st %o7,dst32addr !L77297: ! tst Rdst32lbit st %o4,dst32addr LY29: ! [internal] st %o5,src32addr tst Rdst32lbit be,a LY31 ld gray,%o2 cmp Rsrc32lbit,Rdst32lbit bl,a L77301 mov %i3,%i5 ld src32addr,%i5 ld [%i5],%i5 sll %i5,%i1,%i5 b L77301 or %i3,%i5,%i5 L77255: ld src_comp,%o0 tst %o0 bne LY30 ! cmp Rop,3 ! bgu L77297 ! sll Rop,2,%o0 ld dst32addr,%o4 ld src32addr,%o5 sethi %hi(L2000011),%o1 or %o1,%lo(L2000011),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i4 L2000011: .word L77277 .word L77281 .word L77285 .word L77289 L77257: ! mov %l7,%i4 L77258: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o3 ! ld dst32addr,%o1 ld [%o5],%o2 dec 4,%o5 sll %o2,%i1,%o3 or %i3,%o3,%o3 xor %o3,-1,%o3 ! st %o3,src32addr st %o3,[%o1] srl %o2,RsrcRshift,%i3 ! ld dst32addr,%o2 b L77258 dec 4,%o4 ! st %o2,dst32addr L77261: ! mov %l7,%i4 L77262: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o5 ! ld dst32addr,%o3 ld [%o5],%o3 dec 4,%o5 sll %o4,%i1,%o7 or %i3,%o7,%o7 srl %o3,RsrcRshift,%i3 ! st %o5,src32addr ld [%o4],%o3 xor %o7,-1,%o7 and %o3,%o7,%o3 st %o3,[%o4] ! ld dst32addr,%o0 b L77262 dec 4,%o4 ! st %o0,dst32addr L77265: ! mov %l7,%i4 L77266: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o3 ! ld dst32addr,%o1 ld [%o5],%o2 dec 4,%o5 sll %o2,%i1,%o3 or %i3,%o4,%o3 srl %o2,RsrcRshift,%i3 ! st %o3,src32addr ld [%o4],%o2 xor %o3,-1,%o3 or %o2,%o3,%o2 st %o2,[%o4] ! ld dst32addr,%o5 b L77266 dec 4,%o4 ! st %o5,dst32addr L77269: ! mov %l7,%i4 L77270: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o1 ! ld dst32addr,%o7 ld [%o5],%o0 dec 4,%o5 sll %o0,%i1,%o2 or %i3,%o2,%o2 srl %o0,RsrcRshift,%i3 ! st %o1,src32addr ld [%o4],%o0 xor %o2,-1,%o2 xor %o0,%o2,%o0 st %o0,[%o4] ! ld dst32addr,%o3 b L77270 dec 4,%o4 ! st %o3,dst32addr LY30: ! [internal] ! bgu L77297 ! sll Rop,2,%o0 ld dst32addr,%o4 ld src32addr,%o5 sethi %hi(L2000010),%o1 or %o1,%lo(L2000010),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop mov %l7,%i4 L2000010: .word L77257 .word L77261 .word L77265 .word L77269 ! b LY29 ! tst Rdst32lbit L77277: ! mov %l7,%i4 L77278: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o7 ! ld dst32addr,%o3 ld [%o5],%o7 dec 4,%o5 sll %o7,%i1,%o0 or %i3,%o0,%o0 ! st %o7,src32addr st %o0,[%o4] ! ld dst32addr,%o4 srl %o7,RsrcRshift,%i3 b L77278 dec 4,%o4 ! st %o4,dst32addr L77281: ! mov %l7,%i4 L77282: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o0 ! ld dst32addr,%o4 ld [%o5],%o7 dec 4,%o5 sll %o7,%i1,%o1 or %i3,%o1,%o1 !st %o0,src32addr ld [%o4],%o2 srl %o7,RsrcRshift,%i3 and %o2,%o1,%o2 st %o2,[%o4] ! ld dst32addr,%o1 b L77282 dec 4,%o4 ! st %o1,dst32addr L77285: ! mov %l7,%i4 L77286: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o4 ! ld dst32addr,%o1 ld [%o5],%o3 dec 4,%o5 sll %o3,%i1,%o1 or %i3,%o1,%o1 ! st %o4,src32addr ld [%o4],%o2 srl %o3,RsrcRshift,%i3 or %o2,%o1,%o2 st %o2,[%o4] ! ld dst32addr,%o1 b L77286 dec 4,%o4 ! st %o5,dst32addr L77289: ! mov %l7,%i4 L77290: deccc %i4 bneg,a LY29 st %o4,dst32addr ! tst Rdst32lbit ! ld src32addr,%o1 ! ld dst32addr,%o5 ld [%o5],%o0 dec 4,%o5 sll %o0,%i1,%o2 or %i3,%o2,%o2 ! st %o1,src32addr ld [%o4],%o7 srl %o0,RsrcRshift,%i3 xor %o7,%o2,%o7 st %o7,[%o4] ! ld dst32addr,%o2 b L77290 dec 4,%o4 ! st %o2,dst32addr L77301: ld src_comp,%o0 tst %o0 LY17: ! [internal] be,a L77305 mov Rpostloop_mask,%i0 xor %i5,-1,%i5 mov Rpostloop_mask,%i0 L77305: ld dst32addr,%i4 ! cmp Rop,3 ld [%i4],%i4 ! sll Rop,2,%o0 andn %i4,%i0,%o4 ! bgu L77312 ! st %o4,[%fp-40] sethi %hi(L2000012),%o1 or %o1,%lo(L2000012),%o1 ! [internal] ld [Rop+%o1],%o0 jmp %o0 ! nop b L77312 L2000012: .word L77306 .word L77307 .word L77308 .word L77309 L77306: ! b L77312 mov %i5,%i4 L77307: ! b L77312 and %i4,%i5,%i4 L77308: ! b L77312 or %i4,%i5,%i4 L77309: xor %i4,%i5,%i4 L77312: ! ld [%fp-40],%o7 ld dst32addr,%o1 and %i4,%i0,%i4 ! or %i4,%o7,%i4 or %i4,%o4,%i4 st %i4,[%o1] ld gray,%o2 LY31: ! [internal] tst %o2 be,a LY28 ld fwd,%o7 ld bb_fast,%o3 tst %o3 be,a LY27 ld dstbpl,%o2 ld dstbpl_rshift_3,%o5 ld OrigDstAddr,%o4 add %o4,%o5,%o4 st %o4,dst32addr b L77320 st %o4,OrigDstAddr LY27: ! [internal] ld OrigDstAddr,%o1 ld w,%l7 add Rdst32lbit,%o2,Rdst32lbit sra Rdst32lbit,5,%o7 and Rdst32lbit,31,Rdst32lbit sll %o7,2,%o7 add %o1,%o7,%o7 add Rdst32lbit,%l7,%l7 sub %l7,1,Rdst32rbit tst Rdst32lbit st %o1,dst32addr st %o7,OrigDstAddr and Rdst32rbit,31,Rdst32rbit be L77318 st %o7,dst32addr mov 32,%o0 sub %o0,Rdst32lbit,%o0 mov -1,%i5 sll %i5,%o0,%i5 b L77319 xor %i5,-1,%i5 L77318: mov -1,%i5 L77319: mov 31,%o7 sub %o7,Rdst32rbit,%o7 mov -1,Rpostloop_mask sll Rpostloop_mask,%o7,Rpostloop_mask mov %i5,Rpreloop_mask and Rpreloop_mask,Rpostloop_mask,%o4 sra %l7,5,%l7 dec %l7 st %o4,sdw_mask L77320: ld curr_gray_line,%o0 ld num_gray,%o2 inc %o0 cmp %o0,%o2 bl L77322 st %o0,curr_gray_line ld srcbase,%o4 ld num_gray_1,%o3 st %g0,curr_gray_line sub %o4,%o3,%o4 b L77047 st %o4,srcbase L77322: ld srcbase,%o5 inc 2,%o5 b L77047 st %o5,srcbase LY28: ! [internal] tst %o7 be,a LY26 ld bb_fast,%o2 ld bb_fast,%o0 tst %o0 be,a LY25 ld dstbpl,%o7 ld dstbpl_rshift_3,%o2 ld OrigDstAddr,%o1 add %o1,%o2,%o1 st %o1,dst32addr b L77331 st %o1,OrigDstAddr LY25: ! [internal] ld OrigDstAddr,%o5 ld w,%l7 add Rdst32lbit,%o7,Rdst32lbit sra Rdst32lbit,5,%o3 and Rdst32lbit,31,Rdst32lbit sll %o3,2,%o3 add %o5,%o3,%o3 add Rdst32lbit,%l7,%l7 sub %l7,1,Rdst32rbit tst Rdst32lbit st %o5,dst32addr st %o3,OrigDstAddr and Rdst32rbit,31,Rdst32rbit be L77329 st %o3,dst32addr mov 32,%o4 sub %o4,Rdst32lbit,%o4 mov -1,%i5 sll %i5,%o4,%i5 b L77330 xor %i5,-1,%i5 L77329: mov -1,%i5 L77330: mov 31,%o3 sub %o3,Rdst32rbit,%o3 mov -1,Rpostloop_mask sll Rpostloop_mask,%o3,Rpostloop_mask mov %i5,Rpreloop_mask and Rpreloop_mask,Rpostloop_mask,%o1 sra %l7,5,%l7 dec %l7 st %o1,sdw_mask L77331: tst %o0 be,a LY24 ld srcbpl,%o3 ld srcbpl_rshift_3,%o7 ld OrigSrcAddr,%o5 add %o5,%o7,%o5 st %o5,src32addr b L77047 st %o5,OrigSrcAddr LY24: ! [internal] ld OrigSrcAddr,%o2 add Rsrc32lbit,%o3,Rsrc32lbit ld w,%o3 sra Rsrc32lbit,5,%o0 and Rsrc32lbit,31,Rsrc32lbit add Rsrc32lbit,%o3,%o3 sub Rsrc32lbit,Rdst32lbit,%i1 sll %o0,2,%o0 add %o2,%o0,%o0 and %i1,31,%i1 dec %o3 and %o3,31,%o3 tst %i1 sub Rdst32lbit,Rsrc32lbit,RsrcRshift st %o2,src32addr st %o0,OrigSrcAddr st %o3,src32rbit and RsrcRshift,31,RsrcRshift be L77335 st %o0,src32addr mov -1,%i5 sll %i5,%i1,%i5 b L77336 xor %i5,-1,%i5 L77335: mov -1,%i5 L77336: b L77047 mov %i5,RsrcRmask LY26: ! [internal] tst %o2 be,a LY23 ld dstbpl,%i5 ld dstbpl_rshift_3,%o4 ld OrigDstAddr,%o3 add %o3,%o4,%o3 st %o3,dst32addr b L77347 st %o3,OrigDstAddr LY23: ! [internal] ld OrigDstAddr,%o0 add Rdst32rbit,%i5,%i5 tst %i5 bge L77342 st %o0,dst32addr mov 31,%l7 sub %l7,%i5,%l7 sra %l7,5,%l7 sll %l7,2,%l7 sub %o0,%l7,%o0 b L77343 st %o0,dst32addr L77342: sra Rdst32lbit,5,Rdst32lbit sll Rdst32lbit,2,Rdst32lbit add %o0,Rdst32lbit,Rdst32lbit st Rdst32lbit,dst32addr L77343: ld w,Rdst32lbit ld dst32addr,%o4 and %i5,31,Rdst32rbit ld w,%i5 sub Rdst32rbit,Rdst32lbit,Rdst32lbit inc Rdst32lbit ! and Rdst32lbit,31,Rdst32lbit andcc Rdst32lbit,31,Rdst32lbit be Ldst0b mov -1,Rpostloop_mask mov 32,%o3 sub %o3,Rdst32lbit,%o3 mov 31,%o5 sub %o5,Rdst32rbit,%o5 sll Rpostloop_mask,%o3,Rpostloop_mask xor Rpostloop_mask,-1,Rpostloop_mask ! from below Ldst0b: sub %i5,Rdst32rbit,%i5 mov -1,Rpreloop_mask sll Rpreloop_mask,%o5,Rpreloop_mask dec %i5 ! xor Rpostloop_mask,-1,Rpostloop_mask and Rpreloop_mask,Rpostloop_mask,%o2 tst %i5 st %o4,OrigDstAddr ble L77345 st %o2,sdw_mask b L77346 sra %i5,5,%i5 L77345: mov 0,%i5 L77346: mov %i5,%l7 L77347: ld bb_fast,%o0 tst %o0 be,a LY22 ld srcbpl,%i1 ld srcbpl_rshift_3,%o2 ld OrigSrcAddr,%o1 add %o1,%o2,%o1 st %o1,src32addr b L77047 st %o1,OrigSrcAddr LY22: ! [internal] ld src32rbit,%o7 ! src32rbit loaded ld OrigSrcAddr,%o5 add %o7,%i1,%i1 tst %i1 bge L77351 st %o5,src32addr mov 31,%i2 sub %i2,%i1,%i2 sra %i2,5,%i2 sll %i2,2,%i2 sub %o5,%i2,%o5 b L77352 st %o5,src32addr L77351: sra %i1,5,%o3 sll %o3,2,%o3 add %o5,%o3,%o3 st %o3,src32addr L77352: ld w,Rsrc32lbit and %i1,31,%i1 sub %i1,Rsrc32lbit,Rsrc32lbit inc Rsrc32lbit and Rsrc32lbit,31,Rsrc32lbit st %i1,src32rbit sub Rsrc32lbit,Rdst32lbit,%i1 and %i1,31,%i1 tst %i1 sub Rdst32lbit,Rsrc32lbit,RsrcRshift be L77354 and RsrcRshift,31,RsrcRshift mov -1,%i5 sll %i5,%i1,%i5 b L77355 xor %i5,-1,%i5 L77354: mov 0,%i5 L77355: ld src32addr,%o5 mov %i5,RsrcRmask st %o5,OrigSrcAddr L77047: ld num_lines_remaining,%i5 ld num_lines_remaining,%o3 tst %i5 dec %o3 bg LY8 st %o3,num_lines_remaining LY1: ! [internal] ret restore %g0,0,%o0 .seg "data" ! [internal]