diff --git a/factor.asm b/factor.asm new file mode 100644 index 0000000..4595159 --- /dev/null +++ b/factor.asm @@ -0,0 +1,8301 @@ +// +// version +// + .vers 8 + +// +// execution framework +// +__start: + call _main + call _exit +__stop: + jmp __stop + +// +// Integer readInteger() +// +_readInteger: + asf 0 + rdint + popr + rsf + ret + +// +// void writeInteger(Integer) +// +_writeInteger: + asf 0 + pushl -3 + wrint + rsf + ret + +// +// Character readCharacter() +// +_readCharacter: + asf 0 + rdchr + popr + rsf + ret + +// +// void writeCharacter(Character) +// +_writeCharacter: + asf 0 + pushl -3 + wrchr + rsf + ret + +// +// Integer char2int(Character) +// +_char2int: + asf 0 + pushl -3 + popr + rsf + ret + +// +// Character int2char(Integer) +// +_int2char: + asf 0 + pushl -3 + popr + rsf + ret + +// +// void exit() +// +_exit: + asf 0 + halt + rsf + ret + +// +// void writeString(String) +// +_writeString: + asf 1 + pushc 0 + popl 0 + jmp _writeString_L2 +_writeString_L1: + pushl -3 + pushl 0 + getfa + call _writeCharacter + drop 1 + pushl 0 + pushc 1 + add + popl 0 +_writeString_L2: + pushl 0 + pushl -3 + getsz + lt + brt _writeString_L1 + rsf + ret + +// +// record { Integer value; List next; } addToList(Integer, record { Integer value; List next; }) +// +_addToList: + asf 1 + new 2 + popl 0 + pushl 0 + pushl -4 + putf 0 + pushl 0 + pushl -3 + putf 1 + pushl 0 + popr + jmp __0 +__0: + rsf + ret + +// +// record { Integer value; List next; } sortList(record { Integer value; List next; }) +// +_sortList: + asf 3 + pushn + popl 0 + jmp __3 +__2: + pushl -3 + popl 1 + pushl -3 + getf 1 + popl -3 + pushl 0 + pushn + refeq + dup + brt __7 + drop 1 + pushl 1 + getf 0 + pushl 0 + getf 0 + lt +__7: + brf __5 + pushl 1 + pushl 0 + putf 1 + pushl 1 + popl 0 + jmp __6 +__5: + pushl 0 + popl 2 + jmp __9 +__8: + pushl 2 + getf 1 + popl 2 +__9: + pushl 2 + getf 1 + pushn + refne + dup + brf __11 + drop 1 + pushl 1 + getf 0 + pushl 2 + getf 1 + getf 0 + ge +__11: + brt __8 +__10: + pushl 1 + pushl 2 + getf 1 + putf 1 + pushl 2 + pushl 1 + putf 1 +__6: +__3: + pushl -3 + pushn + refne + brt __2 +__4: + pushl 0 + popr + jmp __1 +__1: + rsf + ret + +// +// void showList(record { Integer value; List next; }) +// +_showList: + asf 0 + pushl -3 + pushn + refeq + brf __13 + pushc 1 + newa + dup + pushc 0 + pushc 49 + putfa + call _writeString + drop 1 + jmp __14 +__13: + jmp __16 +__15: + pushl -3 + getf 0 + call _writeInteger + drop 1 + pushl -3 + getf 1 + popl -3 + pushl -3 + pushn + refeq + brf __18 + jmp __17 +__18: + pushc 3 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 42 + putfa + dup + pushc 2 + pushc 32 + putfa + call _writeString + drop 1 +__16: + pushc 1 + brt __15 +__17: +__14: + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__12: + rsf + ret + +// +// Integer evalList(record { Integer value; List next; }) +// +_evalList: + asf 1 + pushc 1 + popl 0 + jmp __21 +__20: + pushl 0 + pushl -3 + getf 0 + mul + popl 0 + pushl -3 + getf 1 + popl -3 +__21: + pushl -3 + pushn + refne + brt __20 +__22: + pushl 0 + popr + jmp __19 +__19: + rsf + ret + +// +// record { Integer value; List next; } fuseLists(record { Integer value; List next; }, record { Integer value; List next; }) +// +_fuseLists: + asf 1 + jmp __25 +__24: + pushl -4 + popl 0 + pushl -4 + getf 1 + popl -4 + pushl 0 + pushl -3 + putf 1 + pushl 0 + popl -3 +__25: + pushl -4 + pushn + refne + brt __24 +__26: + pushl -3 + popr + jmp __23 +__23: + rsf + ret + +// +// Integer computeTarget(Integer) +// +_computeTarget: + asf 2 + pushc 1 + popl 0 + pushc 0 + popl 1 + jmp __29 +__28: + pushl 0 + pushc 10 + mul + popl 0 + pushl 1 + pushc 1 + add + popl 1 +__29: + pushl 1 + pushl -3 + lt + brt __28 +__30: + pushl 0 + pushc 1 + add + popl 0 + pushl 0 + popr + jmp __27 +__27: + rsf + ret + +// +// void testComputeTarget() +// +_testComputeTarget: + asf 0 + pushc 16 + newa + dup + pushc 0 + pushc 99 + putfa + dup + pushc 1 + pushc 111 + putfa + dup + pushc 2 + pushc 109 + putfa + dup + pushc 3 + pushc 112 + putfa + dup + pushc 4 + pushc 117 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 101 + putfa + dup + pushc 7 + pushc 84 + putfa + dup + pushc 8 + pushc 97 + putfa + dup + pushc 9 + pushc 114 + putfa + dup + pushc 10 + pushc 103 + putfa + dup + pushc 11 + pushc 101 + putfa + dup + pushc 12 + pushc 116 + putfa + dup + pushc 13 + pushc 40 + putfa + dup + pushc 14 + pushc 41 + putfa + dup + pushc 15 + pushc 10 + putfa + call _writeString + drop 1 + pushc 16 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 45 + putfa + dup + pushc 13 + pushc 45 + putfa + dup + pushc 14 + pushc 45 + putfa + dup + pushc 15 + pushc 10 + putfa + call _writeString + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 114 + putfa + dup + pushc 3 + pushc 103 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 40 + putfa + dup + pushc 7 + pushc 49 + putfa + dup + pushc 8 + pushc 41 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 61 + putfa + dup + pushc 11 + pushc 32 + putfa + call _writeString + drop 1 + pushc 1 + call _computeTarget + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 114 + putfa + dup + pushc 3 + pushc 103 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 40 + putfa + dup + pushc 7 + pushc 50 + putfa + dup + pushc 8 + pushc 41 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 61 + putfa + dup + pushc 11 + pushc 32 + putfa + call _writeString + drop 1 + pushc 2 + call _computeTarget + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 114 + putfa + dup + pushc 3 + pushc 103 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 40 + putfa + dup + pushc 7 + pushc 51 + putfa + dup + pushc 8 + pushc 41 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 61 + putfa + dup + pushc 11 + pushc 32 + putfa + call _writeString + drop 1 + pushc 3 + call _computeTarget + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 114 + putfa + dup + pushc 3 + pushc 103 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 40 + putfa + dup + pushc 7 + pushc 52 + putfa + dup + pushc 8 + pushc 41 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 61 + putfa + dup + pushc 11 + pushc 32 + putfa + call _writeString + drop 1 + pushc 4 + call _computeTarget + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__31: + rsf + ret + +// +// void showSmallPrimes() +// +_showSmallPrimes: + asf 2 + pushc 0 + popl 0 + pushc 0 + popl 1 + jmp __34 +__33: + pushg 1 + pushl 0 + getfa + call _writeInteger + drop 1 + pushc 2 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 32 + putfa + call _writeString + drop 1 + pushl 1 + pushc 1 + add + popl 1 + pushl 1 + pushc 8 + eq + brf __36 + pushc 0 + popl 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__36: + pushl 0 + pushc 1 + add + popl 0 +__34: + pushl 0 + pushg 2 + lt + brt __33 +__35: + pushl 1 + pushc 0 + ne + brf __37 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__37: +__32: + rsf + ret + +// +// void enterSmallPrime(Integer) +// +_enterSmallPrime: + asf 3 + pushg 1 + getsz + pushg 2 + eq + brf __39 + pushc 2 + pushg 2 + mul + popl 0 + pushl 0 + newa + popl 1 + pushc 0 + popl 2 + jmp __41 +__40: + pushl 1 + pushl 2 + pushg 1 + pushl 2 + getfa + putfa + pushl 2 + pushc 1 + add + popl 2 +__41: + pushl 2 + pushg 2 + lt + brt __40 +__42: + pushl 1 + popg 1 +__39: + pushg 1 + pushg 2 + pushl -3 + putfa + pushg 2 + pushc 1 + add + popg 2 +__38: + rsf + ret + +// +// Boolean isPrime(Integer) +// +_isPrime: + asf 1 + pushc 3 + popl 0 + jmp __45 +__44: + pushl -3 + pushl 0 + mod + pushc 0 + eq + brf __47 + pushc 0 + popr + jmp __43 +__47: + pushl 0 + pushc 2 + add + popl 0 +__45: + pushl 0 + pushl 0 + mul + pushl -3 + le + brt __44 +__46: + pushc 1 + popr + jmp __43 +__43: + rsf + ret + +// +// void calcSmallPrimes(Integer) +// +_calcSmallPrimes: + asf 1 + pushl -3 + popg 0 + pushc 256 + newa + popg 1 + pushc 0 + popg 2 + pushc 2 + call _enterSmallPrime + drop 1 + pushc 3 + call _enterSmallPrime + drop 1 + pushc 5 + popl 0 + jmp __50 +__49: + pushl 0 + pushg 0 + gt + brf __52 + jmp __51 +__52: + pushl 0 + call _isPrime + drop 1 + pushr + brf __53 + pushl 0 + call _enterSmallPrime + drop 1 +__53: + pushl 0 + pushc 2 + add + popl 0 + pushl 0 + pushg 0 + gt + brf __54 + jmp __51 +__54: + pushl 0 + call _isPrime + drop 1 + pushr + brf __55 + pushl 0 + call _enterSmallPrime + drop 1 +__55: + pushl 0 + pushc 4 + add + popl 0 +__50: + pushc 1 + brt __49 +__51: +__48: + rsf + ret + +// +// void testCalcSmallPrimes() +// +_testCalcSmallPrimes: + asf 0 + pushc 18 + newa + dup + pushc 0 + pushc 99 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 108 + putfa + dup + pushc 3 + pushc 99 + putfa + dup + pushc 4 + pushc 83 + putfa + dup + pushc 5 + pushc 109 + putfa + dup + pushc 6 + pushc 97 + putfa + dup + pushc 7 + pushc 108 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 80 + putfa + dup + pushc 10 + pushc 114 + putfa + dup + pushc 11 + pushc 105 + putfa + dup + pushc 12 + pushc 109 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 115 + putfa + dup + pushc 15 + pushc 40 + putfa + dup + pushc 16 + pushc 41 + putfa + dup + pushc 17 + pushc 10 + putfa + call _writeString + drop 1 + pushc 18 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 45 + putfa + dup + pushc 13 + pushc 45 + putfa + dup + pushc 14 + pushc 45 + putfa + dup + pushc 15 + pushc 45 + putfa + dup + pushc 16 + pushc 45 + putfa + dup + pushc 17 + pushc 10 + putfa + call _writeString + drop 1 + pushc 34 + newa + dup + pushc 0 + pushc 112 + putfa + dup + pushc 1 + pushc 114 + putfa + dup + pushc 2 + pushc 105 + putfa + dup + pushc 3 + pushc 109 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 115 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 108 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 115 + putfa + dup + pushc 10 + pushc 115 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 116 + putfa + dup + pushc 13 + pushc 104 + putfa + dup + pushc 14 + pushc 97 + putfa + dup + pushc 15 + pushc 110 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 111 + putfa + dup + pushc 18 + pushc 114 + putfa + dup + pushc 19 + pushc 32 + putfa + dup + pushc 20 + pushc 101 + putfa + dup + pushc 21 + pushc 113 + putfa + dup + pushc 22 + pushc 117 + putfa + dup + pushc 23 + pushc 97 + putfa + dup + pushc 24 + pushc 108 + putfa + dup + pushc 25 + pushc 32 + putfa + dup + pushc 26 + pushc 116 + putfa + dup + pushc 27 + pushc 111 + putfa + dup + pushc 28 + pushc 32 + putfa + dup + pushc 29 + pushc 49 + putfa + dup + pushc 30 + pushc 48 + putfa + dup + pushc 31 + pushc 48 + putfa + dup + pushc 32 + pushc 58 + putfa + dup + pushc 33 + pushc 10 + putfa + call _writeString + drop 1 + pushc 100 + call _calcSmallPrimes + drop 1 + call _showSmallPrimes + pushc 44 + newa + dup + pushc 0 + pushc 110 + putfa + dup + pushc 1 + pushc 117 + putfa + dup + pushc 2 + pushc 109 + putfa + dup + pushc 3 + pushc 98 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 111 + putfa + dup + pushc 8 + pushc 102 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 114 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 109 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 115 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 108 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 115 + putfa + dup + pushc 20 + pushc 115 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 116 + putfa + dup + pushc 23 + pushc 104 + putfa + dup + pushc 24 + pushc 97 + putfa + dup + pushc 25 + pushc 110 + putfa + dup + pushc 26 + pushc 32 + putfa + dup + pushc 27 + pushc 111 + putfa + dup + pushc 28 + pushc 114 + putfa + dup + pushc 29 + pushc 32 + putfa + dup + pushc 30 + pushc 101 + putfa + dup + pushc 31 + pushc 113 + putfa + dup + pushc 32 + pushc 117 + putfa + dup + pushc 33 + pushc 97 + putfa + dup + pushc 34 + pushc 108 + putfa + dup + pushc 35 + pushc 32 + putfa + dup + pushc 36 + pushc 116 + putfa + dup + pushc 37 + pushc 111 + putfa + dup + pushc 38 + pushc 32 + putfa + dup + pushc 39 + pushc 49 + putfa + dup + pushc 40 + pushc 48 + putfa + dup + pushc 41 + pushc 48 + putfa + dup + pushc 42 + pushc 58 + putfa + dup + pushc 43 + pushc 32 + putfa + call _writeString + drop 1 + pushg 2 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1000 + call _calcSmallPrimes + drop 1 + pushc 45 + newa + dup + pushc 0 + pushc 110 + putfa + dup + pushc 1 + pushc 117 + putfa + dup + pushc 2 + pushc 109 + putfa + dup + pushc 3 + pushc 98 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 111 + putfa + dup + pushc 8 + pushc 102 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 114 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 109 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 115 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 108 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 115 + putfa + dup + pushc 20 + pushc 115 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 116 + putfa + dup + pushc 23 + pushc 104 + putfa + dup + pushc 24 + pushc 97 + putfa + dup + pushc 25 + pushc 110 + putfa + dup + pushc 26 + pushc 32 + putfa + dup + pushc 27 + pushc 111 + putfa + dup + pushc 28 + pushc 114 + putfa + dup + pushc 29 + pushc 32 + putfa + dup + pushc 30 + pushc 101 + putfa + dup + pushc 31 + pushc 113 + putfa + dup + pushc 32 + pushc 117 + putfa + dup + pushc 33 + pushc 97 + putfa + dup + pushc 34 + pushc 108 + putfa + dup + pushc 35 + pushc 32 + putfa + dup + pushc 36 + pushc 116 + putfa + dup + pushc 37 + pushc 111 + putfa + dup + pushc 38 + pushc 32 + putfa + dup + pushc 39 + pushc 49 + putfa + dup + pushc 40 + pushc 48 + putfa + dup + pushc 41 + pushc 48 + putfa + dup + pushc 42 + pushc 48 + putfa + dup + pushc 43 + pushc 58 + putfa + dup + pushc 44 + pushc 32 + putfa + call _writeString + drop 1 + pushg 2 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 10000 + call _calcSmallPrimes + drop 1 + pushc 46 + newa + dup + pushc 0 + pushc 110 + putfa + dup + pushc 1 + pushc 117 + putfa + dup + pushc 2 + pushc 109 + putfa + dup + pushc 3 + pushc 98 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 111 + putfa + dup + pushc 8 + pushc 102 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 114 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 109 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 115 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 108 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 115 + putfa + dup + pushc 20 + pushc 115 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 116 + putfa + dup + pushc 23 + pushc 104 + putfa + dup + pushc 24 + pushc 97 + putfa + dup + pushc 25 + pushc 110 + putfa + dup + pushc 26 + pushc 32 + putfa + dup + pushc 27 + pushc 111 + putfa + dup + pushc 28 + pushc 114 + putfa + dup + pushc 29 + pushc 32 + putfa + dup + pushc 30 + pushc 101 + putfa + dup + pushc 31 + pushc 113 + putfa + dup + pushc 32 + pushc 117 + putfa + dup + pushc 33 + pushc 97 + putfa + dup + pushc 34 + pushc 108 + putfa + dup + pushc 35 + pushc 32 + putfa + dup + pushc 36 + pushc 116 + putfa + dup + pushc 37 + pushc 111 + putfa + dup + pushc 38 + pushc 32 + putfa + dup + pushc 39 + pushc 49 + putfa + dup + pushc 40 + pushc 48 + putfa + dup + pushc 41 + pushc 48 + putfa + dup + pushc 42 + pushc 48 + putfa + dup + pushc 43 + pushc 48 + putfa + dup + pushc 44 + pushc 58 + putfa + dup + pushc 45 + pushc 32 + putfa + call _writeString + drop 1 + pushg 2 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 100000 + call _calcSmallPrimes + drop 1 + pushc 47 + newa + dup + pushc 0 + pushc 110 + putfa + dup + pushc 1 + pushc 117 + putfa + dup + pushc 2 + pushc 109 + putfa + dup + pushc 3 + pushc 98 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 111 + putfa + dup + pushc 8 + pushc 102 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 114 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 109 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 115 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 108 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 115 + putfa + dup + pushc 20 + pushc 115 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 116 + putfa + dup + pushc 23 + pushc 104 + putfa + dup + pushc 24 + pushc 97 + putfa + dup + pushc 25 + pushc 110 + putfa + dup + pushc 26 + pushc 32 + putfa + dup + pushc 27 + pushc 111 + putfa + dup + pushc 28 + pushc 114 + putfa + dup + pushc 29 + pushc 32 + putfa + dup + pushc 30 + pushc 101 + putfa + dup + pushc 31 + pushc 113 + putfa + dup + pushc 32 + pushc 117 + putfa + dup + pushc 33 + pushc 97 + putfa + dup + pushc 34 + pushc 108 + putfa + dup + pushc 35 + pushc 32 + putfa + dup + pushc 36 + pushc 116 + putfa + dup + pushc 37 + pushc 111 + putfa + dup + pushc 38 + pushc 32 + putfa + dup + pushc 39 + pushc 49 + putfa + dup + pushc 40 + pushc 48 + putfa + dup + pushc 41 + pushc 48 + putfa + dup + pushc 42 + pushc 48 + putfa + dup + pushc 43 + pushc 48 + putfa + dup + pushc 44 + pushc 48 + putfa + dup + pushc 45 + pushc 58 + putfa + dup + pushc 46 + pushc 32 + putfa + call _writeString + drop 1 + pushg 2 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__56: + rsf + ret + +// +// Integer smallPrimeFactor(Integer) +// +_smallPrimeFactor: + asf 1 + pushc 0 + popl 0 + jmp __59 +__58: + pushl -3 + pushg 1 + pushl 0 + getfa + mod + pushc 0 + eq + brf __61 + pushg 1 + pushl 0 + getfa + popr + jmp __57 +__61: + pushl 0 + pushc 1 + add + popl 0 +__59: + pushl 0 + pushg 2 + lt + brt __58 +__60: + pushc 0 + popr + jmp __57 +__57: + rsf + ret + +// +// void testSmallPrimeFactor() +// +_testSmallPrimeFactor: + asf 0 + pushc 10000 + call _calcSmallPrimes + drop 1 + pushc 19 + newa + dup + pushc 0 + pushc 115 + putfa + dup + pushc 1 + pushc 109 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 108 + putfa + dup + pushc 5 + pushc 80 + putfa + dup + pushc 6 + pushc 114 + putfa + dup + pushc 7 + pushc 105 + putfa + dup + pushc 8 + pushc 109 + putfa + dup + pushc 9 + pushc 101 + putfa + dup + pushc 10 + pushc 70 + putfa + dup + pushc 11 + pushc 97 + putfa + dup + pushc 12 + pushc 99 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 111 + putfa + dup + pushc 15 + pushc 114 + putfa + dup + pushc 16 + pushc 40 + putfa + dup + pushc 17 + pushc 41 + putfa + dup + pushc 18 + pushc 10 + putfa + call _writeString + drop 1 + pushc 19 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 45 + putfa + dup + pushc 13 + pushc 45 + putfa + dup + pushc 14 + pushc 45 + putfa + dup + pushc 15 + pushc 45 + putfa + dup + pushc 16 + pushc 45 + putfa + dup + pushc 17 + pushc 45 + putfa + dup + pushc 18 + pushc 10 + putfa + call _writeString + drop 1 + pushc 25 + newa + dup + pushc 0 + pushc 115 + putfa + dup + pushc 1 + pushc 109 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 108 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 112 + putfa + dup + pushc 7 + pushc 114 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 109 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 102 + putfa + dup + pushc 13 + pushc 97 + putfa + dup + pushc 14 + pushc 99 + putfa + dup + pushc 15 + pushc 116 + putfa + dup + pushc 16 + pushc 111 + putfa + dup + pushc 17 + pushc 114 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 111 + putfa + dup + pushc 20 + pushc 102 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 50 + putfa + dup + pushc 23 + pushc 58 + putfa + dup + pushc 24 + pushc 32 + putfa + call _writeString + drop 1 + pushc 2 + call _smallPrimeFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 27 + newa + dup + pushc 0 + pushc 115 + putfa + dup + pushc 1 + pushc 109 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 108 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 112 + putfa + dup + pushc 7 + pushc 114 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 109 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 102 + putfa + dup + pushc 13 + pushc 97 + putfa + dup + pushc 14 + pushc 99 + putfa + dup + pushc 15 + pushc 116 + putfa + dup + pushc 16 + pushc 111 + putfa + dup + pushc 17 + pushc 114 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 111 + putfa + dup + pushc 20 + pushc 102 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 50 + putfa + dup + pushc 23 + pushc 50 + putfa + dup + pushc 24 + pushc 50 + putfa + dup + pushc 25 + pushc 58 + putfa + dup + pushc 26 + pushc 32 + putfa + call _writeString + drop 1 + pushc 222 + call _smallPrimeFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 32 + newa + dup + pushc 0 + pushc 115 + putfa + dup + pushc 1 + pushc 109 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 108 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 112 + putfa + dup + pushc 7 + pushc 114 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 109 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 102 + putfa + dup + pushc 13 + pushc 97 + putfa + dup + pushc 14 + pushc 99 + putfa + dup + pushc 15 + pushc 116 + putfa + dup + pushc 16 + pushc 111 + putfa + dup + pushc 17 + pushc 114 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 111 + putfa + dup + pushc 20 + pushc 102 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 49 + putfa + dup + pushc 23 + pushc 55 + putfa + dup + pushc 24 + pushc 42 + putfa + dup + pushc 25 + pushc 49 + putfa + dup + pushc 26 + pushc 57 + putfa + dup + pushc 27 + pushc 42 + putfa + dup + pushc 28 + pushc 50 + putfa + dup + pushc 29 + pushc 51 + putfa + dup + pushc 30 + pushc 58 + putfa + dup + pushc 31 + pushc 32 + putfa + call _writeString + drop 1 + pushc 17 + pushc 19 + mul + pushc 23 + mul + call _smallPrimeFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 28 + newa + dup + pushc 0 + pushc 115 + putfa + dup + pushc 1 + pushc 109 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 108 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 112 + putfa + dup + pushc 7 + pushc 114 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 109 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 102 + putfa + dup + pushc 13 + pushc 97 + putfa + dup + pushc 14 + pushc 99 + putfa + dup + pushc 15 + pushc 116 + putfa + dup + pushc 16 + pushc 111 + putfa + dup + pushc 17 + pushc 114 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 111 + putfa + dup + pushc 20 + pushc 102 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 55 + putfa + dup + pushc 23 + pushc 57 + putfa + dup + pushc 24 + pushc 49 + putfa + dup + pushc 25 + pushc 57 + putfa + dup + pushc 26 + pushc 58 + putfa + dup + pushc 27 + pushc 32 + putfa + call _writeString + drop 1 + pushc 7919 + call _smallPrimeFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 33 + newa + dup + pushc 0 + pushc 115 + putfa + dup + pushc 1 + pushc 109 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 108 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 112 + putfa + dup + pushc 7 + pushc 114 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 109 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 102 + putfa + dup + pushc 13 + pushc 97 + putfa + dup + pushc 14 + pushc 99 + putfa + dup + pushc 15 + pushc 116 + putfa + dup + pushc 16 + pushc 111 + putfa + dup + pushc 17 + pushc 114 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 111 + putfa + dup + pushc 20 + pushc 102 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 57 + putfa + dup + pushc 23 + pushc 56 + putfa + dup + pushc 24 + pushc 55 + putfa + dup + pushc 25 + pushc 54 + putfa + dup + pushc 26 + pushc 53 + putfa + dup + pushc 27 + pushc 52 + putfa + dup + pushc 28 + pushc 51 + putfa + dup + pushc 29 + pushc 50 + putfa + dup + pushc 30 + pushc 51 + putfa + dup + pushc 31 + pushc 58 + putfa + dup + pushc 32 + pushc 32 + putfa + call _writeString + drop 1 + pushc 987654 + pushc 1000 + mul + pushc 323 + add + call _smallPrimeFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__62: + rsf + ret + +// +// Integer powerMod(Integer, Integer, Integer) +// +_powerMod: + asf 1 + pushc 1 + popl 0 + jmp __65 +__64: + pushl -4 + pushc 2 + mod + pushc 0 + eq + brf __67 + pushl -5 + pushl -5 + mul + pushl -3 + mod + popl -5 + pushl -4 + pushc 2 + div + popl -4 + jmp __68 +__67: + pushl 0 + pushl -5 + mul + pushl -3 + mod + popl 0 + pushl -4 + pushc 1 + sub + popl -4 +__68: +__65: + pushl -4 + pushc 0 + ne + brt __64 +__66: + pushl 0 + popr + jmp __63 +__63: + rsf + ret + +// +// void testPowerMod() +// +_testPowerMod: + asf 0 + pushc 11 + newa + dup + pushc 0 + pushc 112 + putfa + dup + pushc 1 + pushc 111 + putfa + dup + pushc 2 + pushc 119 + putfa + dup + pushc 3 + pushc 101 + putfa + dup + pushc 4 + pushc 114 + putfa + dup + pushc 5 + pushc 77 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 100 + putfa + dup + pushc 8 + pushc 40 + putfa + dup + pushc 9 + pushc 41 + putfa + dup + pushc 10 + pushc 10 + putfa + call _writeString + drop 1 + pushc 11 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 10 + putfa + call _writeString + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 50 + putfa + dup + pushc 1 + pushc 94 + putfa + dup + pushc 2 + pushc 49 + putfa + dup + pushc 3 + pushc 54 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 109 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 100 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 55 + putfa + dup + pushc 10 + pushc 58 + putfa + dup + pushc 11 + pushc 32 + putfa + call _writeString + drop 1 + pushc 2 + pushc 16 + pushc 7 + call _powerMod + drop 3 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 13 + newa + dup + pushc 0 + pushc 51 + putfa + dup + pushc 1 + pushc 94 + putfa + dup + pushc 2 + pushc 49 + putfa + dup + pushc 3 + pushc 48 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 109 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 100 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 49 + putfa + dup + pushc 10 + pushc 57 + putfa + dup + pushc 11 + pushc 58 + putfa + dup + pushc 12 + pushc 32 + putfa + call _writeString + drop 1 + pushc 3 + pushc 10 + pushc 19 + call _powerMod + drop 3 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 29 + newa + dup + pushc 0 + pushc 49 + putfa + dup + pushc 1 + pushc 50 + putfa + dup + pushc 2 + pushc 51 + putfa + dup + pushc 3 + pushc 94 + putfa + dup + pushc 4 + pushc 57 + putfa + dup + pushc 5 + pushc 56 + putfa + dup + pushc 6 + pushc 55 + putfa + dup + pushc 7 + pushc 54 + putfa + dup + pushc 8 + pushc 53 + putfa + dup + pushc 9 + pushc 52 + putfa + dup + pushc 10 + pushc 51 + putfa + dup + pushc 11 + pushc 50 + putfa + dup + pushc 12 + pushc 51 + putfa + dup + pushc 13 + pushc 32 + putfa + dup + pushc 14 + pushc 109 + putfa + dup + pushc 15 + pushc 111 + putfa + dup + pushc 16 + pushc 100 + putfa + dup + pushc 17 + pushc 32 + putfa + dup + pushc 18 + pushc 57 + putfa + dup + pushc 19 + pushc 56 + putfa + dup + pushc 20 + pushc 55 + putfa + dup + pushc 21 + pushc 54 + putfa + dup + pushc 22 + pushc 53 + putfa + dup + pushc 23 + pushc 52 + putfa + dup + pushc 24 + pushc 51 + putfa + dup + pushc 25 + pushc 50 + putfa + dup + pushc 26 + pushc 51 + putfa + dup + pushc 27 + pushc 58 + putfa + dup + pushc 28 + pushc 32 + putfa + call _writeString + drop 1 + pushc 123 + pushc 987654 + pushc 1000 + mul + pushc 323 + add + pushc 987654 + pushc 1000 + mul + pushc 323 + add + call _powerMod + drop 3 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__69: + rsf + ret + +// +// Integer GCD(Integer, Integer) +// +_GCD: + asf 1 + pushl -4 + pushc 0 + lt + brf __71 + pushc 0 + pushl -4 + sub + popl -4 +__71: + pushl -3 + pushc 0 + lt + brf __72 + pushc 0 + pushl -3 + sub + popl -3 +__72: + jmp __74 +__73: + pushl -4 + pushl -3 + mod + popl 0 + pushl -3 + popl -4 + pushl 0 + popl -3 +__74: + pushl -3 + pushc 0 + ne + brt __73 +__75: + pushl -4 + popr + jmp __70 +__70: + rsf + ret + +// +// void testGCD() +// +_testGCD: + asf 0 + pushc 6 + newa + dup + pushc 0 + pushc 71 + putfa + dup + pushc 1 + pushc 67 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 40 + putfa + dup + pushc 4 + pushc 41 + putfa + dup + pushc 5 + pushc 10 + putfa + call _writeString + drop 1 + pushc 6 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 10 + putfa + call _writeString + drop 1 + pushc 32 + newa + dup + pushc 0 + pushc 71 + putfa + dup + pushc 1 + pushc 67 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 40 + putfa + dup + pushc 4 + pushc 51 + putfa + dup + pushc 5 + pushc 42 + putfa + dup + pushc 6 + pushc 53 + putfa + dup + pushc 7 + pushc 42 + putfa + dup + pushc 8 + pushc 53 + putfa + dup + pushc 9 + pushc 42 + putfa + dup + pushc 10 + pushc 49 + putfa + dup + pushc 11 + pushc 49 + putfa + dup + pushc 12 + pushc 42 + putfa + dup + pushc 13 + pushc 51 + putfa + dup + pushc 14 + pushc 55 + putfa + dup + pushc 15 + pushc 44 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 50 + putfa + dup + pushc 18 + pushc 42 + putfa + dup + pushc 19 + pushc 50 + putfa + dup + pushc 20 + pushc 42 + putfa + dup + pushc 21 + pushc 53 + putfa + dup + pushc 22 + pushc 42 + putfa + dup + pushc 23 + pushc 51 + putfa + dup + pushc 24 + pushc 55 + putfa + dup + pushc 25 + pushc 42 + putfa + dup + pushc 26 + pushc 53 + putfa + dup + pushc 27 + pushc 51 + putfa + dup + pushc 28 + pushc 41 + putfa + dup + pushc 29 + pushc 32 + putfa + dup + pushc 30 + pushc 61 + putfa + dup + pushc 31 + pushc 32 + putfa + call _writeString + drop 1 + pushc 3 + pushc 5 + mul + pushc 5 + mul + pushc 11 + mul + pushc 37 + mul + pushc 2 + pushc 2 + mul + pushc 5 + mul + pushc 37 + mul + pushc 53 + mul + call _GCD + drop 2 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__76: + rsf + ret + +// +// Boolean isComposite(Integer) +// +_isComposite: + asf 6 + pushl -3 + pushc 1 + sub + popl 0 + pushc 0 + popl 1 + jmp __79 +__78: + pushl 0 + pushc 2 + div + popl 0 + pushl 1 + pushc 1 + add + popl 1 +__79: + pushl 0 + pushc 2 + mod + pushc 0 + eq + brt __78 +__80: + pushc 0 + popl 2 + jmp __82 +__81: + pushg 1 + pushl 2 + getfa + popl 3 + pushl 3 + pushl -3 + ge + brf __84 + jmp __83 +__84: + pushc 0 + popl 4 + pushl 3 + pushl 0 + pushl -3 + call _powerMod + drop 3 + pushr + popl 5 + pushl 5 + pushc 1 + ne + brf __85 + jmp __87 +__86: + pushl 5 + pushl 5 + mul + pushl -3 + mod + popl 5 + pushl 4 + pushc 1 + add + popl 4 +__87: + pushl 5 + pushc 1 + ne + dup + brf __90 + drop 1 + pushl 5 + pushl -3 + pushc 1 + sub + ne +__90: + dup + brf __89 + drop 1 + pushl 4 + pushl 1 + pushc 2 + sub + le +__89: + brt __86 +__88: + pushl 5 + pushl -3 + pushc 1 + sub + ne + brf __91 + pushc 1 + popr + jmp __77 +__91: +__85: + pushl 2 + pushc 1 + add + popl 2 +__82: + pushl 2 + pushc 20 + lt + brt __81 +__83: + pushc 0 + popr + jmp __77 +__77: + rsf + ret + +// +// void testIsComposite() +// +_testIsComposite: + asf 2 + pushc 14 + newa + dup + pushc 0 + pushc 105 + putfa + dup + pushc 1 + pushc 115 + putfa + dup + pushc 2 + pushc 67 + putfa + dup + pushc 3 + pushc 111 + putfa + dup + pushc 4 + pushc 109 + putfa + dup + pushc 5 + pushc 112 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 115 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 116 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 40 + putfa + dup + pushc 12 + pushc 41 + putfa + dup + pushc 13 + pushc 10 + putfa + call _writeString + drop 1 + pushc 14 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 45 + putfa + dup + pushc 13 + pushc 10 + putfa + call _writeString + drop 1 + pushc 49 + newa + dup + pushc 0 + pushc 111 + putfa + dup + pushc 1 + pushc 100 + putfa + dup + pushc 2 + pushc 100 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 110 + putfa + dup + pushc 5 + pushc 117 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 98 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 114 + putfa + dup + pushc 10 + pushc 115 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 110 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 91 + putfa + dup + pushc 16 + pushc 51 + putfa + dup + pushc 17 + pushc 46 + putfa + dup + pushc 18 + pushc 46 + putfa + dup + pushc 19 + pushc 57 + putfa + dup + pushc 20 + pushc 57 + putfa + dup + pushc 21 + pushc 93 + putfa + dup + pushc 22 + pushc 32 + putfa + dup + pushc 23 + pushc 119 + putfa + dup + pushc 24 + pushc 104 + putfa + dup + pushc 25 + pushc 105 + putfa + dup + pushc 26 + pushc 99 + putfa + dup + pushc 27 + pushc 104 + putfa + dup + pushc 28 + pushc 32 + putfa + dup + pushc 29 + pushc 97 + putfa + dup + pushc 30 + pushc 114 + putfa + dup + pushc 31 + pushc 101 + putfa + dup + pushc 32 + pushc 32 + putfa + dup + pushc 33 + pushc 112 + putfa + dup + pushc 34 + pushc 114 + putfa + dup + pushc 35 + pushc 111 + putfa + dup + pushc 36 + pushc 98 + putfa + dup + pushc 37 + pushc 97 + putfa + dup + pushc 38 + pushc 98 + putfa + dup + pushc 39 + pushc 108 + putfa + dup + pushc 40 + pushc 121 + putfa + dup + pushc 41 + pushc 32 + putfa + dup + pushc 42 + pushc 112 + putfa + dup + pushc 43 + pushc 114 + putfa + dup + pushc 44 + pushc 105 + putfa + dup + pushc 45 + pushc 109 + putfa + dup + pushc 46 + pushc 101 + putfa + dup + pushc 47 + pushc 58 + putfa + dup + pushc 48 + pushc 10 + putfa + call _writeString + drop 1 + pushc 3 + popl 0 + pushc 0 + popl 1 + jmp __94 +__93: + pushc 1 + pushl 0 + call _isComposite + drop 1 + pushr + sub + brf __96 + pushl 0 + call _writeInteger + drop 1 + pushc 2 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 32 + putfa + call _writeString + drop 1 + pushl 1 + pushc 1 + add + popl 1 + pushl 1 + pushc 8 + eq + brf __97 + pushc 0 + popl 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__97: +__96: + pushl 0 + pushc 2 + add + popl 0 +__94: + pushl 0 + pushc 100 + lt + brt __93 +__95: + pushl 1 + pushc 0 + ne + brf __98 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__98: + pushc 123456 + pushc 10 + mul + pushc 7 + add + popl 0 + jmp __100 +__99: + pushl 0 + call _writeInteger + drop 1 + pushc 4 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 105 + putfa + dup + pushc 2 + pushc 115 + putfa + dup + pushc 3 + pushc 32 + putfa + call _writeString + drop 1 + pushl 0 + call _isComposite + drop 1 + pushr + brf __102 + pushc 21 + newa + dup + pushc 0 + pushc 100 + putfa + dup + pushc 1 + pushc 101 + putfa + dup + pushc 2 + pushc 102 + putfa + dup + pushc 3 + pushc 105 + putfa + dup + pushc 4 + pushc 110 + putfa + dup + pushc 5 + pushc 105 + putfa + dup + pushc 6 + pushc 116 + putfa + dup + pushc 7 + pushc 101 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 121 + putfa + dup + pushc 10 + pushc 32 + putfa + dup + pushc 11 + pushc 99 + putfa + dup + pushc 12 + pushc 111 + putfa + dup + pushc 13 + pushc 109 + putfa + dup + pushc 14 + pushc 112 + putfa + dup + pushc 15 + pushc 111 + putfa + dup + pushc 16 + pushc 115 + putfa + dup + pushc 17 + pushc 105 + putfa + dup + pushc 18 + pushc 116 + putfa + dup + pushc 19 + pushc 101 + putfa + dup + pushc 20 + pushc 10 + putfa + call _writeString + drop 1 + jmp __103 +__102: + pushc 15 + newa + dup + pushc 0 + pushc 112 + putfa + dup + pushc 1 + pushc 114 + putfa + dup + pushc 2 + pushc 111 + putfa + dup + pushc 3 + pushc 98 + putfa + dup + pushc 4 + pushc 97 + putfa + dup + pushc 5 + pushc 98 + putfa + dup + pushc 6 + pushc 108 + putfa + dup + pushc 7 + pushc 121 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 112 + putfa + dup + pushc 10 + pushc 114 + putfa + dup + pushc 11 + pushc 105 + putfa + dup + pushc 12 + pushc 109 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 10 + putfa + call _writeString + drop 1 +__103: + pushl 0 + pushc 2 + add + popl 0 +__100: + pushl 0 + pushc 123460 + pushc 10 + mul + pushc 7 + add + lt + brt __99 +__101: + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__92: + rsf + ret + +// +// Boolean provePrime(Integer) +// +_provePrime: + asf 0 + pushc 0 + popr + jmp __104 +__104: + rsf + ret + +// +// void testProvePrime() +// +_testProvePrime: + asf 0 + pushc 13 + newa + dup + pushc 0 + pushc 112 + putfa + dup + pushc 1 + pushc 114 + putfa + dup + pushc 2 + pushc 111 + putfa + dup + pushc 3 + pushc 118 + putfa + dup + pushc 4 + pushc 101 + putfa + dup + pushc 5 + pushc 80 + putfa + dup + pushc 6 + pushc 114 + putfa + dup + pushc 7 + pushc 105 + putfa + dup + pushc 8 + pushc 109 + putfa + dup + pushc 9 + pushc 101 + putfa + dup + pushc 10 + pushc 40 + putfa + dup + pushc 11 + pushc 41 + putfa + dup + pushc 12 + pushc 10 + putfa + call _writeString + drop 1 + pushc 13 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 10 + putfa + call _writeString + drop 1 + pushc 22 + newa + dup + pushc 0 + pushc 60 + putfa + dup + pushc 1 + pushc 110 + putfa + dup + pushc 2 + pushc 111 + putfa + dup + pushc 3 + pushc 116 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 105 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 112 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 101 + putfa + dup + pushc 10 + pushc 109 + putfa + dup + pushc 11 + pushc 101 + putfa + dup + pushc 12 + pushc 110 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 100 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 121 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 116 + putfa + dup + pushc 20 + pushc 62 + putfa + dup + pushc 21 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__105: + rsf + ret + +// +// Integer findFactor1(Integer) +// +_findFactor1: + asf 9 + pushc 2 + popl 0 + pushc 2 + popl 1 + pushc 2 + popl 2 + pushc 1 + popl 3 + pushc 1 + popl 4 + pushc 1 + popl 5 + pushc 0 + popl 6 + jmp __108 +__107: + pushl 1 + pushl 1 + mul + pushc 1 + add + pushl -3 + mod + popl 1 + pushl 5 + pushl 2 + pushl 1 + sub + mul + pushl -3 + mod + popl 5 + pushl 6 + pushc 1 + add + popl 6 + pushl 6 + pushc 20 + eq + brf __110 + pushl 5 + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + gt + brf __111 + jmp __109 +__111: + pushl 1 + popl 0 + pushc 0 + popl 6 +__110: + pushl 3 + pushc 1 + sub + popl 3 + pushl 3 + pushc 0 + eq + brf __112 + pushl 5 + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + gt + brf __113 + jmp __109 +__113: + pushl 1 + popl 2 + pushl 4 + popl 3 + pushc 2 + pushl 4 + mul + popl 4 + pushc 0 + popl 8 + jmp __115 +__114: + pushl 1 + pushl 1 + mul + pushc 1 + add + pushl -3 + mod + popl 1 + pushl 8 + pushc 1 + add + popl 8 +__115: + pushl 8 + pushl 3 + lt + brt __114 +__116: + pushl 1 + popl 0 + pushc 0 + popl 6 +__112: +__108: + pushc 1 + brt __107 +__109: +__117: + pushl 0 + pushl 0 + mul + pushc 1 + add + pushl -3 + mod + popl 0 + pushl 2 + pushl 0 + sub + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + eq + brt __117 +__118: + pushl 7 + pushl -3 + lt + brf __119 + pushl 7 + popr + jmp __106 + jmp __120 +__119: + pushc 0 + popr + jmp __106 +__120: +__106: + rsf + ret + +// +// Integer findFactor2(Integer) +// +_findFactor2: + asf 9 + pushc 2 + popl 0 + pushc 2 + popl 1 + pushc 2 + popl 2 + pushc 1 + popl 3 + pushc 1 + popl 4 + pushc 1 + popl 5 + pushc 0 + popl 6 + jmp __123 +__122: + pushl 1 + pushl 1 + mul + pushc 1 + sub + pushl -3 + mod + popl 1 + pushl 5 + pushl 2 + pushl 1 + sub + mul + pushl -3 + mod + popl 5 + pushl 6 + pushc 1 + add + popl 6 + pushl 6 + pushc 20 + eq + brf __125 + pushl 5 + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + gt + brf __126 + jmp __124 +__126: + pushl 1 + popl 0 + pushc 0 + popl 6 +__125: + pushl 3 + pushc 1 + sub + popl 3 + pushl 3 + pushc 0 + eq + brf __127 + pushl 5 + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + gt + brf __128 + jmp __124 +__128: + pushl 1 + popl 2 + pushl 4 + popl 3 + pushc 2 + pushl 4 + mul + popl 4 + pushc 0 + popl 8 + jmp __130 +__129: + pushl 1 + pushl 1 + mul + pushc 1 + sub + pushl -3 + mod + popl 1 + pushl 8 + pushc 1 + add + popl 8 +__130: + pushl 8 + pushl 3 + lt + brt __129 +__131: + pushl 1 + popl 0 + pushc 0 + popl 6 +__127: +__123: + pushc 1 + brt __122 +__124: +__132: + pushl 0 + pushl 0 + mul + pushc 1 + sub + pushl -3 + mod + popl 0 + pushl 2 + pushl 0 + sub + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + eq + brt __132 +__133: + pushl 7 + pushl -3 + lt + brf __134 + pushl 7 + popr + jmp __121 + jmp __135 +__134: + pushc 0 + popr + jmp __121 +__135: +__121: + rsf + ret + +// +// Integer findFactor3(Integer) +// +_findFactor3: + asf 9 + pushc 2 + popl 0 + pushc 2 + popl 1 + pushc 2 + popl 2 + pushc 1 + popl 3 + pushc 1 + popl 4 + pushc 1 + popl 5 + pushc 0 + popl 6 + jmp __138 +__137: + pushl 1 + pushl 1 + mul + pushc 3 + add + pushl -3 + mod + popl 1 + pushl 5 + pushl 2 + pushl 1 + sub + mul + pushl -3 + mod + popl 5 + pushl 6 + pushc 1 + add + popl 6 + pushl 6 + pushc 20 + eq + brf __140 + pushl 5 + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + gt + brf __141 + jmp __139 +__141: + pushl 1 + popl 0 + pushc 0 + popl 6 +__140: + pushl 3 + pushc 1 + sub + popl 3 + pushl 3 + pushc 0 + eq + brf __142 + pushl 5 + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + gt + brf __143 + jmp __139 +__143: + pushl 1 + popl 2 + pushl 4 + popl 3 + pushc 2 + pushl 4 + mul + popl 4 + pushc 0 + popl 8 + jmp __145 +__144: + pushl 1 + pushl 1 + mul + pushc 3 + add + pushl -3 + mod + popl 1 + pushl 8 + pushc 1 + add + popl 8 +__145: + pushl 8 + pushl 3 + lt + brt __144 +__146: + pushl 1 + popl 0 + pushc 0 + popl 6 +__142: +__138: + pushc 1 + brt __137 +__139: +__147: + pushl 0 + pushl 0 + mul + pushc 3 + add + pushl -3 + mod + popl 0 + pushl 2 + pushl 0 + sub + pushl -3 + call _GCD + drop 2 + pushr + popl 7 + pushl 7 + pushc 1 + eq + brt __147 +__148: + pushl 7 + pushl -3 + lt + brf __149 + pushl 7 + popr + jmp __136 + jmp __150 +__149: + pushc 0 + popr + jmp __136 +__150: +__136: + rsf + ret + +// +// Integer findFactor(Integer) +// +_findFactor: + asf 1 + pushl -3 + call _findFactor1 + drop 1 + pushr + popl 0 + pushl 0 + pushc 0 + ne + brf __152 + pushl 0 + popr + jmp __151 +__152: + pushl -3 + call _findFactor2 + drop 1 + pushr + popl 0 + pushl 0 + pushc 0 + ne + brf __153 + pushl 0 + popr + jmp __151 +__153: + pushl -3 + call _findFactor3 + drop 1 + pushr + popl 0 + pushl 0 + popr + jmp __151 +__151: + rsf + ret + +// +// void testFindFactor() +// +_testFindFactor: + asf 0 + pushc 13 + newa + dup + pushc 0 + pushc 102 + putfa + dup + pushc 1 + pushc 105 + putfa + dup + pushc 2 + pushc 110 + putfa + dup + pushc 3 + pushc 100 + putfa + dup + pushc 4 + pushc 70 + putfa + dup + pushc 5 + pushc 97 + putfa + dup + pushc 6 + pushc 99 + putfa + dup + pushc 7 + pushc 116 + putfa + dup + pushc 8 + pushc 111 + putfa + dup + pushc 9 + pushc 114 + putfa + dup + pushc 10 + pushc 40 + putfa + dup + pushc 11 + pushc 41 + putfa + dup + pushc 12 + pushc 10 + putfa + call _writeString + drop 1 + pushc 13 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 10 + putfa + call _writeString + drop 1 + pushc 8 + newa + dup + pushc 0 + pushc 53 + putfa + dup + pushc 1 + pushc 42 + putfa + dup + pushc 2 + pushc 53 + putfa + dup + pushc 3 + pushc 42 + putfa + dup + pushc 4 + pushc 53 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 61 + putfa + dup + pushc 7 + pushc 32 + putfa + call _writeString + drop 1 + pushc 5 + pushc 5 + mul + pushc 5 + mul + call _writeInteger + drop 1 + pushc 18 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 105 + putfa + dup + pushc 2 + pushc 115 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 97 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 117 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 116 + putfa + dup + pushc 10 + pushc 105 + putfa + dup + pushc 11 + pushc 112 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 111 + putfa + dup + pushc 16 + pushc 102 + putfa + dup + pushc 17 + pushc 32 + putfa + call _writeString + drop 1 + pushc 5 + pushc 5 + mul + pushc 5 + mul + call _findFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 17 + newa + dup + pushc 0 + pushc 52 + putfa + dup + pushc 1 + pushc 52 + putfa + dup + pushc 2 + pushc 50 + putfa + dup + pushc 3 + pushc 49 + putfa + dup + pushc 4 + pushc 42 + putfa + dup + pushc 5 + pushc 53 + putfa + dup + pushc 6 + pushc 55 + putfa + dup + pushc 7 + pushc 52 + putfa + dup + pushc 8 + pushc 51 + putfa + dup + pushc 9 + pushc 42 + putfa + dup + pushc 10 + pushc 55 + putfa + dup + pushc 11 + pushc 54 + putfa + dup + pushc 12 + pushc 57 + putfa + dup + pushc 13 + pushc 57 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 61 + putfa + dup + pushc 16 + pushc 32 + putfa + call _writeString + drop 1 + pushc 4421 + pushc 5743 + mul + pushc 7699 + mul + call _writeInteger + drop 1 + pushc 18 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 105 + putfa + dup + pushc 2 + pushc 115 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 97 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 117 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 116 + putfa + dup + pushc 10 + pushc 105 + putfa + dup + pushc 11 + pushc 112 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 111 + putfa + dup + pushc 16 + pushc 102 + putfa + dup + pushc 17 + pushc 32 + putfa + call _writeString + drop 1 + pushc 4421 + pushc 5743 + mul + pushc 7699 + mul + call _findFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 999900 + pushc 1000000 + mul + pushc 9999 + add + pushc 10000 + mul + pushc 1 + add + call _writeInteger + drop 1 + pushc 18 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 105 + putfa + dup + pushc 2 + pushc 115 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 97 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 117 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 116 + putfa + dup + pushc 10 + pushc 105 + putfa + dup + pushc 11 + pushc 112 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 111 + putfa + dup + pushc 16 + pushc 102 + putfa + dup + pushc 17 + pushc 32 + putfa + call _writeString + drop 1 + pushc 999900 + pushc 1000000 + mul + pushc 9999 + add + pushc 10000 + mul + pushc 1 + add + call _findFactor + drop 1 + pushr + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__154: + rsf + ret + +// +// record { Integer value; List next; } factorize(Integer, Boolean) +// +_factorize: + asf 5 + pushl -3 + brf __156 + pushc 10 + newa + dup + pushc 0 + pushc 102 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 99 + putfa + dup + pushc 3 + pushc 116 + putfa + dup + pushc 4 + pushc 111 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 105 + putfa + dup + pushc 7 + pushc 122 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 40 + putfa + call _writeString + drop 1 + pushl -4 + call _writeInteger + drop 1 + pushc 2 + newa + dup + pushc 0 + pushc 41 + putfa + dup + pushc 1 + pushc 10 + putfa + call _writeString + drop 1 +__156: + pushn + popl 0 + jmp __158 +__157: + pushl -4 + call _smallPrimeFactor + drop 1 + pushr + popl 1 + pushl 1 + pushc 0 + eq + brf __160 + pushl -4 + pushg 0 + pushg 0 + mul + lt + brf __161 + pushl -4 + popl 1 + jmp __162 +__161: + jmp __159 +__162: +__160: + pushl -3 + brf __163 + pushc 28 + newa + dup + pushc 0 + pushc 100 + putfa + dup + pushc 1 + pushc 101 + putfa + dup + pushc 2 + pushc 116 + putfa + dup + pushc 3 + pushc 101 + putfa + dup + pushc 4 + pushc 99 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 101 + putfa + dup + pushc 7 + pushc 100 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 115 + putfa + dup + pushc 10 + pushc 109 + putfa + dup + pushc 11 + pushc 97 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 108 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 112 + putfa + dup + pushc 16 + pushc 114 + putfa + dup + pushc 17 + pushc 105 + putfa + dup + pushc 18 + pushc 109 + putfa + dup + pushc 19 + pushc 101 + putfa + dup + pushc 20 + pushc 32 + putfa + dup + pushc 21 + pushc 102 + putfa + dup + pushc 22 + pushc 97 + putfa + dup + pushc 23 + pushc 99 + putfa + dup + pushc 24 + pushc 116 + putfa + dup + pushc 25 + pushc 111 + putfa + dup + pushc 26 + pushc 114 + putfa + dup + pushc 27 + pushc 32 + putfa + call _writeString + drop 1 + pushl 1 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__163: + pushl 1 + pushl 0 + call _addToList + drop 2 + pushr + popl 0 + pushl -4 + pushl 1 + div + popl -4 +__158: + pushl -4 + pushc 1 + gt + brt __157 +__159: + pushl -4 + pushc 1 + eq + brf __164 + pushl -3 + brf __165 + pushc 42 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 104 + putfa + dup + pushc 2 + pushc 101 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 110 + putfa + dup + pushc 5 + pushc 117 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 98 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 114 + putfa + dup + pushc 10 + pushc 32 + putfa + dup + pushc 11 + pushc 104 + putfa + dup + pushc 12 + pushc 97 + putfa + dup + pushc 13 + pushc 115 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 98 + putfa + dup + pushc 16 + pushc 101 + putfa + dup + pushc 17 + pushc 101 + putfa + dup + pushc 18 + pushc 110 + putfa + dup + pushc 19 + pushc 32 + putfa + dup + pushc 20 + pushc 99 + putfa + dup + pushc 21 + pushc 111 + putfa + dup + pushc 22 + pushc 109 + putfa + dup + pushc 23 + pushc 112 + putfa + dup + pushc 24 + pushc 108 + putfa + dup + pushc 25 + pushc 101 + putfa + dup + pushc 26 + pushc 116 + putfa + dup + pushc 27 + pushc 101 + putfa + dup + pushc 28 + pushc 108 + putfa + dup + pushc 29 + pushc 121 + putfa + dup + pushc 30 + pushc 32 + putfa + dup + pushc 31 + pushc 102 + putfa + dup + pushc 32 + pushc 97 + putfa + dup + pushc 33 + pushc 99 + putfa + dup + pushc 34 + pushc 116 + putfa + dup + pushc 35 + pushc 111 + putfa + dup + pushc 36 + pushc 114 + putfa + dup + pushc 37 + pushc 105 + putfa + dup + pushc 38 + pushc 122 + putfa + dup + pushc 39 + pushc 101 + putfa + dup + pushc 40 + pushc 100 + putfa + dup + pushc 41 + pushc 10 + putfa + call _writeString + drop 1 +__165: + pushl 0 + popr + jmp __155 +__164: + pushl -3 + brf __166 + pushc 41 + newa + dup + pushc 0 + pushc 105 + putfa + dup + pushc 1 + pushc 110 + putfa + dup + pushc 2 + pushc 116 + putfa + dup + pushc 3 + pushc 101 + putfa + dup + pushc 4 + pushc 114 + putfa + dup + pushc 5 + pushc 105 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 32 + putfa + dup + pushc 8 + pushc 114 + putfa + dup + pushc 9 + pushc 101 + putfa + dup + pushc 10 + pushc 115 + putfa + dup + pushc 11 + pushc 117 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 58 + putfa + dup + pushc 15 + pushc 10 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 32 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 32 + putfa + dup + pushc 20 + pushc 116 + putfa + dup + pushc 21 + pushc 104 + putfa + dup + pushc 22 + pushc 101 + putfa + dup + pushc 23 + pushc 32 + putfa + dup + pushc 24 + pushc 114 + putfa + dup + pushc 25 + pushc 101 + putfa + dup + pushc 26 + pushc 109 + putfa + dup + pushc 27 + pushc 97 + putfa + dup + pushc 28 + pushc 105 + putfa + dup + pushc 29 + pushc 110 + putfa + dup + pushc 30 + pushc 105 + putfa + dup + pushc 31 + pushc 110 + putfa + dup + pushc 32 + pushc 103 + putfa + dup + pushc 33 + pushc 32 + putfa + dup + pushc 34 + pushc 102 + putfa + dup + pushc 35 + pushc 97 + putfa + dup + pushc 36 + pushc 99 + putfa + dup + pushc 37 + pushc 116 + putfa + dup + pushc 38 + pushc 111 + putfa + dup + pushc 39 + pushc 114 + putfa + dup + pushc 40 + pushc 32 + putfa + call _writeString + drop 1 + pushl -4 + call _writeInteger + drop 1 + pushc 38 + newa + dup + pushc 0 + pushc 10 + putfa + dup + pushc 1 + pushc 32 + putfa + dup + pushc 2 + pushc 32 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 100 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 101 + putfa + dup + pushc 8 + pushc 115 + putfa + dup + pushc 9 + pushc 110 + putfa + dup + pushc 10 + pushc 39 + putfa + dup + pushc 11 + pushc 116 + putfa + dup + pushc 12 + pushc 32 + putfa + dup + pushc 13 + pushc 104 + putfa + dup + pushc 14 + pushc 97 + putfa + dup + pushc 15 + pushc 118 + putfa + dup + pushc 16 + pushc 101 + putfa + dup + pushc 17 + pushc 32 + putfa + dup + pushc 18 + pushc 97 + putfa + dup + pushc 19 + pushc 110 + putfa + dup + pushc 20 + pushc 121 + putfa + dup + pushc 21 + pushc 32 + putfa + dup + pushc 22 + pushc 112 + putfa + dup + pushc 23 + pushc 114 + putfa + dup + pushc 24 + pushc 105 + putfa + dup + pushc 25 + pushc 109 + putfa + dup + pushc 26 + pushc 101 + putfa + dup + pushc 27 + pushc 32 + putfa + dup + pushc 28 + pushc 102 + putfa + dup + pushc 29 + pushc 97 + putfa + dup + pushc 30 + pushc 99 + putfa + dup + pushc 31 + pushc 116 + putfa + dup + pushc 32 + pushc 111 + putfa + dup + pushc 33 + pushc 114 + putfa + dup + pushc 34 + pushc 115 + putfa + dup + pushc 35 + pushc 32 + putfa + dup + pushc 36 + pushc 60 + putfa + dup + pushc 37 + pushc 32 + putfa + call _writeString + drop 1 + pushg 0 + call _writeInteger + drop 1 + pushc 5 + newa + dup + pushc 0 + pushc 10 + putfa + dup + pushc 1 + pushc 32 + putfa + dup + pushc 2 + pushc 32 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 32 + putfa + call _writeString + drop 1 +__166: + pushl -4 + call _isComposite + drop 1 + pushr + brf __167 + pushl -3 + brf __169 + pushc 28 + newa + dup + pushc 0 + pushc 98 + putfa + dup + pushc 1 + pushc 117 + putfa + dup + pushc 2 + pushc 116 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 105 + putfa + dup + pushc 5 + pushc 115 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 100 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 102 + putfa + dup + pushc 10 + pushc 105 + putfa + dup + pushc 11 + pushc 110 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 108 + putfa + dup + pushc 16 + pushc 121 + putfa + dup + pushc 17 + pushc 32 + putfa + dup + pushc 18 + pushc 99 + putfa + dup + pushc 19 + pushc 111 + putfa + dup + pushc 20 + pushc 109 + putfa + dup + pushc 21 + pushc 112 + putfa + dup + pushc 22 + pushc 111 + putfa + dup + pushc 23 + pushc 115 + putfa + dup + pushc 24 + pushc 105 + putfa + dup + pushc 25 + pushc 116 + putfa + dup + pushc 26 + pushc 101 + putfa + dup + pushc 27 + pushc 10 + putfa + call _writeString + drop 1 +__169: + pushl -4 + call _findFactor + drop 1 + pushr + popl 2 + pushl 2 + pushc 0 + eq + brf __170 + pushc 17 + newa + dup + pushc 0 + pushc 99 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 110 + putfa + dup + pushc 3 + pushc 110 + putfa + dup + pushc 4 + pushc 111 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 102 + putfa + dup + pushc 8 + pushc 97 + putfa + dup + pushc 9 + pushc 99 + putfa + dup + pushc 10 + pushc 116 + putfa + dup + pushc 11 + pushc 111 + putfa + dup + pushc 12 + pushc 114 + putfa + dup + pushc 13 + pushc 105 + putfa + dup + pushc 14 + pushc 122 + putfa + dup + pushc 15 + pushc 101 + putfa + dup + pushc 16 + pushc 32 + putfa + call _writeString + drop 1 + pushl -4 + call _writeInteger + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 44 + putfa + dup + pushc 1 + pushc 32 + putfa + dup + pushc 2 + pushc 103 + putfa + dup + pushc 3 + pushc 105 + putfa + dup + pushc 4 + pushc 118 + putfa + dup + pushc 5 + pushc 105 + putfa + dup + pushc 6 + pushc 110 + putfa + dup + pushc 7 + pushc 103 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 117 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 10 + putfa + call _writeString + drop 1 + pushl -4 + pushl 0 + call _addToList + drop 2 + pushr + popl 0 + jmp __171 +__170: + pushl -4 + pushl 2 + div + popl 3 + pushl -3 + brf __172 + pushc 30 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 104 + putfa + dup + pushc 2 + pushc 105 + putfa + dup + pushc 3 + pushc 115 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 110 + putfa + dup + pushc 6 + pushc 117 + putfa + dup + pushc 7 + pushc 109 + putfa + dup + pushc 8 + pushc 98 + putfa + dup + pushc 9 + pushc 101 + putfa + dup + pushc 10 + pushc 114 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 99 + putfa + dup + pushc 13 + pushc 97 + putfa + dup + pushc 14 + pushc 110 + putfa + dup + pushc 15 + pushc 32 + putfa + dup + pushc 16 + pushc 98 + putfa + dup + pushc 17 + pushc 101 + putfa + dup + pushc 18 + pushc 32 + putfa + dup + pushc 19 + pushc 115 + putfa + dup + pushc 20 + pushc 112 + putfa + dup + pushc 21 + pushc 108 + putfa + dup + pushc 22 + pushc 105 + putfa + dup + pushc 23 + pushc 116 + putfa + dup + pushc 24 + pushc 32 + putfa + dup + pushc 25 + pushc 105 + putfa + dup + pushc 26 + pushc 110 + putfa + dup + pushc 27 + pushc 116 + putfa + dup + pushc 28 + pushc 111 + putfa + dup + pushc 29 + pushc 32 + putfa + call _writeString + drop 1 + pushl 2 + call _writeInteger + drop 1 + pushc 5 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 110 + putfa + dup + pushc 3 + pushc 100 + putfa + dup + pushc 4 + pushc 32 + putfa + call _writeString + drop 1 + pushl 3 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__172: + pushl 2 + pushl -3 + call _factorize + drop 2 + pushr + popl 4 + pushl 4 + pushl 0 + call _fuseLists + drop 2 + pushr + popl 0 + pushl 3 + pushl -3 + call _factorize + drop 2 + pushr + popl 4 + pushl 4 + pushl 0 + call _fuseLists + drop 2 + pushr + popl 0 +__171: + jmp __168 +__167: + pushl -3 + brf __173 + pushc 27 + newa + dup + pushc 0 + pushc 97 + putfa + dup + pushc 1 + pushc 110 + putfa + dup + pushc 2 + pushc 100 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 105 + putfa + dup + pushc 5 + pushc 115 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 118 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 114 + putfa + dup + pushc 10 + pushc 121 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 112 + putfa + dup + pushc 13 + pushc 114 + putfa + dup + pushc 14 + pushc 111 + putfa + dup + pushc 15 + pushc 98 + putfa + dup + pushc 16 + pushc 97 + putfa + dup + pushc 17 + pushc 98 + putfa + dup + pushc 18 + pushc 108 + putfa + dup + pushc 19 + pushc 121 + putfa + dup + pushc 20 + pushc 32 + putfa + dup + pushc 21 + pushc 112 + putfa + dup + pushc 22 + pushc 114 + putfa + dup + pushc 23 + pushc 105 + putfa + dup + pushc 24 + pushc 109 + putfa + dup + pushc 25 + pushc 101 + putfa + dup + pushc 26 + pushc 10 + putfa + call _writeString + drop 1 +__173: + pushl -4 + call _provePrime + drop 1 + pushr + brf __174 + pushl -3 + brf __176 + pushc 17 + newa + dup + pushc 0 + pushc 116 + putfa + dup + pushc 1 + pushc 104 + putfa + dup + pushc 2 + pushc 101 + putfa + dup + pushc 3 + pushc 32 + putfa + dup + pushc 4 + pushc 112 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 105 + putfa + dup + pushc 7 + pushc 109 + putfa + dup + pushc 8 + pushc 97 + putfa + dup + pushc 9 + pushc 108 + putfa + dup + pushc 10 + pushc 105 + putfa + dup + pushc 11 + pushc 116 + putfa + dup + pushc 12 + pushc 121 + putfa + dup + pushc 13 + pushc 32 + putfa + dup + pushc 14 + pushc 111 + putfa + dup + pushc 15 + pushc 102 + putfa + dup + pushc 16 + pushc 32 + putfa + call _writeString + drop 1 + pushl -4 + call _writeInteger + drop 1 + pushc 17 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 104 + putfa + dup + pushc 2 + pushc 97 + putfa + dup + pushc 3 + pushc 115 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 98 + putfa + dup + pushc 6 + pushc 101 + putfa + dup + pushc 7 + pushc 101 + putfa + dup + pushc 8 + pushc 110 + putfa + dup + pushc 9 + pushc 32 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 114 + putfa + dup + pushc 12 + pushc 111 + putfa + dup + pushc 13 + pushc 118 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 110 + putfa + dup + pushc 16 + pushc 10 + putfa + call _writeString + drop 1 +__176: + jmp __175 +__174: + pushc 30 + newa + dup + pushc 0 + pushc 99 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 110 + putfa + dup + pushc 3 + pushc 110 + putfa + dup + pushc 4 + pushc 111 + putfa + dup + pushc 5 + pushc 116 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 112 + putfa + dup + pushc 8 + pushc 114 + putfa + dup + pushc 9 + pushc 111 + putfa + dup + pushc 10 + pushc 118 + putfa + dup + pushc 11 + pushc 101 + putfa + dup + pushc 12 + pushc 32 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 104 + putfa + dup + pushc 15 + pushc 101 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 112 + putfa + dup + pushc 18 + pushc 114 + putfa + dup + pushc 19 + pushc 105 + putfa + dup + pushc 20 + pushc 109 + putfa + dup + pushc 21 + pushc 97 + putfa + dup + pushc 22 + pushc 108 + putfa + dup + pushc 23 + pushc 105 + putfa + dup + pushc 24 + pushc 116 + putfa + dup + pushc 25 + pushc 121 + putfa + dup + pushc 26 + pushc 32 + putfa + dup + pushc 27 + pushc 111 + putfa + dup + pushc 28 + pushc 102 + putfa + dup + pushc 29 + pushc 32 + putfa + call _writeString + drop 1 + pushl -4 + call _writeInteger + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 44 + putfa + dup + pushc 1 + pushc 32 + putfa + dup + pushc 2 + pushc 103 + putfa + dup + pushc 3 + pushc 105 + putfa + dup + pushc 4 + pushc 118 + putfa + dup + pushc 5 + pushc 105 + putfa + dup + pushc 6 + pushc 110 + putfa + dup + pushc 7 + pushc 103 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 117 + putfa + dup + pushc 10 + pushc 112 + putfa + dup + pushc 11 + pushc 10 + putfa + call _writeString + drop 1 +__175: + pushl -4 + pushl 0 + call _addToList + drop 2 + pushr + popl 0 +__168: + pushl 0 + popr + jmp __155 +__155: + rsf + ret + +// +// void testFactorize(Boolean) +// +_testFactorize: + asf 1 + pushc 12 + newa + dup + pushc 0 + pushc 102 + putfa + dup + pushc 1 + pushc 97 + putfa + dup + pushc 2 + pushc 99 + putfa + dup + pushc 3 + pushc 116 + putfa + dup + pushc 4 + pushc 111 + putfa + dup + pushc 5 + pushc 114 + putfa + dup + pushc 6 + pushc 105 + putfa + dup + pushc 7 + pushc 122 + putfa + dup + pushc 8 + pushc 101 + putfa + dup + pushc 9 + pushc 40 + putfa + dup + pushc 10 + pushc 41 + putfa + dup + pushc 11 + pushc 10 + putfa + call _writeString + drop 1 + pushc 12 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 10 + putfa + call _writeString + drop 1 + pushc 7 + call _calcSmallPrimes + drop 1 + call _showSmallPrimes + pushc 18 + newa + dup + pushc 0 + pushc 51 + putfa + dup + pushc 1 + pushc 42 + putfa + dup + pushc 2 + pushc 53 + putfa + dup + pushc 3 + pushc 42 + putfa + dup + pushc 4 + pushc 55 + putfa + dup + pushc 5 + pushc 42 + putfa + dup + pushc 6 + pushc 55 + putfa + dup + pushc 7 + pushc 42 + putfa + dup + pushc 8 + pushc 49 + putfa + dup + pushc 9 + pushc 52 + putfa + dup + pushc 10 + pushc 49 + putfa + dup + pushc 11 + pushc 42 + putfa + dup + pushc 12 + pushc 52 + putfa + dup + pushc 13 + pushc 57 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 61 + putfa + dup + pushc 16 + pushc 32 + putfa + dup + pushc 17 + pushc 10 + putfa + call _writeString + drop 1 + pushc 3 + pushc 5 + mul + pushc 7 + mul + pushc 7 + mul + pushc 141 + mul + pushc 49 + mul + pushl -3 + call _factorize + drop 2 + pushr + popl 0 + pushl 0 + call _sortList + drop 1 + pushr + call _showList + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__177: + rsf + ret + +// +// void showBar() +// +_showBar: + asf 0 + pushc 33 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 45 + putfa + dup + pushc 13 + pushc 45 + putfa + dup + pushc 14 + pushc 45 + putfa + dup + pushc 15 + pushc 45 + putfa + dup + pushc 16 + pushc 45 + putfa + dup + pushc 17 + pushc 45 + putfa + dup + pushc 18 + pushc 45 + putfa + dup + pushc 19 + pushc 45 + putfa + dup + pushc 20 + pushc 45 + putfa + dup + pushc 21 + pushc 45 + putfa + dup + pushc 22 + pushc 45 + putfa + dup + pushc 23 + pushc 45 + putfa + dup + pushc 24 + pushc 45 + putfa + dup + pushc 25 + pushc 45 + putfa + dup + pushc 26 + pushc 45 + putfa + dup + pushc 27 + pushc 45 + putfa + dup + pushc 28 + pushc 45 + putfa + dup + pushc 29 + pushc 45 + putfa + dup + pushc 30 + pushc 45 + putfa + dup + pushc 31 + pushc 45 + putfa + dup + pushc 32 + pushc 45 + putfa + call _writeString + drop 1 + pushc 32 + newa + dup + pushc 0 + pushc 45 + putfa + dup + pushc 1 + pushc 45 + putfa + dup + pushc 2 + pushc 45 + putfa + dup + pushc 3 + pushc 45 + putfa + dup + pushc 4 + pushc 45 + putfa + dup + pushc 5 + pushc 45 + putfa + dup + pushc 6 + pushc 45 + putfa + dup + pushc 7 + pushc 45 + putfa + dup + pushc 8 + pushc 45 + putfa + dup + pushc 9 + pushc 45 + putfa + dup + pushc 10 + pushc 45 + putfa + dup + pushc 11 + pushc 45 + putfa + dup + pushc 12 + pushc 45 + putfa + dup + pushc 13 + pushc 45 + putfa + dup + pushc 14 + pushc 45 + putfa + dup + pushc 15 + pushc 45 + putfa + dup + pushc 16 + pushc 45 + putfa + dup + pushc 17 + pushc 45 + putfa + dup + pushc 18 + pushc 45 + putfa + dup + pushc 19 + pushc 45 + putfa + dup + pushc 20 + pushc 45 + putfa + dup + pushc 21 + pushc 45 + putfa + dup + pushc 22 + pushc 45 + putfa + dup + pushc 23 + pushc 45 + putfa + dup + pushc 24 + pushc 45 + putfa + dup + pushc 25 + pushc 45 + putfa + dup + pushc 26 + pushc 45 + putfa + dup + pushc 27 + pushc 45 + putfa + dup + pushc 28 + pushc 45 + putfa + dup + pushc 29 + pushc 45 + putfa + dup + pushc 30 + pushc 45 + putfa + dup + pushc 31 + pushc 10 + putfa + call _writeString + drop 1 +__178: + rsf + ret + +// +// void run(Boolean) +// +_run: + asf 4 + pushc 10000 + call _calcSmallPrimes + drop 1 + call _showBar + pushc 1 + popl 0 + jmp __181 +__180: + pushc 3 + newa + dup + pushc 0 + pushc 49 + putfa + dup + pushc 1 + pushc 48 + putfa + dup + pushc 2 + pushc 94 + putfa + call _writeString + drop 1 + pushl 0 + call _writeInteger + drop 1 + pushc 5 + newa + dup + pushc 0 + pushc 43 + putfa + dup + pushc 1 + pushc 49 + putfa + dup + pushc 2 + pushc 32 + putfa + dup + pushc 3 + pushc 61 + putfa + dup + pushc 4 + pushc 32 + putfa + call _writeString + drop 1 + pushl 0 + call _computeTarget + drop 1 + pushr + popl 1 + pushl 1 + call _writeInteger + drop 1 + pushc 4 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 61 + putfa + dup + pushc 2 + pushc 32 + putfa + dup + pushc 3 + pushc 10 + putfa + call _writeString + drop 1 + pushl 1 + pushl -3 + call _factorize + drop 2 + pushr + popl 2 + pushl 2 + call _sortList + drop 1 + pushr + popl 2 + pushl 2 + call _showList + drop 1 + pushc 17 + newa + dup + pushc 0 + pushc 99 + putfa + dup + pushc 1 + pushc 104 + putfa + dup + pushc 2 + pushc 101 + putfa + dup + pushc 3 + pushc 99 + putfa + dup + pushc 4 + pushc 107 + putfa + dup + pushc 5 + pushc 58 + putfa + dup + pushc 6 + pushc 32 + putfa + dup + pushc 7 + pushc 112 + putfa + dup + pushc 8 + pushc 114 + putfa + dup + pushc 9 + pushc 111 + putfa + dup + pushc 10 + pushc 100 + putfa + dup + pushc 11 + pushc 117 + putfa + dup + pushc 12 + pushc 99 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 61 + putfa + dup + pushc 16 + pushc 32 + putfa + call _writeString + drop 1 + pushl 2 + call _evalList + drop 1 + pushr + popl 3 + pushl 3 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + call _showBar + pushl 0 + pushc 1 + add + popl 0 +__181: + pushl 0 + pushc 30 + le + brt __180 +__182: +__179: + rsf + ret + +// +// void tests(Boolean) +// +_tests: + asf 0 + pushc 7 + newa + dup + pushc 0 + pushc 10 + putfa + dup + pushc 1 + pushc 84 + putfa + dup + pushc 2 + pushc 101 + putfa + dup + pushc 3 + pushc 115 + putfa + dup + pushc 4 + pushc 116 + putfa + dup + pushc 5 + pushc 115 + putfa + dup + pushc 6 + pushc 10 + putfa + call _writeString + drop 1 + pushc 7 + newa + dup + pushc 0 + pushc 61 + putfa + dup + pushc 1 + pushc 61 + putfa + dup + pushc 2 + pushc 61 + putfa + dup + pushc 3 + pushc 61 + putfa + dup + pushc 4 + pushc 61 + putfa + dup + pushc 5 + pushc 10 + putfa + dup + pushc 6 + pushc 10 + putfa + call _writeString + drop 1 + call _testComputeTarget + call _testCalcSmallPrimes + call _testSmallPrimeFactor + call _testPowerMod + call _testGCD + call _testIsComposite + call _testProvePrime + call _testFindFactor + pushl -3 + call _testFactorize + drop 1 +__183: + rsf + ret + +// +// void main() +// +_main: + asf 0 + pushc 1 + call _run + drop 1 +__184: + rsf + ret