# R3:a R4:p R5:q R6:m $R3 = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085583981D646731490A700BBA30E20CFD918489A8E27C7BD3C9D1ACA8174AB2BF982E0E57EB00361AC7083D575736CB121A0793C8D18F42557893711AF7B4785 $R4 = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C50BD02C6CDD93F6345097A166AB41924BA6090F8B124DEF7E696F337EA5BFB2662C9FE63C8AB70ADED37CFA5A82327AFA28FBC34D10E6C27D09E5BEAF4E2DC7 $R5 = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7AAA27661A92339125D98ECA3652B7881EAB1F71E67A04CD2F819CE2C671809C76F4578624CF5B0FC6E49584612FF9089EB1FB0DE9363008A73FA77BCE1F5EF $R6 = 97F71E949A96FEAF3498AFB0899F571D0CCF52EB3342D57983765D18B1684D5AA3D4C72054E0F0923AD464E93B51014D5A161C6D77A1AA5A74A8C5C0D1A4E537459F030264910383B424A5E9CD4DC75A50815B77F82B097137D7BD9BFCD3D266D2D9619AD7D3290E2AC105ED5D127F4AFA64939B070C114D3718ADCC44F0DB66 # R11:y1 R12:y2 # R15:d $R15= 122525D0BFC72C916F1C4B531629C81036F28DFF67B6E190F67C0770D08B8503DF4DEA2F15D7E061C40390ACF3F298CF9FFCD48BDBFEEE5CD04388481C7F3CA1B6C276D45F8E1E12A87E5E930D90143CC5E87FE5BBBE84EAFC41671311FC8A416F6982C54661498544F78ABD6335F5B24EB17658EE1076E59E2BF0F5211AA655 START: #S3 X=15 SEL(X);B=SEL2;X=4 SEL(X);A=SEL1 ADDL=A;INV;D=SEL2 A=SEL1;J=512 DIV3: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BJ(DIV3) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 R2=A #S1 X=6 SEL(X);B=SEL2;X=4 SEL(X);D=SEL2 A=SEL1;J=512 DIV1: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BJ(DIV1) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 I<=256 SHIFT1: ADDL=DIVA;A=SEL1;BI(SHIFT1) ADDL=DIVA;A=SEL1 R1=A #S5 X=4 SEL(X);A=SEL1 R0=A J=512 CALL(RSA512) NOP R11=A #S4 X=15 SEL(X);B=SEL2;X=5 SEL(X);A=SEL1 ADDL=A;INV;D=SEL2 A=SEL1;J=512 DIV4: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BJ(DIV4) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 R2=A #S2 X=6 SEL(X);B=SEL2;X=5 SEL(X);D=SEL2 A=SEL1;J=512 DIV2: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BJ(DIV2) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 I<=256 SHIFT2: ADDL=DIVA;A=SEL1;BI(SHIFT2) ADDL=DIVA;A=SEL1 R1=A #S6 X=5 SEL(X);A=SEL1 R0=A J=512 CALL(RSA512) NOP R12=A #S7 X=11 SEL(X);B=SEL2 ADDL=A;ADDR=B;INV;SUB;A=SEL1 BCF(PLUS) NOP #MINOS ADDR=B;A=SEL1;X=12 SEL(X);B=SEL2 ADDL=A;ADDR=B;INV;SUB;B=SEL2 X=5 SEL(X);D=SEL2 A=SEL1;J=512 DIV5: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BJ(DIV5) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 ADDL=A;B=SEL2;X=5 SEL(X);A=SEL1 ADDL=A;ADDR=B;INV;SUB;A=SEL1 PLUS: B=SEL2;X=3 J=512;SEL(X);C=SEL2 BMUL3: ADDL=A;ADDR=B;MUL;B=SEL1;C=SEL1;BJ(BMUL3) ADDL=A;ADDR=B;MUL;B=SEL1;C=SEL1 X=5 SEL(X);D=SEL2 A=SEL1;J=1024 DIV6: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BJ(DIV6) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 X=4 SEL(X);C=SEL2;X=11 SEL(X);B=SEL2 J=512 BMUL4: ADDL=A;ADDR=B;MUL;B=SEL1;C=SEL1;BJ(BMUL4) ADDL=A;ADDR=B;MUL;B=SEL1;C=SEL1 ADDR=C;A=SEL1 R14=A END(0);@R14 ################################### # RSA512 # A = R1 ^ R2 mod R0 ################################### RSA512: X=0 SEL(X);C=SEL2;D=SEL2;X=1 SEL(X);B=SEL2 A=SEL1;C=SEL2;I<=512 XDIV: ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3;BI(XDIV) ADDL=DIVA;ADDR=D;CMP;SUB;INV;A=SEL3;B=SEL3;C=SEL3 D=SEL1;SUB;A=SEL1;X=0 SEL (X);B=SEL2;X=2 SEL (X);C=SEL2;MRES I<=128;XCOUNT XLBL1: XCOUNT;MMUL;BI(XLBL1) XCOUNT;MMUL MMUL;MRES;MUL;D=SEL1;A=SEL1 CMP;SUB;INV;ADDL=A;ADDR=B;A=SEL1;BC(XLBL2) D=SEL1;ADDR=D;A=SEL1 MMUL;MRES;A=SEL1 CMP;SUB;INV;ADDL=A;ADDR=B;A=SEL1 XLBL2: BJ(XLBL1);MRES C=SEL1;I<=128;XCOUNT RET NOP