/** * Generator for text printing Malbolge Unshackled programs. * Usage: * This tool reads some UTF-8 encoded text from STDIN and writes * Malbolge Unshackled code to STDOUT * Copyright (C) 2017 Matthias Lutter * Please visit * * This tool is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This tool is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * For a copy of the GNU General Public License, see * . */ #include #include #include #include const char* normalization = "+b(29e*j1VMEKLyC})8&m#~W>qxdRp0wkrUo[D7,XT" "cA\"lI.v%{gJh4G\\-=O@5`_3i= 33 && code[i] < 127) { // denormalize this char! long long j; for (j=0;j max_len) { if (unicode) { *unicode = -1; } UTF_WARNING("warning: invalid utf-8 sequence\n"); return max_len; } in++; int len = 1; while (left) { len++; if (*in < 0x80 || *in >= 0xC0) { if (unicode) { *unicode = -1; } UTF_WARNING("warning: invalid utf-8 sequence\n"); return len; } if (unicode) { *unicode <<= 6; *unicode |= (int)(*in & 0x3F); } in++; left--; } if (unicode) { if ((*unicode & 0xFFFF) > 0xFFFD) { // non-character *unicode = -1; UTF_WARNING("warning: unicode non-character symbol\n"); } if (*unicode >= 0xFDD0 && *unicode <= 0xFDEF) { // non-character *unicode = -1; UTF_WARNING("warning: unicode non-character symbol\n"); } if (*unicode >= 0xD800 && *unicode <= 0xDFFF) { // surrogates must not appear in utf-8 *unicode = -1; UTF_WARNING("warning: surrogate in utf-8\n"); } if (*unicode > 0x10FFFD) { // invalid *unicode = -1; UTF_WARNING("warning: invalid unicode symbol\n"); } } return len; } #undef UTF_WARNING int get_width(int number) { int width = 1; int max = 2; while (number > max) { width++; max *= 3; max += 2; } return width; } void set_gen_init_03(long long value, int width, int omit_last_rot); void initialize_memory_cell(long long value, long long c_start_offset, int min_rot_width, int* needed_rotwidth); void add_code(const char* code); int get_trit(int position, long long value); void inc_min_rotwidth(int* min_rot_width, int needed_backjump_rotwidth, long long c_start_offset){ if (!min_rot_width) { return; } while (*min_rot_width < needed_backjump_rotwidth) { unsigned int i; long long twos = 2; /* erzeuge IRGENDWO (-> in var1) C0, erzeuge dann ...0222222 mit maximal vielen 2en, crazie das in C0, springe ans ziel mit movd; kehre von dort zurueck! */ /* -> am besten in var1 */ for (i=0;i<*min_rot_width;i++) { /* width */ add_code("ooooooooj*jo"); } /* erzeuge C0 an position var1 */ add_code("*oooojpjoooooojpjoooooojpjo"); /* erzeuge ...0222222 */ for (i=1;i<*min_rot_width;i++) { twos *= 3; twos += 2; } set_gen_init_03(twos, *min_rot_width, 0); add_code("oj*op"); /* crazie das in var1, erhalte ...100000 */ add_code("oojpjo"); // ERZEUGE BACK-JUMP-address!! { long long max_value_C1_rot_width = 1; long long address_gen_size; long long inner_reset_point; for (i=1;i<*min_rot_width;i++) { max_value_C1_rot_width *= 3; max_value_C1_rot_width += 1; } inner_reset_point = current_code_size; address_gen_size = 150; /* start with this */ do { long long backjump_address = c_start_offset + current_code_size + address_gen_size; if (backjump_address > 2*max_value_C1_rot_width) { fprintf(stderr,"error: cannot increase rotation " "width as required"); exit(1); } add_code("*oooooojpjoooooooojpjo"); long long gen = 0; long long tmp = backjump_address; long long factor = 1; long long i; for (i=0;i<*min_rot_width;i++) { if (tmp % 3==0) { gen += factor; }else{ gen += 2*factor; } factor *= 3; tmp /= 3; } set_gen_init_03(gen, *min_rot_width, 0); /*printf("bja1-gen: %d\n",gen); */ add_code("oooojpjo"); gen = 0; tmp = backjump_address; factor = 1; for (i=0;i<*min_rot_width;i++) { if (tmp % 3==1) { gen += 2*factor; }else{ gen += factor; } factor *= 3; tmp /= 3; } set_gen_init_03(gen, *min_rot_width, 0); /*printf("bja2-gen: %d\n",gen); */ add_code("oooojpjo"); add_code("oooooooooji"); if (backjump_address+1 >= c_start_offset + current_code_size) { while (backjump_address+1 > c_start_offset + current_code_size) { add_code("o"); } add_code("jo"); /*printf("bja: %d\n",backjump_address); */ break; } address_gen_size += c_start_offset + current_code_size - backjump_address; current_code_size = inner_reset_point; code[inner_reset_point] = 0; }while(1); } /* gehe zu ...10000, kehre danach sofort zurueck */ add_code("ooooojjojooj"); *min_rot_width *= 2; } } void add_code(const char* cd) { long long length = strlen(cd); code = (char*)realloc(code, current_code_size + length + 1); if (!code) { fprintf(stderr, "error: cannot reallocate memory\n"); exit(1); } memcpy(code+current_code_size,cd,length+1); current_code_size += length; } int main(int argc, char* argv[]) { int i; // GENERATED PROGRAM WILL PRINT THE CONTENT OF THE VARIABLE BELOW const char* out_string = 0; long long out_len = 0; if (argc > 1){ long long pos = 0; for (i=1;i0) pos--; out_s[pos]=0; out_string = out_s; out_len = pos; }else{ // If no command line arguments are given, read from STDIN. // Read 59.000 characters at most. long long pos = 0; long long cur_max_len = 65535; int result = 0; char* out_s = (char*)malloc(cur_max_len+1); if (!out_s) { fprintf(stderr, "error: cannot allocate memory\n"); return 1; } if (stdin == 0){ printf("error: cannot access STDIN\n"); return -1; } while (!feof(stdin)){ if (pos >= cur_max_len) { cur_max_len += 65536; out_s = (char*)realloc(out_s, cur_max_len+1); if (!out_s) { fprintf(stderr, "error: cannot reallocate memory\n"); return 1; } } result = fread(out_s+pos,1,1,stdin); if (result<0){ printf("error while reading from STDIN\n"); return -1; } if (result==0) break; pos++; } out_s[pos]=0; out_string = out_s; out_len = pos; } long long c = 19391; // oder aehnlich const char* init_module = "bCBA@?>=<;:9876543210/.-,I*)(E~%$#\"RQ}|{zyxwvutsrD0|nQl," "+*)(f%dF\"a3_^]\\[ZYXWVUTSRQJmNMLKJIHGFEDCBA@?>=<;:987654" "3210/.-,+*)('&%$#dc~}|_^yrwZutsrqpinPlOjihgf_dcEaD_^]\\UZ" "YX:V9TSRQPONGLK.IHGF?DCB$@#>=<;4987w/v3210/.-,+$k('&%|#\"" "!~w`{zyxwputslUponmlkjiKgf_Hcba`_^]\\[ZYXWP9TSRQPONMFKJCH" "A*EDCBA@?>=<|:98y6543210).-,%*#j'&%$#\"!~}|^ty\\wvutslkTo" "nmlkjcLafedc\\aD_X]\\[TY=<;49z" "765.3,+r/.-,l*)(!h%$#\"!~}|{zyxwvunWrqponmlkjihgfed]Fa`_^" "]\\[ZYXW9UTSRK4ONMLKJIHGFEDCBA@?8!<;:9876543210/.-,%l)('&" "%$#\"!~}|^t]xqvYnsrqpinQlejihafIdc\\a`Y^A\\[ZSXQ:8NSRQJ3N" "MLKJIHGFEDC%;$?8=<}49876543210qp',+*)('&%$#\"!b}`{zyrwpuX" "mrqpohmlOdihgfedcba`_^]\\?=S=<" ";:987654us+r/(-,m*#('&%$#\"!~a`{tyxwvutsrqpoRmPkjibg`eHcb" "[`_X]@UZYXWPUT7RKPONMLKJIHGFED'%;$?8=~;:387054u2+0/.-,+*)" "('&%$ecyb}v{z]xwputsrqponQPkjchgfedcba`_B]@[ZSXWPU8SLQPOH" "ML/JIBGFEDCBA@?>=<}{3z705v321*/(om%*)j'&}$#\"!~}|{zyxwZXn" "WrkpoRmlkdihgfedcFE`_^W\\[ZYXWVUT7R5PONGLEJ-HG@ED=B%@9>=<" "5:9z765.3210/.-,+*)jh~g${\"c~}v{zsxwZutslqponmlkjihgJH^Gb" "[`_B]\\[ZSXWVUTS65PONMFKJIHGFED'B%@?>7<5:9z7654-210/.-,+*" ")jh~g${dbx}|_zyxwputsrqponmlOMcLg`edGba`_^W\\[ZYX;:UTSRQJ" "ONMLKJI,G*EDCYXQVUNSR5PONMLKJIHG" "F?DCB%#9\"=6;:{876543210/.-&m*)j'&%$#\"!~}|{zs\\wZutslqjo" "RmfkjibgfIdcba`_^]\\[ZYRWV97M6QJ31GLK.IHGFEDCBA@?>7<;|z2y" "6/43t10/.-,+*)('&%|e\"!~a|{zyxwvutsrqpiRmlOjibgf_dGb[`_^W" "\\[>YXWVUTSRQPONMFK.,B+F?DC&A@?>=<;:98765.3tr*q.',+l)('&%" "$#\"!~}|{zs\\wvutWrqponmlkjihgfe^Gba`C^]\\UZSX;VUNSRKP3HM" "LKJCHG*EDCBA@?>=<;:981xv.u2+0/p-,+*)('&%$#\"!~w`^t]xqvuXs" "rqponmlkjihgfe^Gba`_^A\\[ZYXWVUTSRQPONG0KJIH+FED=B;@?\"=<" ";:9876543210/(o,l$k(!hf|#\"c~}|{zyxwvutsrqpiRmOeNibgfIdcb" "a`_^]\\[ZYXWVUN7RQPONM0KJIHGFEDCBA@?>=<5|98765v3,10/(-n%*" ")('~%$e\"!~}|{zyxwvutsrqjSnmOeNibgJe^cbaZ_^A\\[ZYXWVUTSRQ" "PONMF/JI+A*E>CB%@?>=<;:9876543210)p-,+*)('h%$#\"!~}|{zyxw" "vutslUponmlkNihg`e^cbE`_^]\\[ZYXWVUTSRQPI2MLK-C,G@E(CB;@?" "8=~;498705v-210/(om%*)j'&%$#\"!~}|{zyxwvunWrqpRhQlejiLgfe" "dcba`_^]\\[ZYXWVO87RQ4ONMLKJIHGFEDCBA@?>7~}:{876/4-2s0/(-" ",%*k\"'&%${\"!b}|{zyxwvutsrqponmleNihgfH^Gb[`C^]V[ZSXW:UT" "SRQPONMLKJIHGFED=&A@?>~6}:387x543210/.-,+*)('&%$#zc~a|{^y" "xwvutsrqponmlkjihg`IdGbE`_X]\\UZ=XQVUTMRQ4ONMLKJIHGFEDCBA" "@?>=6}:9876v.u2+0q.-,%*#jh~%$e\"!~}|{zyxwvutsrqpongPkjihg" "I_Hc\\a`C^]\\?TYYRWVUNS6KPONMFKJ-H" "GF)DCBA:?>!<;:9876543210/.n&m*#('h%$#d!~}|uzy\\wvutsrqpon" "mlkjiKaJe^cbED_XA\\[ZYXWVUTSR5PO21LE.IHGFEDCBA@?\"=~;:927" "05v32+0/(-n%*)('~%$ed!xa|{zyxwvutsrqponPfOjchgJId]Fa`_^]\\" "[ZYXWVUTS5K4OHML/.IHA*EDCBA@?>=<;:{87xw43,s0/.-,+*)('&%f" "#\"cb}|u^yxwvutsrqponmlkjLbKf_dcFE`_XA\\[ZYXWVUTSRQPONM/E" ".IBGF)(CBA:#>=<;:98765432s0/po,+*#j'&%$#\"!~}|{zy\\wZunsr" "qjoRglkjibgfIHcbaZC^]\\[ZYXWVUTSRQPON0F/JCH+F?DCB;@?\"!<;" ":3z76543210/.-,+*)('g}f#z!~a`{zyxqvutsrqponmlkjihKfeHGba`" "_X]\\[ZYXWVUTSRQPO2M0KJCHG@E(=BA@?8=<}|9876/43210/.-,+*)(" "'&%$#\"bxa|uzy\\[vutslqponmlkjihgfedcba`_AW@[TYX;:UTSRQJO" "NMLKJIHGFEDCB%@?\"!<;:9816543210/.-,+*)j'h%$#z!x}`uzyxwpu" "tWVqponmfkjihgfedcba`_^]\\[Z=" "<5:9876543210/.-,+*)i!h%|#\"cb}|{zyxqvutsrqponmlkjMhgJIdc" "ba`_X]\\[ZYXWVUTSRQ4O2MLKDIBG*ED=BA:?\"7<;:9276wv3210/.'," "+*)('&%$#\"!~}|{z\\r[votWrqjonglkNMhgfedc\\a`_^]\\[ZYXWVU" "TSRQ3I2MFKJ-,GFEDCBA:?>=<;:987654u21rq.-,+*)(!&%$#\"!~}|{" "zy\\wZutmrqjoRmfkjibgfIHcba`_^]V[ZYXWVUTSRQPONML.D-HAF)DC" "B;@9\"~6;:{z7654321*/.-,+*)('&%$#\"!~`v_zsxwvutmVqponmlkj" "ihgJedcbaZC^]\\[ZYXWVUT7R5PONGLEJ-HG@ED=B%@9>=<5:{27654-2" "10/.'n+*)('&%$#\"!~}|{]s\\wpuXsrqjohmPkdihg`edcbaZC^]\\[Z" "YXWVUTSRQP2H1LEJIHGFEDCBA:#>=<;:98765432+r/.-,+*)('&%$#zc" "~`v_zs\\ZputsrqponmleNiKaJe^cba`_^]\\[ZYRWVUTSRQPONMLKJIH" "GFEDCBA@?>=<;:98y65432s0/.-,+*)('&}$#\"!~}|{zyxwvutsrqpon" "mlkjihgfedcFa`_^]@[>YXWPUNSRQPONMLKJIBGFEDCBA@?>=<;:98765" "43210/.-,+*)(i&%$#\"!~}|^t]xqvutsrqponmlejihgfedcba`_^]\\" "[ZYXWVUTSRQPONMLK.IHGFEDCBA#9\"=6;:9876543210/(-,+*)('&%$" "#\"!~}|{zyxwvutsrqponQlkjihKfedcba`_^]\\[ZSXWVUTSRQPONMLK" "JIHGFEDCBA@?>=<;|98765v3t10).-&+l)\"'&%|#dy~}|{tyxwvutsrq" "ponmfkjihgfedcba`_^]\\[ZYXWVUTSRQPON1LKJIHGFED&<%@9>!<;49" "816w4-210).-,+*)('&%$#\"y~}|{zyxwvutsrqponmlkjihgfedcbaD_" "^]\\[ZYXW9O8SLQPONMLKJIHGFED=BA@?>=<;:9876543210/.-,+*)('" "&g$#\"!~a|{zyxwvutsrqpohmlkjihgfedcba`_^]\\[ZYXWVUTSRQ4ON" "MLK.I,GFE>C=<" ";:9870543210/.-,+*)('&%$#\"!~}|{zyxwZutsrqponmOeNibgfedcb" "a`_^]\\[ZYRWVUTSRQPONMLKJIHGFEDCBA@?>=<}:9876w43210/.-,+*" ")('&}$#\"!~}|{zyxwvutsrqponmlkjihgJedcbaD_^]\\[ZYXWVUTSRQ" "JONMLKJIHGFEDCBA@?>=<;:987654u210/.-,+*j\"i&}$e\"y~}|uz]r" "wvutmVTjonmlkjihgfedcbaZ_^]\\[ZYXWVUTSRQPONMLKJIHGFED'BA@" "?>=<;:z2y6/43210q(-,+*)('&%$#\"!~}|{zyxwvutsrqTonmlkNihgf" "eH]ba`_^]\\[ZYXWVUTSRQPONMLKJIH+FEDCB%@#>=6;:387654u,10/." "-,+*)('&%$#\"!~}|{zyxwvuXsrqponmlkMcLg`eHc\\a`_X]@UZYXWP9" "7MRQPON1FKJIHGFEDCBA@?>=<;:987654321r/.-,+*)('g}f#z!~}|{^" "yrwvutsrqponmlkjihgfedcba`_^A\\[ZYX;VUTSR5PINMLKJIHGFEDCB" "A@?>=<;:98765v3210/p-,+*)j'~%$#\"!~}|{zyxwvutsrqponmlkjMh" "gfedcba`BXA\\UZ=XWPUTMR5JONMLE.,BGFEDC&A:?>=<;:9876543210" "/.-,+*)('&g$#\"!~}|{z\\r[votsrqpSnmfkjihgfedcba`_^]\\[ZYX" "WVUTS6QPONM0KJIHG*ED=BA@?>=<;:9876543210/.-,+*k('&%$e\"c~" "}v{zsx[votsrkponmlOjibgfedcba`_^]\\[ZYXWVUTSRQPO2MLKJIHGF" "E'=&A:?\"=6;:9276543t10).-,+*)('&%$#\"!~}|{zyxwvutWrqponm" "lkjLbKf_dcba`C^]\\UZYXWVUTSRQPONMLKJIHGFEDC&A@?>=~;:987x5" "43,10/.-,+*)('&%$#\"!~}|{zyx[vutsrUponmlOjihafedcba`_^]\\" "[ZYXWVUTSRQPO2MLKJIHGFE'=&A:?\"=<;4927x5.321*/p',+*)\"ig}" "$#\"!~a|{zsxwvutsrqponmlkjihgfedcbaD_^]\\[ZYXW9O8SLQPONM0" "KJIHGFEDCB;@?>=<;:9876543210q.-,+*k('&%$e\"!~}|{zyxwputsr" "qponmlkjihgfeHcba`_B]@[ZYRWPU8SRKPOHM0KDIHG@E(=BA@?8=<;:9" "z76543210/.',+*)('&%$#\"!~}|{z]xwvutsrqpRhQlejMhg`ed]bE`Y" "^]\\UZ=RWVUTMRQPON1LKJIHGFEDC=<;:987654321r/.-,+*)('" "g}f#z!~}|{^yxwvutsrUjonmlkjihgfedcbE`_^]\\?ZYXWV9TSRQPONM" "0EJIHGFEDCBA@?>=~;:987x5v321*/(-n+$)('~%f{\"!~}v{zyxwZuts" "rqponQfkjihgfedcba`_^A\\[ZYXWVUT6L5PIN1LKJCHAF)D=BA@9>=<;" ":{87654321r).-,+*)('&%$#\"!b}|{zyxwvuWmVqjonmPeNihgfedcba" "`_^]\\[ZY=<;|98765v3t10/(-&+l)" "\"'&%|#dy~}|{tyxwZoXsrqponmlkjihgfedcFa`_^]\\[ZY;Q:UNSRQ4" "I2MLKJIHGFEDCBA@?>=~;:9876543s+r/(-,+l)\"'h%$#\"!~}|{zyxw" "vutsVqponmPkjiLg`eHcba`_^]\\[ZYXWVUTS6QPONM0K.IHG@E>C&A:?" ">=6;|38765.321r/(-n+*)('&%$#\"!~}|{zy\\wvutsrqpoQgPkdihgJ" "e^cFa`_^]\\[ZYXWVUTSRQ4ONMLKJIHG)?(C=<;:987x543210/.-m%l)\"'h}$#\"!x}" "|{^yxqZutsrqponmlkjihgfeHcba`_^]\\[=S=<;|98765v321r/.-&+l)('&%$#\"!~}|{zyxwZutsrqToRmlk" "dibgJed]baZ_BW\\[ZYRWVU8SRQJO2MLKJIHGFEDCBA@?>=~;:9876543" "s+r/(-,+l)('~%f#\"!~}|{zyxwvutsrqTonmlkjihgI_Hc\\a`_B]\\[" "ZYRW:UTSRQPONMLKJIHGFE(CBA@?\"=<;|98765.3t10/.-,+*)('&%$#" "\"!b}|{zy\\wZunsrqjoRglkjibgfeHcba`_X]@[ZYXWVUTSRQPONMLK." "IHGFEDCBA#9\"=6;|92765.321r/.-,+$)j'&%$#\"!~}|{zyxwvuXsrq" "ponmlkMcLg`edcFa`_^]\\U>YXWVUTSRQPONMLKJI,GFEDC&A@?\"=<;:" "981x543210/.-,+*)('&%f#\"!~}`{^yxwpunsVqpinmfkNchgfe^cbaD" "_^]\\[ZS=}5|92765v3210/.'n+*)(" "'&%$#\"!~}|{zy\\wvutsrqpoQgPkdihgJedcba`_^W@[ZYXWVUTSRQPO" "NMLK.IHGFE(CBA$?>=<;:981x543210/.-,+*)('&%f#\"!~}`{^yrwvu" "nsVkponmfkjiLgfedcba`YB]\\[ZYXWVUTSRQPONM0KJIHGFEDC%;$?8=" "~;49870543t10/.-,+*#j'&%$#\"!~}|{zyxwvuXsrqponmlkMcLg`edc" "Fa`_^]\\[ZYRW:UTSRQPONMLKJIHGFE(CBA@?\"=<;|987654321*/p-," "+*)('&%$#\"!~}|{^yxwvuXsVqpohmfkNihafe^cF[`_^]V[ZY=<;|987654321q)p-&+*)j'&%$#\"!~}v{^yx" "wvutsrqponmlkjiLgfedcba`_AW@[TYXW:UTSRQPONMLKDI,GFEDCBA@?" ">=<;:987x54321r/.-n+*)('&%$#\"!x}`{zyxwvutsrqponmlkNihgfe" "HcFaZ_^]V[>SXWVUNSRQ4ONMLKJIHGFE>C&A@?>=<;:987654321r/.-," "+*)('g}f#z!b}v{zyrwvuXsrqponmlkjibgJedcba`_^]\\[ZYXWVU8SR" "QPONMLK-C,G@EDC&A@?>=<;:9876/v3210/.-,+*)('&%$#d!~}|{^yxw" "ZutsrqponmlkjcLgfedcba`_^]\\[ZYXW:UTSRQ4O2MLKDIBG*ED=BA:?" "\"7<;:92765v3210/.-,+*)(!h%$#\"!~}|{zyxwvutsVqponmlkjiKaJ" "e^cbaD_^]\\[ZYXWVUTM6QPONMLKJIHGFEDCBA$?>=<;:987w/v3,10/p" "-,+*)('&%$#\"!x}`{zyxwvutsrqponmlkNihgfeHcbaD_^]\\[ZYXWVU" "TSLQ4ONMLKJIHGFEDCBA@?\"=<;:9z765v3210/.-,+*)('~%f#\"!~}|" "{zyxwvutsrqTonmlkjihgI_Hc\\ECY^]\\?ZYXWVUTSRQPONGL/JIHGFE" "DCBA@?>=<;:{876543210p(o,%*)(i&%$#\"!~}|{zyxwpYtsrqponmlk" "jihgfedGba`_^A\\[Z=XWVUTSRQPONMLKD-HGFEDCBA@?>=<;:98y6543" "2s0q.',+*#(i~%$#\"y~}|_zyxwvutsrqponmfOjihgfedcba`_^]\\[Z" "=XWVUTSRQP2H1LEJ-HAFED=BA@#>=<;:987654321*q.-,+*)('&%$#\"" "!~}|_zyxwvutsrTjSnglkjMhgfedcba`_^]\\[ZSX;VUTSRQPONMLKJIH" "GF)DCBA@#>=<}:9876543210/.-,%*k('&%$#\"!~}|{zyxwvYtsrqpSn" "QlkdihafI^cba`Y^]\\?ZYXWVUTSRQPONMLEJ-HGFEDCBA@?>=<;:98y6" "543210/.n&m*#('&g$#\"!~}|{zyxwvutmrUponmlkjihgfedcba`C^]\\" "[ZYXWV8N7RKPON1LKJIHGFEDCBA@?>=6}:9876543210/.-,+*k('&%$" "e\"!~a|{zyxwvutsrqponmfOjihgfedcba`_^]\\[Z=XWVUT7R5PONGLE" "J-HG@ED=B%:?>=<5:98y6543210/.-,+*)('~g$#\"!~}|{zyxwvutsrU" "ponmlkjihJ`Id]bE`_X]\\UZYX;VUTSRQPONMLKJIHG@)DCBA@?>=<;:9" "87654u210/.-,+*j\"i&}$#\"c~}|{zyxwvutsrqponglOjihgfedcba`" "_^]\\[Z=XWVUT7RQP3NMLKJIHGFEDCBA@?>7<}:9876543210/.-,+*k(" "'&%$e\"c~}|uzsx[votsrkponQlkjihgfedcba`_^]\\UZ=XWVUTSRQPO" "NMLKJIH+FEDCBA@?>~6}:3zx0543t10/.-,+*)('&%$#\"!x}`{zyxwvu" "tsrqponmlkNihgfedcbaCYB]V[ZY=<" ";:98765432+r/.-,+*)('&%$#\"!~}`{zyxwZutsVqponmlkjihgfedcb" "a`_^]\\[ZYXWVUTSRQPONMLE.IHGFEDCBA@?>=<;:9z76543t1r/.-&+$" ")j'~%$#z!bw|{zyrwvuXsrqponmlkjihgfedcba`_^]\\[ZYXWVUTSRQP" "ONG0KJIHGFEDCBA@?>=<;|987654321q)p-&+l)('~%|#d!x}|{ty\\qv" "utslqpoRmlkjihgfedcba`_^]\\[ZYXWVUTSRQPONMLKJIHA*EDCBA@?>" "=<;:98765v3210/.-,+k#j'~%$#d!~}|{zyxwvutsrqponmlkjihgfedc" "ba`_^]\\[ZYRW:UTSRQPONMLKJIHGFE(CBA@?\"=<;|9876543210/.-," "+*)('&%$#\"!~}|{zyxwvutsrqjoRmlkjihgfedcba`_^]@[ZYXW:U8SR" "QJOHM0KDIHG@E(=BA@?8=<;|9876543210/.-,+*)('&%$#\"!~}|{zyx" "wvutsrqjoRmlkjihgfedcba`_^]@[ZYXWVUTS5K4OHMLK.IHGFEDCBA@?" ">=<;:9876543210/.-,+*)('&%$#z!b}|{zyxwvutsrqponmPkjihgfed" "cE[D_X]\\[>YXWVUTSRQPONM0E.IHGFEDCBA@?>=<;:9z76543t10/p-," "+*)('&%$#\"!bw`{zyxwvutsrqponmlkNihgfeHcFa`_X]V[>YRWVUNS6" "KPONMFKJI,GFEDCBA@?>=<;|3z76543210/.-,+*)('h%$#\"!~}|{]s\\" "wputsVqponmlkjihgfeH]Fa`_^]\\[ZYXWVUTSRQ4ONMLKJIHG)?(C=~;:3z76543210/.-,+*)('h%$#\"!b}`{zyrwpuXslqpohm" "Pejihg`edcFa`_^]\\[ZYXWVU8SRK4ONMLKJIHGFEDCBA@?\"=<;:9876" "5u-t1*/p-,+$)\"'h%|#\"!x}`uzyxwputsVqponmlkjihgfeHcb[D_^]" "\\[ZYXWVUTSRQPO2MLKJIHGFE'=&A:?>=~;:9876543210/p-,+$)j'&%" "$#\"!~}|{zyxwvuXsrqpoRmlkNihgfedcba`_^]@[ZYRW:UTSRQPONMLK" "JIHGFE(CBA@?\"=~;:92705v3,10/(-n%*)('~%$#d!~}|{zyxwvutsVq" "pohmPkjihgfedcba`_^]\\[>YXWVUTSRQ3I2MFKJI,GFEDCBA@?>=<;|9" "8705v3210/.-,+*)('&%$#d!~}|{zyxwYoXslqpoRmlkjihgfedcbaD_^" "]\\U>YXWVUTSRQPONMLKJI,GFEDC&A@?\"=<;:987654321r/.-,%l)('" "&%$#\"!~}|{zyxwZutsrqToRmlkdibgJe^cbaZ_BW\\[ZYRWVU8SRQPON" "MLKJIHG*EDCB;$?>=<;:9876543210/p-,+*)('&%e{d!x}|{^yxwvuts" "rqponmPkjihaJedcba`_^]\\[ZYXWVU8SRQPONMLK-C,G@EDC&A@?>=<;" ":98765v3210/(-n+*)('&%$#\"!~}|{zy\\wvutsVqpoRmlkjihgfedcb" "aD_^]\\[TYYXWVUTS" "RQ3I2MFKJI,GFEDCBA@?>=<;|98765.3t10/.-,+*)('&%$#\"!b}|{zy" "xwvuWmVqjonmPkjihgfedcba`_B]\\[ZYXQ:UTSRQPONMLKJIHGFE(CBA" "@?\"=<;|9876543210/.-n+*)('&}f#\"!~}|{zyxwvutsrqTonmlkNiL" "gfe^c\\aD_X]\\[TY=<;:3z7654321" "0/.-,+*)('h%$#\"!~}|{]s\\wputsVqponmlkjihgfeHcba`_^W@[ZYX" "WVUTSRQPONMLK.IHGFEDCBA#9\"=6;:9z76543210/.-,+l)('&%$#z!b" "}|{zyxwvutsrqponmPkjihgJedcFa`_^]\\[ZYXWVU8SRQPONMFK.IHGF" "EDCBA@?>=<;:9z76543t1r/.-&+$)j'~%$#z!bw|{zyrwvuXsrqponmlk" "jihgJedcba`_X]@[ZYXWVUTSRQPONMLK.IHGFEDCBA#9\"=6;:9z76543" "210/.-,+l)('&%$#z!b}|{zyxwvutsrqponmPkjihgfedcE[D_X]\\[>Y" "XWVUTSRQPONM0KJIHGFED=&A@?>=<;:987654321r/.-,+l)('h%$#\"!" "~}|{zyxwZutsrqpongPkjihgfedcba`_^]\\[>YXWVU8S6QPOHMFK.IBG" "FE>C&;@?>=6;:9z76543210/.-,+l)('&%$#\"yb}|{zyxwvutsrqponm" "PkjihgfedcE[D_X]\\[>YXWVUTSRQPONM0KJIHGFED=&A@?>=<;:98765" "4321r/.-,+*)('g}f#z!~}`{zyxwvutsrqpoRmlkjihgfe^cFa`_^]\\[" "ZYXWVUTSRQ4ONMLK.IHG*EDCBA@?>=<;:9z76543210/(-n+*)('&%$#\"" "!~}|{zy\\wvutsVqTonmfkdiLgf_dc\\aD_X]\\[TY=<;:98705v3210/.-,+*)('&%$#d!~}|{zyxwYoXslqp" "oRmlkjihgfedcbaD_^]\\[ZYXWPU8SRQPONMLKJIHGFEDC&A@?>=<;:9y" "1x5.321r/.-,+*)('&%$#d!~}|{zyxwvoXsrqponmlkjihgfedcFa`_^]" "@[ZY=<;{3z70543t10/.-,+*)('&%f#\"!~}|{zyxqZutsr" "qponmlkjihgfeHcba`_^]\\[=S=<;:" "927x543210/.-,+*)('&%f#\"!~}`{zy\\wvutsrqponmlkNihgfedcba" "`_X]@[ZYXWVUTSRQPONMLK.IHGFE(C&A@?8=6;|98165.3t1*/.-&+l#(" "'&%|#\"!b}|{zyxwvutsrqTonmlkjihgfe^cFa`_^]\\[ZYXWVUTSRQ4O" "NMLKJIHG)?(CC7<;49z70543,1r).-,+$" ")('h%$#\"!~}|{zyxwZutsrqponmlkjihaJedcba`_^]\\[ZYXWVU8SRQ" "PONMLK-C,G@EDC&A@?>=<;:98765v3210/.-,+*)('&}f#\"!~}|{zyxw" "vutsrqTonmlkjihgI_Hc\\a`_B]\\[ZYXWVUTSRQ4ONMLKJIHGFEDCBA@" "?8=~;:9876543210/.-,+l)('&%f#\"!b}|{zyxwvutsrqTonmlkjihgf" "edcba`_X]@[ZYXWVUTSRQPONMLK.IHGFE(CBA$?>=<;:9876543t10/.-" ",+*)('&%$#\"!x}`{zyxwvutsrqponmlkNihgfedcbaCYB]V[>YXQVUNS" "6QJONMFK.CHGFE>'%;@?>!<;:9876543210q.-,+*)('&%$#\"!~}|uz]" "xwvutsrqponmlkjihKfedcba`_^@V?ZSXWV9TSRQPONMLKJIH+FEDCBA@" "?>=<;:98765.u210/.-,+*)('&%$#\"c~}|{z]xwvYtsrqponmlkjihKf" "edcba`_^]\\[ZYXWVUN7RQPONMLKJIHGFEDCB%@?>=<}:{876/4-2s*/." "-,%*)(i&%$#\"!~}|{zyx[vutsrqponmlkjihgfe^Gba`_^]\\[ZYXWVU" "TSR5PONMLKJIH*@)D=B%:?>=<5:98y6543210/.-,+*k('&%$#\"!~}|{" "zyxwvunWrqponmlkjihgfedcbE`_^]\\[ZYX:P9TMRQP3NMLKJIHGFEDC" "B%@?>=<;:9876543210/.',m*)('&%$#\"!~}|{zyx[vutsrUponQlkji" "hgfedcba`C^]\\[ZYXWVUTSRQPONMLEJ-HGFEDCBA@?>=<;:98y65432s" "0q(-,+*#('&g$#\"!~}|{zyxwvYtsrqponmlkjihgfedcb[`C^]\\[ZYX" "WVUTSRQPON1LKJIHGFED&<%@9>!6;:981654u210/.-,+*)('&g$#\"!~" "}|{zyxwvutsrqpinQlkjihgfedcba`_^]\\?ZYXWVUTSR4J3NGLKJ-HGF" "EDCBA@?>=<}:9876543210/.-,+*)('~g$#\"!~}|{zyxwvutsrUponml" "OjihKfedcba`_^]\\[Z=XWVUTSRQPONMLKJIHGFE>'BA@?>=<;:987654" "32s0/.-,m*k('&}${\"c~}v{zsxwvYtsrqponmlkjihKfedcba`_^]\\[" "ZYXWVUTSL5PONMLKJIHGFEDCBA@#>=<;:9876v.u2+rp(-,+l)('&%$#\"" "!~}|{^yxwvutsrqponmlkjihgf_Hcba`_^]\\[ZYXWVUTS6QPONMLKJI" "+A*E>CBA$?>=<;:9876543t10/.-,+*)('&%$#\"!~}|{ty\\wvutsrqp" "onmlkjihgJedcbaD_^]@[ZYXWVUTSRQPO2MLKJIHGFEDCBA@?>=<;:927" "x543210/.-,+*)('&%f#\"!~}`{^yxwpunsVqjonmfkjiLgfedcba`_^]" "\\[>YXWVUTSRQPONMLKJIHGFE>C&A@?>=<;:987654321r/.-,+*)('g}" "f#z!b}|uzyr[YotsrUponmlkjihgfedGba`_^]\\[ZYXWVUTSRQPONGL/" "JIHGFEDCBA@?>=<;:{876543210p(o,%*)(i&%$#\"!~}|{zyx[vutsrq" "ponmlkjihgfedcbaZC^]\\[ZYXWVUTSRQPON1LKJIH+FED'BA@?>=<;:9" "876w43210/.-,+*)('&%$#\"!~}v_zyxwvutsrqponmlkjMhgfedGbE`_" "^W\\UZYX;VUTSRQPONMLKJ-HGFEDCBA@?>=<;:9876543,s0/.-,+*)('" "&%$#\"!~a|{zyxwvutVlUpiRPfkjiLgfedcba`_^]\\[>YXWVUTSRQPON" "MLKJIHGFED=&A@?>=<;:987654321r/.-,+*)('g}f#z!~}`{zyxwvuts" "rqpoRmlkjihgfedcba`_^]\\[ZYXWPU8SRQPONMLKJIHGFEDC&A@?>=~;" ":9z76543210/.-,+l)('&%$#\"!~}|{zyxwvutsrqjoRmlkjihgfedcba" "`_^]@[ZYXW:UTS6QPONMLKJIHGFE(CBA@?>=<;:9876543210/.-&+l)(" "'&%$#\"!~}|{zyxwZutsrqponmOeNibgJedc\\aZCAW\\[Z=XWVUTSRQP" "ONML/JIHGFEDCBA@?>=<;:987654-2s0/.-,+*)('&%$#\"!~a|{zyxwv" "utVlUpinmlOjihgfedcba`_^A\\[ZYXWVUTSRQPONMLKJIHGFE>'BA@?>" "=<;:98765432s0/.-,m*)(i&%$#\"!~}|{zyx[vutsrqponmlkjihgfed" "cba`_XA\\[ZYXWVUTSRQPONML/JIHGF)DCB%@?>=<;:987654u210/.-," "+*)('&%$#\"!~}|{zyr[vutsrqponmlkjihgfIdcba`_^]\\>T=XQV9TS" "LQPIN1LEJIHAF)>CBA@9\"~6;:9z76543210/.-,+l)('&%$#\"!~}|{z" "yxwvutsrqpiRmlkjihgfedcba`_^]@[ZYXWVUTS5K4OHMLK.IHGFEDCBA" "@?>=~;:9876543210/.-,+*)('&%$#z!b}|{zyxwvutsrqponmPkjihgJ" "edcFa`_^]\\[ZYXWVU8SRQPONMLKJIHGFEDCBA@?>=<;49z76543210/." "-,+*)('h%$#\"!b}|{^yxwvutsrqponmPkjihgfedcba`_^]\\[ZYXWVU" "TSLQ4ONMLKJIHGFEDCBA@?\"=<;:98765u-t1*/.-n+*)('&%$#\"!~}`" "{zyxwvutsrqponmlkjihgfedc\\aD_^]\\[ZYXWVUTSRQPO2MLKJIHGFE" "'=&A:?>=~;:9876543210/p-,+*)('&%$#\"!~}|{zyxwvutsrkTonmlk" "jihgfedcba`_B]\\[ZY=<;:9876543" "210/.-,%l)('&%$#\"!~}|{zyxwZutsrqToRmlkdibgfeHcba`_^]\\[Z" "YXW:UTSRQPONMLKJIHGFEDCBA@?>=<5|9876543210/.-,+*)j'&%$#\"" "!~}_u^yrwZutmrqjoRmfkjibgJ_dcbaZCAW\\[Z=XWVUTSRQPONML/JIH" "GFEDCBA@?>=<;:987654321*q.-,+*)('&%$#\"!~}|_zyxwvutsrTjSn" "glkjMhgfedcba`_^]\\?ZYXWVUTSRQPONMLKJIHGFEDCBA@9>!<;:9876" "543210/.-,m*)('&g$#\"c~}|{zyxwvutsrUponmlkjihgfedcba`_^]\\" "[ZYXWVOT7RQPONMLKJIHGFEDCB%@?>=<}:{876/4-2s*/.-,%*)(i&%$" "#\"!~}|{zyx[vutsrqponmlkjihgfedcba`_^]\\UZ=XWVUTSRQPONMLK" "JIH+FEDCBA@?>~6}:38y654-2+0q(-,+*#('&g$#\"!~}|{zyxwvYtsrq" "ponmlkjihgfedcba`_^]\\[ZSX;VUTSRQPONMLKJIHGF)DCBA@?>=<|4{" "81654u210/.-,+*)('&g$#\"!~}|{zyxwvutsrqponmlkjihg`Idcba`_" "^]\\[ZYXWVUT7RQPON1LKJ-HGFEDCBA@?>=<}:9876543210/.-,+*)('" "&%$#\"!~}v_zyxwvutsrqponmlkjMhgfedGbE`_X]\\UZ=RWVUTMRQP3N" "MLKJIHGFEDCB%@?>=<;:9876543210/.-,+*)('&%|e\"!~}|{zyxwvut" "srqpSnmlkjihgfH^Gb[`_^A\\[ZYXWVUTSRQP3NMLKJIHGFEDCBA@?>=<" ";:9876543,s0/.-,+*)('&%$#\"!~a|{zyxwvutVlUpinmlOjihgfedcb" "a`_^A\\[ZYXWVUTSRQPONMLKJIHGFEDCBA@9>!<;:9876543210/.-,m*" ")('&g$#\"c~}|{zyxwvutsrUponmlkjihgfedcba`_^]\\[ZYXWVUTMR5" "PONMLKJIHGFEDCBA@#>=<;:{8y654-2+0q.-&+*#(i~%$#\"y~}|_zyxw" "vutsrqponQlkjihgfedcba`_^]\\[ZYXWVUTSRQPIN1LKJIHGFEDCBA@?" ">=<}:98765432r*q.',m*)\"'&}$#\"c~}|{zyxwvutsrUponmlkjihgf" "edcba`_^]\\[ZYXWVUTMR5PONMLKJIHGFEDCBA@#>=<;:9876v.u2+0/." "o,+*)('&%$#\"!~a|{zyxwvutsrqponmlkjihgfedcba`_XA\\[ZYXWVU" "TSRQPONML/JIHGF)DCB%@?>=<;:987654u210/.-,+*)('&%$#\"!~}|{" "zyxwvutslUponmlkjihgfedcba`C^]\\[Z=X;VUTMRKP3NMFKJCH+F?DC" "B;@?>!<;:9876543210q.-,+*)('&%$#\"!~}|{zyxwvutsrqpohQlkji" "hgfedcba`_^]\\?ZYXWVUTSR4J3NG0.DIHG*EDCBA@?>=<;:9z7654321" "0/.-,+*)('&%$#\"!~}|{zyxqZutsrqponmlkjihgfeHcba`_^]\\[=S<" "WPUTS6QPONMLKJIHGFE(CBA@?>=<;:9876543210/.-,+*)('&%|#d!~}" "|{zyxwvutsrqpoRmlkjiLgfeHcba`_^]\\[ZYXW:UTSRQPONMLKJIHGFE" "DCBA@?>=<;:98705v3210/.-,+*)('&%$#d!~}|{^y\\wvotslqTinmlk" "dihgJedcba`_^]\\[ZY=<;:927x543" "210/.-,+*)('&%f#\"!~}|{zy[qZunsrqTonmlkjihgfedcFa`_^]\\[Z" "YXWVUTSRQPONMLKJIHGFEDC=<;:9876543210/p-,+*)('&%e{d!" "x}|{^yxwvutsrqponmPkjihgfedcba`_^]\\[ZYXWVUTSRQPONMLE.IHG" "FEDCBA@?>=<;:9z76543t10/p-,+*)('&%$#\"!b}|{zyxwvutsrqponm" "lkjihgfedcba`_^W@[ZYXWVUTSRQPONMLK.IHGFE(C&A@?8=6;|98165." "3t+0/.-&+*)j'&%$#\"!~}|{zy\\wvutsrqponmlkjihgfedcba`_^]\\" "[ZYXQ:UTSRQPONMLKJIHGFE(CBA@?>=<;{3z705v32+0/(-,+l)('&%$#" "\"!~}|{^yxwvutsrqponmlkjihgfedcba`_^]\\[ZS=}5|92765v3210/.-,+*)('h%$#\"!~}|{zyxwvutsrqp" "onmlkjihgfedc\\aD_^]\\[ZYXWVUTSRQPO2MLKJI,GFE(CBA@?>=<;:9" "87x543210/.-,+*)('&%$#\"!~}|{zyxwvutslqTonmlkjihgfedcba`_" "B]\\[ZY=<;:9876543210/.-,+*)('" "&%|#d!~}|{zyxwvutsrqpoRmlkjihgfeG]FaZ_B]\\UZYRW:OTSRQJ31G" "LKJ-HGFEDCBA@?>=<}:9876543210/.-,+*)('&%$#\"!~}|{zyxqvYts" "rqponmlkjihgfedGba`_^]\\[Z=<;" ":9876543210/.-,+*)('&%$#\"!xa|{zyxwvutsrqponmlOjihgfIdcbE" "`_^]\\[ZYXWVUT7RQPONMLKJIHGFEDCBA@?>=<;:987654321*q.-,+*)" "('&%$#\"!~}|_zyxwvYtWrqjonglOdihgf_dcbE`_^]\\[ZYXWVUT7RQP" "ONMLKJIHGFEDCBA@?>=<;:987654321*q.-,+*)('&%$#\"!~}|_zyxwv" "utsrTjSnglkjMhgfedcba`_^]\\?ZYXWVUTSRQPONMLKJIHGFEDCBA@?>" "=<;:92y6543210/.-,+*)('&g$#\"!~}|{z\\r[votsrUponmlkjihgfe" "dGba`_^]\\[ZYXWVUTSRQPONMLKJIHGFEDCBA@9>!<;:9876543210/.-" ",m*)('&g$#\"c~}|{zyxwvutsrUponmlkjihgfedcba`_^]\\[ZYXWVUT" "SRQPONGL/JIHGFEDCBA@?>=<;:{87654u2s0/.',%*k('~%${\"cx}|{z" "sxwvYtsrqponmlkjihKfedcba`_^]\\[ZYXWVUTSRQPONMLKJIHGFED=B" "%@?>=<;:9876543210q.-,+*)('&f|e\"y~a|{tyxqvutWrqponmlkjih" "gfIdcba`_^]\\[ZYXWVUTSRQPONMLKJIHGFEDCB;@#>=<;:9876543210" "/.o,+*)('&%$dzc~w|{z]xwvutsrqponmlOjihgfedcba`_^]\\[ZYXWV" "UTSRQPONMLKJIHG@)DCBA@?>=<;:987654u210/.o,+*k('&%$#\"!~}|" "{z]xwvutsrqponmlkjihgfedcba`_^]\\[ZYXWVUN7RQPONMLKJIHGFED" "CB%@?>=<}:98y6543210/.-,+*k('&%$#\"!~}|{zyxwvutsrqponmlkj" "ihgfedc\\E`_^]\\[ZYXWVUTSRQP3NMLKJIHGF(>'B;@#>=<5:38y6/43" "2+0q(-,+*#jh~%$#d!~}|{zyxwvutsVqponmlkjihgfedcba`_^]\\[ZY" "XWVUTSRQPONG0KJIHGFEDCBA@?>=<;|98765v3210/.-,+*"; int needed_rotwidth = 10; code = (char*)malloc(1); if (!code) { fprintf(stderr, "error: cannot allocate memory\n"); return 1; } retry: code[0]=0; current_code_size=0; int min_rot_width = 10; inc_min_rotwidth(&min_rot_width, needed_rotwidth, c); int unicode; int len; int old_unicode = -1; const char* tmp = out_string; const char* end = out_string + out_len; do { unicode = 0; len = next_unicode(&unicode, tmp, end-tmp); if (unicode >= 0 && unicode == old_unicode) { add_code("= 0){ if (get_width(unicode) > min_rot_width) { needed_rotwidth = get_width(unicode); // restart process with new rotwidth goto retry; } int tmp = needed_rotwidth; initialize_memory_cell(unicode,c,min_rot_width, &needed_rotwidth); if (tmp != needed_rotwidth) { // restart process with new rotwidth goto retry; } } tmp += len; }while(len > 0 && tmp < end); add_code("v"); while ((current_code_size + c) % 94 != 17) { add_code("o"); } add_code("<<"); denormalize(code,c); printf("%s",init_module); printf("%s\n",code); } void initialize_memory_cell(long long value, long long c_start_offset, int min_rot_width, int* needed_rotwidth) { // generate cell_position in var2, value in var1, // return-address (c-register) in var3 // call ROTATION-MODULE // load C1, jump to [var2], crazy, jump to [var2], crazy, // jump to var1, rot, jump to [var2], crazy // continue... // alternative (fuer hello world): // generate value in var1, return-address (c-register) in var3 // call ROTATION-MODULE // jump to var1, rot, out // continue... // expect D=65 // generate only trits startig with ...0: // generate 2 by crz 2, 1 // generate 1 by crz 2, 2 // generate 0 by crz 1, 1 int i; for (i=0;i min_rot_width) { *needed_rotwidth = get_width(backjump_address); // error occured... } add_code("*oooooojpjoooooooojpjo"); long long gen = 0; long long tmp = backjump_address; long long factor = 1; while (tmp!=0) { if (tmp % 3==0) { gen += factor; }else{ gen += 2*factor; } factor *= 3; tmp /= 3; } set_gen_init_03(gen, min_rot_width, 0); //printf("bja1-gen: %d\n",gen); add_code("oooojpjo"); gen = 0; tmp = backjump_address; factor = 1; while (tmp!=0) { if (tmp % 3==1) { gen += 2*factor; }else{ gen += factor; } factor *= 3; tmp /= 3; } set_gen_init_03(gen, min_rot_width, 0); //printf("bja2-gen: %d\n",gen); add_code("oooojpjo"); add_code("oooooooooji"); if (backjump_address+1 >= c_start_offset + current_code_size) { while (backjump_address+1 > c_start_offset + current_code_size) { add_code("o"); } add_code("jo"); //printf("bja: %d\n",backjump_address); break; } address_gen_size += c_start_offset + current_code_size - backjump_address; current_code_size = reset_point; code[reset_point] = 0; }while(1); add_code("oooooj*j<"); } void set_gen_init_03(long long value, int width, int omit_last_rot) { int i; // expect: const-gen-module; address 54 == C1; A=C1 // if value == C1 // return(success) // expect D=65 add_code("*opjp"); int anything_set = 0; // D=68, A=C1 for (i=0;i