# R3:a R4:p R5:q R6:m $R3 = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009ACCD40DDDC897187DD7A8F694F8E58704C816BD248FABA64A5905E7647B632606AD133FB00CF65B601808E1A54D348D2A9666898BA05FE8B0C4189128003A39 $R4 = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2F728300E3CC57475F7DFE1753B8C6D028DAAAC4276BC5BAF0841C4D1211CD53030A3E9D2BA21C47BD12712FDF9C6CC14E0806F72947B8E37E6E100BA675F7D $R5 = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE583875FDBEC07ECF4043F5A3412C2B1C4B501E7CA40C277E430B0DB03B75DCA4B162FA269DA111A7DD2AC8F55B02EC7FE0B296F34AD4B7E7546747CCB4E7BF $R6 = 25FEDAB6BDB6A78D8534FA9C86E44B3E30DBF6B26E81DAC23E6A74412AC7FC091C3DD4C9B9F59BA586A0B33B4BEAFD5E9BD432B116454614F01911AB97A4C7716BD85147DB85783B81F9552273B594509A2BB75767CF77546AC4DDCA730821ED526D38F7AFF3D1828780FC51D631E6DF7440A5EDBDEFA3FE24FDD202F92B5391 # R11:y1 R12:y2 # R15:d $R15= 1587946A338230FE22A2A58AD721684B9C7EC1320041F705F526E49CDB607ED4F85CD9B19717EDBBBDC1F6B2F0FF62D5B0581C243809E2F9AFEC3302A3A9B053C8F6723BA1AB061B07189833A8F1A4E06F95A58BF20D1C936AC19E38A1D72BF7DA13ADB177FA2C82BBB935BAF8EC9F129ABCA1BEDAA4359DE523166C93919341 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