Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- Dim CY As Boolean
- Sub xror(ByRef v)
- CY = v And 1
- If v < 255 Then v = (v * 128) Mod 255
- End Sub
- Sub xrol(ByRef v)
- CY = v And 128
- If v < 255 Then v = (v * 2) Mod 255
- End Sub
- Sub xmsk(ByRef v, ByVal s)
- v = s And 255
- End Sub
- Sub xand(ByRef v, ByVal s)
- v = v And s
- End Sub
- Sub xmov(ByRef v, ByVal s)
- v = s
- End Sub
- Sub xadd(ByRef v, ByVal s)
- v = v + s
- CY = v > 255
- v = v And 255
- End Sub
- Sub xadc(ByRef v, ByVal s)
- v = v + s - CY
- CY = v > 255
- v = v And 255
- End Sub
- Sub xsub(ByRef v, ByVal s)
- v = v - s
- CY = v And 256
- v = v And 255
- End Sub
- Sub test(ByVal c, ByVal d)
- Dim cd
- 'Debug.Print c, d
- cd = c * d
- Dim a, b, e, f
- xror d
- xmsk a, CY
- xand a, c
- xmov b, a
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 254
- xadd a, e
- xadc b, f
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 252
- xadd a, e
- xadc b, f
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 248
- xadd a, e
- xadc b, f
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 240
- xadd a, e
- xadc b, f
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 224
- xadd a, e
- xadc b, f
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 192
- xadd a, e
- xadc b, f
- xrol c
- xror d
- xmsk e, CY
- xand e, c
- xmov f, e
- xand e, 128
- xadd a, e
- xadc b, f
- xsub b, a
- 'b = -b And 255
- Debug.Assert b * 256 + a = cd
- End Sub
- Sub Main()
- Dim i, j
- For i = 0 To 255
- For j = 0 To 255
- test i, j
- Next
- Next
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement