@r ysf |= 4000
r v10 = src
if (v10 > 0F) then r v10 = 10
r v11 = 0
:loop
if (v10 == 0) then goto :eof
r v12 sro(v11)
r v13 = 0
if (v12 < 10) then goto :smallv12
r v13 = (v12 clr 0F) - 10
:smallv12
if (dif & 800 == 0) then goto :64kib
if ( (desctype srs) & 4000 == 0) then goto :64kib
:4gib
r v14 = FFFF_FFFF
if ( (v12 + count - 1) > FFFF_FFEF ) then goto :4giblargev12
r v14 = ((v12 + count - 1) clr 0F) + 1F
:4giblargev12
goto :dump

:64kib
r v14 = FFFF
if ( (v12 + count - 1) > FFEF ) then goto :64kiblargev12
r v14 = ((v12 + count - 1) clr 0F) + 1F
:64kiblargev12

:dump
r sro(v11) .
d srs:v13 v14
r v10 -= 1
r v11 += 1
goto :loop

