1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-09 21:37:31 +00:00

Implemented full -$7fff-$7fff range word sinus generator.

This commit is contained in:
jespergravgaard 2018-02-24 00:46:25 +01:00
parent 6702baa875
commit b3537e3b66
18 changed files with 5967 additions and 4670 deletions

View File

@ -151,8 +151,18 @@ public class AsmFragmentInstance {
}
@Override
public Object visitAsmLabel(KickCParser.AsmLabelContext ctx) {
program.addLine(new AsmLabel(ctx.getChild(0).getText()));
public Object visitAsmLabelName(KickCParser.AsmLabelNameContext ctx) {
program.addLine(new AsmLabel(ctx.NAME().getText()));
return null;
}
@Override
public Object visitAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx) {
String label = "!";
if(ctx.NAME()!=null) {
label = label + ctx.NAME().getText();
}
program.addLine(new AsmLabel(label));
return null;
}

View File

@ -1,12 +1,8 @@
ldx #3
!:
asl {z1}
rol {z1}+1
rol {z1}+2
rol {z1}+3
asl {z1}
rol {z1}+1
rol {z1}+2
rol {z1}+3
asl {z1}
rol {z1}+1
rol {z1}+2
rol {z1}+3
dex
bne !-

View File

@ -0,0 +1,10 @@
cpx #0
beq !e+
!:
asl {z1}
rol {z1}+1
rol {z1}+2
rol {z1}+3
dex
bne !-
!e:

View File

@ -0,0 +1,18 @@
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
lda {z2}+2
sta {z1}+2
lda {z2}+3
sta {z1}+3
cpx #0
beq !e+
!:
asl {z1}
rol {z1}+1
rol {z1}+2
rol {z1}+3
dex
bne !-
!e:

View File

@ -0,0 +1,18 @@
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
lda {z2}+2
sta {z1}+2
lda {z2}+3
sta {z1}+3
ldy {z3}
beq !e+
!:
asl {z1}
rol {z1}+1
rol {z1}+2
rol {z1}+3
dey
bne !-
!e:

View File

@ -0,0 +1,2 @@
lda {z1}+1
bmi {la1}

View File

@ -117,8 +117,8 @@ asmLine
;
asmLabel
: NAME ':'
| '!' ':'
: NAME ':' #asmLabelName
| '!' NAME? ':' #asmLabelMulti
;
asmInstruction
@ -177,7 +177,7 @@ fragment HEXDIGIT : [0-9a-fA-F];
NAME : NAME_START NAME_CHAR* ;
fragment NAME_START : [a-zA-Z_];
fragment NAME_CHAR : [a-zA-Z0-9_];
ASMREL: '!' [+-]* ;
ASMREL: '!' NAME_CHAR* [+-]+ ;
WS : [ \t\r\n]+ -> skip ;
COMMENT_LINE : '//' ~[\r\n]* -> skip ;

View File

@ -604,13 +604,25 @@ public class KickCBaseListener implements KickCListener {
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterAsmLabel(KickCParser.AsmLabelContext ctx) { }
@Override public void enterAsmLabelName(KickCParser.AsmLabelNameContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitAsmLabel(KickCParser.AsmLabelContext ctx) { }
@Override public void exitAsmLabelName(KickCParser.AsmLabelNameContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx) { }
/**
* {@inheritDoc}
*

View File

@ -360,7 +360,14 @@ public class KickCBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitAsmLabel(KickCParser.AsmLabelContext ctx) { return visitChildren(ctx); }
@Override public T visitAsmLabelName(KickCParser.AsmLabelNameContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*

View File

@ -123,7 +123,7 @@ public class KickCLexer extends Lexer {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2G\u02e8\b\1\4\2\t"+
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2G\u02ed\b\1\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@ -170,237 +170,240 @@ public class KickCLexer extends Lexer {
"\n?\r?\16?\u0295\3?\3?\6?\u029a\n?\r?\16?\u029b\5?\u029e\n?\3@\6@\u02a1"+
"\n@\r@\16@\u02a2\3A\3A\3A\3A\3A\5A\u02aa\nA\3A\6A\u02ad\nA\rA\16A\u02ae"+
"\3B\3B\3C\3C\3D\3D\3E\3E\7E\u02b9\nE\fE\16E\u02bc\13E\3F\3F\3G\3G\3H\3"+
"H\7H\u02c4\nH\fH\16H\u02c7\13H\3I\6I\u02ca\nI\rI\16I\u02cb\3I\3I\3J\3"+
"J\3J\3J\7J\u02d4\nJ\fJ\16J\u02d7\13J\3J\3J\3K\3K\3K\3K\7K\u02df\nK\fK"+
"\16K\u02e2\13K\3K\3K\3K\3K\3K\3\u02e0\2L\3\3\5\4\7\5\t\6\13\7\r\b\17\t"+
"\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27"+
"-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W"+
"-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u<w=y>{?}@\177A\u0081B\u0083"+
"\2\u0085\2\u0087\2\u0089C\u008b\2\u008d\2\u008fD\u0091E\u0093F\u0095G"+
"\3\2\r\3\2$$\3\2))\4\2DDdd\3\2\62\63\3\2\62;\5\2\62;CHch\5\2C\\aac|\6"+
"\2\62;C\\aac|\4\2--//\5\2\13\f\17\17\"\"\4\2\f\f\17\17\2\u034e\2\3\3\2"+
"\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17"+
"\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2"+
"\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3"+
"\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3"+
"\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2"+
"=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3"+
"\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2"+
"\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2"+
"c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3"+
"\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2"+
"\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0089\3\2\2\2\2\u008f\3"+
"\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\3\u0097\3\2\2\2"+
"\5\u009e\3\2\2\2\7\u00a0\3\2\2\2\t\u00a2\3\2\2\2\13\u00a4\3\2\2\2\r\u00a6"+
"\3\2\2\2\17\u00a8\3\2\2\2\21\u00aa\3\2\2\2\23\u00ac\3\2\2\2\25\u00b2\3"+
"\2\2\2\27\u00b8\3\2\2\2\31\u00c1\3\2\2\2\33\u00c4\3\2\2\2\35\u00c9\3\2"+
"\2\2\37\u00cf\3\2\2\2!\u00d2\3\2\2\2#\u00d6\3\2\2\2%\u00dd\3\2\2\2\'\u00e1"+
"\3\2\2\2)\u00e3\3\2\2\2+\u00e6\3\2\2\2-\u00ed\3\2\2\2/\u00ef\3\2\2\2\61"+
"\u00f1\3\2\2\2\63\u00f3\3\2\2\2\65\u00f6\3\2\2\2\67\u00f9\3\2\2\29\u00fb"+
"\3\2\2\2;\u00fd\3\2\2\2=\u00ff\3\2\2\2?\u0101\3\2\2\2A\u0103\3\2\2\2C"+
"\u0106\3\2\2\2E\u0109\3\2\2\2G\u010b\3\2\2\2I\u010d\3\2\2\2K\u010f\3\2"+
"\2\2M\u0111\3\2\2\2O\u0114\3\2\2\2Q\u0117\3\2\2\2S\u011a\3\2\2\2U\u011d"+
"\3\2\2\2W\u0120\3\2\2\2Y\u0123\3\2\2\2[\u0126\3\2\2\2]\u0128\3\2\2\2_"+
"\u012a\3\2\2\2a\u012d\3\2\2\2c\u0130\3\2\2\2e\u0136\3\2\2\2g\u0216\3\2"+
"\2\2i\u0230\3\2\2\2k\u0232\3\2\2\2m\u023d\3\2\2\2o\u024e\3\2\2\2q\u0252"+
"\3\2\2\2s\u0257\3\2\2\2u\u025e\3\2\2\2w\u026f\3\2\2\2y\u027d\3\2\2\2{"+
"\u028e\3\2\2\2}\u029d\3\2\2\2\177\u02a0\3\2\2\2\u0081\u02a9\3\2\2\2\u0083"+
"\u02b0\3\2\2\2\u0085\u02b2\3\2\2\2\u0087\u02b4\3\2\2\2\u0089\u02b6\3\2"+
"\2\2\u008b\u02bd\3\2\2\2\u008d\u02bf\3\2\2\2\u008f\u02c1\3\2\2\2\u0091"+
"\u02c9\3\2\2\2\u0093\u02cf\3\2\2\2\u0095\u02da\3\2\2\2\u0097\u0098\7k"+
"\2\2\u0098\u0099\7o\2\2\u0099\u009a\7r\2\2\u009a\u009b\7q\2\2\u009b\u009c"+
"\7t\2\2\u009c\u009d\7v\2\2\u009d\4\3\2\2\2\u009e\u009f\7*\2\2\u009f\6"+
"\3\2\2\2\u00a0\u00a1\7+\2\2\u00a1\b\3\2\2\2\u00a2\u00a3\7}\2\2\u00a3\n"+
"\3\2\2\2\u00a4\u00a5\7\177\2\2\u00a5\f\3\2\2\2\u00a6\u00a7\7.\2\2\u00a7"+
"\16\3\2\2\2\u00a8\u00a9\7?\2\2\u00a9\20\3\2\2\2\u00aa\u00ab\7=\2\2\u00ab"+
"\22\3\2\2\2\u00ac\u00ad\7e\2\2\u00ad\u00ae\7q\2\2\u00ae\u00af\7p\2\2\u00af"+
"\u00b0\7u\2\2\u00b0\u00b1\7v\2\2\u00b1\24\3\2\2\2\u00b2\u00b3\7c\2\2\u00b3"+
"\u00b4\7n\2\2\u00b4\u00b5\7k\2\2\u00b5\u00b6\7i\2\2\u00b6\u00b7\7p\2\2"+
"\u00b7\26\3\2\2\2\u00b8\u00b9\7t\2\2\u00b9\u00ba\7g\2\2\u00ba\u00bb\7"+
"i\2\2\u00bb\u00bc\7k\2\2\u00bc\u00bd\7u\2\2\u00bd\u00be\7v\2\2\u00be\u00bf"+
"\7g\2\2\u00bf\u00c0\7t\2\2\u00c0\30\3\2\2\2\u00c1\u00c2\7k\2\2\u00c2\u00c3"+
"\7h\2\2\u00c3\32\3\2\2\2\u00c4\u00c5\7g\2\2\u00c5\u00c6\7n\2\2\u00c6\u00c7"+
"\7u\2\2\u00c7\u00c8\7g\2\2\u00c8\34\3\2\2\2\u00c9\u00ca\7y\2\2\u00ca\u00cb"+
"\7j\2\2\u00cb\u00cc\7k\2\2\u00cc\u00cd\7n\2\2\u00cd\u00ce\7g\2\2\u00ce"+
"\36\3\2\2\2\u00cf\u00d0\7f\2\2\u00d0\u00d1\7q\2\2\u00d1 \3\2\2\2\u00d2"+
"\u00d3\7h\2\2\u00d3\u00d4\7q\2\2\u00d4\u00d5\7t\2\2\u00d5\"\3\2\2\2\u00d6"+
"\u00d7\7t\2\2\u00d7\u00d8\7g\2\2\u00d8\u00d9\7v\2\2\u00d9\u00da\7w\2\2"+
"\u00da\u00db\7t\2\2\u00db\u00dc\7p\2\2\u00dc$\3\2\2\2\u00dd\u00de\7c\2"+
"\2\u00de\u00df\7u\2\2\u00df\u00e0\7o\2\2\u00e0&\3\2\2\2\u00e1\u00e2\7"+
"<\2\2\u00e2(\3\2\2\2\u00e3\u00e4\7\60\2\2\u00e4\u00e5\7\60\2\2\u00e5*"+
"\3\2\2\2\u00e6\u00e7\7u\2\2\u00e7\u00e8\7k\2\2\u00e8\u00e9\7i\2\2\u00e9"+
"\u00ea\7p\2\2\u00ea\u00eb\7g\2\2\u00eb\u00ec\7f\2\2\u00ec,\3\2\2\2\u00ed"+
"\u00ee\7,\2\2\u00ee.\3\2\2\2\u00ef\u00f0\7]\2\2\u00f0\60\3\2\2\2\u00f1"+
"\u00f2\7_\2\2\u00f2\62\3\2\2\2\u00f3\u00f4\7/\2\2\u00f4\u00f5\7/\2\2\u00f5"+
"\64\3\2\2\2\u00f6\u00f7\7-\2\2\u00f7\u00f8\7-\2\2\u00f8\66\3\2\2\2\u00f9"+
"\u00fa\7-\2\2\u00fa8\3\2\2\2\u00fb\u00fc\7/\2\2\u00fc:\3\2\2\2\u00fd\u00fe"+
"\7#\2\2\u00fe<\3\2\2\2\u00ff\u0100\7(\2\2\u0100>\3\2\2\2\u0101\u0102\7"+
"\u0080\2\2\u0102@\3\2\2\2\u0103\u0104\7@\2\2\u0104\u0105\7@\2\2\u0105"+
"B\3\2\2\2\u0106\u0107\7>\2\2\u0107\u0108\7>\2\2\u0108D\3\2\2\2\u0109\u010a"+
"\7\61\2\2\u010aF\3\2\2\2\u010b\u010c\7\'\2\2\u010cH\3\2\2\2\u010d\u010e"+
"\7>\2\2\u010eJ\3\2\2\2\u010f\u0110\7@\2\2\u0110L\3\2\2\2\u0111\u0112\7"+
"?\2\2\u0112\u0113\7?\2\2\u0113N\3\2\2\2\u0114\u0115\7#\2\2\u0115\u0116"+
"\7?\2\2\u0116P\3\2\2\2\u0117\u0118\7>\2\2\u0118\u0119\7@\2\2\u0119R\3"+
"\2\2\2\u011a\u011b\7>\2\2\u011b\u011c\7?\2\2\u011cT\3\2\2\2\u011d\u011e"+
"\7?\2\2\u011e\u011f\7>\2\2\u011fV\3\2\2\2\u0120\u0121\7@\2\2\u0121\u0122"+
"\7?\2\2\u0122X\3\2\2\2\u0123\u0124\7?\2\2\u0124\u0125\7@\2\2\u0125Z\3"+
"\2\2\2\u0126\u0127\7`\2\2\u0127\\\3\2\2\2\u0128\u0129\7~\2\2\u0129^\3"+
"\2\2\2\u012a\u012b\7(\2\2\u012b\u012c\7(\2\2\u012c`\3\2\2\2\u012d\u012e"+
"\7~\2\2\u012e\u012f\7~\2\2\u012fb\3\2\2\2\u0130\u0131\7\60\2\2\u0131\u0132"+
"\7d\2\2\u0132\u0133\7{\2\2\u0133\u0134\7v\2\2\u0134\u0135\7g\2\2\u0135"+
"d\3\2\2\2\u0136\u0137\7%\2\2\u0137f\3\2\2\2\u0138\u0139\7d\2\2\u0139\u013a"+
"\7t\2\2\u013a\u0217\7m\2\2\u013b\u013c\7q\2\2\u013c\u013d\7t\2\2\u013d"+
"\u0217\7c\2\2\u013e\u013f\7m\2\2\u013f\u0140\7k\2\2\u0140\u0217\7n\2\2"+
"\u0141\u0142\7u\2\2\u0142\u0143\7n\2\2\u0143\u0217\7q\2\2\u0144\u0145"+
"\7p\2\2\u0145\u0146\7q\2\2\u0146\u0217\7r\2\2\u0147\u0148\7c\2\2\u0148"+
"\u0149\7u\2\2\u0149\u0217\7n\2\2\u014a\u014b\7r\2\2\u014b\u014c\7j\2\2"+
"\u014c\u0217\7r\2\2\u014d\u014e\7c\2\2\u014e\u014f\7p\2\2\u014f\u0217"+
"\7e\2\2\u0150\u0151\7d\2\2\u0151\u0152\7r\2\2\u0152\u0217\7n\2\2\u0153"+
"\u0154\7e\2\2\u0154\u0155\7n\2\2\u0155\u0217\7e\2\2\u0156\u0157\7l\2\2"+
"\u0157\u0158\7u\2\2\u0158\u0217\7t\2\2\u0159\u015a\7c\2\2\u015a\u015b"+
"\7p\2\2\u015b\u0217\7f\2\2\u015c\u015d\7t\2\2\u015d\u015e\7n\2\2\u015e"+
"\u0217\7c\2\2\u015f\u0160\7d\2\2\u0160\u0161\7k\2\2\u0161\u0217\7v\2\2"+
"\u0162\u0163\7t\2\2\u0163\u0164\7q\2\2\u0164\u0217\7n\2\2\u0165\u0166"+
"\7r\2\2\u0166\u0167\7n\2\2\u0167\u0217\7c\2\2\u0168\u0169\7r\2\2\u0169"+
"\u016a\7n\2\2\u016a\u0217\7r\2\2\u016b\u016c\7d\2\2\u016c\u016d\7o\2\2"+
"\u016d\u0217\7k\2\2\u016e\u016f\7u\2\2\u016f\u0170\7g\2\2\u0170\u0217"+
"\7e\2\2\u0171\u0172\7t\2\2\u0172\u0173\7v\2\2\u0173\u0217\7k\2\2\u0174"+
"\u0175\7g\2\2\u0175\u0176\7q\2\2\u0176\u0217\7t\2\2\u0177\u0178\7u\2\2"+
"\u0178\u0179\7t\2\2\u0179\u0217\7g\2\2\u017a\u017b\7n\2\2\u017b\u017c"+
"\7u\2\2\u017c\u0217\7t\2\2\u017d\u017e\7r\2\2\u017e\u017f\7j\2\2\u017f"+
"\u0217\7c\2\2\u0180\u0181\7c\2\2\u0181\u0182\7n\2\2\u0182\u0217\7t\2\2"+
"\u0183\u0184\7l\2\2\u0184\u0185\7o\2\2\u0185\u0217\7r\2\2\u0186\u0187"+
"\7d\2\2\u0187\u0188\7x\2\2\u0188\u0217\7e\2\2\u0189\u018a\7e\2\2\u018a"+
"\u018b\7n\2\2\u018b\u0217\7k\2\2\u018c\u018d\7t\2\2\u018d\u018e\7v\2\2"+
"\u018e\u0217\7u\2\2\u018f\u0190\7c\2\2\u0190\u0191\7f\2\2\u0191\u0217"+
"\7e\2\2\u0192\u0193\7t\2\2\u0193\u0194\7t\2\2\u0194\u0217\7c\2\2\u0195"+
"\u0196\7d\2\2\u0196\u0197\7x\2\2\u0197\u0217\7u\2\2\u0198\u0199\7u\2\2"+
"\u0199\u019a\7g\2\2\u019a\u0217\7k\2\2\u019b\u019c\7u\2\2\u019c\u019d"+
"\7c\2\2\u019d\u0217\7z\2\2\u019e\u019f\7u\2\2\u019f\u01a0\7v\2\2\u01a0"+
"\u0217\7{\2\2\u01a1\u01a2\7u\2\2\u01a2\u01a3\7v\2\2\u01a3\u0217\7c\2\2"+
"\u01a4\u01a5\7u\2\2\u01a5\u01a6\7v\2\2\u01a6\u0217\7z\2\2\u01a7\u01a8"+
"\7f\2\2\u01a8\u01a9\7g\2\2\u01a9\u0217\7{\2\2\u01aa\u01ab\7v\2\2\u01ab"+
"\u01ac\7z\2\2\u01ac\u0217\7c\2\2\u01ad\u01ae\7z\2\2\u01ae\u01af\7c\2\2"+
"\u01af\u0217\7c\2\2\u01b0\u01b1\7d\2\2\u01b1\u01b2\7e\2\2\u01b2\u0217"+
"\7e\2\2\u01b3\u01b4\7c\2\2\u01b4\u01b5\7j\2\2\u01b5\u0217\7z\2\2\u01b6"+
"\u01b7\7v\2\2\u01b7\u01b8\7{\2\2\u01b8\u0217\7c\2\2\u01b9\u01ba\7v\2\2"+
"\u01ba\u01bb\7z\2\2\u01bb\u0217\7u\2\2\u01bc\u01bd\7v\2\2\u01bd\u01be"+
"\7c\2\2\u01be\u0217\7u\2\2\u01bf\u01c0\7u\2\2\u01c0\u01c1\7j\2\2\u01c1"+
"\u0217\7{\2\2\u01c2\u01c3\7u\2\2\u01c3\u01c4\7j\2\2\u01c4\u0217\7z\2\2"+
"\u01c5\u01c6\7n\2\2\u01c6\u01c7\7f\2\2\u01c7\u0217\7{\2\2\u01c8\u01c9"+
"\7n\2\2\u01c9\u01ca\7f\2\2\u01ca\u0217\7c\2\2\u01cb\u01cc\7n\2\2\u01cc"+
"\u01cd\7f\2\2\u01cd\u0217\7z\2\2\u01ce\u01cf\7n\2\2\u01cf\u01d0\7c\2\2"+
"\u01d0\u0217\7z\2\2\u01d1\u01d2\7v\2\2\u01d2\u01d3\7c\2\2\u01d3\u0217"+
"\7{\2\2\u01d4\u01d5\7v\2\2\u01d5\u01d6\7c\2\2\u01d6\u0217\7z\2\2\u01d7"+
"\u01d8\7d\2\2\u01d8\u01d9\7e\2\2\u01d9\u0217\7u\2\2\u01da\u01db\7e\2\2"+
"\u01db\u01dc\7n\2\2\u01dc\u0217\7x\2\2\u01dd\u01de\7v\2\2\u01de\u01df"+
"\7u\2\2\u01df\u0217\7z\2\2\u01e0\u01e1\7n\2\2\u01e1\u01e2\7c\2\2\u01e2"+
"\u0217\7u\2\2\u01e3\u01e4\7e\2\2\u01e4\u01e5\7r\2\2\u01e5\u0217\7{\2\2"+
"\u01e6\u01e7\7e\2\2\u01e7\u01e8\7o\2\2\u01e8\u0217\7r\2\2\u01e9\u01ea"+
"\7e\2\2\u01ea\u01eb\7r\2\2\u01eb\u0217\7z\2\2\u01ec\u01ed\7f\2\2\u01ed"+
"\u01ee\7e\2\2\u01ee\u0217\7r\2\2\u01ef\u01f0\7f\2\2\u01f0\u01f1\7g\2\2"+
"\u01f1\u0217\7e\2\2\u01f2\u01f3\7k\2\2\u01f3\u01f4\7p\2\2\u01f4\u0217"+
"\7e\2\2\u01f5\u01f6\7c\2\2\u01f6\u01f7\7z\2\2\u01f7\u0217\7u\2\2\u01f8"+
"\u01f9\7d\2\2\u01f9\u01fa\7p\2\2\u01fa\u0217\7g\2\2\u01fb\u01fc\7e\2\2"+
"\u01fc\u01fd\7n\2\2\u01fd\u0217\7f\2\2\u01fe\u01ff\7u\2\2\u01ff\u0200"+
"\7d\2\2\u0200\u0217\7e\2\2\u0201\u0202\7k\2\2\u0202\u0203\7u\2\2\u0203"+
"\u0217\7e\2\2\u0204\u0205\7k\2\2\u0205\u0206\7p\2\2\u0206\u0217\7z\2\2"+
"\u0207\u0208\7d\2\2\u0208\u0209\7g\2\2\u0209\u0217\7s\2\2\u020a\u020b"+
"\7u\2\2\u020b\u020c\7g\2\2\u020c\u0217\7f\2\2\u020d\u020e\7f\2\2\u020e"+
"\u020f\7g\2\2\u020f\u0217\7z\2\2\u0210\u0211\7k\2\2\u0211\u0212\7p\2\2"+
"\u0212\u0217\7{\2\2\u0213\u0214\7t\2\2\u0214\u0215\7q\2\2\u0215\u0217"+
"\7t\2\2\u0216\u0138\3\2\2\2\u0216\u013b\3\2\2\2\u0216\u013e\3\2\2\2\u0216"+
"\u0141\3\2\2\2\u0216\u0144\3\2\2\2\u0216\u0147\3\2\2\2\u0216\u014a\3\2"+
"\2\2\u0216\u014d\3\2\2\2\u0216\u0150\3\2\2\2\u0216\u0153\3\2\2\2\u0216"+
"\u0156\3\2\2\2\u0216\u0159\3\2\2\2\u0216\u015c\3\2\2\2\u0216\u015f\3\2"+
"\2\2\u0216\u0162\3\2\2\2\u0216\u0165\3\2\2\2\u0216\u0168\3\2\2\2\u0216"+
"\u016b\3\2\2\2\u0216\u016e\3\2\2\2\u0216\u0171\3\2\2\2\u0216\u0174\3\2"+
"\2\2\u0216\u0177\3\2\2\2\u0216\u017a\3\2\2\2\u0216\u017d\3\2\2\2\u0216"+
"\u0180\3\2\2\2\u0216\u0183\3\2\2\2\u0216\u0186\3\2\2\2\u0216\u0189\3\2"+
"\2\2\u0216\u018c\3\2\2\2\u0216\u018f\3\2\2\2\u0216\u0192\3\2\2\2\u0216"+
"\u0195\3\2\2\2\u0216\u0198\3\2\2\2\u0216\u019b\3\2\2\2\u0216\u019e\3\2"+
"\2\2\u0216\u01a1\3\2\2\2\u0216\u01a4\3\2\2\2\u0216\u01a7\3\2\2\2\u0216"+
"\u01aa\3\2\2\2\u0216\u01ad\3\2\2\2\u0216\u01b0\3\2\2\2\u0216\u01b3\3\2"+
"\2\2\u0216\u01b6\3\2\2\2\u0216\u01b9\3\2\2\2\u0216\u01bc\3\2\2\2\u0216"+
"\u01bf\3\2\2\2\u0216\u01c2\3\2\2\2\u0216\u01c5\3\2\2\2\u0216\u01c8\3\2"+
"\2\2\u0216\u01cb\3\2\2\2\u0216\u01ce\3\2\2\2\u0216\u01d1\3\2\2\2\u0216"+
"\u01d4\3\2\2\2\u0216\u01d7\3\2\2\2\u0216\u01da\3\2\2\2\u0216\u01dd\3\2"+
"\2\2\u0216\u01e0\3\2\2\2\u0216\u01e3\3\2\2\2\u0216\u01e6\3\2\2\2\u0216"+
"\u01e9\3\2\2\2\u0216\u01ec\3\2\2\2\u0216\u01ef\3\2\2\2\u0216\u01f2\3\2"+
"\2\2\u0216\u01f5\3\2\2\2\u0216\u01f8\3\2\2\2\u0216\u01fb\3\2\2\2\u0216"+
"\u01fe\3\2\2\2\u0216\u0201\3\2\2\2\u0216\u0204\3\2\2\2\u0216\u0207\3\2"+
"\2\2\u0216\u020a\3\2\2\2\u0216\u020d\3\2\2\2\u0216\u0210\3\2\2\2\u0216"+
"\u0213\3\2\2\2\u0217h\3\2\2\2\u0218\u0219\7d\2\2\u0219\u021a\7{\2\2\u021a"+
"\u021b\7v\2\2\u021b\u0231\7g\2\2\u021c\u021d\7y\2\2\u021d\u021e\7q\2\2"+
"\u021e\u021f\7t\2\2\u021f\u0231\7f\2\2\u0220\u0221\7f\2\2\u0221\u0222"+
"\7y\2\2\u0222\u0223\7q\2\2\u0223\u0224\7t\2\2\u0224\u0231\7f\2\2\u0225"+
"\u0226\7d\2\2\u0226\u0227\7q\2\2\u0227\u0228\7q\2\2\u0228\u0229\7n\2\2"+
"\u0229\u022a\7g\2\2\u022a\u022b\7c\2\2\u022b\u0231\7p\2\2\u022c\u022d"+
"\7x\2\2\u022d\u022e\7q\2\2\u022e\u022f\7k\2\2\u022f\u0231\7f\2\2\u0230"+
"\u0218\3\2\2\2\u0230\u021c\3\2\2\2\u0230\u0220\3\2\2\2\u0230\u0225\3\2"+
"\2\2\u0230\u022c\3\2\2\2\u0231j\3\2\2\2\u0232\u0238\7$\2\2\u0233\u0234"+
"\7^\2\2\u0234\u0237\7$\2\2\u0235\u0237\n\2\2\2\u0236\u0233\3\2\2\2\u0236"+
"\u0235\3\2\2\2\u0237\u023a\3\2\2\2\u0238\u0236\3\2\2\2\u0238\u0239\3\2"+
"\2\2\u0239\u023b\3\2\2\2\u023a\u0238\3\2\2\2\u023b\u023c\7$\2\2\u023c"+
"l\3\2\2\2\u023d\u0241\7)\2\2\u023e\u023f\7^\2\2\u023f\u0242\7)\2\2\u0240"+
"\u0242\n\3\2\2\u0241\u023e\3\2\2\2\u0241\u0240\3\2\2\2\u0242\u0243\3\2"+
"\2\2\u0243\u0244\7)\2\2\u0244n\3\2\2\2\u0245\u0246\7v\2\2\u0246\u0247"+
"\7t\2\2\u0247\u0248\7w\2\2\u0248\u024f\7g\2\2\u0249\u024a\7h\2\2\u024a"+
"\u024b\7c\2\2\u024b\u024c\7n\2\2\u024c\u024d\7u\2\2\u024d\u024f\7g\2\2"+
"\u024e\u0245\3\2\2\2\u024e\u0249\3\2\2\2\u024fp\3\2\2\2\u0250\u0253\5"+
"s:\2\u0251\u0253\5{>\2\u0252\u0250\3\2\2\2\u0252\u0251\3\2\2\2\u0253r"+
"\3\2\2\2\u0254\u0258\5u;\2\u0255\u0258\5w<\2\u0256\u0258\5y=\2\u0257\u0254"+
"\3\2\2\2\u0257\u0255\3\2\2\2\u0257\u0256\3\2\2\2\u0258t\3\2\2\2\u0259"+
"\u025f\7\'\2\2\u025a\u025b\7\62\2\2\u025b\u025f\7d\2\2\u025c\u025d\7\62"+
"\2\2\u025d\u025f\7D\2\2\u025e\u0259\3\2\2\2\u025e\u025a\3\2\2\2\u025e"+
"\u025c\3\2\2\2\u025f\u0263\3\2\2\2\u0260\u0262\5\u0083B\2\u0261\u0260"+
"\3\2\2\2\u0262\u0265\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2\2\2\u0264"+
"\u0266\3\2\2\2\u0265\u0263\3\2\2\2\u0266\u0268\7\60\2\2\u0267\u0269\5"+
"\u0083B\2\u0268\u0267\3\2\2\2\u0269\u026a\3\2\2\2\u026a\u0268\3\2\2\2"+
"\u026a\u026b\3\2\2\2\u026bv\3\2\2\2\u026c\u026e\5\u0085C\2\u026d\u026c"+
"\3\2\2\2\u026e\u0271\3\2\2\2\u026f\u026d\3\2\2\2\u026f\u0270\3\2\2\2\u0270"+
"\u0272\3\2\2\2\u0271\u026f\3\2\2\2\u0272\u0274\7\60\2\2\u0273\u0275\5"+
"\u0085C\2\u0274\u0273\3\2\2\2\u0275\u0276\3\2\2\2\u0276\u0274\3\2\2\2"+
"\u0276\u0277\3\2\2\2\u0277x\3\2\2\2\u0278\u027e\7&\2\2\u0279\u027a\7\62"+
"\2\2\u027a\u027e\7z\2\2\u027b\u027c\7\62\2\2\u027c\u027e\7Z\2\2\u027d"+
"\u0278\3\2\2\2\u027d\u0279\3\2\2\2\u027d\u027b\3\2\2\2\u027e\u0282\3\2"+
"\2\2\u027f\u0281\5\u0087D\2\u0280\u027f\3\2\2\2\u0281\u0284\3\2\2\2\u0282"+
"\u0280\3\2\2\2\u0282\u0283\3\2\2\2\u0283\u0285\3\2\2\2\u0284\u0282\3\2"+
"\2\2\u0285\u0287\7\60\2\2\u0286\u0288\5\u0087D\2\u0287\u0286\3\2\2\2\u0288"+
"\u0289\3\2\2\2\u0289\u0287\3\2\2\2\u0289\u028a\3\2\2\2\u028az\3\2\2\2"+
"\u028b\u028f\5\177@\2\u028c\u028f\5\u0081A\2\u028d\u028f\5}?\2\u028e\u028b"+
"\3\2\2\2\u028e\u028c\3\2\2\2\u028e\u028d\3\2\2\2\u028f|\3\2\2\2\u0290"+
"\u0291\7\62\2\2\u0291\u0293\t\4\2\2\u0292\u0294\5\u0083B\2\u0293\u0292"+
"\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u0293\3\2\2\2\u0295\u0296\3\2\2\2\u0296"+
"\u029e\3\2\2\2\u0297\u0299\7\'\2\2\u0298\u029a\5\u0083B\2\u0299\u0298"+
"\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u0299\3\2\2\2\u029b\u029c\3\2\2\2\u029c"+
"\u029e\3\2\2\2\u029d\u0290\3\2\2\2\u029d\u0297\3\2\2\2\u029e~\3\2\2\2"+
"\u029f\u02a1\5\u0085C\2\u02a0\u029f\3\2\2\2\u02a1\u02a2\3\2\2\2\u02a2"+
"\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u0080\3\2\2\2\u02a4\u02aa\7&"+
"\2\2\u02a5\u02a6\7\62\2\2\u02a6\u02aa\7z\2\2\u02a7\u02a8\7\62\2\2\u02a8"+
"\u02aa\7Z\2\2\u02a9\u02a4\3\2\2\2\u02a9\u02a5\3\2\2\2\u02a9\u02a7\3\2"+
"\2\2\u02aa\u02ac\3\2\2\2\u02ab\u02ad\5\u0087D\2\u02ac\u02ab\3\2\2\2\u02ad"+
"\u02ae\3\2\2\2\u02ae\u02ac\3\2\2\2\u02ae\u02af\3\2\2\2\u02af\u0082\3\2"+
"\2\2\u02b0\u02b1\t\5\2\2\u02b1\u0084\3\2\2\2\u02b2\u02b3\t\6\2\2\u02b3"+
"\u0086\3\2\2\2\u02b4\u02b5\t\7\2\2\u02b5\u0088\3\2\2\2\u02b6\u02ba\5\u008b"+
"F\2\u02b7\u02b9\5\u008dG\2\u02b8\u02b7\3\2\2\2\u02b9\u02bc\3\2\2\2\u02ba"+
"\u02b8\3\2\2\2\u02ba\u02bb\3\2\2\2\u02bb\u008a\3\2\2\2\u02bc\u02ba\3\2"+
"\2\2\u02bd\u02be\t\b\2\2\u02be\u008c\3\2\2\2\u02bf\u02c0\t\t\2\2\u02c0"+
"\u008e\3\2\2\2\u02c1\u02c5\7#\2\2\u02c2\u02c4\t\n\2\2\u02c3\u02c2\3\2"+
"\2\2\u02c4\u02c7\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6"+
"\u0090\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c8\u02ca\t\13\2\2\u02c9\u02c8\3"+
"\2\2\2\u02ca\u02cb\3\2\2\2\u02cb\u02c9\3\2\2\2\u02cb\u02cc\3\2\2\2\u02cc"+
"\u02cd\3\2\2\2\u02cd\u02ce\bI\2\2\u02ce\u0092\3\2\2\2\u02cf\u02d0\7\61"+
"\2\2\u02d0\u02d1\7\61\2\2\u02d1\u02d5\3\2\2\2\u02d2\u02d4\n\f\2\2\u02d3"+
"\u02d2\3\2\2\2\u02d4\u02d7\3\2\2\2\u02d5\u02d3\3\2\2\2\u02d5\u02d6\3\2"+
"\2\2\u02d6\u02d8\3\2\2\2\u02d7\u02d5\3\2\2\2\u02d8\u02d9\bJ\2\2\u02d9"+
"\u0094\3\2\2\2\u02da\u02db\7\61\2\2\u02db\u02dc\7,\2\2\u02dc\u02e0\3\2"+
"\2\2\u02dd\u02df\13\2\2\2\u02de\u02dd\3\2\2\2\u02df\u02e2\3\2\2\2\u02e0"+
"\u02e1\3\2\2\2\u02e0\u02de\3\2\2\2\u02e1\u02e3\3\2\2\2\u02e2\u02e0\3\2"+
"\2\2\u02e3\u02e4\7,\2\2\u02e4\u02e5\7\61\2\2\u02e5\u02e6\3\2\2\2\u02e6"+
"\u02e7\bK\2\2\u02e7\u0096\3\2\2\2\37\2\u0216\u0230\u0236\u0238\u0241\u024e"+
"\u0252\u0257\u025e\u0263\u026a\u026f\u0276\u027d\u0282\u0289\u028e\u0295"+
"\u029b\u029d\u02a2\u02a9\u02ae\u02ba\u02c5\u02cb\u02d5\u02e0\3\b\2\2";
"H\7H\u02c4\nH\fH\16H\u02c7\13H\3H\6H\u02ca\nH\rH\16H\u02cb\3I\6I\u02cf"+
"\nI\rI\16I\u02d0\3I\3I\3J\3J\3J\3J\7J\u02d9\nJ\fJ\16J\u02dc\13J\3J\3J"+
"\3K\3K\3K\3K\7K\u02e4\nK\fK\16K\u02e7\13K\3K\3K\3K\3K\3K\3\u02e5\2L\3"+
"\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37"+
"\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37="+
" ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9"+
"q:s;u<w=y>{?}@\177A\u0081B\u0083\2\u0085\2\u0087\2\u0089C\u008b\2\u008d"+
"\2\u008fD\u0091E\u0093F\u0095G\3\2\r\3\2$$\3\2))\4\2DDdd\3\2\62\63\3\2"+
"\62;\5\2\62;CHch\5\2C\\aac|\6\2\62;C\\aac|\4\2--//\5\2\13\f\17\17\"\""+
"\4\2\f\f\17\17\2\u0354\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2"+
"\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25"+
"\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2"+
"\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2"+
"\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3"+
"\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2"+
"\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2"+
"Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3"+
"\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2"+
"\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2"+
"w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2"+
"\2\2\u0089\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095"+
"\3\2\2\2\3\u0097\3\2\2\2\5\u009e\3\2\2\2\7\u00a0\3\2\2\2\t\u00a2\3\2\2"+
"\2\13\u00a4\3\2\2\2\r\u00a6\3\2\2\2\17\u00a8\3\2\2\2\21\u00aa\3\2\2\2"+
"\23\u00ac\3\2\2\2\25\u00b2\3\2\2\2\27\u00b8\3\2\2\2\31\u00c1\3\2\2\2\33"+
"\u00c4\3\2\2\2\35\u00c9\3\2\2\2\37\u00cf\3\2\2\2!\u00d2\3\2\2\2#\u00d6"+
"\3\2\2\2%\u00dd\3\2\2\2\'\u00e1\3\2\2\2)\u00e3\3\2\2\2+\u00e6\3\2\2\2"+
"-\u00ed\3\2\2\2/\u00ef\3\2\2\2\61\u00f1\3\2\2\2\63\u00f3\3\2\2\2\65\u00f6"+
"\3\2\2\2\67\u00f9\3\2\2\29\u00fb\3\2\2\2;\u00fd\3\2\2\2=\u00ff\3\2\2\2"+
"?\u0101\3\2\2\2A\u0103\3\2\2\2C\u0106\3\2\2\2E\u0109\3\2\2\2G\u010b\3"+
"\2\2\2I\u010d\3\2\2\2K\u010f\3\2\2\2M\u0111\3\2\2\2O\u0114\3\2\2\2Q\u0117"+
"\3\2\2\2S\u011a\3\2\2\2U\u011d\3\2\2\2W\u0120\3\2\2\2Y\u0123\3\2\2\2["+
"\u0126\3\2\2\2]\u0128\3\2\2\2_\u012a\3\2\2\2a\u012d\3\2\2\2c\u0130\3\2"+
"\2\2e\u0136\3\2\2\2g\u0216\3\2\2\2i\u0230\3\2\2\2k\u0232\3\2\2\2m\u023d"+
"\3\2\2\2o\u024e\3\2\2\2q\u0252\3\2\2\2s\u0257\3\2\2\2u\u025e\3\2\2\2w"+
"\u026f\3\2\2\2y\u027d\3\2\2\2{\u028e\3\2\2\2}\u029d\3\2\2\2\177\u02a0"+
"\3\2\2\2\u0081\u02a9\3\2\2\2\u0083\u02b0\3\2\2\2\u0085\u02b2\3\2\2\2\u0087"+
"\u02b4\3\2\2\2\u0089\u02b6\3\2\2\2\u008b\u02bd\3\2\2\2\u008d\u02bf\3\2"+
"\2\2\u008f\u02c1\3\2\2\2\u0091\u02ce\3\2\2\2\u0093\u02d4\3\2\2\2\u0095"+
"\u02df\3\2\2\2\u0097\u0098\7k\2\2\u0098\u0099\7o\2\2\u0099\u009a\7r\2"+
"\2\u009a\u009b\7q\2\2\u009b\u009c\7t\2\2\u009c\u009d\7v\2\2\u009d\4\3"+
"\2\2\2\u009e\u009f\7*\2\2\u009f\6\3\2\2\2\u00a0\u00a1\7+\2\2\u00a1\b\3"+
"\2\2\2\u00a2\u00a3\7}\2\2\u00a3\n\3\2\2\2\u00a4\u00a5\7\177\2\2\u00a5"+
"\f\3\2\2\2\u00a6\u00a7\7.\2\2\u00a7\16\3\2\2\2\u00a8\u00a9\7?\2\2\u00a9"+
"\20\3\2\2\2\u00aa\u00ab\7=\2\2\u00ab\22\3\2\2\2\u00ac\u00ad\7e\2\2\u00ad"+
"\u00ae\7q\2\2\u00ae\u00af\7p\2\2\u00af\u00b0\7u\2\2\u00b0\u00b1\7v\2\2"+
"\u00b1\24\3\2\2\2\u00b2\u00b3\7c\2\2\u00b3\u00b4\7n\2\2\u00b4\u00b5\7"+
"k\2\2\u00b5\u00b6\7i\2\2\u00b6\u00b7\7p\2\2\u00b7\26\3\2\2\2\u00b8\u00b9"+
"\7t\2\2\u00b9\u00ba\7g\2\2\u00ba\u00bb\7i\2\2\u00bb\u00bc\7k\2\2\u00bc"+
"\u00bd\7u\2\2\u00bd\u00be\7v\2\2\u00be\u00bf\7g\2\2\u00bf\u00c0\7t\2\2"+
"\u00c0\30\3\2\2\2\u00c1\u00c2\7k\2\2\u00c2\u00c3\7h\2\2\u00c3\32\3\2\2"+
"\2\u00c4\u00c5\7g\2\2\u00c5\u00c6\7n\2\2\u00c6\u00c7\7u\2\2\u00c7\u00c8"+
"\7g\2\2\u00c8\34\3\2\2\2\u00c9\u00ca\7y\2\2\u00ca\u00cb\7j\2\2\u00cb\u00cc"+
"\7k\2\2\u00cc\u00cd\7n\2\2\u00cd\u00ce\7g\2\2\u00ce\36\3\2\2\2\u00cf\u00d0"+
"\7f\2\2\u00d0\u00d1\7q\2\2\u00d1 \3\2\2\2\u00d2\u00d3\7h\2\2\u00d3\u00d4"+
"\7q\2\2\u00d4\u00d5\7t\2\2\u00d5\"\3\2\2\2\u00d6\u00d7\7t\2\2\u00d7\u00d8"+
"\7g\2\2\u00d8\u00d9\7v\2\2\u00d9\u00da\7w\2\2\u00da\u00db\7t\2\2\u00db"+
"\u00dc\7p\2\2\u00dc$\3\2\2\2\u00dd\u00de\7c\2\2\u00de\u00df\7u\2\2\u00df"+
"\u00e0\7o\2\2\u00e0&\3\2\2\2\u00e1\u00e2\7<\2\2\u00e2(\3\2\2\2\u00e3\u00e4"+
"\7\60\2\2\u00e4\u00e5\7\60\2\2\u00e5*\3\2\2\2\u00e6\u00e7\7u\2\2\u00e7"+
"\u00e8\7k\2\2\u00e8\u00e9\7i\2\2\u00e9\u00ea\7p\2\2\u00ea\u00eb\7g\2\2"+
"\u00eb\u00ec\7f\2\2\u00ec,\3\2\2\2\u00ed\u00ee\7,\2\2\u00ee.\3\2\2\2\u00ef"+
"\u00f0\7]\2\2\u00f0\60\3\2\2\2\u00f1\u00f2\7_\2\2\u00f2\62\3\2\2\2\u00f3"+
"\u00f4\7/\2\2\u00f4\u00f5\7/\2\2\u00f5\64\3\2\2\2\u00f6\u00f7\7-\2\2\u00f7"+
"\u00f8\7-\2\2\u00f8\66\3\2\2\2\u00f9\u00fa\7-\2\2\u00fa8\3\2\2\2\u00fb"+
"\u00fc\7/\2\2\u00fc:\3\2\2\2\u00fd\u00fe\7#\2\2\u00fe<\3\2\2\2\u00ff\u0100"+
"\7(\2\2\u0100>\3\2\2\2\u0101\u0102\7\u0080\2\2\u0102@\3\2\2\2\u0103\u0104"+
"\7@\2\2\u0104\u0105\7@\2\2\u0105B\3\2\2\2\u0106\u0107\7>\2\2\u0107\u0108"+
"\7>\2\2\u0108D\3\2\2\2\u0109\u010a\7\61\2\2\u010aF\3\2\2\2\u010b\u010c"+
"\7\'\2\2\u010cH\3\2\2\2\u010d\u010e\7>\2\2\u010eJ\3\2\2\2\u010f\u0110"+
"\7@\2\2\u0110L\3\2\2\2\u0111\u0112\7?\2\2\u0112\u0113\7?\2\2\u0113N\3"+
"\2\2\2\u0114\u0115\7#\2\2\u0115\u0116\7?\2\2\u0116P\3\2\2\2\u0117\u0118"+
"\7>\2\2\u0118\u0119\7@\2\2\u0119R\3\2\2\2\u011a\u011b\7>\2\2\u011b\u011c"+
"\7?\2\2\u011cT\3\2\2\2\u011d\u011e\7?\2\2\u011e\u011f\7>\2\2\u011fV\3"+
"\2\2\2\u0120\u0121\7@\2\2\u0121\u0122\7?\2\2\u0122X\3\2\2\2\u0123\u0124"+
"\7?\2\2\u0124\u0125\7@\2\2\u0125Z\3\2\2\2\u0126\u0127\7`\2\2\u0127\\\3"+
"\2\2\2\u0128\u0129\7~\2\2\u0129^\3\2\2\2\u012a\u012b\7(\2\2\u012b\u012c"+
"\7(\2\2\u012c`\3\2\2\2\u012d\u012e\7~\2\2\u012e\u012f\7~\2\2\u012fb\3"+
"\2\2\2\u0130\u0131\7\60\2\2\u0131\u0132\7d\2\2\u0132\u0133\7{\2\2\u0133"+
"\u0134\7v\2\2\u0134\u0135\7g\2\2\u0135d\3\2\2\2\u0136\u0137\7%\2\2\u0137"+
"f\3\2\2\2\u0138\u0139\7d\2\2\u0139\u013a\7t\2\2\u013a\u0217\7m\2\2\u013b"+
"\u013c\7q\2\2\u013c\u013d\7t\2\2\u013d\u0217\7c\2\2\u013e\u013f\7m\2\2"+
"\u013f\u0140\7k\2\2\u0140\u0217\7n\2\2\u0141\u0142\7u\2\2\u0142\u0143"+
"\7n\2\2\u0143\u0217\7q\2\2\u0144\u0145\7p\2\2\u0145\u0146\7q\2\2\u0146"+
"\u0217\7r\2\2\u0147\u0148\7c\2\2\u0148\u0149\7u\2\2\u0149\u0217\7n\2\2"+
"\u014a\u014b\7r\2\2\u014b\u014c\7j\2\2\u014c\u0217\7r\2\2\u014d\u014e"+
"\7c\2\2\u014e\u014f\7p\2\2\u014f\u0217\7e\2\2\u0150\u0151\7d\2\2\u0151"+
"\u0152\7r\2\2\u0152\u0217\7n\2\2\u0153\u0154\7e\2\2\u0154\u0155\7n\2\2"+
"\u0155\u0217\7e\2\2\u0156\u0157\7l\2\2\u0157\u0158\7u\2\2\u0158\u0217"+
"\7t\2\2\u0159\u015a\7c\2\2\u015a\u015b\7p\2\2\u015b\u0217\7f\2\2\u015c"+
"\u015d\7t\2\2\u015d\u015e\7n\2\2\u015e\u0217\7c\2\2\u015f\u0160\7d\2\2"+
"\u0160\u0161\7k\2\2\u0161\u0217\7v\2\2\u0162\u0163\7t\2\2\u0163\u0164"+
"\7q\2\2\u0164\u0217\7n\2\2\u0165\u0166\7r\2\2\u0166\u0167\7n\2\2\u0167"+
"\u0217\7c\2\2\u0168\u0169\7r\2\2\u0169\u016a\7n\2\2\u016a\u0217\7r\2\2"+
"\u016b\u016c\7d\2\2\u016c\u016d\7o\2\2\u016d\u0217\7k\2\2\u016e\u016f"+
"\7u\2\2\u016f\u0170\7g\2\2\u0170\u0217\7e\2\2\u0171\u0172\7t\2\2\u0172"+
"\u0173\7v\2\2\u0173\u0217\7k\2\2\u0174\u0175\7g\2\2\u0175\u0176\7q\2\2"+
"\u0176\u0217\7t\2\2\u0177\u0178\7u\2\2\u0178\u0179\7t\2\2\u0179\u0217"+
"\7g\2\2\u017a\u017b\7n\2\2\u017b\u017c\7u\2\2\u017c\u0217\7t\2\2\u017d"+
"\u017e\7r\2\2\u017e\u017f\7j\2\2\u017f\u0217\7c\2\2\u0180\u0181\7c\2\2"+
"\u0181\u0182\7n\2\2\u0182\u0217\7t\2\2\u0183\u0184\7l\2\2\u0184\u0185"+
"\7o\2\2\u0185\u0217\7r\2\2\u0186\u0187\7d\2\2\u0187\u0188\7x\2\2\u0188"+
"\u0217\7e\2\2\u0189\u018a\7e\2\2\u018a\u018b\7n\2\2\u018b\u0217\7k\2\2"+
"\u018c\u018d\7t\2\2\u018d\u018e\7v\2\2\u018e\u0217\7u\2\2\u018f\u0190"+
"\7c\2\2\u0190\u0191\7f\2\2\u0191\u0217\7e\2\2\u0192\u0193\7t\2\2\u0193"+
"\u0194\7t\2\2\u0194\u0217\7c\2\2\u0195\u0196\7d\2\2\u0196\u0197\7x\2\2"+
"\u0197\u0217\7u\2\2\u0198\u0199\7u\2\2\u0199\u019a\7g\2\2\u019a\u0217"+
"\7k\2\2\u019b\u019c\7u\2\2\u019c\u019d\7c\2\2\u019d\u0217\7z\2\2\u019e"+
"\u019f\7u\2\2\u019f\u01a0\7v\2\2\u01a0\u0217\7{\2\2\u01a1\u01a2\7u\2\2"+
"\u01a2\u01a3\7v\2\2\u01a3\u0217\7c\2\2\u01a4\u01a5\7u\2\2\u01a5\u01a6"+
"\7v\2\2\u01a6\u0217\7z\2\2\u01a7\u01a8\7f\2\2\u01a8\u01a9\7g\2\2\u01a9"+
"\u0217\7{\2\2\u01aa\u01ab\7v\2\2\u01ab\u01ac\7z\2\2\u01ac\u0217\7c\2\2"+
"\u01ad\u01ae\7z\2\2\u01ae\u01af\7c\2\2\u01af\u0217\7c\2\2\u01b0\u01b1"+
"\7d\2\2\u01b1\u01b2\7e\2\2\u01b2\u0217\7e\2\2\u01b3\u01b4\7c\2\2\u01b4"+
"\u01b5\7j\2\2\u01b5\u0217\7z\2\2\u01b6\u01b7\7v\2\2\u01b7\u01b8\7{\2\2"+
"\u01b8\u0217\7c\2\2\u01b9\u01ba\7v\2\2\u01ba\u01bb\7z\2\2\u01bb\u0217"+
"\7u\2\2\u01bc\u01bd\7v\2\2\u01bd\u01be\7c\2\2\u01be\u0217\7u\2\2\u01bf"+
"\u01c0\7u\2\2\u01c0\u01c1\7j\2\2\u01c1\u0217\7{\2\2\u01c2\u01c3\7u\2\2"+
"\u01c3\u01c4\7j\2\2\u01c4\u0217\7z\2\2\u01c5\u01c6\7n\2\2\u01c6\u01c7"+
"\7f\2\2\u01c7\u0217\7{\2\2\u01c8\u01c9\7n\2\2\u01c9\u01ca\7f\2\2\u01ca"+
"\u0217\7c\2\2\u01cb\u01cc\7n\2\2\u01cc\u01cd\7f\2\2\u01cd\u0217\7z\2\2"+
"\u01ce\u01cf\7n\2\2\u01cf\u01d0\7c\2\2\u01d0\u0217\7z\2\2\u01d1\u01d2"+
"\7v\2\2\u01d2\u01d3\7c\2\2\u01d3\u0217\7{\2\2\u01d4\u01d5\7v\2\2\u01d5"+
"\u01d6\7c\2\2\u01d6\u0217\7z\2\2\u01d7\u01d8\7d\2\2\u01d8\u01d9\7e\2\2"+
"\u01d9\u0217\7u\2\2\u01da\u01db\7e\2\2\u01db\u01dc\7n\2\2\u01dc\u0217"+
"\7x\2\2\u01dd\u01de\7v\2\2\u01de\u01df\7u\2\2\u01df\u0217\7z\2\2\u01e0"+
"\u01e1\7n\2\2\u01e1\u01e2\7c\2\2\u01e2\u0217\7u\2\2\u01e3\u01e4\7e\2\2"+
"\u01e4\u01e5\7r\2\2\u01e5\u0217\7{\2\2\u01e6\u01e7\7e\2\2\u01e7\u01e8"+
"\7o\2\2\u01e8\u0217\7r\2\2\u01e9\u01ea\7e\2\2\u01ea\u01eb\7r\2\2\u01eb"+
"\u0217\7z\2\2\u01ec\u01ed\7f\2\2\u01ed\u01ee\7e\2\2\u01ee\u0217\7r\2\2"+
"\u01ef\u01f0\7f\2\2\u01f0\u01f1\7g\2\2\u01f1\u0217\7e\2\2\u01f2\u01f3"+
"\7k\2\2\u01f3\u01f4\7p\2\2\u01f4\u0217\7e\2\2\u01f5\u01f6\7c\2\2\u01f6"+
"\u01f7\7z\2\2\u01f7\u0217\7u\2\2\u01f8\u01f9\7d\2\2\u01f9\u01fa\7p\2\2"+
"\u01fa\u0217\7g\2\2\u01fb\u01fc\7e\2\2\u01fc\u01fd\7n\2\2\u01fd\u0217"+
"\7f\2\2\u01fe\u01ff\7u\2\2\u01ff\u0200\7d\2\2\u0200\u0217\7e\2\2\u0201"+
"\u0202\7k\2\2\u0202\u0203\7u\2\2\u0203\u0217\7e\2\2\u0204\u0205\7k\2\2"+
"\u0205\u0206\7p\2\2\u0206\u0217\7z\2\2\u0207\u0208\7d\2\2\u0208\u0209"+
"\7g\2\2\u0209\u0217\7s\2\2\u020a\u020b\7u\2\2\u020b\u020c\7g\2\2\u020c"+
"\u0217\7f\2\2\u020d\u020e\7f\2\2\u020e\u020f\7g\2\2\u020f\u0217\7z\2\2"+
"\u0210\u0211\7k\2\2\u0211\u0212\7p\2\2\u0212\u0217\7{\2\2\u0213\u0214"+
"\7t\2\2\u0214\u0215\7q\2\2\u0215\u0217\7t\2\2\u0216\u0138\3\2\2\2\u0216"+
"\u013b\3\2\2\2\u0216\u013e\3\2\2\2\u0216\u0141\3\2\2\2\u0216\u0144\3\2"+
"\2\2\u0216\u0147\3\2\2\2\u0216\u014a\3\2\2\2\u0216\u014d\3\2\2\2\u0216"+
"\u0150\3\2\2\2\u0216\u0153\3\2\2\2\u0216\u0156\3\2\2\2\u0216\u0159\3\2"+
"\2\2\u0216\u015c\3\2\2\2\u0216\u015f\3\2\2\2\u0216\u0162\3\2\2\2\u0216"+
"\u0165\3\2\2\2\u0216\u0168\3\2\2\2\u0216\u016b\3\2\2\2\u0216\u016e\3\2"+
"\2\2\u0216\u0171\3\2\2\2\u0216\u0174\3\2\2\2\u0216\u0177\3\2\2\2\u0216"+
"\u017a\3\2\2\2\u0216\u017d\3\2\2\2\u0216\u0180\3\2\2\2\u0216\u0183\3\2"+
"\2\2\u0216\u0186\3\2\2\2\u0216\u0189\3\2\2\2\u0216\u018c\3\2\2\2\u0216"+
"\u018f\3\2\2\2\u0216\u0192\3\2\2\2\u0216\u0195\3\2\2\2\u0216\u0198\3\2"+
"\2\2\u0216\u019b\3\2\2\2\u0216\u019e\3\2\2\2\u0216\u01a1\3\2\2\2\u0216"+
"\u01a4\3\2\2\2\u0216\u01a7\3\2\2\2\u0216\u01aa\3\2\2\2\u0216\u01ad\3\2"+
"\2\2\u0216\u01b0\3\2\2\2\u0216\u01b3\3\2\2\2\u0216\u01b6\3\2\2\2\u0216"+
"\u01b9\3\2\2\2\u0216\u01bc\3\2\2\2\u0216\u01bf\3\2\2\2\u0216\u01c2\3\2"+
"\2\2\u0216\u01c5\3\2\2\2\u0216\u01c8\3\2\2\2\u0216\u01cb\3\2\2\2\u0216"+
"\u01ce\3\2\2\2\u0216\u01d1\3\2\2\2\u0216\u01d4\3\2\2\2\u0216\u01d7\3\2"+
"\2\2\u0216\u01da\3\2\2\2\u0216\u01dd\3\2\2\2\u0216\u01e0\3\2\2\2\u0216"+
"\u01e3\3\2\2\2\u0216\u01e6\3\2\2\2\u0216\u01e9\3\2\2\2\u0216\u01ec\3\2"+
"\2\2\u0216\u01ef\3\2\2\2\u0216\u01f2\3\2\2\2\u0216\u01f5\3\2\2\2\u0216"+
"\u01f8\3\2\2\2\u0216\u01fb\3\2\2\2\u0216\u01fe\3\2\2\2\u0216\u0201\3\2"+
"\2\2\u0216\u0204\3\2\2\2\u0216\u0207\3\2\2\2\u0216\u020a\3\2\2\2\u0216"+
"\u020d\3\2\2\2\u0216\u0210\3\2\2\2\u0216\u0213\3\2\2\2\u0217h\3\2\2\2"+
"\u0218\u0219\7d\2\2\u0219\u021a\7{\2\2\u021a\u021b\7v\2\2\u021b\u0231"+
"\7g\2\2\u021c\u021d\7y\2\2\u021d\u021e\7q\2\2\u021e\u021f\7t\2\2\u021f"+
"\u0231\7f\2\2\u0220\u0221\7f\2\2\u0221\u0222\7y\2\2\u0222\u0223\7q\2\2"+
"\u0223\u0224\7t\2\2\u0224\u0231\7f\2\2\u0225\u0226\7d\2\2\u0226\u0227"+
"\7q\2\2\u0227\u0228\7q\2\2\u0228\u0229\7n\2\2\u0229\u022a\7g\2\2\u022a"+
"\u022b\7c\2\2\u022b\u0231\7p\2\2\u022c\u022d\7x\2\2\u022d\u022e\7q\2\2"+
"\u022e\u022f\7k\2\2\u022f\u0231\7f\2\2\u0230\u0218\3\2\2\2\u0230\u021c"+
"\3\2\2\2\u0230\u0220\3\2\2\2\u0230\u0225\3\2\2\2\u0230\u022c\3\2\2\2\u0231"+
"j\3\2\2\2\u0232\u0238\7$\2\2\u0233\u0234\7^\2\2\u0234\u0237\7$\2\2\u0235"+
"\u0237\n\2\2\2\u0236\u0233\3\2\2\2\u0236\u0235\3\2\2\2\u0237\u023a\3\2"+
"\2\2\u0238\u0236\3\2\2\2\u0238\u0239\3\2\2\2\u0239\u023b\3\2\2\2\u023a"+
"\u0238\3\2\2\2\u023b\u023c\7$\2\2\u023cl\3\2\2\2\u023d\u0241\7)\2\2\u023e"+
"\u023f\7^\2\2\u023f\u0242\7)\2\2\u0240\u0242\n\3\2\2\u0241\u023e\3\2\2"+
"\2\u0241\u0240\3\2\2\2\u0242\u0243\3\2\2\2\u0243\u0244\7)\2\2\u0244n\3"+
"\2\2\2\u0245\u0246\7v\2\2\u0246\u0247\7t\2\2\u0247\u0248\7w\2\2\u0248"+
"\u024f\7g\2\2\u0249\u024a\7h\2\2\u024a\u024b\7c\2\2\u024b\u024c\7n\2\2"+
"\u024c\u024d\7u\2\2\u024d\u024f\7g\2\2\u024e\u0245\3\2\2\2\u024e\u0249"+
"\3\2\2\2\u024fp\3\2\2\2\u0250\u0253\5s:\2\u0251\u0253\5{>\2\u0252\u0250"+
"\3\2\2\2\u0252\u0251\3\2\2\2\u0253r\3\2\2\2\u0254\u0258\5u;\2\u0255\u0258"+
"\5w<\2\u0256\u0258\5y=\2\u0257\u0254\3\2\2\2\u0257\u0255\3\2\2\2\u0257"+
"\u0256\3\2\2\2\u0258t\3\2\2\2\u0259\u025f\7\'\2\2\u025a\u025b\7\62\2\2"+
"\u025b\u025f\7d\2\2\u025c\u025d\7\62\2\2\u025d\u025f\7D\2\2\u025e\u0259"+
"\3\2\2\2\u025e\u025a\3\2\2\2\u025e\u025c\3\2\2\2\u025f\u0263\3\2\2\2\u0260"+
"\u0262\5\u0083B\2\u0261\u0260\3\2\2\2\u0262\u0265\3\2\2\2\u0263\u0261"+
"\3\2\2\2\u0263\u0264\3\2\2\2\u0264\u0266\3\2\2\2\u0265\u0263\3\2\2\2\u0266"+
"\u0268\7\60\2\2\u0267\u0269\5\u0083B\2\u0268\u0267\3\2\2\2\u0269\u026a"+
"\3\2\2\2\u026a\u0268\3\2\2\2\u026a\u026b\3\2\2\2\u026bv\3\2\2\2\u026c"+
"\u026e\5\u0085C\2\u026d\u026c\3\2\2\2\u026e\u0271\3\2\2\2\u026f\u026d"+
"\3\2\2\2\u026f\u0270\3\2\2\2\u0270\u0272\3\2\2\2\u0271\u026f\3\2\2\2\u0272"+
"\u0274\7\60\2\2\u0273\u0275\5\u0085C\2\u0274\u0273\3\2\2\2\u0275\u0276"+
"\3\2\2\2\u0276\u0274\3\2\2\2\u0276\u0277\3\2\2\2\u0277x\3\2\2\2\u0278"+
"\u027e\7&\2\2\u0279\u027a\7\62\2\2\u027a\u027e\7z\2\2\u027b\u027c\7\62"+
"\2\2\u027c\u027e\7Z\2\2\u027d\u0278\3\2\2\2\u027d\u0279\3\2\2\2\u027d"+
"\u027b\3\2\2\2\u027e\u0282\3\2\2\2\u027f\u0281\5\u0087D\2\u0280\u027f"+
"\3\2\2\2\u0281\u0284\3\2\2\2\u0282\u0280\3\2\2\2\u0282\u0283\3\2\2\2\u0283"+
"\u0285\3\2\2\2\u0284\u0282\3\2\2\2\u0285\u0287\7\60\2\2\u0286\u0288\5"+
"\u0087D\2\u0287\u0286\3\2\2\2\u0288\u0289\3\2\2\2\u0289\u0287\3\2\2\2"+
"\u0289\u028a\3\2\2\2\u028az\3\2\2\2\u028b\u028f\5\177@\2\u028c\u028f\5"+
"\u0081A\2\u028d\u028f\5}?\2\u028e\u028b\3\2\2\2\u028e\u028c\3\2\2\2\u028e"+
"\u028d\3\2\2\2\u028f|\3\2\2\2\u0290\u0291\7\62\2\2\u0291\u0293\t\4\2\2"+
"\u0292\u0294\5\u0083B\2\u0293\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295"+
"\u0293\3\2\2\2\u0295\u0296\3\2\2\2\u0296\u029e\3\2\2\2\u0297\u0299\7\'"+
"\2\2\u0298\u029a\5\u0083B\2\u0299\u0298\3\2\2\2\u029a\u029b\3\2\2\2\u029b"+
"\u0299\3\2\2\2\u029b\u029c\3\2\2\2\u029c\u029e\3\2\2\2\u029d\u0290\3\2"+
"\2\2\u029d\u0297\3\2\2\2\u029e~\3\2\2\2\u029f\u02a1\5\u0085C\2\u02a0\u029f"+
"\3\2\2\2\u02a1\u02a2\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3"+
"\u0080\3\2\2\2\u02a4\u02aa\7&\2\2\u02a5\u02a6\7\62\2\2\u02a6\u02aa\7z"+
"\2\2\u02a7\u02a8\7\62\2\2\u02a8\u02aa\7Z\2\2\u02a9\u02a4\3\2\2\2\u02a9"+
"\u02a5\3\2\2\2\u02a9\u02a7\3\2\2\2\u02aa\u02ac\3\2\2\2\u02ab\u02ad\5\u0087"+
"D\2\u02ac\u02ab\3\2\2\2\u02ad\u02ae\3\2\2\2\u02ae\u02ac\3\2\2\2\u02ae"+
"\u02af\3\2\2\2\u02af\u0082\3\2\2\2\u02b0\u02b1\t\5\2\2\u02b1\u0084\3\2"+
"\2\2\u02b2\u02b3\t\6\2\2\u02b3\u0086\3\2\2\2\u02b4\u02b5\t\7\2\2\u02b5"+
"\u0088\3\2\2\2\u02b6\u02ba\5\u008bF\2\u02b7\u02b9\5\u008dG\2\u02b8\u02b7"+
"\3\2\2\2\u02b9\u02bc\3\2\2\2\u02ba\u02b8\3\2\2\2\u02ba\u02bb\3\2\2\2\u02bb"+
"\u008a\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bd\u02be\t\b\2\2\u02be\u008c\3\2"+
"\2\2\u02bf\u02c0\t\t\2\2\u02c0\u008e\3\2\2\2\u02c1\u02c5\7#\2\2\u02c2"+
"\u02c4\5\u008dG\2\u02c3\u02c2\3\2\2\2\u02c4\u02c7\3\2\2\2\u02c5\u02c3"+
"\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u02c9\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c8"+
"\u02ca\t\n\2\2\u02c9\u02c8\3\2\2\2\u02ca\u02cb\3\2\2\2\u02cb\u02c9\3\2"+
"\2\2\u02cb\u02cc\3\2\2\2\u02cc\u0090\3\2\2\2\u02cd\u02cf\t\13\2\2\u02ce"+
"\u02cd\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d0\u02d1\3\2"+
"\2\2\u02d1\u02d2\3\2\2\2\u02d2\u02d3\bI\2\2\u02d3\u0092\3\2\2\2\u02d4"+
"\u02d5\7\61\2\2\u02d5\u02d6\7\61\2\2\u02d6\u02da\3\2\2\2\u02d7\u02d9\n"+
"\f\2\2\u02d8\u02d7\3\2\2\2\u02d9\u02dc\3\2\2\2\u02da\u02d8\3\2\2\2\u02da"+
"\u02db\3\2\2\2\u02db\u02dd\3\2\2\2\u02dc\u02da\3\2\2\2\u02dd\u02de\bJ"+
"\2\2\u02de\u0094\3\2\2\2\u02df\u02e0\7\61\2\2\u02e0\u02e1\7,\2\2\u02e1"+
"\u02e5\3\2\2\2\u02e2\u02e4\13\2\2\2\u02e3\u02e2\3\2\2\2\u02e4\u02e7\3"+
"\2\2\2\u02e5\u02e6\3\2\2\2\u02e5\u02e3\3\2\2\2\u02e6\u02e8\3\2\2\2\u02e7"+
"\u02e5\3\2\2\2\u02e8\u02e9\7,\2\2\u02e9\u02ea\7\61\2\2\u02ea\u02eb\3\2"+
"\2\2\u02eb\u02ec\bK\2\2\u02ec\u0096\3\2\2\2 \2\u0216\u0230\u0236\u0238"+
"\u0241\u024e\u0252\u0257\u025e\u0263\u026a\u026f\u0276\u027d\u0282\u0289"+
"\u028e\u0295\u029b\u029d\u02a2\u02a9\u02ae\u02ba\u02c5\u02cb\u02d0\u02da"+
"\u02e5\3\b\2\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {

View File

@ -572,15 +572,29 @@ public interface KickCListener extends ParseTreeListener {
*/
void exitAsmLine(KickCParser.AsmLineContext ctx);
/**
* Enter a parse tree produced by {@link KickCParser#asmLabel}.
* Enter a parse tree produced by the {@code asmLabelName}
* labeled alternative in {@link KickCParser#asmLabel}.
* @param ctx the parse tree
*/
void enterAsmLabel(KickCParser.AsmLabelContext ctx);
void enterAsmLabelName(KickCParser.AsmLabelNameContext ctx);
/**
* Exit a parse tree produced by {@link KickCParser#asmLabel}.
* Exit a parse tree produced by the {@code asmLabelName}
* labeled alternative in {@link KickCParser#asmLabel}.
* @param ctx the parse tree
*/
void exitAsmLabel(KickCParser.AsmLabelContext ctx);
void exitAsmLabelName(KickCParser.AsmLabelNameContext ctx);
/**
* Enter a parse tree produced by the {@code asmLabelMulti}
* labeled alternative in {@link KickCParser#asmLabel}.
* @param ctx the parse tree
*/
void enterAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx);
/**
* Exit a parse tree produced by the {@code asmLabelMulti}
* labeled alternative in {@link KickCParser#asmLabel}.
* @param ctx the parse tree
*/
void exitAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx);
/**
* Enter a parse tree produced by {@link KickCParser#asmInstruction}.
* @param ctx the parse tree

View File

@ -2683,22 +2683,47 @@ public class KickCParser extends Parser {
}
public static class AsmLabelContext extends ParserRuleContext {
public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); }
public AsmLabelContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_asmLabel; }
public AsmLabelContext() { }
public void copyFrom(AsmLabelContext ctx) {
super.copyFrom(ctx);
}
}
public static class AsmLabelNameContext extends AsmLabelContext {
public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); }
public AsmLabelNameContext(AsmLabelContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof KickCListener ) ((KickCListener)listener).enterAsmLabel(this);
if ( listener instanceof KickCListener ) ((KickCListener)listener).enterAsmLabelName(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof KickCListener ) ((KickCListener)listener).exitAsmLabel(this);
if ( listener instanceof KickCListener ) ((KickCListener)listener).exitAsmLabelName(this);
}
@Override
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
if ( visitor instanceof KickCVisitor ) return ((KickCVisitor<? extends T>)visitor).visitAsmLabel(this);
if ( visitor instanceof KickCVisitor ) return ((KickCVisitor<? extends T>)visitor).visitAsmLabelName(this);
else return visitor.visitChildren(this);
}
}
public static class AsmLabelMultiContext extends AsmLabelContext {
public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); }
public AsmLabelMultiContext(AsmLabelContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof KickCListener ) ((KickCListener)listener).enterAsmLabelMulti(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof KickCListener ) ((KickCListener)listener).exitAsmLabelMulti(this);
}
@Override
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
if ( visitor instanceof KickCVisitor ) return ((KickCVisitor<? extends T>)visitor).visitAsmLabelMulti(this);
else return visitor.visitChildren(this);
}
}
@ -2706,11 +2731,13 @@ public class KickCParser extends Parser {
public final AsmLabelContext asmLabel() throws RecognitionException {
AsmLabelContext _localctx = new AsmLabelContext(_ctx, getState());
enterRule(_localctx, 38, RULE_asmLabel);
int _la;
try {
setState(355);
setState(358);
_errHandler.sync(this);
switch (_input.LA(1)) {
case NAME:
_localctx = new AsmLabelNameContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(351);
@ -2720,11 +2747,22 @@ public class KickCParser extends Parser {
}
break;
case T__28:
_localctx = new AsmLabelMultiContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(353);
match(T__28);
setState(354);
setState(355);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NAME) {
{
setState(354);
match(NAME);
}
}
setState(357);
match(T__18);
}
break;
@ -2773,14 +2811,14 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(357);
setState(360);
match(MNEMONIC);
setState(359);
setState(362);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
case 1:
{
setState(358);
setState(361);
asmParamMode();
}
break;
@ -2831,23 +2869,23 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(361);
setState(364);
match(T__48);
setState(362);
setState(365);
asmExpr(0);
setState(367);
setState(370);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__5) {
{
{
setState(363);
setState(366);
match(T__5);
setState(364);
setState(367);
asmExpr(0);
}
}
setState(369);
setState(372);
_errHandler.sync(this);
_la = _input.LA(1);
}
@ -2997,14 +3035,14 @@ public class KickCParser extends Parser {
AsmParamModeContext _localctx = new AsmParamModeContext(_ctx, getState());
enterRule(_localctx, 44, RULE_asmParamMode);
try {
setState(393);
setState(396);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
_localctx = new AsmModeAbsContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(370);
setState(373);
asmExpr(0);
}
break;
@ -3012,9 +3050,9 @@ public class KickCParser extends Parser {
_localctx = new AsmModeImmContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(371);
setState(374);
match(T__49);
setState(372);
setState(375);
asmExpr(0);
}
break;
@ -3022,11 +3060,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeAbsXYContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(373);
setState(376);
asmExpr(0);
setState(374);
setState(377);
match(T__5);
setState(375);
setState(378);
match(NAME);
}
break;
@ -3034,15 +3072,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndIdxXYContext(_localctx);
enterOuterAlt(_localctx, 4);
{
setState(377);
match(T__1);
setState(378);
asmExpr(0);
setState(379);
match(T__2);
setState(380);
match(T__5);
match(T__1);
setState(381);
asmExpr(0);
setState(382);
match(T__2);
setState(383);
match(T__5);
setState(384);
match(NAME);
}
break;
@ -3050,15 +3088,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIdxIndXYContext(_localctx);
enterOuterAlt(_localctx, 5);
{
setState(383);
match(T__1);
setState(384);
asmExpr(0);
setState(385);
match(T__5);
setState(386);
match(NAME);
match(T__1);
setState(387);
asmExpr(0);
setState(388);
match(T__5);
setState(389);
match(NAME);
setState(390);
match(T__2);
}
break;
@ -3066,11 +3104,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndContext(_localctx);
enterOuterAlt(_localctx, 6);
{
setState(389);
setState(392);
match(T__1);
setState(390);
setState(393);
asmExpr(0);
setState(391);
setState(394);
match(T__2);
}
break;
@ -3260,7 +3298,7 @@ public class KickCParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(409);
setState(412);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__22:
@ -3269,11 +3307,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
setState(396);
setState(399);
match(T__22);
setState(397);
setState(400);
asmExpr(0);
setState(398);
setState(401);
match(T__23);
}
break;
@ -3285,7 +3323,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(400);
setState(403);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__26) | (1L << T__27) | (1L << T__35) | (1L << T__36))) != 0)) ) {
_errHandler.recoverInline(this);
@ -3295,7 +3333,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
setState(401);
setState(404);
asmExpr(8);
}
break;
@ -3304,7 +3342,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(402);
setState(405);
match(NAME);
}
break;
@ -3313,7 +3351,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelRelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(403);
setState(406);
match(ASMREL);
}
break;
@ -3322,11 +3360,11 @@ public class KickCParser extends Parser {
_localctx = new AsmExprReplaceContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(404);
setState(407);
match(T__3);
setState(405);
setState(408);
match(NAME);
setState(406);
setState(409);
match(T__4);
}
break;
@ -3335,7 +3373,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprIntContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(407);
setState(410);
match(NUMBER);
}
break;
@ -3344,7 +3382,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprCharContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(408);
setState(411);
match(CHAR);
}
break;
@ -3352,24 +3390,24 @@ public class KickCParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
setState(422);
setState(425);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,41,_ctx);
_alt = getInterpreter().adaptivePredict(_input,42,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(420);
setState(423);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
case 1:
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
setState(411);
setState(414);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
setState(412);
setState(415);
_la = _input.LA(1);
if ( !(_la==T__31 || _la==T__32) ) {
_errHandler.recoverInline(this);
@ -3379,7 +3417,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
setState(413);
setState(416);
asmExpr(10);
}
break;
@ -3387,9 +3425,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
setState(414);
setState(417);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
setState(415);
setState(418);
_la = _input.LA(1);
if ( !(_la==T__21 || _la==T__33) ) {
_errHandler.recoverInline(this);
@ -3399,7 +3437,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
setState(416);
setState(419);
asmExpr(8);
}
break;
@ -3407,9 +3445,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
setState(417);
setState(420);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
setState(418);
setState(421);
_la = _input.LA(1);
if ( !(_la==T__26 || _la==T__27) ) {
_errHandler.recoverInline(this);
@ -3419,16 +3457,16 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
setState(419);
setState(422);
asmExpr(7);
}
break;
}
}
}
setState(424);
setState(427);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,41,_ctx);
_alt = getInterpreter().adaptivePredict(_input,42,_ctx);
}
}
}
@ -3505,7 +3543,7 @@ public class KickCParser extends Parser {
}
public static final String _serializedATN =
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3G\u01ac\4\2\t\2\4"+
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3G\u01af\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@ -3532,55 +3570,55 @@ public class KickCParser extends Parser {
"\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u014a\n\21\f\21\16"+
"\21\u014d\13\21\3\22\3\22\3\22\7\22\u0152\n\22\f\22\16\22\u0155\13\22"+
"\3\23\7\23\u0158\n\23\f\23\16\23\u015b\13\23\3\24\3\24\3\24\5\24\u0160"+
"\n\24\3\25\3\25\3\25\3\25\5\25\u0166\n\25\3\26\3\26\5\26\u016a\n\26\3"+
"\27\3\27\3\27\3\27\7\27\u0170\n\27\f\27\16\27\u0173\13\27\3\30\3\30\3"+
"\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3"+
"\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u018c\n\30\3\31\3\31\3\31\3\31"+
"\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u019c\n\31\3\31"+
"\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u01a7\n\31\f\31\16\31\u01aa"+
"\13\31\3\31\2\5\36 \60\32\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&"+
"(*,.\60\2\13\3\2\33\34\3\2\35!\3\2&\'\3\2\"#\4\2\30\30$%\3\2\35\36\3\2"+
"&.\4\2\35\36&\'\4\2\30\30$$\2\u01e5\2\62\3\2\2\2\4\66\3\2\2\2\6<\3\2\2"+
"\2\b?\3\2\2\2\nC\3\2\2\2\fU\3\2\2\2\16W\3\2\2\2\20b\3\2\2\2\22q\3\2\2"+
"\2\24\u008b\3\2\2\2\26\u008e\3\2\2\2\30\u00c5\3\2\2\2\32\u00ca\3\2\2\2"+
"\34\u00e5\3\2\2\2\36\u00eb\3\2\2\2 \u0122\3\2\2\2\"\u014e\3\2\2\2$\u0159"+
"\3\2\2\2&\u015f\3\2\2\2(\u0165\3\2\2\2*\u0167\3\2\2\2,\u016b\3\2\2\2."+
"\u018b\3\2\2\2\60\u019b\3\2\2\2\62\63\5\6\4\2\63\64\5\n\6\2\64\65\7\2"+
"\2\3\65\3\3\2\2\2\66\67\5$\23\2\678\7\2\2\38\5\3\2\2\29;\5\b\5\2:9\3\2"+
"\2\2;>\3\2\2\2<:\3\2\2\2<=\3\2\2\2=\7\3\2\2\2><\3\2\2\2?@\7\3\2\2@A\7"+
"\67\2\2A\t\3\2\2\2BD\5\f\7\2CB\3\2\2\2DE\3\2\2\2EC\3\2\2\2EF\3\2\2\2F"+
"\13\3\2\2\2GH\5\36\20\2HI\7C\2\2IK\7\4\2\2JL\5\16\b\2KJ\3\2\2\2KL\3\2"+
"\2\2LM\3\2\2\2MN\7\5\2\2NP\7\6\2\2OQ\5\26\f\2PO\3\2\2\2PQ\3\2\2\2QR\3"+
"\2\2\2RS\7\7\2\2SV\3\2\2\2TV\5\22\n\2UG\3\2\2\2UT\3\2\2\2V\r\3\2\2\2W"+
"\\\5\20\t\2XY\7\b\2\2Y[\5\20\t\2ZX\3\2\2\2[^\3\2\2\2\\Z\3\2\2\2\\]\3\2"+
"\2\2]\17\3\2\2\2^\\\3\2\2\2_a\5\24\13\2`_\3\2\2\2ad\3\2\2\2b`\3\2\2\2"+
"bc\3\2\2\2ce\3\2\2\2db\3\2\2\2ei\5\36\20\2fh\5\24\13\2gf\3\2\2\2hk\3\2"+
"\2\2ig\3\2\2\2ij\3\2\2\2jl\3\2\2\2ki\3\2\2\2lm\7C\2\2m\21\3\2\2\2np\5"+
"\24\13\2on\3\2\2\2ps\3\2\2\2qo\3\2\2\2qr\3\2\2\2rt\3\2\2\2sq\3\2\2\2t"+
"x\5\36\20\2uw\5\24\13\2vu\3\2\2\2wz\3\2\2\2xv\3\2\2\2xy\3\2\2\2y{\3\2"+
"\2\2zx\3\2\2\2{~\7C\2\2|}\7\t\2\2}\177\5 \21\2~|\3\2\2\2~\177\3\2\2\2"+
"\177\u0080\3\2\2\2\u0080\u0081\7\n\2\2\u0081\23\3\2\2\2\u0082\u008c\7"+
"\13\2\2\u0083\u0084\7\f\2\2\u0084\u0085\7\4\2\2\u0085\u0086\7:\2\2\u0086"+
"\u008c\7\5\2\2\u0087\u0088\7\r\2\2\u0088\u0089\7\4\2\2\u0089\u008a\7C"+
"\2\2\u008a\u008c\7\5\2\2\u008b\u0082\3\2\2\2\u008b\u0083\3\2\2\2\u008b"+
"\u0087\3\2\2\2\u008c\25\3\2\2\2\u008d\u008f\5\30\r\2\u008e\u008d\3\2\2"+
"\2\u008f\u0090\3\2\2\2\u0090\u008e\3\2\2\2\u0090\u0091\3\2\2\2\u0091\27"+
"\3\2\2\2\u0092\u00c6\5\22\n\2\u0093\u0095\7\6\2\2\u0094\u0096\5\26\f\2"+
"\u0095\u0094\3\2\2\2\u0095\u0096\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u00c6"+
"\7\7\2\2\u0098\u0099\5 \21\2\u0099\u009a\7\n\2\2\u009a\u00c6\3\2\2\2\u009b"+
"\u009c\7\16\2\2\u009c\u009d\7\4\2\2\u009d\u009e\5 \21\2\u009e\u009f\7"+
"\5\2\2\u009f\u00a2\5\30\r\2\u00a0\u00a1\7\17\2\2\u00a1\u00a3\5\30\r\2"+
"\u00a2\u00a0\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00c6\3\2\2\2\u00a4\u00a5"+
"\7\20\2\2\u00a5\u00a6\7\4\2\2\u00a6\u00a7\5 \21\2\u00a7\u00a8\7\5\2\2"+
"\u00a8\u00a9\5\30\r\2\u00a9\u00c6\3\2\2\2\u00aa\u00ab\7\21\2\2\u00ab\u00ac"+
"\5\30\r\2\u00ac\u00ad\7\20\2\2\u00ad\u00ae\7\4\2\2\u00ae\u00af\5 \21\2"+
"\u00af\u00b0\7\5\2\2\u00b0\u00b1\7\n\2\2\u00b1\u00c6\3\2\2\2\u00b2\u00b3"+
"\7\22\2\2\u00b3\u00b5\7\4\2\2\u00b4\u00b6\5\32\16\2\u00b5\u00b4\3\2\2"+
"\2\u00b5\u00b6\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b8\5\34\17\2\u00b8"+
"\u00b9\7\5\2\2\u00b9\u00ba\5\30\r\2\u00ba\u00c6\3\2\2\2\u00bb\u00bd\7"+
"\23\2\2\u00bc\u00be\5 \21\2\u00bd\u00bc\3\2\2\2\u00bd\u00be\3\2\2\2\u00be"+
"\u00bf\3\2\2\2\u00bf\u00c6\7\n\2\2\u00c0\u00c1\7\24\2\2\u00c1\u00c2\7"+
"\6\2\2\u00c2\u00c3\5$\23\2\u00c3\u00c4\7\7\2\2\u00c4\u00c6\3\2\2\2\u00c5"+
"\n\24\3\25\3\25\3\25\3\25\5\25\u0166\n\25\3\25\5\25\u0169\n\25\3\26\3"+
"\26\5\26\u016d\n\26\3\27\3\27\3\27\3\27\7\27\u0173\n\27\f\27\16\27\u0176"+
"\13\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30"+
"\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u018f\n\30\3\31"+
"\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31"+
"\u019f\n\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u01aa\n"+
"\31\f\31\16\31\u01ad\13\31\3\31\2\5\36 \60\32\2\4\6\b\n\f\16\20\22\24"+
"\26\30\32\34\36 \"$&(*,.\60\2\13\3\2\33\34\3\2\35!\3\2&\'\3\2\"#\4\2\30"+
"\30$%\3\2\35\36\3\2&.\4\2\35\36&\'\4\2\30\30$$\2\u01e9\2\62\3\2\2\2\4"+
"\66\3\2\2\2\6<\3\2\2\2\b?\3\2\2\2\nC\3\2\2\2\fU\3\2\2\2\16W\3\2\2\2\20"+
"b\3\2\2\2\22q\3\2\2\2\24\u008b\3\2\2\2\26\u008e\3\2\2\2\30\u00c5\3\2\2"+
"\2\32\u00ca\3\2\2\2\34\u00e5\3\2\2\2\36\u00eb\3\2\2\2 \u0122\3\2\2\2\""+
"\u014e\3\2\2\2$\u0159\3\2\2\2&\u015f\3\2\2\2(\u0168\3\2\2\2*\u016a\3\2"+
"\2\2,\u016e\3\2\2\2.\u018e\3\2\2\2\60\u019e\3\2\2\2\62\63\5\6\4\2\63\64"+
"\5\n\6\2\64\65\7\2\2\3\65\3\3\2\2\2\66\67\5$\23\2\678\7\2\2\38\5\3\2\2"+
"\29;\5\b\5\2:9\3\2\2\2;>\3\2\2\2<:\3\2\2\2<=\3\2\2\2=\7\3\2\2\2><\3\2"+
"\2\2?@\7\3\2\2@A\7\67\2\2A\t\3\2\2\2BD\5\f\7\2CB\3\2\2\2DE\3\2\2\2EC\3"+
"\2\2\2EF\3\2\2\2F\13\3\2\2\2GH\5\36\20\2HI\7C\2\2IK\7\4\2\2JL\5\16\b\2"+
"KJ\3\2\2\2KL\3\2\2\2LM\3\2\2\2MN\7\5\2\2NP\7\6\2\2OQ\5\26\f\2PO\3\2\2"+
"\2PQ\3\2\2\2QR\3\2\2\2RS\7\7\2\2SV\3\2\2\2TV\5\22\n\2UG\3\2\2\2UT\3\2"+
"\2\2V\r\3\2\2\2W\\\5\20\t\2XY\7\b\2\2Y[\5\20\t\2ZX\3\2\2\2[^\3\2\2\2\\"+
"Z\3\2\2\2\\]\3\2\2\2]\17\3\2\2\2^\\\3\2\2\2_a\5\24\13\2`_\3\2\2\2ad\3"+
"\2\2\2b`\3\2\2\2bc\3\2\2\2ce\3\2\2\2db\3\2\2\2ei\5\36\20\2fh\5\24\13\2"+
"gf\3\2\2\2hk\3\2\2\2ig\3\2\2\2ij\3\2\2\2jl\3\2\2\2ki\3\2\2\2lm\7C\2\2"+
"m\21\3\2\2\2np\5\24\13\2on\3\2\2\2ps\3\2\2\2qo\3\2\2\2qr\3\2\2\2rt\3\2"+
"\2\2sq\3\2\2\2tx\5\36\20\2uw\5\24\13\2vu\3\2\2\2wz\3\2\2\2xv\3\2\2\2x"+
"y\3\2\2\2y{\3\2\2\2zx\3\2\2\2{~\7C\2\2|}\7\t\2\2}\177\5 \21\2~|\3\2\2"+
"\2~\177\3\2\2\2\177\u0080\3\2\2\2\u0080\u0081\7\n\2\2\u0081\23\3\2\2\2"+
"\u0082\u008c\7\13\2\2\u0083\u0084\7\f\2\2\u0084\u0085\7\4\2\2\u0085\u0086"+
"\7:\2\2\u0086\u008c\7\5\2\2\u0087\u0088\7\r\2\2\u0088\u0089\7\4\2\2\u0089"+
"\u008a\7C\2\2\u008a\u008c\7\5\2\2\u008b\u0082\3\2\2\2\u008b\u0083\3\2"+
"\2\2\u008b\u0087\3\2\2\2\u008c\25\3\2\2\2\u008d\u008f\5\30\r\2\u008e\u008d"+
"\3\2\2\2\u008f\u0090\3\2\2\2\u0090\u008e\3\2\2\2\u0090\u0091\3\2\2\2\u0091"+
"\27\3\2\2\2\u0092\u00c6\5\22\n\2\u0093\u0095\7\6\2\2\u0094\u0096\5\26"+
"\f\2\u0095\u0094\3\2\2\2\u0095\u0096\3\2\2\2\u0096\u0097\3\2\2\2\u0097"+
"\u00c6\7\7\2\2\u0098\u0099\5 \21\2\u0099\u009a\7\n\2\2\u009a\u00c6\3\2"+
"\2\2\u009b\u009c\7\16\2\2\u009c\u009d\7\4\2\2\u009d\u009e\5 \21\2\u009e"+
"\u009f\7\5\2\2\u009f\u00a2\5\30\r\2\u00a0\u00a1\7\17\2\2\u00a1\u00a3\5"+
"\30\r\2\u00a2\u00a0\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00c6\3\2\2\2\u00a4"+
"\u00a5\7\20\2\2\u00a5\u00a6\7\4\2\2\u00a6\u00a7\5 \21\2\u00a7\u00a8\7"+
"\5\2\2\u00a8\u00a9\5\30\r\2\u00a9\u00c6\3\2\2\2\u00aa\u00ab\7\21\2\2\u00ab"+
"\u00ac\5\30\r\2\u00ac\u00ad\7\20\2\2\u00ad\u00ae\7\4\2\2\u00ae\u00af\5"+
" \21\2\u00af\u00b0\7\5\2\2\u00b0\u00b1\7\n\2\2\u00b1\u00c6\3\2\2\2\u00b2"+
"\u00b3\7\22\2\2\u00b3\u00b5\7\4\2\2\u00b4\u00b6\5\32\16\2\u00b5\u00b4"+
"\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b8\5\34\17\2"+
"\u00b8\u00b9\7\5\2\2\u00b9\u00ba\5\30\r\2\u00ba\u00c6\3\2\2\2\u00bb\u00bd"+
"\7\23\2\2\u00bc\u00be\5 \21\2\u00bd\u00bc\3\2\2\2\u00bd\u00be\3\2\2\2"+
"\u00be\u00bf\3\2\2\2\u00bf\u00c6\7\n\2\2\u00c0\u00c1\7\24\2\2\u00c1\u00c2"+
"\7\6\2\2\u00c2\u00c3\5$\23\2\u00c3\u00c4\7\7\2\2\u00c4\u00c6\3\2\2\2\u00c5"+
"\u0092\3\2\2\2\u00c5\u0093\3\2\2\2\u00c5\u0098\3\2\2\2\u00c5\u009b\3\2"+
"\2\2\u00c5\u00a4\3\2\2\2\u00c5\u00aa\3\2\2\2\u00c5\u00b2\3\2\2\2\u00c5"+
"\u00bb\3\2\2\2\u00c5\u00c0\3\2\2\2\u00c6\31\3\2\2\2\u00c7\u00c9\5\24\13"+
@ -3638,35 +3676,36 @@ public class KickCParser extends Parser {
"\3\2\2\2\u0159\u0157\3\2\2\2\u0159\u015a\3\2\2\2\u015a%\3\2\2\2\u015b"+
"\u0159\3\2\2\2\u015c\u0160\5(\25\2\u015d\u0160\5*\26\2\u015e\u0160\5,"+
"\27\2\u015f\u015c\3\2\2\2\u015f\u015d\3\2\2\2\u015f\u015e\3\2\2\2\u0160"+
"\'\3\2\2\2\u0161\u0162\7C\2\2\u0162\u0166\7\25\2\2\u0163\u0164\7\37\2"+
"\2\u0164\u0166\7\25\2\2\u0165\u0161\3\2\2\2\u0165\u0163\3\2\2\2\u0166"+
")\3\2\2\2\u0167\u0169\7\65\2\2\u0168\u016a\5.\30\2\u0169\u0168\3\2\2\2"+
"\u0169\u016a\3\2\2\2\u016a+\3\2\2\2\u016b\u016c\7\63\2\2\u016c\u0171\5"+
"\60\31\2\u016d\u016e\7\b\2\2\u016e\u0170\5\60\31\2\u016f\u016d\3\2\2\2"+
"\u0170\u0173\3\2\2\2\u0171\u016f\3\2\2\2\u0171\u0172\3\2\2\2\u0172-\3"+
"\2\2\2\u0173\u0171\3\2\2\2\u0174\u018c\5\60\31\2\u0175\u0176\7\64\2\2"+
"\u0176\u018c\5\60\31\2\u0177\u0178\5\60\31\2\u0178\u0179\7\b\2\2\u0179"+
"\u017a\7C\2\2\u017a\u018c\3\2\2\2\u017b\u017c\7\4\2\2\u017c\u017d\5\60"+
"\31\2\u017d\u017e\7\5\2\2\u017e\u017f\7\b\2\2\u017f\u0180\7C\2\2\u0180"+
"\u018c\3\2\2\2\u0181\u0182\7\4\2\2\u0182\u0183\5\60\31\2\u0183\u0184\7"+
"\b\2\2\u0184\u0185\7C\2\2\u0185\u0186\7\5\2\2\u0186\u018c\3\2\2\2\u0187"+
"\u0188\7\4\2\2\u0188\u0189\5\60\31\2\u0189\u018a\7\5\2\2\u018a\u018c\3"+
"\2\2\2\u018b\u0174\3\2\2\2\u018b\u0175\3\2\2\2\u018b\u0177\3\2\2\2\u018b"+
"\u017b\3\2\2\2\u018b\u0181\3\2\2\2\u018b\u0187\3\2\2\2\u018c/\3\2\2\2"+
"\u018d\u018e\b\31\1\2\u018e\u018f\7\31\2\2\u018f\u0190\5\60\31\2\u0190"+
"\u0191\7\32\2\2\u0191\u019c\3\2\2\2\u0192\u0193\t\t\2\2\u0193\u019c\5"+
"\60\31\n\u0194\u019c\7C\2\2\u0195\u019c\7D\2\2\u0196\u0197\7\6\2\2\u0197"+
"\u0198\7C\2\2\u0198\u019c\7\7\2\2\u0199\u019c\7:\2\2\u019a\u019c\78\2"+
"\2\u019b\u018d\3\2\2\2\u019b\u0192\3\2\2\2\u019b\u0194\3\2\2\2\u019b\u0195"+
"\3\2\2\2\u019b\u0196\3\2\2\2\u019b\u0199\3\2\2\2\u019b\u019a\3\2\2\2\u019c"+
"\u01a8\3\2\2\2\u019d\u019e\f\13\2\2\u019e\u019f\t\5\2\2\u019f\u01a7\5"+
"\60\31\f\u01a0\u01a1\f\t\2\2\u01a1\u01a2\t\n\2\2\u01a2\u01a7\5\60\31\n"+
"\u01a3\u01a4\f\b\2\2\u01a4\u01a5\t\7\2\2\u01a5\u01a7\5\60\31\t\u01a6\u019d"+
"\3\2\2\2\u01a6\u01a0\3\2\2\2\u01a6\u01a3\3\2\2\2\u01a7\u01aa\3\2\2\2\u01a8"+
"\u01a6\3\2\2\2\u01a8\u01a9\3\2\2\2\u01a9\61\3\2\2\2\u01aa\u01a8\3\2\2"+
"\2,<EKPU\\biqx~\u008b\u0090\u0095\u00a2\u00b5\u00bd\u00c5\u00ca\u00ce"+
"\'\3\2\2\2\u0161\u0162\7C\2\2\u0162\u0169\7\25\2\2\u0163\u0165\7\37\2"+
"\2\u0164\u0166\7C\2\2\u0165\u0164\3\2\2\2\u0165\u0166\3\2\2\2\u0166\u0167"+
"\3\2\2\2\u0167\u0169\7\25\2\2\u0168\u0161\3\2\2\2\u0168\u0163\3\2\2\2"+
"\u0169)\3\2\2\2\u016a\u016c\7\65\2\2\u016b\u016d\5.\30\2\u016c\u016b\3"+
"\2\2\2\u016c\u016d\3\2\2\2\u016d+\3\2\2\2\u016e\u016f\7\63\2\2\u016f\u0174"+
"\5\60\31\2\u0170\u0171\7\b\2\2\u0171\u0173\5\60\31\2\u0172\u0170\3\2\2"+
"\2\u0173\u0176\3\2\2\2\u0174\u0172\3\2\2\2\u0174\u0175\3\2\2\2\u0175-"+
"\3\2\2\2\u0176\u0174\3\2\2\2\u0177\u018f\5\60\31\2\u0178\u0179\7\64\2"+
"\2\u0179\u018f\5\60\31\2\u017a\u017b\5\60\31\2\u017b\u017c\7\b\2\2\u017c"+
"\u017d\7C\2\2\u017d\u018f\3\2\2\2\u017e\u017f\7\4\2\2\u017f\u0180\5\60"+
"\31\2\u0180\u0181\7\5\2\2\u0181\u0182\7\b\2\2\u0182\u0183\7C\2\2\u0183"+
"\u018f\3\2\2\2\u0184\u0185\7\4\2\2\u0185\u0186\5\60\31\2\u0186\u0187\7"+
"\b\2\2\u0187\u0188\7C\2\2\u0188\u0189\7\5\2\2\u0189\u018f\3\2\2\2\u018a"+
"\u018b\7\4\2\2\u018b\u018c\5\60\31\2\u018c\u018d\7\5\2\2\u018d\u018f\3"+
"\2\2\2\u018e\u0177\3\2\2\2\u018e\u0178\3\2\2\2\u018e\u017a\3\2\2\2\u018e"+
"\u017e\3\2\2\2\u018e\u0184\3\2\2\2\u018e\u018a\3\2\2\2\u018f/\3\2\2\2"+
"\u0190\u0191\b\31\1\2\u0191\u0192\7\31\2\2\u0192\u0193\5\60\31\2\u0193"+
"\u0194\7\32\2\2\u0194\u019f\3\2\2\2\u0195\u0196\t\t\2\2\u0196\u019f\5"+
"\60\31\n\u0197\u019f\7C\2\2\u0198\u019f\7D\2\2\u0199\u019a\7\6\2\2\u019a"+
"\u019b\7C\2\2\u019b\u019f\7\7\2\2\u019c\u019f\7:\2\2\u019d\u019f\78\2"+
"\2\u019e\u0190\3\2\2\2\u019e\u0195\3\2\2\2\u019e\u0197\3\2\2\2\u019e\u0198"+
"\3\2\2\2\u019e\u0199\3\2\2\2\u019e\u019c\3\2\2\2\u019e\u019d\3\2\2\2\u019f"+
"\u01ab\3\2\2\2\u01a0\u01a1\f\13\2\2\u01a1\u01a2\t\5\2\2\u01a2\u01aa\5"+
"\60\31\f\u01a3\u01a4\f\t\2\2\u01a4\u01a5\t\n\2\2\u01a5\u01aa\5\60\31\n"+
"\u01a6\u01a7\f\b\2\2\u01a7\u01a8\t\7\2\2\u01a8\u01aa\5\60\31\t\u01a9\u01a0"+
"\3\2\2\2\u01a9\u01a3\3\2\2\2\u01a9\u01a6\3\2\2\2\u01aa\u01ad\3\2\2\2\u01ab"+
"\u01a9\3\2\2\2\u01ab\u01ac\3\2\2\2\u01ac\61\3\2\2\2\u01ad\u01ab\3\2\2"+
"\2-<EKPU\\biqx~\u008b\u0090\u0095\u00a2\u00b5\u00bd\u00c5\u00ca\u00ce"+
"\u00d3\u00d9\u00e5\u00eb\u00f2\u00f5\u00f7\u0102\u0118\u0122\u0149\u014b"+
"\u0153\u0159\u015f\u0165\u0169\u0171\u018b\u019b\u01a6\u01a8";
"\u0153\u0159\u015f\u0165\u0168\u016c\u0174\u018e\u019e\u01a9\u01ab";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {

View File

@ -342,11 +342,19 @@ public interface KickCVisitor<T> extends ParseTreeVisitor<T> {
*/
T visitAsmLine(KickCParser.AsmLineContext ctx);
/**
* Visit a parse tree produced by {@link KickCParser#asmLabel}.
* Visit a parse tree produced by the {@code asmLabelName}
* labeled alternative in {@link KickCParser#asmLabel}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAsmLabel(KickCParser.AsmLabelContext ctx);
T visitAsmLabelName(KickCParser.AsmLabelNameContext ctx);
/**
* Visit a parse tree produced by the {@code asmLabelMulti}
* labeled alternative in {@link KickCParser#asmLabel}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx);
/**
* Visit a parse tree produced by {@link KickCParser#asmInstruction}.
* @param ctx the parse tree

View File

@ -9,13 +9,17 @@ import "multiply.kc"
import "print.kc"
void main() {
word wavelength = 128;
signed word[128] sintab1;
word wavelength = 120;
signed word[120] sintab1;
sin16s_gen(sintab1, wavelength);
print_cls();
for(signed word* st1 = sintab1; st1<sintab1+wavelength*2; st1 = st1+2 ) {
print_sword(*st1);
print_str(" @");
signed word sw = *st1;
if(sw>=0) {
print_str(" @");
}
print_sword(sw);
print_str(" @");
}
}
@ -33,14 +37,51 @@ const word PI_u4f12 = $3244;
// PI/2 in u[4.12] format
const word PI_HALF_u4f12 = $1922;
// Generate signed word sinus table
// Generate signed (large) word sinus table - on the full -$7fff - $7fff range
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen(signed word* sintab, word wavelength) {
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// Iterate over the table
dword x = 0; // u[4.28]
for( word i=0; i<wavelength; i++) {
// Move x1 into the range 0-PI/2 using sinus mirror symmetries
dword xp = x; // u[4.28]
byte isUpper = 0;
if(xp >= PI_u4f28 ) {
xp = xp - PI_u4f28;
isUpper = 1;
}
if(xp >= PI_HALF_u4f28 ) {
xp = PI_u4f28 - xp;
}
// s[4.12] sinx = x - x^3/6 + x5/128;
word x1 = >xp<<3; // u[1.15]
word x2 = mul_u16_sel(x1, x1, 0); // u[2.14] x^2
word x3 = mul_u16_sel(x2, x1, 1); // u[2.14] x^3
word x3_6 = mul_u16_sel(x3, $10000/6, 1); // u[1.15] x^3/6;
word usinx = x1 - x3_6; // u[1.15] x - x^3/6
word x4 = mul_u16_sel(x3, x1, 0); // u[3.13] x^4
word x5 = mul_u16_sel(x4, x1, 0); // u[4.12] x^5
word x5_128 = mul_u16_sel(x5, $10000/128, 3); // u[1.15] x^5/128;
usinx = usinx + x5_128; // u[1.15] (always an initial zero)
signed word sinx = (signed word)usinx; // s[0.15]
if(isUpper!=0) {
sinx = -(signed word)usinx; // s[0.15];
}
*sintab = sinx;
sintab = sintab + 2;
x = x + step;
}
}
// Generate (small) signed word sinus table - in the limited -$fff - $fff range
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16ss_gen(signed word* sintab, word wavelength) {
// u[4.12] step = PI*2/wavelength
word stepi = divr16u(>PI2_u4f28, wavelength, 0);
word stepf = divr16u(<PI2_u4f28, wavelength, rem16u);
dword step = { stepi, stepf }; // u[4.12]
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// Iterate over the table
dword x = 0; // u[4.28]
for( word i=0; i<wavelength; i++) {
@ -55,13 +96,13 @@ void sin16s_gen(signed word* sintab, word wavelength) {
x1 = PI_u4f12 - x1;
}
// s[4.12] sinx = x - x^3/6 + x5/128;
word x2 = mul_u4f12(x1, x1); // u[4.12]
word x3 = mul_u4f12(x2, x1); // u[4.12]
word x3_6 = >mul16u(x3, $10000/6); // u[4.12] - u[0.16] div6 = 1/6;
word x2 = mul_u16_sel(x1, x1, 4); // u[4.12]
word x3 = mul_u16_sel(x2, x1, 4); // u[4.12]
word x3_6 = mul_u16_sel(x3, $10000/6, 0); // u[4.12] - u[0.16] div6 = 1/6;
word usinx = x1 - x3_6; // u[4.12]
word x4 = mul_u4f12(x3, x1); // u[4.12]
word x5 = mul_u4f12(x4, x1); // u[4.12]
word x5_128 = >mul16u(x5, $10000/128); // u[4.12] - u[0.16] div128 = 1/128;
word x4 = mul_u16_sel(x3, x1, 4); // u[4.12]
word x5 = mul_u16_sel(x4, x1, 4); // u[4.12]
word x5_128 = mul_u16_sel(x5, $10000/128, 0); // u[4.12] - u[0.16] div128 = 1/128;
usinx = usinx + x5_128;
signed word sinx;
if(isUpper!=0) {
@ -75,7 +116,17 @@ void sin16s_gen(signed word* sintab, word wavelength) {
}
}
// Calculate val*val for val u[4.12] to val*val u[4.28]
word mul_u4f12(word v1, word v2) {
return >mul16u(v1, v2)<<4;
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
word mul_u16_sel(word v1, word v2, byte select) {
return >mul16u(v1, v2)<<select;
}
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
// The 16-bit word remainder can be found in rem16u after the division
dword div32u16u(dword dividend, word divisor) {
word quotient_hi = divr16u(>dividend, divisor, 0);
word quotient_lo = divr16u(<dividend, divisor, rem16u);
dword quotient = { quotient_hi, quotient_lo};
return quotient;
}

View File

@ -3,13 +3,14 @@
.pc = $80d "Program"
.label SCREEN = $400
.const PI2_u4f28 = $6487ed51
.const PI_u4f12 = $3244
.const PI_HALF_u4f12 = $1922
.const PI_u4f28 = $3243f6a9
.const PI_HALF_u4f28 = $1921fb54
.label rem16u = 4
.label char_cursor = 6
.label char_cursor = 8
jsr main
main: {
.label wavelength = $80
.label wavelength = $78
.label sw = 6
.label st1 = 2
jsr sin16s_gen
jsr print_cls
@ -24,11 +25,22 @@ main: {
b1:
ldy #0
lda (st1),y
sta print_sword.w
sta sw
iny
lda (st1),y
sta print_sword.w+1
sta sw+1
bmi b2
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
b2:
jsr print_sword
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
clc
lda st1
@ -45,15 +57,12 @@ main: {
bcc b1
!:
rts
str: .text " @"
sintab1: .fill $100, 0
str: .text " @"
str1: .text " @"
sintab1: .fill $f0, 0
}
print_str: {
.label str = 4
lda #<main.str
sta str
lda #>main.str
sta str+1
b1:
ldy #0
lda (str),y
@ -75,7 +84,7 @@ print_str: {
jmp b1
}
print_sword: {
.label w = 4
.label w = 6
lda w+1
bpl b1
lda #'-'
@ -151,54 +160,22 @@ print_cls: {
rts
}
sin16s_gen: {
.label _14 = $12
.label _20 = $12
.label stepi = $e
.label stepf = $c
.label _7 = $e
.label step = $1a
.label x1 = 6
.label x2 = $10
.label x3 = $1e
.label usinx = $c
.label x4 = $10
.label x5 = $10
.label sinx = $c
.label xp = $e
.label x1 = $1e
.label x2 = 8
.label x3 = 8
.label x3_6 = 6
.label usinx = 6
.label x4 = 8
.label x5 = 8
.label x5_128 = $12
.label sintab = 2
.label x = 8
.label x = $a
.label i = 4
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28>>16
sta divr16u.dividend
lda #>PI2_u4f28>>16
sta divr16u.dividend+1
lda #<0
sta divr16u.rem
sta divr16u.rem+1
jsr divr16u
lda divr16u.return
sta stepi
lda divr16u.return+1
sta stepi+1
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28&$ffff
sta divr16u.dividend
lda #>PI2_u4f28&$ffff
sta divr16u.dividend+1
jsr divr16u
lda stepi
sta step+2
lda stepi+1
sta step+3
lda stepf
sta step
lda stepf+1
sta step+1
.label sinx = 6
jsr div32u16u
lda #<0
sta i
sta i+1
@ -212,91 +189,163 @@ sin16s_gen: {
sta x+2
sta x+3
b1:
lda x+2
sta x1
lda x+3
sta x1+1
cmp #>PI_u4f12
bcc b4
cmp #>PI_u4f28>>$10
bcs !b17+
jmp b17
!b17:
bne !+
lda x1
cmp #<PI_u4f12
bcc b4
lda x+2
cmp #<PI_u4f28>>$10
bcs !b17+
jmp b17
!b17:
bne !+
lda x+1
cmp #>PI_u4f28
bcs !b17+
jmp b17
!b17:
bne !+
lda x
cmp #<PI_u4f28
bcs !b17+
jmp b17
!b17:
!:
lda x1
lda x
sec
sbc #<PI_u4f12
sta x1
lda x1+1
sbc #>PI_u4f12
sta x1+1
ldx #1
jmp b2
b4:
ldx #0
sbc #<PI_u4f28
sta xp
lda x+1
sbc #>PI_u4f28
sta xp+1
lda x+2
sbc #<PI_u4f28>>$10
sta xp+2
lda x+3
sbc #>PI_u4f28>>$10
sta xp+3
ldy #1
b2:
lda x1+1
cmp #>PI_HALF_u4f12
lda xp+3
cmp #>PI_HALF_u4f28>>$10
bcc b3
bne !+
lda x1
cmp #<PI_HALF_u4f12
lda xp+2
cmp #<PI_HALF_u4f28>>$10
bcc b3
bne !+
lda xp+1
cmp #>PI_HALF_u4f28
bcc b3
bne !+
lda xp
cmp #<PI_HALF_u4f28
bcc b3
!:
lda #<PI_u4f28
sec
lda #<PI_u4f12
sbc x1
sta x1
lda #>PI_u4f12
sbc x1+1
sta x1+1
sbc xp
sta xp
lda #>PI_u4f28
sbc xp+1
sta xp+1
lda #<PI_u4f28>>$10
sbc xp+2
sta xp+2
lda #>PI_u4f28>>$10
sbc xp+3
sta xp+3
b3:
ldx #3
!:
asl _7
rol _7+1
rol _7+2
rol _7+3
dex
bne !-
lda _7+2
sta x1
lda _7+3
sta x1+1
lda x1
sta mul_u4f12.v1
sta mul_u16_sel.v1
lda x1+1
sta mul_u4f12.v1+1
jsr mul_u4f12
jsr mul_u4f12
lda mul_u4f12.return
sta x3
lda mul_u4f12.return+1
sta x3+1
lda x3
sta mul16u.a
lda x3+1
sta mul16u.a+1
sta mul_u16_sel.v1+1
lda x1
sta mul_u16_sel.v2
lda x1+1
sta mul_u16_sel.v2+1
ldx #0
jsr mul_u16_sel
lda mul_u16_sel.return_14
sta mul_u16_sel.return
lda mul_u16_sel.return_14+1
sta mul_u16_sel.return+1
lda x1
sta mul_u16_sel.v2
lda x1+1
sta mul_u16_sel.v2+1
ldx #1
jsr mul_u16_sel
lda mul_u16_sel.return_14
sta mul_u16_sel.return
lda mul_u16_sel.return_14+1
sta mul_u16_sel.return+1
ldx #1
lda #<$10000/6
sta mul16u.b
sta mul_u16_sel.v2
lda #>$10000/6
sta mul16u.b+1
jsr mul16u
sta mul_u16_sel.v2+1
jsr mul_u16_sel
lda mul_u16_sel.return_14
sta mul_u16_sel.return_10
lda mul_u16_sel.return_14+1
sta mul_u16_sel.return_10+1
lda x1
sec
sbc _14+2
sbc usinx
sta usinx
lda x1+1
sbc _14+3
sbc usinx+1
sta usinx+1
lda x3
sta mul_u4f12.v1
lda x3+1
sta mul_u4f12.v1+1
jsr mul_u4f12
jsr mul_u4f12
lda x1
sta mul_u16_sel.v2
lda x1+1
sta mul_u16_sel.v2+1
ldx #0
jsr mul_u16_sel
lda mul_u16_sel.return_14
sta mul_u16_sel.return
lda mul_u16_sel.return_14+1
sta mul_u16_sel.return+1
lda x1
sta mul_u16_sel.v2
lda x1+1
sta mul_u16_sel.v2+1
ldx #0
jsr mul_u16_sel
lda mul_u16_sel.return_14
sta mul_u16_sel.return
lda mul_u16_sel.return_14+1
sta mul_u16_sel.return+1
ldx #3
lda #<$10000/$80
sta mul16u.b
sta mul_u16_sel.v2
lda #>$10000/$80
sta mul16u.b+1
jsr mul16u
sta mul_u16_sel.v2+1
jsr mul_u16_sel
lda usinx
clc
adc _20+2
adc x5_128
sta usinx
lda usinx+1
adc _20+3
adc x5_128+1
sta usinx+1
cpx #0
beq b5
cpy #0
beq b4
sec
lda sinx
eor #$ff
@ -306,7 +355,7 @@ sin16s_gen: {
eor #$ff
adc #0
sta sinx+1
b5:
b4:
ldy #0
lda sinx
sta (sintab),y
@ -350,13 +399,54 @@ sin16s_gen: {
!b1:
!:
rts
b17:
lda x
sta xp
lda x+1
sta xp+1
lda x+2
sta xp+2
lda x+3
sta xp+3
ldy #0
jmp b2
}
mul_u16_sel: {
.label _0 = $e
.label _1 = $e
.label v1 = 8
.label v2 = $12
.label return = 8
.label return_10 = 6
.label return_13 = $12
.label return_14 = $12
lda v1
sta mul16u.a
lda v1+1
sta mul16u.a+1
jsr mul16u
cpx #0
beq !e+
!:
asl _1
rol _1+1
rol _1+2
rol _1+3
dex
bne !-
!e:
lda _1+2
sta return_14
lda _1+3
sta return_14+1
rts
}
mul16u: {
.label mb = $16
.label a = $10
.label res = $12
.label return = $12
.label b = $e
.label a = $14
.label res = $e
.label b = $12
.label return = $e
lda b
sta mb
lda b+1
@ -402,44 +492,50 @@ mul16u: {
rol mb+3
jmp b1
}
mul_u4f12: {
.label _0 = $12
.label _1 = $12
.label v1 = $10
.label v2 = 6
.label return = $10
lda v2
sta mul16u.b
lda v2+1
sta mul16u.b+1
jsr mul16u
asl _1
rol _1+1
rol _1+2
rol _1+3
asl _1
rol _1+1
rol _1+2
rol _1+3
asl _1
rol _1+1
rol _1+2
rol _1+3
asl _1
rol _1+1
rol _1+2
rol _1+3
lda _1+2
div32u16u: {
.label return = $1a
.label quotient_hi = $12
.label quotient_lo = 8
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28>>16
sta divr16u.dividend
lda #>PI2_u4f28>>16
sta divr16u.dividend+1
lda #<0
sta divr16u.rem
sta divr16u.rem+1
jsr divr16u
lda divr16u.return
sta quotient_hi
lda divr16u.return+1
sta quotient_hi+1
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28&$ffff
sta divr16u.dividend
lda #>PI2_u4f28&$ffff
sta divr16u.dividend+1
jsr divr16u
lda quotient_hi
sta return+2
lda quotient_hi+1
sta return+3
lda quotient_lo
sta return
lda _1+3
lda quotient_lo+1
sta return+1
rts
}
divr16u: {
.label rem = 4
.label dividend = 6
.label quotient = $c
.label return = $c
.label quotient = 8
.label return = 8
.label divisor = 2
ldx #0
txa

View File

@ -1,295 +1,317 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@23
@23: scope:[] from @begin
to:@25
@25: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @23
@end: scope:[] from @25
[3] phi() [ ] ( )
main: scope:[main] from @23
main: scope:[main] from @25
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen param-assignment [ ] ( main:2 [ ] )
to:main::@3
main::@3: scope:[main] from main
to:main::@5
main::@5: scope:[main] from main
[6] phi() [ ] ( main:2 [ ] )
[7] call print_cls param-assignment [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main::@3 main::@6
[8] (byte*) char_cursor#46 ← phi( main::@3/(const byte*) SCREEN#0 main::@6/(byte*) char_cursor#2 ) [ main::st1#2 char_cursor#46 ] ( main:2 [ main::st1#2 char_cursor#46 ] )
[8] (signed word*) main::st1#2 ← phi( main::@3/(const signed word[128]) main::sintab1#0 main::@6/(signed word*) main::st1#1 ) [ main::st1#2 char_cursor#46 ] ( main:2 [ main::st1#2 char_cursor#46 ] )
[9] (signed word) print_sword::w#1 ← *((signed word*) main::st1#2) [ main::st1#2 char_cursor#46 print_sword::w#1 ] ( main:2 [ main::st1#2 char_cursor#46 print_sword::w#1 ] )
[10] call print_sword param-assignment [ main::st1#2 char_cursor#12 ] ( main:2 [ main::st1#2 char_cursor#12 ] )
to:main::@5
main::@5: scope:[main] from main::@1
[11] phi() [ main::st1#2 char_cursor#12 ] ( main:2 [ main::st1#2 char_cursor#12 ] )
[12] call print_str param-assignment [ main::st1#2 char_cursor#2 ] ( main:2 [ main::st1#2 char_cursor#2 ] )
to:main::@6
main::@6: scope:[main] from main::@5
[13] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st1#1 char_cursor#2 ] ( main:2 [ main::st1#1 char_cursor#2 ] )
[14] if((signed word*) main::st1#1<(const signed word[128]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 [ main::st1#1 char_cursor#2 ] ( main:2 [ main::st1#1 char_cursor#2 ] )
main::@1: scope:[main] from main::@5 main::@8
[8] (byte*) char_cursor#49 ← phi( main::@5/(const byte*) SCREEN#0 main::@8/(byte*) char_cursor#2 ) [ main::st1#2 char_cursor#49 ] ( main:2 [ main::st1#2 char_cursor#49 ] )
[8] (signed word*) main::st1#2 ← phi( main::@5/(const signed word[120]) main::sintab1#0 main::@8/(signed word*) main::st1#1 ) [ main::st1#2 char_cursor#49 ] ( main:2 [ main::st1#2 char_cursor#49 ] )
[9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 char_cursor#49 main::sw#0 ] )
[10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 char_cursor#49 main::sw#0 ] )
to:main::@3
main::@3: scope:[main] from main::@1
[11] phi() [ main::st1#2 char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 char_cursor#49 main::sw#0 ] )
[12] call print_str param-assignment [ main::st1#2 char_cursor#2 main::sw#0 ] ( main:2 [ main::st1#2 char_cursor#2 main::sw#0 ] )
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[13] (byte*) char_cursor#48 ← phi( main::@1/(byte*) char_cursor#49 main::@3/(byte*) char_cursor#2 ) [ main::st1#2 main::sw#0 char_cursor#48 ] ( main:2 [ main::st1#2 main::sw#0 char_cursor#48 ] )
[14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 char_cursor#48 print_sword::w#1 ] )
[15] call print_sword param-assignment [ main::st1#2 char_cursor#12 ] ( main:2 [ main::st1#2 char_cursor#12 ] )
to:main::@7
main::@7: scope:[main] from main::@2
[16] phi() [ main::st1#2 char_cursor#12 ] ( main:2 [ main::st1#2 char_cursor#12 ] )
[17] call print_str param-assignment [ main::st1#2 char_cursor#2 ] ( main:2 [ main::st1#2 char_cursor#2 ] )
to:main::@8
main::@8: scope:[main] from main::@7
[18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st1#1 char_cursor#2 ] ( main:2 [ main::st1#1 char_cursor#2 ] )
[19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 [ main::st1#1 char_cursor#2 ] ( main:2 [ main::st1#1 char_cursor#2 ] )
to:main::@return
main::@return: scope:[main] from main::@6
[15] return [ ] ( main:2 [ ] )
main::@return: scope:[main] from main::@8
[20] return [ ] ( main:2 [ ] )
to:@return
print_str: scope:[print_str] from main::@5
[16] phi() [ char_cursor#12 ] ( main:2::print_str:12 [ main::st1#2 char_cursor#12 ] )
print_str: scope:[print_str] from main::@3 main::@7
[21] (byte*) char_cursor#51 ← phi( main::@3/(byte*) char_cursor#49 main::@7/(byte*) char_cursor#12 ) [ print_str::str#5 char_cursor#51 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_str::str#5 char_cursor#51 ] main:2::print_str:17 [ main::st1#2 print_str::str#5 char_cursor#51 ] )
[21] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@7/(const string) main::str ) [ print_str::str#5 char_cursor#51 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_str::str#5 char_cursor#51 ] main:2::print_str:17 [ main::st1#2 print_str::str#5 char_cursor#51 ] )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[17] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#12 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::st1#2 char_cursor#2 print_str::str#2 ] )
[17] (byte*) print_str::str#2 ← phi( print_str/(const string) main::str print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::st1#2 char_cursor#2 print_str::str#2 ] )
[18] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::st1#2 char_cursor#2 print_str::str#2 ] )
[22] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#51 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 char_cursor#2 print_str::str#3 ] )
[22] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 char_cursor#2 print_str::str#3 ] )
[23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 char_cursor#2 print_str::str#3 ] )
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[19] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::st1#2 char_cursor#2 ] )
[24] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 char_cursor#2 ] main:2::print_str:17 [ main::st1#2 char_cursor#2 ] )
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[20] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::st1#2 char_cursor#2 print_str::str#2 ] )
[21] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#2 char_cursor#1 ] ( main:2::print_str:12 [ main::st1#2 print_str::str#2 char_cursor#1 ] )
[22] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::st1#2 print_str::str#0 char_cursor#1 ] )
[25] *((byte*) char_cursor#2) ← *((byte*) print_str::str#3) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 char_cursor#2 print_str::str#3 ] )
[26] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_str::str#3 char_cursor#1 ] main:2::print_str:17 [ main::st1#2 print_str::str#3 char_cursor#1 ] )
[27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_str::str#0 char_cursor#1 ] main:2::print_str:17 [ main::st1#2 print_str::str#0 char_cursor#1 ] )
to:print_str::@1
print_sword: scope:[print_sword] from main::@1
[23] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:10 [ main::st1#2 char_cursor#46 print_sword::w#1 ] )
print_sword: scope:[print_sword] from main::@2
[28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:15 [ main::st1#2 char_cursor#48 print_sword::w#1 ] )
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[24] phi() [ char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:10 [ main::st1#2 char_cursor#46 print_sword::w#1 ] )
[25] call print_char param-assignment [ print_sword::w#1 char_cursor#12 ] ( main:2::print_sword:10 [ main::st1#2 print_sword::w#1 char_cursor#12 ] )
[29] phi() [ char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:15 [ main::st1#2 char_cursor#48 print_sword::w#1 ] )
[30] call print_char param-assignment [ print_sword::w#1 char_cursor#12 ] ( main:2::print_sword:15 [ main::st1#2 print_sword::w#1 char_cursor#12 ] )
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@2
[26] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:10 [ main::st1#2 char_cursor#12 print_sword::w#0 ] )
[31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:15 [ main::st1#2 char_cursor#12 print_sword::w#0 ] )
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@4
[27] (byte*) char_cursor#41 ← phi( print_sword/(byte*) char_cursor#46 print_sword::@4/(byte*) char_cursor#12 ) [ print_sword::w#3 char_cursor#41 ] ( main:2::print_sword:10 [ main::st1#2 print_sword::w#3 char_cursor#41 ] )
[27] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@4/(signed word) print_sword::w#0 ) [ print_sword::w#3 char_cursor#41 ] ( main:2::print_sword:10 [ main::st1#2 print_sword::w#3 char_cursor#41 ] )
[28] call print_word param-assignment [ char_cursor#12 ] ( main:2::print_sword:10 [ main::st1#2 char_cursor#12 ] )
[32] (byte*) char_cursor#43 ← phi( print_sword/(byte*) char_cursor#48 print_sword::@4/(byte*) char_cursor#12 ) [ print_sword::w#3 char_cursor#43 ] ( main:2::print_sword:15 [ main::st1#2 print_sword::w#3 char_cursor#43 ] )
[32] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@4/(signed word) print_sword::w#0 ) [ print_sword::w#3 char_cursor#43 ] ( main:2::print_sword:15 [ main::st1#2 print_sword::w#3 char_cursor#43 ] )
[33] call print_word param-assignment [ char_cursor#12 ] ( main:2::print_sword:15 [ main::st1#2 char_cursor#12 ] )
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[29] return [ char_cursor#12 ] ( main:2::print_sword:10 [ main::st1#2 char_cursor#12 ] )
[34] return [ char_cursor#12 ] ( main:2::print_sword:15 [ main::st1#2 char_cursor#12 ] )
to:@return
print_word: scope:[print_word] from print_sword::@1
[30] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 char_cursor#41 print_byte::b#0 ] ( main:2::print_sword:10::print_word:28 [ main::st1#2 print_sword::w#3 char_cursor#41 print_byte::b#0 ] )
[31] call print_byte param-assignment [ char_cursor#12 print_sword::w#3 ] ( main:2::print_sword:10::print_word:28 [ main::st1#2 char_cursor#12 print_sword::w#3 ] )
[35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 char_cursor#43 print_byte::b#0 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 print_sword::w#3 char_cursor#43 print_byte::b#0 ] )
[36] call print_byte param-assignment [ char_cursor#12 print_sword::w#3 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 char_cursor#12 print_sword::w#3 ] )
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[32] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:10::print_word:28 [ main::st1#2 char_cursor#12 print_byte::b#1 ] )
[33] call print_byte param-assignment [ char_cursor#12 ] ( main:2::print_sword:10::print_word:28 [ main::st1#2 char_cursor#12 ] )
[37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 char_cursor#12 print_byte::b#1 ] )
[38] call print_byte param-assignment [ char_cursor#12 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 char_cursor#12 ] )
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[34] return [ char_cursor#12 ] ( main:2::print_sword:10::print_word:28 [ main::st1#2 char_cursor#12 ] )
[39] return [ char_cursor#12 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 char_cursor#12 ] )
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[35] (byte*) char_cursor#44 ← phi( print_word/(byte*) char_cursor#41 print_word::@1/(byte*) char_cursor#12 ) [ print_byte::b#2 char_cursor#44 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#44 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 print_byte::b#2 char_cursor#44 ] )
[35] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#44 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#44 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 print_byte::b#2 char_cursor#44 ] )
[36] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 char_cursor#44 print_byte::$0 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#44 print_byte::$0 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 print_byte::b#2 char_cursor#44 print_byte::$0 ] )
[37] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#44 print_char::ch#1 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#44 print_char::ch#1 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 print_byte::b#2 char_cursor#44 print_char::ch#1 ] )
[38] call print_char param-assignment [ char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 char_cursor#12 print_byte::b#2 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 char_cursor#12 print_byte::b#2 ] )
[40] (byte*) char_cursor#46 ← phi( print_word/(byte*) char_cursor#43 print_word::@1/(byte*) char_cursor#12 ) [ print_byte::b#2 char_cursor#46 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#46 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 char_cursor#46 ] )
[40] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#46 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#46 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 char_cursor#46 ] )
[41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 char_cursor#46 print_byte::$0 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#46 print_byte::$0 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 char_cursor#46 print_byte::$0 ] )
[42] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 char_cursor#46 print_char::ch#1 ] )
[43] call print_char param-assignment [ char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 char_cursor#12 print_byte::b#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 char_cursor#12 print_byte::b#2 ] )
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#12 print_byte::$2 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 char_cursor#12 print_byte::$2 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 char_cursor#12 print_byte::$2 ] )
[40] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 char_cursor#12 print_char::ch#2 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 char_cursor#12 print_char::ch#2 ] )
[41] call print_char param-assignment [ char_cursor#12 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 char_cursor#12 ] )
[44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 char_cursor#12 print_byte::$2 ] )
[45] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 char_cursor#12 print_char::ch#2 ] )
[46] call print_char param-assignment [ char_cursor#12 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 char_cursor#12 ] )
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[42] return [ char_cursor#12 ] ( main:2::print_sword:10::print_word:28::print_byte:31 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:33 [ main::st1#2 char_cursor#12 ] )
[47] return [ char_cursor#12 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 char_cursor#12 ] )
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
[43] (byte*) char_cursor#32 ← phi( print_byte/(byte*) char_cursor#44 print_byte::@1/(byte*) char_cursor#12 print_sword::@2/(byte*) char_cursor#46 ) [ print_char::ch#3 char_cursor#32 ] ( main:2::print_sword:10::print_char:25 [ main::st1#2 print_sword::w#1 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:38 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:38 [ main::st1#2 print_byte::b#2 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:41 [ main::st1#2 print_sword::w#3 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:41 [ main::st1#2 print_char::ch#3 char_cursor#32 ] )
[43] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) [ print_char::ch#3 char_cursor#32 ] ( main:2::print_sword:10::print_char:25 [ main::st1#2 print_sword::w#1 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:38 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:38 [ main::st1#2 print_byte::b#2 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:41 [ main::st1#2 print_sword::w#3 print_char::ch#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:41 [ main::st1#2 print_char::ch#3 char_cursor#32 ] )
[44] *((byte*) char_cursor#32) ← (byte) print_char::ch#3 [ char_cursor#32 ] ( main:2::print_sword:10::print_char:25 [ main::st1#2 print_sword::w#1 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:38 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:38 [ main::st1#2 print_byte::b#2 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:41 [ main::st1#2 print_sword::w#3 char_cursor#32 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:41 [ main::st1#2 char_cursor#32 ] )
[45] (byte*) char_cursor#12 ← ++ (byte*) char_cursor#32 [ char_cursor#12 ] ( main:2::print_sword:10::print_char:25 [ main::st1#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:38 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:38 [ main::st1#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:41 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:41 [ main::st1#2 char_cursor#12 ] )
[48] (byte*) char_cursor#33 ← phi( print_byte/(byte*) char_cursor#46 print_byte::@1/(byte*) char_cursor#12 print_sword::@2/(byte*) char_cursor#48 ) [ print_char::ch#3 char_cursor#33 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:43 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:43 [ main::st1#2 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:46 [ main::st1#2 print_sword::w#3 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:46 [ main::st1#2 print_char::ch#3 char_cursor#33 ] )
[48] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) [ print_char::ch#3 char_cursor#33 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:43 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:43 [ main::st1#2 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:46 [ main::st1#2 print_sword::w#3 print_char::ch#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:46 [ main::st1#2 print_char::ch#3 char_cursor#33 ] )
[49] *((byte*) char_cursor#33) ← (byte) print_char::ch#3 [ char_cursor#33 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:43 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:43 [ main::st1#2 print_byte::b#2 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:46 [ main::st1#2 print_sword::w#3 char_cursor#33 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:46 [ main::st1#2 char_cursor#33 ] )
[50] (byte*) char_cursor#12 ← ++ (byte*) char_cursor#33 [ char_cursor#12 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:43 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:43 [ main::st1#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:46 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:46 [ main::st1#2 char_cursor#12 ] )
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[46] return [ char_cursor#12 ] ( main:2::print_sword:10::print_char:25 [ main::st1#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:38 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:38 [ main::st1#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:31::print_char:41 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:10::print_word:28::print_byte:33::print_char:41 [ main::st1#2 char_cursor#12 ] )
[51] return [ char_cursor#12 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:43 [ main::st1#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:43 [ main::st1#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:36::print_char:46 [ main::st1#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38::print_char:46 [ main::st1#2 char_cursor#12 ] )
to:@return
print_cls: scope:[print_cls] from main::@3
[47] phi() [ ] ( main:2::print_cls:7 [ ] )
print_cls: scope:[print_cls] from main::@5
[52] phi() [ ] ( main:2::print_cls:7 [ ] )
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[48] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] )
[49] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] )
[50] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] )
[51] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] )
[53] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] )
[54] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] )
[55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] )
[56] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] )
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[52] return [ ] ( main:2::print_cls:7 [ ] )
[57] return [ ] ( main:2::print_cls:7 [ ] )
to:@return
sin16s_gen: scope:[sin16s_gen] from main
[53] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
[54] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 rem16u#1 ] )
[55] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#2 rem16u#1 ] )
[58] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
[59] call div32u16u param-assignment [ div32u16u::return#1 ] ( main:2::sin16s_gen:5 [ div32u16u::return#1 ] )
[60] (dword) div32u16u::return#0 ← (dword) div32u16u::return#1 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5 [ div32u16u::return#0 ] )
to:sin16s_gen::@9
sin16s_gen::@9: scope:[sin16s_gen] from sin16s_gen
[61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#0 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] )
to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@4 sin16s_gen::@9
[62] (word) sin16s_gen::i#10 ← phi( sin16s_gen::@4/(word) sin16s_gen::i#1 sin16s_gen::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[62] (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@4/(signed word*) sin16s_gen::sintab#1 sin16s_gen::@9/(const signed word[120]) main::sintab1#0 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[62] (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@4/(dword) sin16s_gen::x#1 sin16s_gen::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[63] if((dword) sin16s_gen::x#10<(const dword) PI_u4f28#0) goto sin16s_gen::@17 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
to:sin16s_gen::@5
sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@1
[64] (dword) sin16s_gen::xp#1 ← (dword) sin16s_gen::x#10 - (const dword) PI_u4f28#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#1 ] )
to:sin16s_gen::@2
sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@17 sin16s_gen::@5
[65] (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#3 sin16s_gen::isUpper#10 ] )
[65] (dword) sin16s_gen::xp#3 ← phi( sin16s_gen::@17/(dword~) sin16s_gen::xp#7 sin16s_gen::@5/(dword) sin16s_gen::xp#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#3 sin16s_gen::isUpper#10 ] )
[66] if((dword) sin16s_gen::xp#3<(const dword) PI_HALF_u4f28#0) goto sin16s_gen::@3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#3 sin16s_gen::isUpper#10 ] )
to:sin16s_gen::@6
sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@2
[67] (dword) sin16s_gen::xp#2 ← (const dword) PI_u4f28#0 - (dword) sin16s_gen::xp#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::xp#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::xp#2 ] )
to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@6
[68] (dword) sin16s_gen::xp#5 ← phi( sin16s_gen::@2/(dword) sin16s_gen::xp#3 sin16s_gen::@6/(dword) sin16s_gen::xp#2 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::xp#5 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::xp#5 ] )
[69] (dword~) sin16s_gen::$7 ← (dword) sin16s_gen::xp#5 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::$7 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::$7 ] )
[70] (word) sin16s_gen::x1#0 ← > (dword~) sin16s_gen::$7 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 ] )
[71] (word) mul_u16_sel::v1#0 ← (word) sin16s_gen::x1#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#0 ] )
[72] (word) mul_u16_sel::v2#0 ← (word) sin16s_gen::x1#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] )
[73] call mul_u16_sel param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] )
[74] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#0 ] )
to:sin16s_gen::@10
sin16s_gen::@10: scope:[sin16s_gen] from sin16s_gen::@3
[75] (word) sin16s_gen::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x2#0 ] )
[76] (word) mul_u16_sel::v1#1 ← (word) sin16s_gen::x2#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#1 ] )
[77] (word) mul_u16_sel::v2#1 ← (word) sin16s_gen::x1#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] )
[78] call mul_u16_sel param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] )
[79] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#1 ] )
to:sin16s_gen::@11
sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen
[56] (word) sin16s_gen::stepi#0 ← (word) divr16u::return#2 [ sin16s_gen::stepi#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 rem16u#1 ] )
[57] (word) divr16u::rem#4 ← (word) rem16u#1 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::rem#4 ] )
[58] call divr16u param-assignment [ divr16u::return#0 sin16s_gen::stepi#0 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 sin16s_gen::stepi#0 ] )
[59] (word) divr16u::return#3 ← (word) divr16u::return#0 [ sin16s_gen::stepi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::return#3 ] )
sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen::@10
[80] (word) sin16s_gen::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 ] )
[81] (word) mul_u16_sel::v1#2 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::v1#2 ] )
[82] call mul_u16_sel param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 sin16s_gen::x3#0 ] )
[83] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::return#10 ] )
to:sin16s_gen::@12
sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11
[60] (word) sin16s_gen::stepf#0 ← (word) divr16u::return#3 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] )
[61] (dword) sin16s_gen::step#0 ← (word) sin16s_gen::stepi#0 dw= (word) sin16s_gen::stepf#0 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] )
to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@12 sin16s_gen::@5
[62] (word) sin16s_gen::i#10 ← phi( sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[62] (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@12/(const signed word[128]) main::sintab1#0 sin16s_gen::@5/(signed word*) sin16s_gen::sintab#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[62] (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[63] (word) sin16s_gen::x1#0 ← > (dword) sin16s_gen::x#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] )
[64] if((word) sin16s_gen::x1#0<(const word) PI_u4f12#0) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] )
to:sin16s_gen::@6
sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@1
[65] (word) sin16s_gen::x1#1 ← (word) sin16s_gen::x1#0 - (const word) PI_u4f12#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#1 ] )
to:sin16s_gen::@2
sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@6
[66] (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@6/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] )
[66] (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@6/(word) sin16s_gen::x1#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] )
[67] if((word) sin16s_gen::x1#3<(const word) PI_HALF_u4f12#0) goto sin16s_gen::@3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] )
to:sin16s_gen::@7
sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@2
[68] (word) sin16s_gen::x1#2 ← (const word) PI_u4f12#0 - (word) sin16s_gen::x1#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#2 ] )
to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@7
[69] (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@7/(word) sin16s_gen::x1#2 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] )
[70] (word) mul_u4f12::v1#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] )
[71] (word) mul_u4f12::v2#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 mul_u4f12::v2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 mul_u4f12::v2#0 ] )
[72] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] )
[73] (word) mul_u4f12::return#0 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] )
[84] (word) sin16s_gen::x3_6#0 ← (word) mul_u16_sel::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] )
[85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#0 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] )
[86] (word) mul_u16_sel::v1#3 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#3 ] )
[87] (word) mul_u16_sel::v2#3 ← (word) sin16s_gen::x1#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] )
[88] call mul_u16_sel param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 sin16s_gen::usinx#0 ] )
[89] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::return#11 ] )
to:sin16s_gen::@13
sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@3
[74] (word) sin16s_gen::x2#0 ← (word) mul_u4f12::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] )
[75] (word) mul_u4f12::v1#1 ← (word) sin16s_gen::x2#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] )
[76] (word) mul_u4f12::v2#1 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] )
[77] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] )
[78] (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] )
sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@12
[90] (word) sin16s_gen::x4#0 ← (word) mul_u16_sel::return#11 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] )
[91] (word) mul_u16_sel::v1#4 ← (word) sin16s_gen::x4#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#4 ] )
[92] (word) mul_u16_sel::v2#4 ← (word) sin16s_gen::x1#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] )
[93] call mul_u16_sel param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u16_sel::return#14 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u16_sel::return#14 sin16s_gen::usinx#0 ] )
[94] (word) mul_u16_sel::return#12 ← (word) mul_u16_sel::return#14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#12 ] )
to:sin16s_gen::@14
sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13
[79] (word) sin16s_gen::x3#0 ← (word) mul_u4f12::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] )
[80] (word) mul16u::a#1 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#1 ] )
[81] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] )
[82] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] )
[95] (word) sin16s_gen::x5#0 ← (word) mul_u16_sel::return#12 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] )
[96] (word) mul_u16_sel::v1#5 ← (word) sin16s_gen::x5#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#5 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#5 ] )
[97] call mul_u16_sel param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u16_sel::return#14 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u16_sel::return#14 sin16s_gen::usinx#0 ] )
[98] (word) mul_u16_sel::return#13 ← (word) mul_u16_sel::return#14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#13 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#13 ] )
to:sin16s_gen::@15
sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14
[83] (dword~) sin16s_gen::$14 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] )
[84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] )
[85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#10 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] )
[86] (word) mul_u4f12::v1#2 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] )
[87] (word) mul_u4f12::v2#2 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] )
[88] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] )
[89] (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] )
to:sin16s_gen::@16
sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15
[90] (word) sin16s_gen::x4#0 ← (word) mul_u4f12::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] )
[91] (word) mul_u4f12::v1#3 ← (word) sin16s_gen::x4#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] )
[92] (word) mul_u4f12::v2#3 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] )
[93] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] )
[94] (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] )
to:sin16s_gen::@17
sin16s_gen::@17: scope:[sin16s_gen] from sin16s_gen::@16
[95] (word) sin16s_gen::x5#0 ← (word) mul_u4f12::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] )
[96] (word) mul16u::a#2 ← (word) sin16s_gen::x5#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] )
[97] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] )
[98] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] )
to:sin16s_gen::@18
sin16s_gen::@18: scope:[sin16s_gen] from sin16s_gen::@17
[99] (dword~) sin16s_gen::$20 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] )
[100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] )
[101] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] )
[102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@22 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] )
to:sin16s_gen::@8
sin16s_gen::@8: scope:[sin16s_gen] from sin16s_gen::@18
[103] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] )
to:sin16s_gen::@5
sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@22 sin16s_gen::@8
[104] (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@22/(signed word~) sin16s_gen::sinx#3 sin16s_gen::@8/(signed word) sin16s_gen::sinx#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] )
[105] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[106] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] )
[107] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#10 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] )
[108] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#10 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] )
[109] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] )
[99] (word) sin16s_gen::x5_128#0 ← (word) mul_u16_sel::return#13 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] )
[100] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] )
[101] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@19 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] )
to:sin16s_gen::@7
sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@15
[102] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] )
to:sin16s_gen::@4
sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@19 sin16s_gen::@7
[103] (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@19/(signed word~) sin16s_gen::sinx#3 sin16s_gen::@7/(signed word) sin16s_gen::sinx#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] )
[104] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] )
[105] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] )
[106] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#10 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] )
[107] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#10 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] )
[108] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] )
to:sin16s_gen::@return
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@5
[110] return [ ] ( main:2::sin16s_gen:5 [ ] )
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4
[109] return [ ] ( main:2::sin16s_gen:5 [ ] )
to:@return
sin16s_gen::@22: scope:[sin16s_gen] from sin16s_gen::@18
[111] (signed word~) sin16s_gen::sinx#3 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] )
to:sin16s_gen::@5
mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@14 sin16s_gen::@17
[112] (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@14/(word) mul16u::a#1 sin16s_gen::@17/(word) mul16u::a#2 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] )
[112] (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@14/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16s_gen::@17/(dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] )
[113] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#3 [ mul16u::a#7 mul16u::mb#0 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] )
sin16s_gen::@19: scope:[sin16s_gen] from sin16s_gen::@15
[110] (signed word~) sin16s_gen::sinx#3 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] )
to:sin16s_gen::@4
sin16s_gen::@17: scope:[sin16s_gen] from sin16s_gen::@1
[111] (dword~) sin16s_gen::xp#7 ← (dword) sin16s_gen::x#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#7 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::xp#7 ] )
to:sin16s_gen::@2
mul_u16_sel: scope:[mul_u16_sel] from sin16s_gen::@10 sin16s_gen::@11 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@3
[112] (byte) mul_u16_sel::select#6 ← phi( sin16s_gen::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s_gen::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@14/(byte/signed byte/word/signed word/dword/signed dword) 3 sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] )
[112] (word) mul_u16_sel::v2#6 ← phi( sin16s_gen::@10/(word) mul_u16_sel::v2#1 sin16s_gen::@11/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16s_gen::@12/(word) mul_u16_sel::v2#3 sin16s_gen::@13/(word) mul_u16_sel::v2#4 sin16s_gen::@14/(dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 sin16s_gen::@3/(word) mul_u16_sel::v2#0 ) [ mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] )
[112] (word) mul_u16_sel::v1#6 ← phi( sin16s_gen::@10/(word) mul_u16_sel::v1#1 sin16s_gen::@11/(word) mul_u16_sel::v1#2 sin16s_gen::@12/(word) mul_u16_sel::v1#3 sin16s_gen::@13/(word) mul_u16_sel::v1#4 sin16s_gen::@14/(word) mul_u16_sel::v1#5 sin16s_gen::@3/(word) mul_u16_sel::v1#0 ) [ mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v1#6 mul_u16_sel::v2#6 mul_u16_sel::select#6 ] )
[113] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#6 [ mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::v2#6 mul_u16_sel::select#6 mul16u::a#1 ] )
[114] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#6 [ mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::b#0 ] )
[115] call mul16u param-assignment [ mul_u16_sel::select#6 mul16u::res#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 ] )
[116] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#6 mul16u::return#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::return#2 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::return#2 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::return#2 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::return#2 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::return#2 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::return#2 ] )
to:mul_u16_sel::@2
mul_u16_sel::@2: scope:[mul_u16_sel] from mul_u16_sel
[117] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#6 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul_u16_sel::$0 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul_u16_sel::$0 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul_u16_sel::$0 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul_u16_sel::$0 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul_u16_sel::$0 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul_u16_sel::$0 ] )
[118] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#6 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::$1 ] )
[119] (word) mul_u16_sel::return#14 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#14 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#14 ] )
to:mul_u16_sel::@return
mul_u16_sel::@return: scope:[mul_u16_sel] from mul_u16_sel::@2
[120] return [ mul_u16_sel::return#14 ] ( main:2::sin16s_gen:5::mul_u16_sel:73 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:78 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:82 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#14 ] main:2::sin16s_gen:5::mul_u16_sel:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::return#14 ] )
to:@return
mul16u: scope:[mul16u] from mul_u16_sel
[121] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#1 mul16u::mb#0 ] )
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
[114] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] )
[114] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] )
[114] (word) mul16u::a#4 ← phi( mul16u/(word) mul16u::a#7 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] )
[115] if((word) mul16u::a#4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] )
[122] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[122] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[122] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[123] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[116] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 ] )
[124] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 ] )
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[117] (byte~) mul16u::$1 ← (word) mul16u::a#4 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 mul16u::$1 ] )
[118] if((byte~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 mul16u::a#4 mul16u::mb#2 ] )
[125] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] )
[126] if((byte~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
to:mul16u::@7
mul16u::@7: scope:[mul16u] from mul16u::@2
[119] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#4 mul16u::mb#2 mul16u::res#1 ] )
[127] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] )
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
[120] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#4 mul16u::mb#2 mul16u::res#6 ] )
[121] (word) mul16u::a#0 ← (word) mul16u::a#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
[122] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
[128] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] )
[129] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
[130] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:2::sin16s_gen:5::mul_u16_sel:73::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u16_sel:78::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 mul_u16_sel::select#6 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u16_sel:82::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::x3#0 mul_u16_sel::select#6 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u16_sel:88::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#0 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u16_sel:93::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u16_sel:97::mul16u:115 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u16_sel::select#6 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
to:mul16u::@1
mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@13 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@3
[123] (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v2#1 sin16s_gen::@15/(word) mul_u4f12::v2#2 sin16s_gen::@16/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] )
[123] (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v1#1 sin16s_gen::@15/(word) mul_u4f12::v1#2 sin16s_gen::@16/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] )
[124] (word) mul16u::a#3 ← (word) mul_u4f12::v1#4 [ mul16u::a#3 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#3 mul_u4f12::v2#4 ] )
[125] (word) mul16u::b#2 ← (word) mul_u4f12::v2#4 [ mul16u::b#2 mul16u::a#3 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#2 mul16u::a#3 ] )
[126] call mul16u param-assignment [ mul16u::res#2 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 ] )
[127] (dword) mul16u::return#4 ← (dword) mul16u::res#2 [ mul16u::return#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::return#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::return#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::return#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#4 ] )
to:mul_u4f12::@2
mul_u4f12::@2: scope:[mul_u4f12] from mul_u4f12
[128] (dword~) mul_u4f12::$0 ← (dword) mul16u::return#4 [ mul_u4f12::$0 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::$0 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::$0 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::$0 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::$0 ] )
[129] (dword~) mul_u4f12::$1 ← (dword~) mul_u4f12::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mul_u4f12::$1 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::$1 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::$1 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::$1 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::$1 ] )
[130] (word) mul_u4f12::return#10 ← > (dword~) mul_u4f12::$1 [ mul_u4f12::return#10 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] )
to:mul_u4f12::@return
mul_u4f12::@return: scope:[mul_u4f12] from mul_u4f12::@2
[131] return [ mul_u4f12::return#10 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] )
div32u16u: scope:[div32u16u] from sin16s_gen
[131] phi() [ ] ( main:2::sin16s_gen:5::div32u16u:59 [ ] )
[132] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ divr16u::return#0 rem16u#1 ] )
[133] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ divr16u::return#2 rem16u#1 ] )
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u
[134] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 rem16u#1 ] )
[135] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] )
[136] call divr16u param-assignment [ divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:2::sin16s_gen:5::div32u16u:59 [ divr16u::return#0 div32u16u::quotient_hi#0 ] )
[137] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 divr16u::return#3 ] )
to:div32u16u::@3
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
[138] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] )
[139] (dword) div32u16u::return#1 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::return#1 ] )
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
[140] return [ div32u16u::return#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::return#1 ] )
to:@return
divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@11
[132] (word) divr16u::divisor#6 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_gen::@11/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[132] (word) divr16u::dividend#5 ← phi( sin16s_gen/>(const dword) PI2_u4f28#0 sin16s_gen::@11/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[132] (word) divr16u::rem#10 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@11/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
[141] (word) divr16u::divisor#6 ← phi( div32u16u/(const word) main::wavelength#0 div32u16u::@2/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[141] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[141] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[133] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[133] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[133] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[133] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[134] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[135] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[136] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[137] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[142] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[142] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[142] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[142] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[143] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[144] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[145] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[146] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[138] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
[147] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[139] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[140] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[141] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[142] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[148] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[149] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[150] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[151] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[143] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[144] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
[152] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[153] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[145] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[145] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[146] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[147] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[154] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[154] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[155] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[156] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[148] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::return#0 rem16u#1 ] )
[157] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[149] return [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::return#0 rem16u#1 ] )
[158] return [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:132 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:136 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,38 @@
(label) @23
(label) @25
(label) @begin
(label) @end
(dword) PI2_u4f28
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713
(word) PI_HALF_u4f12
(const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434
(word) PI_u4f12
(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868
(dword) PI_HALF_u4f28
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
(dword) PI_u4f28
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte*) char_cursor
(byte*) char_cursor#1 char_cursor zp ZP_WORD:6 101.0
(byte*) char_cursor#12 char_cursor zp ZP_WORD:6 0.5555555555555556
(byte*) char_cursor#2 char_cursor zp ZP_WORD:6 45.142857142857146
(byte*) char_cursor#32 char_cursor zp ZP_WORD:6 5.0
(byte*) char_cursor#41 char_cursor zp ZP_WORD:6 3.0
(byte*) char_cursor#44 char_cursor zp ZP_WORD:6 2.0
(byte*) char_cursor#46 char_cursor zp ZP_WORD:6 3.75
(byte*) char_cursor#1 char_cursor zp ZP_WORD:8 101.0
(byte*) char_cursor#12 char_cursor zp ZP_WORD:8 1.1176470588235294
(byte*) char_cursor#2 char_cursor zp ZP_WORD:8 40.875
(byte*) char_cursor#33 char_cursor zp ZP_WORD:8 5.0
(byte*) char_cursor#43 char_cursor zp ZP_WORD:8 3.0
(byte*) char_cursor#46 char_cursor zp ZP_WORD:8 2.0
(byte*) char_cursor#48 char_cursor zp ZP_WORD:8 6.5
(byte*) char_cursor#49 char_cursor zp ZP_WORD:8 8.25
(byte*) char_cursor#51 char_cursor zp ZP_WORD:8 24.0
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@2
(label) div32u16u::@3
(label) div32u16u::@return
(dword) div32u16u::dividend
(word) div32u16u::divisor
(dword) div32u16u::quotient
(word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:18 0.8
(word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:8 4.0
(dword) div32u16u::return
(dword) div32u16u::return#0 return zp ZP_DWORD:26 4.0
(dword) div32u16u::return#1 return zp ZP_DWORD:26 1.3333333333333333
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 22.0
(byte~) divr16u::$2 reg byte a 22.0
@ -37,9 +53,9 @@
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:12 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:12 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:12 2.75
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0
@ -50,24 +66,29 @@
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:12 5.285714285714286
(word) divr16u::return#2 return zp ZP_WORD:12 4.0
(word) divr16u::return#3 return zp ZP_WORD:12 4.0
(word) divr16u::return#0 return zp ZP_WORD:8 5.285714285714286
(word) divr16u::return#2 return zp ZP_WORD:8 4.0
(word) divr16u::return#3 return zp ZP_WORD:8 4.0
(byte*) line_cursor
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@8
(label) main::@return
(signed word[128]) main::sintab1
(const signed word[128]) main::sintab1#0 sintab1 = { fill( 128, 0) }
(signed word[120]) main::sintab1
(const signed word[120]) main::sintab1#0 sintab1 = { fill( 120, 0) }
(signed word*) main::st1
(signed word*) main::st1#1 st1 zp ZP_WORD:2 16.5
(signed word*) main::st1#2 st1 zp ZP_WORD:2 6.6000000000000005
(const string) main::str str = (string) " @"
(signed word*) main::st1#2 st1 zp ZP_WORD:2 3.3000000000000003
(const string) main::str str = (string) " @"
(const string) main::str1 str1 = (string) " @"
(signed word) main::sw
(signed word) main::sw#0 sw zp ZP_WORD:6 6.6000000000000005
(word) main::wavelength
(const word) main::wavelength#0 wavelength = (byte/word/signed word/dword/signed dword) 128
(const word) main::wavelength#0 wavelength = (byte/signed byte/word/signed word/dword/signed dword) 120
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 202.0
(label) mul16u::@1
@ -76,50 +97,50 @@
(label) mul16u::@7
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp ZP_WORD:16 101.0
(word) mul16u::a#1 a zp ZP_WORD:16 22.0
(word) mul16u::a#2 a zp ZP_WORD:16 22.0
(word) mul16u::a#3 a zp ZP_WORD:16 2.0
(word) mul16u::a#4 a zp ZP_WORD:16 67.66666666666666
(word) mul16u::a#7 a zp ZP_WORD:16 13.0
(word) mul16u::a#0 a zp ZP_WORD:20 101.0
(word) mul16u::a#1 a zp ZP_WORD:20 1.3333333333333333
(word) mul16u::a#2 a zp ZP_WORD:20 67.66666666666666
(word) mul16u::b
(word) mul16u::b#2 b zp ZP_WORD:14 4.0
(word) mul16u::b#3 b zp ZP_WORD:14 4.0
(word) mul16u::b#0 b zp ZP_WORD:18 4.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp ZP_DWORD:22 4.0
(dword) mul16u::mb#1 mb zp ZP_DWORD:22 202.0
(dword) mul16u::mb#2 mb zp ZP_DWORD:22 43.57142857142858
(dword) mul16u::res
(dword) mul16u::res#1 res zp ZP_DWORD:18 202.0
(dword) mul16u::res#2 res zp ZP_DWORD:18 40.875
(dword) mul16u::res#6 res zp ZP_DWORD:18 101.0
(dword) mul16u::res#1 res zp ZP_DWORD:14 202.0
(dword) mul16u::res#2 res zp ZP_DWORD:14 50.83333333333333
(dword) mul16u::res#6 res zp ZP_DWORD:14 101.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp ZP_DWORD:18 22.0
(dword) mul16u::return#3 return zp ZP_DWORD:18 22.0
(dword) mul16u::return#4 return zp ZP_DWORD:18 4.0
(word()) mul_u4f12((word) mul_u4f12::v1 , (word) mul_u4f12::v2)
(dword~) mul_u4f12::$0 $0 zp ZP_DWORD:18 4.0
(dword~) mul_u4f12::$1 $1 zp ZP_DWORD:18 4.0
(label) mul_u4f12::@2
(label) mul_u4f12::@return
(word) mul_u4f12::return
(word) mul_u4f12::return#0 return zp ZP_WORD:16 22.0
(word) mul_u4f12::return#1 return zp ZP_WORD:16 22.0
(word) mul_u4f12::return#10 return zp ZP_WORD:16 7.666666666666666
(word) mul_u4f12::return#2 return zp ZP_WORD:16 22.0
(word) mul_u4f12::return#3 return zp ZP_WORD:16 22.0
(word) mul_u4f12::v1
(word) mul_u4f12::v1#0 v1 zp ZP_WORD:16 11.0
(word) mul_u4f12::v1#1 v1 zp ZP_WORD:16 11.0
(word) mul_u4f12::v1#2 v1 zp ZP_WORD:16 11.0
(word) mul_u4f12::v1#3 v1 zp ZP_WORD:16 11.0
(word) mul_u4f12::v1#4 v1 zp ZP_WORD:16 46.0
(word) mul_u4f12::v2
(word) mul_u4f12::v2#0 v2 zp ZP_WORD:6 22.0
(word) mul_u4f12::v2#1 v2 zp ZP_WORD:6 22.0
(word) mul_u4f12::v2#2 v2 zp ZP_WORD:6 22.0
(word) mul_u4f12::v2#3 v2 zp ZP_WORD:6 22.0
(word) mul_u4f12::v2#4 v2 zp ZP_WORD:6 23.0
(dword) mul16u::return#2 return zp ZP_DWORD:14 4.0
(word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select)
(dword~) mul_u16_sel::$0 $0 zp ZP_DWORD:14 4.0
(dword~) mul_u16_sel::$1 $1 zp ZP_DWORD:14 4.0
(label) mul_u16_sel::@2
(label) mul_u16_sel::@return
(word) mul_u16_sel::return
(word) mul_u16_sel::return#0 return zp ZP_WORD:8 22.0
(word) mul_u16_sel::return#1 return zp ZP_WORD:8 22.0
(word) mul_u16_sel::return#10 return#10 zp ZP_WORD:6 22.0
(word) mul_u16_sel::return#11 return zp ZP_WORD:8 22.0
(word) mul_u16_sel::return#12 return zp ZP_WORD:8 22.0
(word) mul_u16_sel::return#13 return#13 zp ZP_WORD:18 22.0
(word) mul_u16_sel::return#14 return#14 zp ZP_WORD:18 8.5
(byte) mul_u16_sel::select
(byte) mul_u16_sel::select#6 reg byte x 0.3333333333333333
(word) mul_u16_sel::v1
(word) mul_u16_sel::v1#0 v1 zp ZP_WORD:8 11.0
(word) mul_u16_sel::v1#1 v1 zp ZP_WORD:8 11.0
(word) mul_u16_sel::v1#2 v1 zp ZP_WORD:8 22.0
(word) mul_u16_sel::v1#3 v1 zp ZP_WORD:8 11.0
(word) mul_u16_sel::v1#4 v1 zp ZP_WORD:8 11.0
(word) mul_u16_sel::v1#5 v1 zp ZP_WORD:8 22.0
(word) mul_u16_sel::v1#6 v1 zp ZP_WORD:8 68.0
(word) mul_u16_sel::v2
(word) mul_u16_sel::v2#0 v2 zp ZP_WORD:18 22.0
(word) mul_u16_sel::v2#1 v2 zp ZP_WORD:18 22.0
(word) mul_u16_sel::v2#3 v2 zp ZP_WORD:18 22.0
(word) mul_u16_sel::v2#4 v2 zp ZP_WORD:18 22.0
(word) mul_u16_sel::v2#6 v2 zp ZP_WORD:18 23.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0
@ -149,16 +170,17 @@
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:4 202.0
(byte*) print_str::str#2 str zp ZP_WORD:4 101.0
(byte*) print_str::str#3 str zp ZP_WORD:4 101.5
(byte*) print_str::str#5 str zp ZP_WORD:4 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:4 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:4 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:4 1.3333333333333333
(signed word) print_sword::w#0 w zp ZP_WORD:6 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:6 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:6 1.3333333333333333
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -166,88 +188,84 @@
(word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:4 0.8
(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
(dword~) sin16s_gen::$14 $14 zp ZP_DWORD:18 22.0
(dword~) sin16s_gen::$20 $20 zp ZP_DWORD:18 22.0
(dword~) sin16s_gen::$7 $7 zp ZP_DWORD:14 22.0
(label) sin16s_gen::@1
(label) sin16s_gen::@10
(label) sin16s_gen::@11
(label) sin16s_gen::@12
(label) sin16s_gen::@13
(label) sin16s_gen::@14
(label) sin16s_gen::@15
(label) sin16s_gen::@16
(label) sin16s_gen::@17
(label) sin16s_gen::@18
(label) sin16s_gen::@19
(label) sin16s_gen::@2
(label) sin16s_gen::@22
(label) sin16s_gen::@3
(label) sin16s_gen::@4
(label) sin16s_gen::@5
(label) sin16s_gen::@6
(label) sin16s_gen::@7
(label) sin16s_gen::@8
(label) sin16s_gen::@9
(label) sin16s_gen::@return
(word) sin16s_gen::i
(word) sin16s_gen::i#1 i zp ZP_WORD:4 16.5
(word) sin16s_gen::i#10 i zp ZP_WORD:4 0.46808510638297873
(byte) sin16s_gen::isUpper
(byte) sin16s_gen::isUpper#10 reg byte x 0.3055555555555556
(byte) sin16s_gen::isUpper#10 reg byte y 0.3055555555555556
(signed word*) sin16s_gen::sintab
(signed word*) sin16s_gen::sintab#1 sintab zp ZP_WORD:2 5.5
(signed word*) sin16s_gen::sintab#10 sintab zp ZP_WORD:2 0.7333333333333333
(signed word) sin16s_gen::sinx
(signed word) sin16s_gen::sinx#1 sinx zp ZP_WORD:12 22.0
(signed word) sin16s_gen::sinx#2 sinx zp ZP_WORD:12 33.0
(signed word~) sin16s_gen::sinx#3 sinx zp ZP_WORD:12 22.0
(signed word) sin16s_gen::sinx#1 sinx zp ZP_WORD:6 22.0
(signed word) sin16s_gen::sinx#2 sinx zp ZP_WORD:6 33.0
(signed word~) sin16s_gen::sinx#3 sinx zp ZP_WORD:6 22.0
(dword) sin16s_gen::step
(dword) sin16s_gen::step#0 step zp ZP_DWORD:26 0.26
(word) sin16s_gen::stepf
(word) sin16s_gen::stepf#0 stepf zp ZP_WORD:12 4.0
(word) sin16s_gen::stepi
(word) sin16s_gen::stepi#0 stepi zp ZP_WORD:14 0.8
(word) sin16s_gen::usinx
(word) sin16s_gen::usinx#0 usinx zp ZP_WORD:12 1.375
(word) sin16s_gen::usinx#1 usinx zp ZP_WORD:12 5.5
(word) sin16s_gen::usinx#0 usinx zp ZP_WORD:6 1.4666666666666666
(word) sin16s_gen::usinx#1 usinx zp ZP_WORD:6 5.5
(word) sin16s_gen::wavelength
(dword) sin16s_gen::x
(dword) sin16s_gen::x#1 x zp ZP_DWORD:8 7.333333333333333
(dword) sin16s_gen::x#10 x zp ZP_DWORD:8 0.7173913043478262
(dword) sin16s_gen::x#1 x zp ZP_DWORD:10 7.333333333333333
(dword) sin16s_gen::x#10 x zp ZP_DWORD:10 1.1956521739130435
(word) sin16s_gen::x1
(word) sin16s_gen::x1#0 x1 zp ZP_WORD:6 22.0
(word) sin16s_gen::x1#1 x1 zp ZP_WORD:6 22.0
(word) sin16s_gen::x1#10 x1 zp ZP_WORD:6 3.826086956521739
(word) sin16s_gen::x1#2 x1 zp ZP_WORD:6 22.0
(word) sin16s_gen::x1#3 x1 zp ZP_WORD:6 27.5
(word) sin16s_gen::x1#0 x1 zp ZP_WORD:30 3.5
(word) sin16s_gen::x2
(word) sin16s_gen::x2#0 x2 zp ZP_WORD:16 22.0
(word) sin16s_gen::x2#0 x2 zp ZP_WORD:8 22.0
(word) sin16s_gen::x3
(word) sin16s_gen::x3#0 x3 zp ZP_WORD:30 4.714285714285714
(word) sin16s_gen::x3#0 x3 zp ZP_WORD:8 5.5
(word) sin16s_gen::x3_6
(word) sin16s_gen::x3_6#0 reg byte alu 22.0
(word) sin16s_gen::x3_6#0 x3_6 zp ZP_WORD:6 22.0
(word) sin16s_gen::x4
(word) sin16s_gen::x4#0 x4 zp ZP_WORD:16 22.0
(word) sin16s_gen::x4#0 x4 zp ZP_WORD:8 22.0
(word) sin16s_gen::x5
(word) sin16s_gen::x5#0 x5 zp ZP_WORD:16 22.0
(word) sin16s_gen::x5#0 x5 zp ZP_WORD:8 22.0
(word) sin16s_gen::x5_128
(word) sin16s_gen::x5_128#0 reg byte alu 22.0
(word) sin16s_gen::x5_128#0 x5_128 zp ZP_WORD:18 22.0
(dword) sin16s_gen::xp
(dword) sin16s_gen::xp#1 xp zp ZP_DWORD:14 22.0
(dword) sin16s_gen::xp#2 xp zp ZP_DWORD:14 22.0
(dword) sin16s_gen::xp#3 xp zp ZP_DWORD:14 27.5
(dword) sin16s_gen::xp#5 xp zp ZP_DWORD:14 33.0
(dword~) sin16s_gen::xp#7 xp zp ZP_DWORD:14 22.0
zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#10 sin16s_gen::sintab#1 divr16u::divisor#6 ]
zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 sin16s_gen::i#10 sin16s_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ]
zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16s_gen::i#10 sin16s_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ]
zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 sin16s_gen::usinx#1 sin16s_gen::usinx#0 sin16s_gen::x3_6#0 mul_u16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:6 [ char_cursor#32 char_cursor#44 char_cursor#41 char_cursor#46 char_cursor#2 char_cursor#12 char_cursor#1 sin16s_gen::x1#10 sin16s_gen::x1#3 sin16s_gen::x1#0 sin16s_gen::x1#1 sin16s_gen::x1#2 mul_u4f12::v2#4 mul_u4f12::v2#1 mul_u4f12::v2#2 mul_u4f12::v2#3 mul_u4f12::v2#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
zp ZP_DWORD:8 [ sin16s_gen::x#10 sin16s_gen::x#1 ]
reg byte x [ sin16s_gen::isUpper#10 ]
zp ZP_WORD:12 [ sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 sin16s_gen::usinx#1 sin16s_gen::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 sin16s_gen::stepf#0 ]
zp ZP_WORD:14 [ mul16u::b#3 mul16u::b#2 sin16s_gen::stepi#0 ]
zp ZP_WORD:16 [ mul16u::a#4 mul16u::a#7 mul16u::a#3 mul16u::a#1 mul16u::a#2 mul16u::a#0 mul_u4f12::v1#4 mul_u4f12::v1#1 mul_u4f12::v1#2 mul_u4f12::v1#3 mul_u4f12::v1#0 sin16s_gen::x2#0 mul_u4f12::return#0 sin16s_gen::x4#0 mul_u4f12::return#2 mul_u4f12::return#10 mul_u4f12::return#1 mul_u4f12::return#3 sin16s_gen::x5#0 ]
zp ZP_DWORD:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 sin16s_gen::$14 mul16u::return#3 sin16s_gen::$20 mul16u::return#4 mul_u4f12::$0 mul_u4f12::$1 ]
zp ZP_WORD:8 [ char_cursor#33 char_cursor#46 char_cursor#43 char_cursor#51 char_cursor#48 char_cursor#49 char_cursor#2 char_cursor#12 char_cursor#1 mul_u16_sel::v1#6 mul_u16_sel::v1#1 mul_u16_sel::v1#2 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#5 mul_u16_sel::v1#0 sin16s_gen::x3#0 sin16s_gen::x2#0 mul_u16_sel::return#0 mul_u16_sel::return#1 sin16s_gen::x4#0 mul_u16_sel::return#11 sin16s_gen::x5#0 mul_u16_sel::return#12 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ]
zp ZP_DWORD:10 [ sin16s_gen::x#10 sin16s_gen::x#1 ]
reg byte y [ sin16s_gen::isUpper#10 ]
zp ZP_DWORD:14 [ sin16s_gen::xp#5 sin16s_gen::xp#3 sin16s_gen::xp#7 sin16s_gen::xp#1 sin16s_gen::xp#2 sin16s_gen::$7 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul_u16_sel::$0 mul_u16_sel::$1 ]
zp ZP_WORD:18 [ mul_u16_sel::v2#6 mul_u16_sel::v2#1 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul16u::b#0 mul_u16_sel::return#13 sin16s_gen::x5_128#0 mul_u16_sel::return#14 div32u16u::quotient_hi#0 ]
reg byte x [ mul_u16_sel::select#6 ]
zp ZP_WORD:20 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
zp ZP_DWORD:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
zp ZP_DWORD:26 [ sin16s_gen::step#0 ]
zp ZP_WORD:30 [ sin16s_gen::x3#0 ]
reg byte alu [ sin16s_gen::x3_6#0 ]
reg byte alu [ sin16s_gen::x5_128#0 ]
zp ZP_DWORD:26 [ div32u16u::return#0 sin16s_gen::step#0 div32u16u::return#1 ]
zp ZP_WORD:30 [ sin16s_gen::x1#0 ]
reg byte a [ mul16u::$1 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]