mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
"Asm.fif" include
 | 
						|
<{ -1 INT ZERO ROT
 | 
						|
   100 INT REPEAT:<{
 | 
						|
     ZERO WHILE:<{
 | 
						|
       3 3 BLKPUSH
 | 
						|
       // -ROT OVER ADD ROT OVER ADD -ROT OVER ADD ROT
 | 
						|
       s2 s1 PUXC ADD TUCK ADD s2 s1 PUXC ADD SWAP
 | 
						|
       DUP ISPOS 
 | 
						|
     }>DO<{
 | 
						|
       s4 POP s4 POP s4 POP INC
 | 
						|
     }>
 | 
						|
     3 BLKDROP
 | 
						|
     s3 XCHG0 NEGATE s2 XCHG0 NEGATE SWAP NEGATE s2 XCHG0
 | 
						|
   }>
 | 
						|
   3 BLKDROP
 | 
						|
}>s dup csr.
 | 
						|
// 61 swap runvmcode .s
 | 
						|
drop
 | 
						|
 | 
						|
<{ -1 INT ZERO ROT  ONE ZERO s0 s1 PUSH2
 | 
						|
  <{ 3 6 BLKPUSH  // a b c m11 m12 m21 m22 a' b' c'
 | 
						|
     s2 s1 PUXC ADD TUCK ADD s2 s1 PUXC ADD SWAP
 | 
						|
     DUP ISPOS IF:<{
 | 
						|
       s7 POP s7 POP s7 POP   // a' b' c' m11 m12 m21 m22
 | 
						|
       s2 PUSH ADD SWAP s3 PUSH ADD SWAP
 | 
						|
     }>ELSE<{
 | 
						|
       3 BLKDROP // a b c m11 m12 m21 m22
 | 
						|
       2SWAP
 | 
						|
       3 4 BLKSWAP  // m m m m a b c
 | 
						|
       NEGATE SWAP NEGATE // .. a -c -b
 | 
						|
       ROT NEGATE   // -c -b -a
 | 
						|
       4 3 BLKSWAP
 | 
						|
     }>
 | 
						|
     DUP 250 QFITS ISNAN
 | 
						|
   }>UNTIL
 | 
						|
   2DROP s3 POP s3 POP DROP 
 | 
						|
}>s dup csr.
 | 
						|
1 { 10 * } 75 times constant One
 | 
						|
{ One swap */r } : frac*One
 | 
						|
61 over runvmcode drop frac*One swap
 | 
						|
2 over runvmcode drop frac*One swap
 | 
						|
3 over runvmcode drop frac*One swap
 | 
						|
5 over runvmcode drop frac*One swap
 | 
						|
6 over runvmcode drop frac*One swap
 | 
						|
7 over runvmcode drop frac*One swap
 | 
						|
8 over runvmcode drop frac*One swap
 | 
						|
.s
 |