clear

e       = 03

nd      = new_rsa_genstd( 0400, $e )
nn      = mid( $nd, 0, 128 )
dd      = mid( $nd, 128 )

all     = new_rsa_gencrt( 0400, $e )
len     = 0064
n       = mid( $all, 0, int( $len * 2 ) )
d       = mid( $all, int( $len * 2 ), int( $len * 2 ) )
p       = mid( $all, int( $len * 4 ), $len )
q       = mid( $all, int( $len * 5 ), $len )
dp      = mid( $all, int( $len * 6 ), $len )
dq      = mid( $all, int( $len * 7 ), $len )
qinv    = mid( $all, int( $len * 8 ), $len )

xxx     = dup( 127, ff )
xxx     = 00 $xxx

sign    = new_rsa_crt_sign( 0400, $p, $q, $dp, $dq, $qinv, $xxx )
tt      = rsa_pub_encode( 1024, $e, $n, $sign )
if $tt != $xxx
    
?
    
pause
endif

sign1   = new_rsa_std_sign( 0400, $n, $d, $xxx )
if $sign != $sign1
    
?
    
pause
endif
tt      = rsa_pub_encode( 1024, $e, $n, $sign1 )
if $tt != $xxx
    
?
    
pause
endif

tt      = new_rsa_verify( 0400, $e, $n, $xxx, $sign1 )
if $tt != 00
    
?
    
pause
endif

a       = new_rsa_crt_decrypt( 0400, $p, $q, $dp, $dq, $qinv, $xxx )
b       = rsa_pub_encode( 1024, $e, $n, $a )
if $b != $xxx
    
?
    
pause
endif

a1      = new_rsa_std_decrypt( 0400, $n, $d, $xxx )
if $a != $a1
    
?
    
pause
endif

b1      = rsa_pub_encode( 1024, $e, $n, $a1 )
if $b1 != $xxx
    
?
    
pause
endif

/////////////////////////////////////////////////////////


e       = prime_gen( hex( 512 / 8 )  )

nd      = new_rsa_genstd( 0400, $e )
nn      = mid( $nd, 0, 128 )
dd      = mid( $nd, 128 )

all     = new_rsa_gencrt( 0400, $e )
len     = 0064
n       = mid( $all, 0, int( $len * 2 ) )
d       = mid( $all, int( $len * 2 ), int( $len * 2 ) )
p       = mid( $all, int( $len * 4 ), $len )
q       = mid( $all, int( $len * 5 ), $len )
dp      = mid( $all, int( $len * 6 ), $len )
dq      = mid( $all, int( $len * 7 ), $len )
qinv    = mid( $all, int( $len * 8 ), $len )

x       = dummy( clear_fifo() )
xx      = dummy( rsa_calculate_other_by_pqe( 0400, $e, $p, $q ) )
n1      = dummy( read_fifo() )
d1      = dummy( read_fifo() )
dp1     = dummy( read_fifo() )
dq1     = dummy( read_fifo() )
qinv1   = dummy( read_fifo() )

if $n != $n1
    
?
    
pause
endif

x       = new_rsa_calculate_other_by_pqe( 0400, $e, $p, $q )
n2      = mid( $x, 0, int( $len * 2 ) )
d2      = mid( $x, int( $len * 2 ), int( $len * 2 ) )
dp2     = mid( $x, int( $len * 4 ), $len )
dq2     = mid( $x, int( $len * 5 ), $len )
qinv2   = mid( $x, int( $len * 6 ), $len )
if $n != $n2
    
?
    
pause
endif


xxx     = dup( 127, ff )
xxx     = 00 $xxx

sign    = new_rsa_crt_sign( 0400, $p, $q, $dp, $dq, $qinv, $xxx )
tt      = rsa_pub_encode( 1024, $e, $n, $sign )
if $tt != $xxx
    
?
    
pause
endif

sign1   = new_rsa_std_sign( 0400, $n, $d, $xxx )
if $sign != $sign1
    
?
    
pause
endif
tt      = rsa_pub_encode( 1024, $e, $n, $sign1 )
if $tt != $xxx
    
?
    
pause
endif

tt      = new_rsa_verify( 0400, $e, $n, $xxx, $sign1 )
if $tt != 00
    
?
    
pause
endif

a       = new_rsa_crt_decrypt( 0400, $p, $q, $dp, $dq, $qinv, $xxx )
b       = rsa_pub_encode( 1024, $e, $n, $a )
if $b != $xxx
    
?
    
pause
endif

a1      = new_rsa_std_decrypt( 0400, $n, $d, $xxx )
if $a != $a1
    
?
    
pause
endif

b1      = rsa_pub_encode( 1024, $e, $n, $a1 )
if $b1 != $xxx
    
?
    
pause
endif

//
e = 03
//
nd = C0766214825D12E169DA0D36DE3F11F5C8AB9B27A7D960E47D57DEB38E1CA85DF991C4DA048D8BA105C5F3472A97DA52C4469D2F06FE5618177F385D67D7F863178FA8F753347F08A85785FACE376CE1AE798A8EB889DDF59791FF3D9F86BFC03007298702B93472BE79D4B42331D8B2BA8155EBCD28BAC7D589A3F084973D0F804EEC0DAC3E0C9646915E24942A0BF93072676FC53B95EDA8E53F225EBDC593FBB6833C030907C0AE83F784C70FE6E1D82F1374AF54396564FF7AE8EFE55040E7A14D3507EB5E72B3E97BB9765728B63136EDD50A10307784D50A50E3B284A850C2716950010B4F5240C88982E1886202440935AB8C593C21A0BE0AED128E0B
//
nn = C0766214825D12E169DA0D36DE3F11F5C8AB9B27A7D960E47D57DEB38E1CA85DF991C4DA048D8BA105C5F3472A97DA52C4469D2F06FE5618177F385D67D7F863178FA8F753347F08A85785FACE376CE1AE798A8EB889DDF59791FF3D9F86BFC03007298702B93472BE79D4B42331D8B2BA8155EBCD28BAC7D589A3F084973D0F
//
dd = 804EEC0DAC3E0C9646915E24942A0BF93072676FC53B95EDA8E53F225EBDC593FBB6833C030907C0AE83F784C70FE6E1D82F1374AF54396564FF7AE8EFE55040E7A14D3507EB5E72B3E97BB9765728B63136EDD50A10307784D50A50E3B284A850C2716950010B4F5240C88982E1886202440935AB8C593C21A0BE0AED128E0B
//
all = D28CC78BE875F3456A8F4F48BB3A6E27EC793E7D83C3E22915E74A26CCE3AB548F3AB30F00FC6B5F4E094A242B9F0AD31F126303F031B966C48B271110F4BB6183DA2403E9F3171D122A39583B4860245B41DB9983C2A334499F9403FD4FFE1B3D205EFF1DDE468B8F2FEEA72FCC8AECB9E21372FCB5D9FC8B9884E0683DACDD8C5DDA5D45A3F7839C5F8A307CD19EC54850D453AD2D4170B944DC19DDED1CE30A27220A00A84794DEB0DC181D14B1E214B6ECAD4ACBD0EF2DB21A0B60A327952239B36EAC571AA952D70A4BC71A88136384FF6588083344742A194065F861D69417BBA390CA74E9567389CD37C8076398346864E3F22460AE2BF5CB69FA56ABE1BC1AFD78CF5B2E105C74D22AE2776C3978224509C2420D448040B3142941103D55492E62DF2D512E0F73182F230F42150F020263583CE823473AC541F2175DEEC77BE06EA113F1058B351465BE1C9B0C823A3C2DF4144056E02D7050322A4921A77C5B61CF69DC5F732CDB2CFD7095408474D943726683630F596A07541381967D6753A5DF921EB592F88C1C96FA48265016D8B12C2C08D855807762C62B6028E3861EEC94C8E0C95FA2101F6CB4D6B8B4AC019790289AC22F7C83814C0F939F2FA7EAF46B62A0AE5CCE0D992968675DAC26D2C94D62D58F401E4AE0217186166FA83CEBDF9BE83FA21DE77353A06380584DE62CF6EF02420A3B9C04E2B7ABB768B4EB5FD426955553B8AFD780AF52469489E62FA4FE931BA0B44058A6737D03AEBC49A59AC74F97954234E3CB25CC4724F318B4C74DB2A200E1173CEF8017
//
len = 0064
//
n = D28CC78BE875F3456A8F4F48BB3A6E27EC793E7D83C3E22915E74A26CCE3AB548F3AB30F00FC6B5F4E094A242B9F0AD31F126303F031B966C48B271110F4BB6183DA2403E9F3171D122A39583B4860245B41DB9983C2A334499F9403FD4FFE1B3D205EFF1DDE468B8F2FEEA72FCC8AECB9E21372FCB5D9FC8B9884E0683DACDD
//
d = 8C5DDA5D45A3F7839C5F8A307CD19EC54850D453AD2D4170B944DC19DDED1CE30A27220A00A84794DEB0DC181D14B1E214B6ECAD4ACBD0EF2DB21A0B60A327952239B36EAC571AA952D70A4BC71A88136384FF6588083344742A194065F861D69417BBA390CA74E9567389CD37C8076398346864E3F22460AE2BF5CB69FA56AB
//
p = E1BC1AFD78CF5B2E105C74D22AE2776C3978224509C2420D448040B3142941103D55492E62DF2D512E0F73182F230F42150F020263583CE823473AC541F2175D
//
q = EEC77BE06EA113F1058B351465BE1C9B0C823A3C2DF4144056E02D7050322A4921A77C5B61CF69DC5F732CDB2CFD7095408474D943726683630F596A07541381
//
dp = 967D6753A5DF921EB592F88C1C96FA48265016D8B12C2C08D855807762C62B6028E3861EEC94C8E0C95FA2101F6CB4D6B8B4AC019790289AC22F7C83814C0F93
//
dq = 9F2FA7EAF46B62A0AE5CCE0D992968675DAC26D2C94D62D58F401E4AE0217186166FA83CEBDF9BE83FA21DE77353A06380584DE62CF6EF02420A3B9C04E2B7AB
//
qinv = B768B4EB5FD426955553B8AFD780AF52469489E62FA4FE931BA0B44058A6737D03AEBC49A59AC74F97954234E3CB25CC4724F318B4C74DB2A200E1173CEF8017
//
xxx = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
xxx = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
sign = C95835AC1D0DCA3692E760FAB989A8A5E68B201AE16B504F066621C9FF6BB53B57171404B5CA26E8696BF2F5D06A01B624FBAD0625A6BFD47A1ACB65483DB6D858C357961D3D85D2CD3888D5CA388C3A10D4D3978F41177617DF07FEDDE654D6AAAFA5368873A4D82BD8BEACC56DFF05A804D74E260366C1E199CFADEEC22275
//
tt = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
sign1 = C95835AC1D0DCA3692E760FAB989A8A5E68B201AE16B504F066621C9FF6BB53B57171404B5CA26E8696BF2F5D06A01B624FBAD0625A6BFD47A1ACB65483DB6D858C357961D3D85D2CD3888D5CA388C3A10D4D3978F41177617DF07FEDDE654D6AAAFA5368873A4D82BD8BEACC56DFF05A804D74E260366C1E199CFADEEC22275
//
tt = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
tt = 00
//
a = C95835AC1D0DCA3692E760FAB989A8A5E68B201AE16B504F066621C9FF6BB53B57171404B5CA26E8696BF2F5D06A01B624FBAD0625A6BFD47A1ACB65483DB6D858C357961D3D85D2CD3888D5CA388C3A10D4D3978F41177617DF07FEDDE654D6AAAFA5368873A4D82BD8BEACC56DFF05A804D74E260366C1E199CFADEEC22275
//
b = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
a1 = C95835AC1D0DCA3692E760FAB989A8A5E68B201AE16B504F066621C9FF6BB53B57171404B5CA26E8696BF2F5D06A01B624FBAD0625A6BFD47A1ACB65483DB6D858C357961D3D85D2CD3888D5CA388C3A10D4D3978F41177617DF07FEDDE654D6AAAFA5368873A4D82BD8BEACC56DFF05A804D74E260366C1E199CFADEEC22275
//
b1 = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
e = CD0E3942181519622B0619480182200A5A512EE55F7E104E799E29BD719365C316AB75462EF475F9160F31692AF073391749365E2398707E41095FC346AD4539
//
nd = E458535B7E357C981345FD906C4058C148DF3760AD58EC2FD4173D7FACBC690F867B7A007618002C60FE37CD125D19FFAA0CACE2608B375B4E05AE61D15745E0ED369A215025D2655B68B3F211BC70EC9FDACF93CE9AC7E785DCDE9A2561FA448873EAE7E215E027B7F0DA10D37258E621543D228ABC583C99AE62CF5E2DA19D46C990EDF11F302A727059C5EC326C40C1C3248B112CBF172CCF5138CB76B331F2F838EEEE46FFADF097D1C57CE51E2BD2014C29471BCEA6FC12F8B22B09EFD28AEE6624253A38C610DD743D517E630286FE938B78E5190CE07E7047FD298624F285305DF367A3FA2773B8D53F016A9B57B981A206EF2C92AFCA97CC554AE029
//
nn = E458535B7E357C981345FD906C4058C148DF3760AD58EC2FD4173D7FACBC690F867B7A007618002C60FE37CD125D19FFAA0CACE2608B375B4E05AE61D15745E0ED369A215025D2655B68B3F211BC70EC9FDACF93CE9AC7E785DCDE9A2561FA448873EAE7E215E027B7F0DA10D37258E621543D228ABC583C99AE62CF5E2DA19D
//
dd = 46C990EDF11F302A727059C5EC326C40C1C3248B112CBF172CCF5138CB76B331F2F838EEEE46FFADF097D1C57CE51E2BD2014C29471BCEA6FC12F8B22B09EFD28AEE6624253A38C610DD743D517E630286FE938B78E5190CE07E7047FD298624F285305DF367A3FA2773B8D53F016A9B57B981A206EF2C92AFCA97CC554AE029
//
all = B24D41238E18BD90F6FF52049331F3EEE64CFA23CDEC730754C9D2E88A8B65BD3BB945AE5ABE36556B088C03E4D4F00D72CAA95D28309B35C03170456FEA93EB72DB922350BE08CF0B09E0848C2142BC99A30C9F55585F010929943C89A100B15C6D1DC1DC799DF8A73AEAD7A101A1D2267770775B45AF5E261AABDEADB4F83F15E7FFB6DB4D17554E67318DCCD5460BB67A056FDD4DD6F0B8E3CBDC849EDB5B2C2A0A2CC18908C6ED9F96FCB02512662CF2CC5480D175E91281364DC15CE542D6B3794704C4D0F2B4766711B4FD6B94A02E3F999E39542BC5B82F52496948E5C1A5E621EB9C1C266AB020E49E7D4AC60EBFCC53D737F69900EE4D9D5BA5A139D2187D8E7344166F6E3C6BEE3BF6392914B23EEA70E2287E5F21553C42C86C5D60BF69F53096232E061A651463D11C91312937693742755A3D947DAB73E41179D94266D6100B0B135D2219C97CD80105123D161F4DDB491C0EFB4C4C470879AD18B468FA1CDF586D35790FA472D50F255A220072640841B3609A655622226177B7FC7247948E4872E922B27906B85E7ADAF1C8F5884B12F86CF91BF3F9BB33804A5643CE3130B64EBBF79365C87514A5546604267C056B72A0FE92A4DB6DA779208775B2B12672F0C57FC947C72751DBED1542DC80AE6DE5AF44BEB2B840CBAA5AD152A9A0C67225DF393A21D8665B148D22EF9C2DD32CD900BFFDA9886995D183B3A0146BD658DF4D044DA65E5940CD4FC77214CC6DF8A99B193845EC045C186073189D11D0C3BD49CE358397E444E3150C16EAB252683FF9BDB9FE33D5E7C0
//
len = 0064
//
n = B24D41238E18BD90F6FF52049331F3EEE64CFA23CDEC730754C9D2E88A8B65BD3BB945AE5ABE36556B088C03E4D4F00D72CAA95D28309B35C03170456FEA93EB72DB922350BE08CF0B09E0848C2142BC99A30C9F55585F010929943C89A100B15C6D1DC1DC799DF8A73AEAD7A101A1D2267770775B45AF5E261AABDEADB4F83F
//
d = 15E7FFB6DB4D17554E67318DCCD5460BB67A056FDD4DD6F0B8E3CBDC849EDB5B2C2A0A2CC18908C6ED9F96FCB02512662CF2CC5480D175E91281364DC15CE542D6B3794704C4D0F2B4766711B4FD6B94A02E3F999E39542BC5B82F52496948E5C1A5E621EB9C1C266AB020E49E7D4AC60EBFCC53D737F69900EE4D9D5BA5A139
//
p = D2187D8E7344166F6E3C6BEE3BF6392914B23EEA70E2287E5F21553C42C86C5D60BF69F53096232E061A651463D11C91312937693742755A3D947DAB73E41179
//
q = D94266D6100B0B135D2219C97CD80105123D161F4DDB491C0EFB4C4C470879AD18B468FA1CDF586D35790FA472D50F255A220072640841B3609A655622226177
//
dp = B7FC7247948E4872E922B27906B85E7ADAF1C8F5884B12F86CF91BF3F9BB33804A5643CE3130B64EBBF79365C87514A5546604267C056B72A0FE92A4DB6DA779
//
dq = 208775B2B12672F0C57FC947C72751DBED1542DC80AE6DE5AF44BEB2B840CBAA5AD152A9A0C67225DF393A21D8665B148D22EF9C2DD32CD900BFFDA9886995D1
//
qinv = 83B3A0146BD658DF4D044DA65E5940CD4FC77214CC6DF8A99B193845EC045C186073189D11D0C3BD49CE358397E444E3150C16EAB252683FF9BDB9FE33D5E7C0
//
x =  CLEAR_FIFO ( ) = 
//--
clear_fifo clear all fifo data
//

//
xx =  RSA_CALCULATE_OTHER_BY_PQE ( 0400 , CD0E3942181519622B0619480182200A5A512EE55F7E104E799E29BD719365C316AB75462EF475F9160F31692AF073391749365E2398707E41095FC346AD4539 , D2187D8E7344166F6E3C6BEE3BF6392914B23EEA70E2287E5F21553C42C86C5D60BF69F53096232E061A651463D11C91312937693742755A3D947DAB73E41179 , D94266D6100B0B135D2219C97CD80105123D161F4DDB491C0EFB4C4C470879AD18B468FA1CDF586D35790FA472D50F255A220072640841B3609A655622226177 ) = 
//--
rsa calculate N, D, DP, DQ, U by P, Q, E
//--
 1024 bit length
//

//
n1 =  READ_FIFO ( ) = 
//--
read_fifo get first data from fifo
//--
  output = B2 4D 41 23 8E 18 BD 90 F6 FF 52 04 93 31 F3 EE E6 4C FA 23 CD EC 73 07 54 C9 D2 E8 8A 8B 65 BD 3B B9 45 AE 5A BE 36 55 6B 08 8C 03 E4 D4 F0 0D 72 CA A9 5D 28 30 9B 35 C0 31 70 45 6F EA 93 EB 72 DB 92 23 50 BE 08 CF 0B 09 E0 84 8C 21 42 BC 99 A3 0C 9F 55 58 5F 01 09 29 94 3C 89 A1 00 B1 5C 6D 1D C1 DC 79 9D F8 A7 3A EA D7 A1 01 A1 D2 26 77 70 77 5B 45 AF 5E 26 1A AB DE AD B4 F8 3F 
//
B24D41238E18BD90F6FF52049331F3EEE64CFA23CDEC730754C9D2E88A8B65BD3BB945AE5ABE36556B088C03E4D4F00D72CAA95D28309B35C03170456FEA93EB72DB922350BE08CF0B09E0848C2142BC99A30C9F55585F010929943C89A100B15C6D1DC1DC799DF8A73AEAD7A101A1D2267770775B45AF5E261AABDEADB4F83F
//
d1 =  READ_FIFO ( ) = 
//--
read_fifo get first data from fifo
//--
  output = 15 E7 FF B6 DB 4D 17 55 4E 67 31 8D CC D5 46 0B B6 7A 05 6F DD 4D D6 F0 B8 E3 CB DC 84 9E DB 5B 2C 2A 0A 2C C1 89 08 C6 ED 9F 96 FC B0 25 12 66 2C F2 CC 54 80 D1 75 E9 12 81 36 4D C1 5C E5 42 D6 B3 79 47 04 C4 D0 F2 B4 76 67 11 B4 FD 6B 94 A0 2E 3F 99 9E 39 54 2B C5 B8 2F 52 49 69 48 E5 C1 A5 E6 21 EB 9C 1C 26 6A B0 20 E4 9E 7D 4A C6 0E BF CC 53 D7 37 F6 99 00 EE 4D 9D 5B A5 A1 39 
//
15E7FFB6DB4D17554E67318DCCD5460BB67A056FDD4DD6F0B8E3CBDC849EDB5B2C2A0A2CC18908C6ED9F96FCB02512662CF2CC5480D175E91281364DC15CE542D6B3794704C4D0F2B4766711B4FD6B94A02E3F999E39542BC5B82F52496948E5C1A5E621EB9C1C266AB020E49E7D4AC60EBFCC53D737F69900EE4D9D5BA5A139
//
dp1 =  READ_FIFO ( ) = 
//--
read_fifo get first data from fifo
//--
  output = B7 FC 72 47 94 8E 48 72 E9 22 B2 79 06 B8 5E 7A DA F1 C8 F5 88 4B 12 F8 6C F9 1B F3 F9 BB 33 80 4A 56 43 CE 31 30 B6 4E BB F7 93 65 C8 75 14 A5 54 66 04 26 7C 05 6B 72 A0 FE 92 A4 DB 6D A7 79 
//
B7FC7247948E4872E922B27906B85E7ADAF1C8F5884B12F86CF91BF3F9BB33804A5643CE3130B64EBBF79365C87514A5546604267C056B72A0FE92A4DB6DA779
//
dq1 =  READ_FIFO ( ) = 
//--
read_fifo get first data from fifo
//--
  output = 20 87 75 B2 B1 26 72 F0 C5 7F C9 47 C7 27 51 DB ED 15 42 DC 80 AE 6D E5 AF 44 BE B2 B8 40 CB AA 5A D1 52 A9 A0 C6 72 25 DF 39 3A 21 D8 66 5B 14 8D 22 EF 9C 2D D3 2C D9 00 BF FD A9 88 69 95 D1 
//
208775B2B12672F0C57FC947C72751DBED1542DC80AE6DE5AF44BEB2B840CBAA5AD152A9A0C67225DF393A21D8665B148D22EF9C2DD32CD900BFFDA9886995D1
//
qinv1 =  READ_FIFO ( ) = 
//--
read_fifo get first data from fifo
//--
  output = 83 B3 A0 14 6B D6 58 DF 4D 04 4D A6 5E 59 40 CD 4F C7 72 14 CC 6D F8 A9 9B 19 38 45 EC 04 5C 18 60 73 18 9D 11 D0 C3 BD 49 CE 35 83 97 E4 44 E3 15 0C 16 EA B2 52 68 3F F9 BD B9 FE 33 D5 E7 C0 
//
83B3A0146BD658DF4D044DA65E5940CD4FC77214CC6DF8A99B193845EC045C186073189D11D0C3BD49CE358397E444E3150C16EAB252683FF9BDB9FE33D5E7C0
//
x = B24D41238E18BD90F6FF52049331F3EEE64CFA23CDEC730754C9D2E88A8B65BD3BB945AE5ABE36556B088C03E4D4F00D72CAA95D28309B35C03170456FEA93EB72DB922350BE08CF0B09E0848C2142BC99A30C9F55585F010929943C89A100B15C6D1DC1DC799DF8A73AEAD7A101A1D2267770775B45AF5E261AABDEADB4F83F15E7FFB6DB4D17554E67318DCCD5460BB67A056FDD4DD6F0B8E3CBDC849EDB5B2C2A0A2CC18908C6ED9F96FCB02512662CF2CC5480D175E91281364DC15CE542D6B3794704C4D0F2B4766711B4FD6B94A02E3F999E39542BC5B82F52496948E5C1A5E621EB9C1C266AB020E49E7D4AC60EBFCC53D737F69900EE4D9D5BA5A139B7FC7247948E4872E922B27906B85E7ADAF1C8F5884B12F86CF91BF3F9BB33804A5643CE3130B64EBBF79365C87514A5546604267C056B72A0FE92A4DB6DA779208775B2B12672F0C57FC947C72751DBED1542DC80AE6DE5AF44BEB2B840CBAA5AD152A9A0C67225DF393A21D8665B148D22EF9C2DD32CD900BFFDA9886995D183B3A0146BD658DF4D044DA65E5940CD4FC77214CC6DF8A99B193845EC045C186073189D11D0C3BD49CE358397E444E3150C16EAB252683FF9BDB9FE33D5E7C0
//
n2 = B24D41238E18BD90F6FF52049331F3EEE64CFA23CDEC730754C9D2E88A8B65BD3BB945AE5ABE36556B088C03E4D4F00D72CAA95D28309B35C03170456FEA93EB72DB922350BE08CF0B09E0848C2142BC99A30C9F55585F010929943C89A100B15C6D1DC1DC799DF8A73AEAD7A101A1D2267770775B45AF5E261AABDEADB4F83F
//
d2 = 15E7FFB6DB4D17554E67318DCCD5460BB67A056FDD4DD6F0B8E3CBDC849EDB5B2C2A0A2CC18908C6ED9F96FCB02512662CF2CC5480D175E91281364DC15CE542D6B3794704C4D0F2B4766711B4FD6B94A02E3F999E39542BC5B82F52496948E5C1A5E621EB9C1C266AB020E49E7D4AC60EBFCC53D737F69900EE4D9D5BA5A139
//
dp2 = B7FC7247948E4872E922B27906B85E7ADAF1C8F5884B12F86CF91BF3F9BB33804A5643CE3130B64EBBF79365C87514A5546604267C056B72A0FE92A4DB6DA779
//
dq2 = 208775B2B12672F0C57FC947C72751DBED1542DC80AE6DE5AF44BEB2B840CBAA5AD152A9A0C67225DF393A21D8665B148D22EF9C2DD32CD900BFFDA9886995D1
//
qinv2 = 83B3A0146BD658DF4D044DA65E5940CD4FC77214CC6DF8A99B193845EC045C186073189D11D0C3BD49CE358397E444E3150C16EAB252683FF9BDB9FE33D5E7C0
//
xxx = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
xxx = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
sign = 528C7BF3DBBB16FBDA53314D70D148E3C9BDBF891BDA711E0DD9655EE02D80BA0AD78BF51965BC3EFE0E5473190A5C04F13A75AB55E64714643536891F3AFC67CE576D6245FAF45CE55353BB3F0F4DE21E8BBA5A0CCD4CC6965583554377FD4F0321DF5BD54E078AC96CE95AD7B294B104C3B89D764D5365C3B4FEF47ABABBB8
//
tt = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
sign1 = 528C7BF3DBBB16FBDA53314D70D148E3C9BDBF891BDA711E0DD9655EE02D80BA0AD78BF51965BC3EFE0E5473190A5C04F13A75AB55E64714643536891F3AFC67CE576D6245FAF45CE55353BB3F0F4DE21E8BBA5A0CCD4CC6965583554377FD4F0321DF5BD54E078AC96CE95AD7B294B104C3B89D764D5365C3B4FEF47ABABBB8
//
tt = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
tt = 00
//
a = 528C7BF3DBBB16FBDA53314D70D148E3C9BDBF891BDA711E0DD9655EE02D80BA0AD78BF51965BC3EFE0E5473190A5C04F13A75AB55E64714643536891F3AFC67CE576D6245FAF45CE55353BB3F0F4DE21E8BBA5A0CCD4CC6965583554377FD4F0321DF5BD54E078AC96CE95AD7B294B104C3B89D764D5365C3B4FEF47ABABBB8
//
b = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//
a1 = 528C7BF3DBBB16FBDA53314D70D148E3C9BDBF891BDA711E0DD9655EE02D80BA0AD78BF51965BC3EFE0E5473190A5C04F13A75AB55E64714643536891F3AFC67CE576D6245FAF45CE55353BB3F0F4DE21E8BBA5A0CCD4CC6965583554377FD4F0321DF5BD54E078AC96CE95AD7B294B104C3B89D764D5365C3B4FEF47ABABBB8
//
b1 = 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF