1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-23 23:32:55 +00:00

Implemented working 3d rotation.

This commit is contained in:
jespergravgaard 2018-10-21 17:25:33 +02:00
parent 8421b47760
commit 6d98f18960
42 changed files with 3846 additions and 2081 deletions

View File

@ -0,0 +1,3 @@
sec
lda {c1},x
sbc {c1},x

View File

@ -0,0 +1,3 @@
sec
lda {c1},x
sbc {c1},y

View File

@ -0,0 +1,3 @@
sec
lda {c1},x
sbc {c2},x

View File

@ -0,0 +1,3 @@
sec
lda {c1},x
sbc {c2},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c1},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c1},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c2},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c2},y

View File

@ -0,0 +1,3 @@
sec
lda {c1},y
sbc {c1},x

View File

@ -0,0 +1,3 @@
sec
lda {c1},y
sbc {c1},y

View File

@ -0,0 +1,3 @@
sec
lda {c1},y
sbc {c2},x

View File

@ -0,0 +1,3 @@
sec
lda {c1},y
sbc {c2},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},y
adc {c1},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},y
adc {c2},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},y
adc {c2},y

View File

@ -0,0 +1,3 @@
sec
lda {c1},x
sbc {c2},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c1},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c1},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c2},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},x
adc {c2},y

View File

@ -0,0 +1,3 @@
sec
lda {c1},y
sbc {c2},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},y
adc {c1},y

View File

@ -0,0 +1,3 @@
clc
lda {c1},y
adc {c2},x

View File

@ -0,0 +1,3 @@
clc
lda {c1},y
adc {c2},y

View File

@ -0,0 +1,2 @@
sec
sbc {c1},x

View File

@ -0,0 +1,2 @@
sec
sbc {c1},y

View File

@ -0,0 +1,2 @@
clc
adc {c1},x

View File

@ -0,0 +1,2 @@
clc
adc {c1},y

View File

@ -0,0 +1,2 @@
cmp #$80
ror

View File

@ -0,0 +1 @@
and #{c1}

View File

@ -5,6 +5,17 @@
import "c64"
byte* SCREEN = $400;
// A single sprite
byte* SPRITE = $3000;
kickasm(pc SPRITE, resource "balloon.png") {{
.var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
}}
// Sine and Cosine Tables
// Angles: $00=0, $80=PI,$100=2*PI
// Half Sine/Cosine: signed fixed [-$1f,$1f]
@ -48,42 +59,58 @@ void mulf_init() {
signed word add = 1;
for( byte i:0..128) {
mulf_sqr1[i] = >sqr1;
(mulf_sqr1+$100)[i] = >sqr1;
mulf_sqr1[-i] = >sqr1;
(mulf_sqr1+$100)[-i] = >sqr1;
mulf_sqr2[i+1] = >sqr1;
(mulf_sqr2+$100)[i+1] = >sqr1;
mulf_sqr2[1-i] = >sqr1;
(mulf_sqr2+$100)[1-i] = >sqr1;
sqr1 += add;
add +=2;
}
}
// Initialize sprites
void sprites_init() {
*SPRITES_ENABLE = %11111111;
byte* sprites_ptr = SCREEN+$3f8;
for(byte i: 0..7) {
sprites_ptr[i] = (byte)(SPRITE/$40);
SPRITES_COLS[i] = GREEN;
}
}
// Positions to rotate (a cube)
signed byte[8] xs = { -63, -63, -63, -63, 63, 63, 63, 63};
signed byte[8] ys = { -63, -63, 63, 63, -63, -63, 63, 63};
signed byte[8] zs = { -63, 63, -63, 63, -63, 63, -63, 63};
// The rotated point - updated by calling rotate()
signed byte* xr = $f0;
signed byte* yr = $f1;
signed byte* zr = $f2;
void main() {
byte* SCREEN = $400;
asm { sei }
sprites_init();
mulf_init();
prepare_matrix(0,0,0);
signed byte sx = 0;
signed byte sy = 0;
signed byte sz = 0;
while(true) {
while(*RASTER!=$ff) {}
(*BORDERCOL)++;
rotate(0,0,$3f);
SCREEN[0] = (byte)*xr;
SCREEN[1] = (byte)*yr;
SCREEN[2] = (byte)*zr;
(*BORDERCOL)++;
rotate(0,$3f,0);
SCREEN[40] = (byte)*xr;
SCREEN[41] = (byte)*yr;
SCREEN[42] = (byte)*zr;
(*BORDERCOL)++;
rotate($3f,0,0);
SCREEN[80] = (byte)*xr;
SCREEN[81] = (byte)*yr;
SCREEN[82] = (byte)*zr;
*BORDERCOL = LIGHT_BLUE;
prepare_matrix(sx,sy--,sz++);
if((sy&1)==0) sx++;
for(byte i: 0..7) {
(*BORDERCOL)++;
rotate(xs[i], ys[i], zs[i]);
byte i2 = i<<1;
SPRITES_XPOS[i2] = $80+(byte)(*xr>>1);
SPRITES_YPOS[i2] = $80+(byte)(*yr>>1);
}
*BORDERCOL = LIGHT_BLUE;
}
}
@ -104,7 +131,6 @@ void prepare_matrix(signed byte sx, signed byte sy, signed byte sz) {
signed byte t8 = t2-sx; // = sy+sz-sx
signed byte t9 = sy-sx;
signed byte t10 = sy+sx;
rotation_matrix[0] = COSH[t1]+COSH[t2];
rotation_matrix[1] = SINH[t1]-SINH[t2];
rotation_matrix[2] = SINH[sy]+SINH[sy];
@ -113,8 +139,7 @@ void prepare_matrix(signed byte sx, signed byte sy, signed byte sz) {
rotation_matrix[5] = SINH[t9]-SINH[t10];
rotation_matrix[6] = COSH[t4]-COSH[t3] + SINQ[t6]-SINQ[t5]-SINQ[t8]-SINQ[t7];
rotation_matrix[7] = SINH[t3]+SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t7]-COSQ[t8];
rotation_matrix[8] = COSH[t9]+COSH[t10];
rotation_matrix[8] = COSH[t9]+COSH[t10];
asm {
lda rotation_matrix+0
sta rotate.A1+1
@ -153,7 +178,6 @@ void prepare_matrix(signed byte sx, signed byte sy, signed byte sz) {
eor #$ff
sta rotate.I2+1
}
}
@ -162,47 +186,41 @@ void prepare_matrix(signed byte sx, signed byte sy, signed byte sz) {
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication
void rotate(signed byte x, signed byte y, signed byte z) {
*xr = x;
*yr = y;
*zr = z;
asm {
clc
ldx zr //z
// C*z
lda #$80
lda #$0
C1: adc mulf_sqr1,x
C2: sbc mulf_sqr2,x
sta C3+1
// F*z
lda #$80
lda #0
F1: adc mulf_sqr1,x
F2: sbc mulf_sqr2,x
sta F3+1
// I*z
lda #$80
lda #0
I1: adc mulf_sqr1,x
I2: sbc mulf_sqr2,x
sta I3+1
ldx xr //x
ldy yr //y
C3: lda #0 // C*z
A1: adc mulf_sqr1,x
A2: sbc mulf_sqr2,x
B1: adc mulf_sqr1,y
B2: sbc mulf_sqr2,y
sta xr
F3: lda #0 // F*z
D1: adc mulf_sqr1,x
D2: sbc mulf_sqr2,x
E1: adc mulf_sqr1,y
E2: sbc mulf_sqr2,y
sta yr
I3: lda #0 // I*z
G1: adc mulf_sqr1,x
G2: sbc mulf_sqr2,x
@ -210,5 +228,5 @@ void rotate(signed byte x, signed byte y, signed byte z) {
H2: sbc mulf_sqr2,y
sta zr
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,9 +1,16 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label SPRITES_XPOS = $d000
.label SPRITES_YPOS = $d001
.label RASTER = $d012
.label SPRITES_ENABLE = $d015
.label BORDERCOL = $d020
.label SPRITES_COLS = $d027
.const GREEN = 5
.const LIGHT_BLUE = $e
.label SCREEN = $400
.label SPRITE = $3000
.label COSH = $2000
.label COSQ = $2200
.label xr = $f0
@ -13,81 +20,91 @@
.label SINQ = COSQ+$40
jsr main
main: {
.label SCREEN = $400
.label sy = 3
.label sz = 4
.label sx = 2
.label i = 5
sei
jsr sprites_init
jsr mulf_init
jsr prepare_matrix
lda #0
sta sz
sta sy
sta sx
b4:
lda RASTER
cmp #$ff
bne b4
inc BORDERCOL
lda #$3f
sta rotate.z
ldy sx
ldx sz
jsr prepare_matrix
dec sy
inc sz
lda sy
and #1
cmp #0
bne b7
inc sx
b7:
lda #0
tax
tay
jsr rotate
lda xr
sta SCREEN
lda yr
sta SCREEN+1
lda zr
sta SCREEN+2
sta i
b8:
inc BORDERCOL
lda #0
sta rotate.z
lda #$3f
ldy i
lda xs,y
sta rotate.x
ldx i
ldy ys,x
lda zs,x
tax
lda #0
tay
jsr rotate
lda xr
sta SCREEN+$28
lda yr
sta SCREEN+$29
lda zr
sta SCREEN+$2a
inc BORDERCOL
lda #0
sta rotate.z
lda i
asl
tax
lda #$3f
tay
jsr rotate
lda xr
sta SCREEN+$50
cmp #$80
ror
clc
adc #$80
sta SPRITES_XPOS,x
lda yr
sta SCREEN+$51
lda zr
sta SCREEN+$52
cmp #$80
ror
clc
adc #$80
sta SPRITES_YPOS,x
inc i
lda i
cmp #8
bne b8
lda #LIGHT_BLUE
sta BORDERCOL
jmp b4
}
rotate: {
.label z = 2
tya
.label x = $a
lda x
sta xr
txa
tya
sta yr
lda z
txa
sta zr
clc
tax
lda #$80
lda #0
C1:
adc mulf_sqr1,x
C2:
sbc mulf_sqr2,x
sta C3+1
lda #$80
lda #0
F1:
adc mulf_sqr1,x
F2:
sbc mulf_sqr2,x
sta F3+1
lda #$80
lda #0
I1:
adc mulf_sqr1,x
I2:
@ -131,142 +148,159 @@ rotate: {
rts
}
prepare_matrix: {
.const sx = 0
.const sy = 0
.const sz = 0
.const t1 = sy-sz
.const t2 = sy+sz
.const t3 = sx+sz
.const t4 = sx-sz
.const t9 = sy-sx
.const t10 = sy+sx
.const t5 = sx+t2
.const t6 = sx-t1
.const t7 = sx+t1
.const t8 = t2-sx
.label _13 = 2
.label _15 = 2
.label _18 = 2
.label _24 = 2
.label _29 = 2
.label _31 = 2
lda COSH+t1
ldy COSH+t2
.label sy = 3
.label t1 = 5
.label t2 = $a
.label t3 = $b
.label t4 = $c
.label t5 = $d
.label t6 = $e
.label t7 = $f
.label t8 = $10
.label t9 = $11
.label t10 = $12
txa
eor #$ff
sec
adc sy
sta t1
txa
clc
adc sy
sta t2
txa
sty $ff
clc
adc $ff
sta t3
tya
stx $ff
sec
sbc $ff
sta t4
tya
clc
adc t2
sta t5
tya
sec
sbc t1
sta t6
tya
clc
adc t1
sta t7
tya
eor #$ff
sec
adc t2
sta t8
tya
eor #$ff
sec
adc sy
sta t9
tya
clc
adc sy
sta t10
ldx t1
ldy t2
clc
lda COSH,x
adc COSH,y
sta rotation_matrix
lda SINH+t1
ldy SINH+t2
sty $ff
sec
sbc $ff
lda SINH,x
sbc SINH,y
sta rotation_matrix+1
lda SINH+sy
tay
sty $ff
ldy sy
clc
adc $ff
lda SINH,y
adc SINH,y
sta rotation_matrix+2
lda SINH+t3
ldy SINH+t4
sty $ff
ldx t3
ldy t4
sec
sbc $ff
sta _13
lda COSQ+t6
lda SINH,x
sbc SINH,y
ldy t6
clc
adc _13
ldy COSQ+t5
sty $ff
adc COSQ,y
ldy t5
sec
sbc $ff
sta _15
lda COSQ+t8
sbc COSQ,y
ldy t8
clc
adc _15
ldy COSQ+t7
sty $ff
adc COSQ,y
ldy t7
sec
sbc $ff
sbc COSQ,y
sta rotation_matrix+3
lda COSH+t3
ldy COSH+t4
sty $ff
ldy t4
clc
adc $ff
sta _18
lda SINQ+t5
lda COSH,x
adc COSH,y
ldy t5
clc
adc _18
ldy SINQ+t6
sty $ff
adc SINQ,y
ldy t6
sec
sbc $ff
ldy SINQ+t7
sty $ff
sbc SINQ,y
ldy t7
sec
sbc $ff
ldy SINQ+t8
sty $ff
sbc SINQ,y
ldy t8
sec
sbc $ff
sbc SINQ,y
sta rotation_matrix+4
lda SINH+t9
ldy SINH+t10
sty $ff
ldx t9
ldy t10
sec
sbc $ff
lda SINH,x
sbc SINH,y
sta rotation_matrix+5
lda COSH+t4
ldy COSH+t3
sty $ff
ldx t4
ldy t3
sec
sbc $ff
sta _24
lda SINQ+t6
lda COSH,x
sbc COSH,y
ldy t6
clc
adc _24
ldy SINQ+t5
sty $ff
adc SINQ,y
ldy t5
sec
sbc $ff
ldy SINQ+t8
sty $ff
sbc SINQ,y
ldy t8
sec
sbc $ff
ldy SINQ+t7
sty $ff
sbc SINQ,y
ldy t7
sec
sbc $ff
sbc SINQ,y
sta rotation_matrix+6
lda SINH+t3
ldy SINH+t4
sty $ff
ldx t3
ldy t4
clc
adc $ff
sta _29
lda COSQ+t6
lda SINH,x
adc SINH,y
ldy t6
clc
adc _29
ldy COSQ+t5
sty $ff
adc COSQ,y
ldy t5
sec
sbc $ff
sta _31
lda COSQ+t7
sbc COSQ,y
ldy t7
clc
adc _31
ldy COSQ+t8
sty $ff
adc COSQ,y
ldy t8
sec
sbc $ff
sbc COSQ,y
sta rotation_matrix+7
lda COSH+t9
ldy COSH+t10
sty $ff
ldx t9
ldy t10
clc
adc $ff
lda COSH,x
adc COSH,y
sta rotation_matrix+8
lda rotation_matrix+0
sta rotate.A1+1
@ -307,8 +341,8 @@ prepare_matrix: {
rts
}
mulf_init: {
.label sqr1 = 3
.label add = 5
.label sqr1 = 6
.label add = 8
lda #<1
sta add
lda #>1
@ -319,6 +353,7 @@ mulf_init: {
b1:
lda sqr1+1
sta mulf_sqr1,x
sta mulf_sqr1+$100,x
txa
eor #$ff
clc
@ -326,7 +361,15 @@ mulf_init: {
tay
lda sqr1+1
sta mulf_sqr1,y
txa
eor #$ff
clc
adc #1
tay
lda sqr1+1
sta mulf_sqr1+$100,y
sta mulf_sqr2+1,x
sta mulf_sqr2+$100+1,x
txa
eor #$ff
clc
@ -334,6 +377,13 @@ mulf_init: {
tay
lda sqr1+1
sta mulf_sqr2,y
txa
eor #$ff
clc
adc #1+1
tay
lda sqr1+1
sta mulf_sqr2+$100,y
lda sqr1
clc
adc add
@ -352,12 +402,36 @@ mulf_init: {
cpx #$81
bne b1
rts
}
sprites_init: {
.label sprites_ptr = SCREEN+$3f8
lda #$ff
sta SPRITES_ENABLE
ldx #0
b1:
lda #$ff&SPRITE/$40
sta sprites_ptr,x
lda #GREEN
sta SPRITES_COLS,x
inx
cpx #8
bne b1
rts
}
.align $100
mulf_sqr1: .fill $200, 0
.align $100
mulf_sqr2: .fill $200, 0
rotation_matrix: .fill 9, 0
xs: .byte -$3f, -$3f, -$3f, -$3f, $3f, $3f, $3f, $3f
ys: .byte -$3f, -$3f, $3f, $3f, -$3f, -$3f, $3f, $3f
zs: .byte -$3f, $3f, -$3f, $3f, -$3f, $3f, -$3f, $3f
.pc = SPRITE "Inline"
.var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
.pc = COSH "Inline"
{
.var min = -$1fff

View File

@ -2,6 +2,11 @@
[0] phi() [ ] ( )
to:@3
@3: scope:[] from @begin
kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
}}
kickasm(location (const signed byte*) COSH#0) {{ {
.var min = -$1fff
.var max = $1fff
@ -22,122 +27,174 @@
}
}
}}
to:@7
@7: scope:[] from @3
[3] phi() [ ] ( )
[4] call main [ ] ( )
to:@8
@8: scope:[] from @3
[4] phi() [ ] ( )
[5] call main [ ] ( )
to:@end
@end: scope:[] from @7
[5] phi() [ ] ( )
main: scope:[main] from @7
@end: scope:[] from @8
[6] phi() [ ] ( )
main: scope:[main] from @8
asm { sei }
[7] call mulf_init [ ] ( main:4 [ ] )
to:main::@13
main::@13: scope:[main] from main
[8] phi() [ ] ( main:4 [ ] )
[9] call prepare_matrix [ ] ( main:4 [ ] )
[8] call sprites_init [ ] ( main:5 [ ] )
to:main::@17
main::@17: scope:[main] from main
[9] phi() [ ] ( main:5 [ ] )
[10] call mulf_init [ ] ( main:5 [ ] )
to:main::@1
main::@1: scope:[main] from main::@15 main::@17
[11] (signed byte) main::sz#5 ← phi( main::@15/(signed byte) main::sz#1 main::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::sx#6 main::sy#5 main::sz#5 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 ] )
[11] (signed byte) main::sy#5 ← phi( main::@15/(signed byte) main::sy#1 main::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::sx#6 main::sy#5 main::sz#5 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 ] )
[11] (signed byte) main::sx#6 ← phi( main::@15/(signed byte) main::sx#12 main::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::sx#6 main::sy#5 main::sz#5 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 ] )
to:main::@4
main::@4: scope:[main] from main::@13 main::@17 main::@4
[10] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ ] ( main:4 [ ] )
main::@4: scope:[main] from main::@1 main::@4
[12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ main::sx#6 main::sy#5 main::sz#5 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 ] )
to:main::@6
main::@6: scope:[main] from main::@4
[11] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:4 [ ] )
[12] call rotate [ ] ( main:4 [ ] )
[13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ main::sx#6 main::sy#5 main::sz#5 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 ] )
[14] (signed byte) prepare_matrix::sx#0 ← (signed byte) main::sx#6 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 ] )
[15] (signed byte) prepare_matrix::sy#0 ← (signed byte) main::sy#5 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 ] )
[16] (signed byte) prepare_matrix::sz#0 ← (signed byte) main::sz#5 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 ] )
[17] call prepare_matrix [ main::sx#6 main::sy#5 main::sz#5 ] ( main:5 [ main::sx#6 main::sy#5 main::sz#5 ] )
to:main::@19
main::@19: scope:[main] from main::@6
[18] (signed byte) main::sy#1 ← -- (signed byte) main::sy#5 [ main::sx#6 main::sz#5 main::sy#1 ] ( main:5 [ main::sx#6 main::sz#5 main::sy#1 ] )
[19] (signed byte) main::sz#1 ← ++ (signed byte) main::sz#5 [ main::sx#6 main::sy#1 main::sz#1 ] ( main:5 [ main::sx#6 main::sy#1 main::sz#1 ] )
[20] (byte~) main::$4 ← (signed byte) main::sy#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::sx#6 main::sy#1 main::sz#1 main::$4 ] ( main:5 [ main::sx#6 main::sy#1 main::sz#1 main::$4 ] )
[21] if((byte~) main::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 [ main::sx#6 main::sy#1 main::sz#1 ] ( main:5 [ main::sx#6 main::sy#1 main::sz#1 ] )
to:main::@14
main::@14: scope:[main] from main::@19
[22] (signed byte) main::sx#1 ← ++ (signed byte) main::sx#6 [ main::sy#1 main::sz#1 main::sx#1 ] ( main:5 [ main::sy#1 main::sz#1 main::sx#1 ] )
to:main::@7
main::@7: scope:[main] from main::@14 main::@19
[23] (signed byte) main::sx#12 ← phi( main::@14/(signed byte) main::sx#1 main::@19/(signed byte) main::sx#6 ) [ main::sx#12 main::sy#1 main::sz#1 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 ] )
to:main::@8
main::@8: scope:[main] from main::@20 main::@7
[24] (byte) main::i#2 ← phi( main::@20/(byte) main::i#1 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] )
[25] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] )
[26] (signed byte) rotate::x#0 ← *((const signed byte[8]) xs#0 + (byte) main::i#2) [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::x#0 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::x#0 ] )
[27] (signed byte) rotate::y#0 ← *((const signed byte[8]) ys#0 + (byte) main::i#2) [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::x#0 rotate::y#0 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::x#0 rotate::y#0 ] )
[28] (signed byte) rotate::z#0 ← *((const signed byte[8]) zs#0 + (byte) main::i#2) [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::x#0 rotate::y#0 rotate::z#0 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::x#0 rotate::y#0 rotate::z#0 ] )
[29] call rotate [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] )
to:main::@20
main::@20: scope:[main] from main::@8
[30] (byte) main::i2#0 ← (byte) main::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 ] )
[31] (signed byte~) main::$9 ← *((const signed byte*) xr#0) >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$9 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$9 ] )
[32] (byte/word/signed word/dword/signed dword~) main::$11 ← (byte/word/signed word/dword/signed dword) 128 + (byte)(signed byte~) main::$9 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$11 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$11 ] )
[33] *((const byte*) SPRITES_XPOS#0 + (byte) main::i2#0) ← (byte/word/signed word/dword/signed dword~) main::$11 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 ] )
[34] (signed byte~) main::$12 ← *((const signed byte*) yr#0) >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$12 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$12 ] )
[35] (byte/word/signed word/dword/signed dword~) main::$14 ← (byte/word/signed word/dword/signed dword) 128 + (byte)(signed byte~) main::$12 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$14 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 main::i2#0 main::$14 ] )
[36] *((const byte*) SPRITES_YPOS#0 + (byte) main::i2#0) ← (byte/word/signed word/dword/signed dword~) main::$14 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] )
[37] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::sx#12 main::sy#1 main::sz#1 main::i#1 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#1 ] )
[38] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@8 [ main::sx#12 main::sy#1 main::sz#1 main::i#1 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 main::i#1 ] )
to:main::@15
main::@15: scope:[main] from main::@6
[13] *((const byte*) main::SCREEN#0) ← (byte)*((const signed byte*) xr#0) [ ] ( main:4 [ ] )
[14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte)*((const signed byte*) yr#0) [ ] ( main:4 [ ] )
[15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte)*((const signed byte*) zr#0) [ ] ( main:4 [ ] )
[16] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:4 [ ] )
[17] call rotate [ ] ( main:4 [ ] )
to:main::@16
main::@16: scope:[main] from main::@15
[18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte)*((const signed byte*) xr#0) [ ] ( main:4 [ ] )
[19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte)*((const signed byte*) yr#0) [ ] ( main:4 [ ] )
[20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte)*((const signed byte*) zr#0) [ ] ( main:4 [ ] )
[21] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:4 [ ] )
[22] call rotate [ ] ( main:4 [ ] )
to:main::@17
main::@17: scope:[main] from main::@16
[23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80) ← (byte)*((const signed byte*) xr#0) [ ] ( main:4 [ ] )
[24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 81) ← (byte)*((const signed byte*) yr#0) [ ] ( main:4 [ ] )
[25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← (byte)*((const signed byte*) zr#0) [ ] ( main:4 [ ] )
[26] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( main:4 [ ] )
to:main::@4
rotate: scope:[rotate] from main::@15 main::@16 main::@6
[27] (signed byte) rotate::z#3 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 63 ) [ rotate::x#3 rotate::y#3 rotate::z#3 ] ( main:4::rotate:12 [ rotate::x#3 rotate::y#3 rotate::z#3 ] main:4::rotate:17 [ rotate::x#3 rotate::y#3 rotate::z#3 ] main:4::rotate:22 [ rotate::x#3 rotate::y#3 rotate::z#3 ] )
[27] (signed byte) rotate::y#3 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) 63 main::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ rotate::x#3 rotate::y#3 rotate::z#3 ] ( main:4::rotate:12 [ rotate::x#3 rotate::y#3 rotate::z#3 ] main:4::rotate:17 [ rotate::x#3 rotate::y#3 rotate::z#3 ] main:4::rotate:22 [ rotate::x#3 rotate::y#3 rotate::z#3 ] )
[27] (signed byte) rotate::x#3 ← phi( main::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@16/(byte/signed byte/word/signed word/dword/signed dword) 63 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ rotate::x#3 rotate::y#3 rotate::z#3 ] ( main:4::rotate:12 [ rotate::x#3 rotate::y#3 rotate::z#3 ] main:4::rotate:17 [ rotate::x#3 rotate::y#3 rotate::z#3 ] main:4::rotate:22 [ rotate::x#3 rotate::y#3 rotate::z#3 ] )
[28] *((const signed byte*) xr#0) ← (signed byte) rotate::x#3 [ rotate::y#3 rotate::z#3 ] ( main:4::rotate:12 [ rotate::y#3 rotate::z#3 ] main:4::rotate:17 [ rotate::y#3 rotate::z#3 ] main:4::rotate:22 [ rotate::y#3 rotate::z#3 ] )
[29] *((const signed byte*) yr#0) ← (signed byte) rotate::y#3 [ rotate::z#3 ] ( main:4::rotate:12 [ rotate::z#3 ] main:4::rotate:17 [ rotate::z#3 ] main:4::rotate:22 [ rotate::z#3 ] )
[30] *((const signed byte*) zr#0) ← (signed byte) rotate::z#3 [ ] ( main:4::rotate:12 [ ] main:4::rotate:17 [ ] main:4::rotate:22 [ ] )
asm { clc ldxzr lda#$80 C1: adcmulf_sqr1,x C2: sbcmulf_sqr2,x staC3+1 lda#$80 F1: adcmulf_sqr1,x F2: sbcmulf_sqr2,x staF3+1 lda#$80 I1: adcmulf_sqr1,x I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr C3: lda#0 A1: adcmulf_sqr1,x A2: sbcmulf_sqr2,x B1: adcmulf_sqr1,y B2: sbcmulf_sqr2,y staxr F3: lda#0 D1: adcmulf_sqr1,x D2: sbcmulf_sqr2,x E1: adcmulf_sqr1,y E2: sbcmulf_sqr2,y stayr I3: lda#0 G1: adcmulf_sqr1,x G2: sbcmulf_sqr2,x H1: adcmulf_sqr1,y H2: sbcmulf_sqr2,y stazr }
main::@15: scope:[main] from main::@20
[39] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ main::sx#12 main::sy#1 main::sz#1 ] ( main:5 [ main::sx#12 main::sy#1 main::sz#1 ] )
to:main::@1
rotate: scope:[rotate] from main::@8
[40] *((const signed byte*) xr#0) ← (signed byte) rotate::x#0 [ rotate::y#0 rotate::z#0 ] ( main:5::rotate:29 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::y#0 rotate::z#0 ] )
[41] *((const signed byte*) yr#0) ← (signed byte) rotate::y#0 [ rotate::z#0 ] ( main:5::rotate:29 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 rotate::z#0 ] )
[42] *((const signed byte*) zr#0) ← (signed byte) rotate::z#0 [ ] ( main:5::rotate:29 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] )
asm { clc ldxzr lda#$0 C1: adcmulf_sqr1,x C2: sbcmulf_sqr2,x staC3+1 lda#0 F1: adcmulf_sqr1,x F2: sbcmulf_sqr2,x staF3+1 lda#0 I1: adcmulf_sqr1,x I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr C3: lda#0 A1: adcmulf_sqr1,x A2: sbcmulf_sqr2,x B1: adcmulf_sqr1,y B2: sbcmulf_sqr2,y staxr F3: lda#0 D1: adcmulf_sqr1,x D2: sbcmulf_sqr2,x E1: adcmulf_sqr1,y E2: sbcmulf_sqr2,y stayr I3: lda#0 G1: adcmulf_sqr1,x G2: sbcmulf_sqr2,x H1: adcmulf_sqr1,y H2: sbcmulf_sqr2,y stazr }
to:rotate::@return
rotate::@return: scope:[rotate] from rotate
[32] return [ ] ( main:4::rotate:12 [ ] main:4::rotate:17 [ ] main:4::rotate:22 [ ] )
[44] return [ ] ( main:5::rotate:29 [ main::sx#12 main::sy#1 main::sz#1 main::i#2 ] )
to:@return
prepare_matrix: scope:[prepare_matrix] from main::@13
[33] (signed byte~) prepare_matrix::$10 ← *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t1#0) + *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t2#0) [ prepare_matrix::$10 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$10 ] )
[34] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) prepare_matrix::$10 [ ] ( main:4::prepare_matrix:9 [ ] )
[35] (signed byte~) prepare_matrix::$11 ← *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t1#0) - *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t2#0) [ prepare_matrix::$11 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$11 ] )
[36] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) prepare_matrix::$11 [ ] ( main:4::prepare_matrix:9 [ ] )
[37] (signed byte~) prepare_matrix::$12 ← *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::sy#0) + *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::sy#0) [ prepare_matrix::$12 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$12 ] )
[38] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) prepare_matrix::$12 [ ] ( main:4::prepare_matrix:9 [ ] )
[39] (signed byte~) prepare_matrix::$13 ← *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t3#0) - *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t4#0) [ prepare_matrix::$13 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$13 ] )
[40] (signed byte~) prepare_matrix::$14 ← (signed byte~) prepare_matrix::$13 + *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t6#0) [ prepare_matrix::$14 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$14 ] )
[41] (signed byte~) prepare_matrix::$15 ← (signed byte~) prepare_matrix::$14 - *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t5#0) [ prepare_matrix::$15 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$15 ] )
[42] (signed byte~) prepare_matrix::$16 ← (signed byte~) prepare_matrix::$15 + *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t8#0) [ prepare_matrix::$16 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$16 ] )
[43] (signed byte~) prepare_matrix::$17 ← (signed byte~) prepare_matrix::$16 - *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t7#0) [ prepare_matrix::$17 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$17 ] )
[44] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) prepare_matrix::$17 [ ] ( main:4::prepare_matrix:9 [ ] )
[45] (signed byte~) prepare_matrix::$18 ← *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t3#0) + *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t4#0) [ prepare_matrix::$18 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$18 ] )
[46] (signed byte~) prepare_matrix::$19 ← (signed byte~) prepare_matrix::$18 + *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t5#0) [ prepare_matrix::$19 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$19 ] )
[47] (signed byte~) prepare_matrix::$20 ← (signed byte~) prepare_matrix::$19 - *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t6#0) [ prepare_matrix::$20 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$20 ] )
[48] (signed byte~) prepare_matrix::$21 ← (signed byte~) prepare_matrix::$20 - *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t7#0) [ prepare_matrix::$21 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$21 ] )
[49] (signed byte~) prepare_matrix::$22 ← (signed byte~) prepare_matrix::$21 - *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t8#0) [ prepare_matrix::$22 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$22 ] )
[50] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) prepare_matrix::$22 [ ] ( main:4::prepare_matrix:9 [ ] )
[51] (signed byte~) prepare_matrix::$23 ← *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t9#0) - *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t10#0) [ prepare_matrix::$23 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$23 ] )
[52] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) prepare_matrix::$23 [ ] ( main:4::prepare_matrix:9 [ ] )
[53] (signed byte~) prepare_matrix::$24 ← *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t4#0) - *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t3#0) [ prepare_matrix::$24 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$24 ] )
[54] (signed byte~) prepare_matrix::$25 ← (signed byte~) prepare_matrix::$24 + *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t6#0) [ prepare_matrix::$25 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$25 ] )
[55] (signed byte~) prepare_matrix::$26 ← (signed byte~) prepare_matrix::$25 - *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t5#0) [ prepare_matrix::$26 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$26 ] )
[56] (signed byte~) prepare_matrix::$27 ← (signed byte~) prepare_matrix::$26 - *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t8#0) [ prepare_matrix::$27 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$27 ] )
[57] (signed byte~) prepare_matrix::$28 ← (signed byte~) prepare_matrix::$27 - *((const signed byte*) SINQ#0+(const signed byte) prepare_matrix::t7#0) [ prepare_matrix::$28 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$28 ] )
[58] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) prepare_matrix::$28 [ ] ( main:4::prepare_matrix:9 [ ] )
[59] (signed byte~) prepare_matrix::$29 ← *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t3#0) + *((const signed byte*) SINH#0+(const signed byte) prepare_matrix::t4#0) [ prepare_matrix::$29 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$29 ] )
[60] (signed byte~) prepare_matrix::$30 ← (signed byte~) prepare_matrix::$29 + *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t6#0) [ prepare_matrix::$30 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$30 ] )
[61] (signed byte~) prepare_matrix::$31 ← (signed byte~) prepare_matrix::$30 - *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t5#0) [ prepare_matrix::$31 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$31 ] )
[62] (signed byte~) prepare_matrix::$32 ← (signed byte~) prepare_matrix::$31 + *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t7#0) [ prepare_matrix::$32 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$32 ] )
[63] (signed byte~) prepare_matrix::$33 ← (signed byte~) prepare_matrix::$32 - *((const signed byte*) COSQ#0+(const signed byte) prepare_matrix::t8#0) [ prepare_matrix::$33 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$33 ] )
[64] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) prepare_matrix::$33 [ ] ( main:4::prepare_matrix:9 [ ] )
[65] (signed byte~) prepare_matrix::$34 ← *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t9#0) + *((const signed byte*) COSH#0+(const signed byte) prepare_matrix::t10#0) [ prepare_matrix::$34 ] ( main:4::prepare_matrix:9 [ prepare_matrix::$34 ] )
[66] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) prepare_matrix::$34 [ ] ( main:4::prepare_matrix:9 [ ] )
prepare_matrix: scope:[prepare_matrix] from main::@6
[45] (signed byte) prepare_matrix::t1#0 ← (signed byte) prepare_matrix::sy#0 - (signed byte) prepare_matrix::sz#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 prepare_matrix::t1#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 prepare_matrix::t1#0 ] )
[46] (signed byte) prepare_matrix::t2#0 ← (signed byte) prepare_matrix::sy#0 + (signed byte) prepare_matrix::sz#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 prepare_matrix::t1#0 prepare_matrix::t2#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 prepare_matrix::t1#0 prepare_matrix::t2#0 ] )
[47] (signed byte) prepare_matrix::t3#0 ← (signed byte) prepare_matrix::sx#0 + (signed byte) prepare_matrix::sz#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::sz#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 ] )
[48] (signed byte) prepare_matrix::t4#0 ← (signed byte) prepare_matrix::sx#0 - (signed byte) prepare_matrix::sz#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 ] )
[49] (signed byte) prepare_matrix::t5#0 ← (signed byte) prepare_matrix::sx#0 + (signed byte) prepare_matrix::t2#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 ] )
[50] (signed byte) prepare_matrix::t6#0 ← (signed byte) prepare_matrix::sx#0 - (signed byte) prepare_matrix::t1#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 ] )
[51] (signed byte) prepare_matrix::t7#0 ← (signed byte) prepare_matrix::sx#0 + (signed byte) prepare_matrix::t1#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 ] )
[52] (signed byte) prepare_matrix::t8#0 ← (signed byte) prepare_matrix::t2#0 - (signed byte) prepare_matrix::sx#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 ] )
[53] (signed byte) prepare_matrix::t9#0 ← (signed byte) prepare_matrix::sy#0 - (signed byte) prepare_matrix::sx#0 [ prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sx#0 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 ] )
[54] (signed byte) prepare_matrix::t10#0 ← (signed byte) prepare_matrix::sy#0 + (signed byte) prepare_matrix::sx#0 [ prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[55] (signed byte~) prepare_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t2#0) [ prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$10 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$10 ] )
[56] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) prepare_matrix::$10 [ prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sy#0 prepare_matrix::t1#0 prepare_matrix::t2#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[57] (signed byte~) prepare_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t2#0) [ prepare_matrix::sy#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$11 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sy#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$11 ] )
[58] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) prepare_matrix::$11 [ prepare_matrix::sy#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::sy#0 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[59] (signed byte~) prepare_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::sy#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$12 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$12 ] )
[60] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) prepare_matrix::$12 [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[61] (signed byte~) prepare_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t4#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$13 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$13 ] )
[62] (signed byte~) prepare_matrix::$14 ← (signed byte~) prepare_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t6#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$14 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$14 ] )
[63] (signed byte~) prepare_matrix::$15 ← (signed byte~) prepare_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t5#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$15 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$15 ] )
[64] (signed byte~) prepare_matrix::$16 ← (signed byte~) prepare_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t8#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$16 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$16 ] )
[65] (signed byte~) prepare_matrix::$17 ← (signed byte~) prepare_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t7#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$17 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$17 ] )
[66] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) prepare_matrix::$17 [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[67] (signed byte~) prepare_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t4#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$18 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$18 ] )
[68] (signed byte~) prepare_matrix::$19 ← (signed byte~) prepare_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t5#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$19 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$19 ] )
[69] (signed byte~) prepare_matrix::$20 ← (signed byte~) prepare_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t6#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$20 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$20 ] )
[70] (signed byte~) prepare_matrix::$21 ← (signed byte~) prepare_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t7#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$21 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$21 ] )
[71] (signed byte~) prepare_matrix::$22 ← (signed byte~) prepare_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t8#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$22 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$22 ] )
[72] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) prepare_matrix::$22 [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[73] (signed byte~) prepare_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t10#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$23 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$23 ] )
[74] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) prepare_matrix::$23 [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[75] (signed byte~) prepare_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t3#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$24 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$24 ] )
[76] (signed byte~) prepare_matrix::$25 ← (signed byte~) prepare_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t6#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$25 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$25 ] )
[77] (signed byte~) prepare_matrix::$26 ← (signed byte~) prepare_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t5#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$26 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$26 ] )
[78] (signed byte~) prepare_matrix::$27 ← (signed byte~) prepare_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t8#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$27 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$27 ] )
[79] (signed byte~) prepare_matrix::$28 ← (signed byte~) prepare_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) prepare_matrix::t7#0) [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$28 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$28 ] )
[80] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) prepare_matrix::$28 [ prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t3#0 prepare_matrix::t4#0 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[81] (signed byte~) prepare_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) prepare_matrix::t4#0) [ prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$29 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t5#0 prepare_matrix::t6#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$29 ] )
[82] (signed byte~) prepare_matrix::$30 ← (signed byte~) prepare_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t6#0) [ prepare_matrix::t5#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$30 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t5#0 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$30 ] )
[83] (signed byte~) prepare_matrix::$31 ← (signed byte~) prepare_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t5#0) [ prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$31 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t7#0 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$31 ] )
[84] (signed byte~) prepare_matrix::$32 ← (signed byte~) prepare_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t7#0) [ prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$32 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t8#0 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$32 ] )
[85] (signed byte~) prepare_matrix::$33 ← (signed byte~) prepare_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) prepare_matrix::t8#0) [ prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$33 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t9#0 prepare_matrix::t10#0 prepare_matrix::$33 ] )
[86] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) prepare_matrix::$33 [ prepare_matrix::t9#0 prepare_matrix::t10#0 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::t9#0 prepare_matrix::t10#0 ] )
[87] (signed byte~) prepare_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) prepare_matrix::t10#0) [ prepare_matrix::$34 ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 prepare_matrix::$34 ] )
[88] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) prepare_matrix::$34 [ ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 ] )
asm { ldarotation_matrix+0 starotate.A1+1 eor#$ff starotate.A2+1 ldarotation_matrix+1 starotate.B1+1 eor#$ff starotate.B2+1 ldarotation_matrix+2 starotate.C1+1 eor#$ff starotate.C2+1 ldarotation_matrix+3 starotate.D1+1 eor#$ff starotate.D2+1 ldarotation_matrix+4 starotate.E1+1 eor#$ff starotate.E2+1 ldarotation_matrix+5 starotate.F1+1 eor#$ff starotate.F2+1 ldarotation_matrix+6 starotate.G1+1 eor#$ff starotate.G2+1 ldarotation_matrix+7 starotate.H1+1 eor#$ff starotate.H2+1 ldarotation_matrix+8 starotate.I1+1 eor#$ff starotate.I2+1 }
to:prepare_matrix::@return
prepare_matrix::@return: scope:[prepare_matrix] from prepare_matrix
[68] return [ ] ( main:4::prepare_matrix:9 [ ] )
[90] return [ ] ( main:5::prepare_matrix:17 [ main::sx#6 main::sy#5 main::sz#5 ] )
to:@return
mulf_init: scope:[mulf_init] from main
[69] phi() [ ] ( main:4::mulf_init:7 [ ] )
mulf_init: scope:[mulf_init] from main::@17
[91] phi() [ ] ( main:5::mulf_init:10 [ ] )
to:mulf_init::@1
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@1
[70] (signed word) mulf_init::add#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@1/(signed word) mulf_init::add#1 ) [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[70] (byte) mulf_init::i#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@1/(byte) mulf_init::i#1 ) [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[70] (signed word) mulf_init::sqr1#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@1/(signed word) mulf_init::sqr1#1 ) [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[71] (byte~) mulf_init::$0 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$0 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$0 ] )
[72] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte~) mulf_init::$0 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[73] (byte~) mulf_init::$1 ← - (byte) mulf_init::i#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$1 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$1 ] )
[74] (byte~) mulf_init::$2 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$1 mulf_init::$2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$1 mulf_init::$2 ] )
[75] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$1) ← (byte~) mulf_init::$2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[76] (byte~) mulf_init::$4 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$4 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$4 ] )
[77] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[78] (byte/signed word/word/dword/signed dword~) mulf_init::$5 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$5 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$5 ] )
[79] (byte~) mulf_init::$6 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$5 mulf_init::$6 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$5 mulf_init::$6 ] )
[80] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$5) ← (byte~) mulf_init::$6 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[81] (signed word) mulf_init::sqr1#1 ← (signed word) mulf_init::sqr1#2 + (signed word) mulf_init::add#2 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr1#1 ] ( main:4::mulf_init:7 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr1#1 ] )
[82] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_init::i#2 mulf_init::sqr1#1 mulf_init::add#1 ] ( main:4::mulf_init:7 [ mulf_init::i#2 mulf_init::sqr1#1 mulf_init::add#1 ] )
[83] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] )
[84] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] ( main:4::mulf_init:7 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] )
[92] (signed word) mulf_init::add#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@1/(signed word) mulf_init::add#1 ) [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[92] (byte) mulf_init::i#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@1/(byte) mulf_init::i#1 ) [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[92] (signed word) mulf_init::sqr1#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@1/(signed word) mulf_init::sqr1#1 ) [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[93] (byte~) mulf_init::$0 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$0 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$0 ] )
[94] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte~) mulf_init::$0 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[95] (byte~) mulf_init::$2 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$2 ] )
[96] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte~) mulf_init::$2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[97] (byte~) mulf_init::$3 ← - (byte) mulf_init::i#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$3 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$3 ] )
[98] (byte~) mulf_init::$4 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$3 mulf_init::$4 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$3 mulf_init::$4 ] )
[99] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$3) ← (byte~) mulf_init::$4 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[100] (byte~) mulf_init::$6 ← - (byte) mulf_init::i#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$6 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$6 ] )
[101] (byte~) mulf_init::$7 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$6 mulf_init::$7 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$6 mulf_init::$7 ] )
[102] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$6) ← (byte~) mulf_init::$7 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[103] (byte~) mulf_init::$9 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$9 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$9 ] )
[104] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte~) mulf_init::$9 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[105] (byte~) mulf_init::$12 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$12 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$12 ] )
[106] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte~) mulf_init::$12 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[107] (byte/signed word/word/dword/signed dword~) mulf_init::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$13 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$13 ] )
[108] (byte~) mulf_init::$14 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$13 mulf_init::$14 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$13 mulf_init::$14 ] )
[109] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$13) ← (byte~) mulf_init::$14 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[110] (byte/signed word/word/dword/signed dword~) mulf_init::$16 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$16 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$16 ] )
[111] (byte~) mulf_init::$17 ← > (signed word) mulf_init::sqr1#2 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$16 mulf_init::$17 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 mulf_init::$16 mulf_init::$17 ] )
[112] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$16) ← (byte~) mulf_init::$17 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#2 mulf_init::i#2 mulf_init::add#2 ] )
[113] (signed word) mulf_init::sqr1#1 ← (signed word) mulf_init::sqr1#2 + (signed word) mulf_init::add#2 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr1#1 ] ( main:5::mulf_init:10 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr1#1 ] )
[114] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_init::i#2 mulf_init::sqr1#1 mulf_init::add#1 ] ( main:5::mulf_init:10 [ mulf_init::i#2 mulf_init::sqr1#1 mulf_init::add#1 ] )
[115] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] )
[116] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] ( main:5::mulf_init:10 [ mulf_init::sqr1#1 mulf_init::i#1 mulf_init::add#1 ] )
to:mulf_init::@return
mulf_init::@return: scope:[mulf_init] from mulf_init::@1
[85] return [ ] ( main:4::mulf_init:7 [ ] )
[117] return [ ] ( main:5::mulf_init:10 [ ] )
to:@return
sprites_init: scope:[sprites_init] from main
[118] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:5::sprites_init:8 [ ] )
to:sprites_init::@1
sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1
[119] (byte) sprites_init::i#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::i#1 ) [ sprites_init::i#2 ] ( main:5::sprites_init:8 [ sprites_init::i#2 ] )
[120] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ sprites_init::i#2 ] ( main:5::sprites_init:8 [ sprites_init::i#2 ] )
[121] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:5::sprites_init:8 [ sprites_init::i#2 ] )
[122] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 [ sprites_init::i#1 ] ( main:5::sprites_init:8 [ sprites_init::i#1 ] )
[123] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 [ sprites_init::i#1 ] ( main:5::sprites_init:8 [ sprites_init::i#1 ] )
to:sprites_init::@return
sprites_init::@return: scope:[sprites_init] from sprites_init::@1
[124] return [ ] ( main:5::sprites_init:8 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
(label) @3
(label) @7
(label) @8
(label) @begin
(label) @end
(byte*) BORDERCOL
@ -8,41 +8,83 @@
(const signed byte*) COSH#0 COSH = ((signed byte*))(word/signed word/dword/signed dword) 8192
(signed byte*) COSQ
(const signed byte*) COSQ#0 COSQ = ((signed byte*))(word/signed word/dword/signed dword) 8704
(byte) GREEN
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) LIGHT_BLUE
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) 14
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(signed byte*) SINH
(const signed byte*) SINH#0 SINH = (const signed byte*) COSH#0+(byte/signed byte/word/signed word/dword/signed dword) 64
(signed byte*) SINQ
(const signed byte*) SINQ#0 SINQ = (const signed byte*) COSQ#0+(byte/signed byte/word/signed word/dword/signed dword) 64
(byte*) SPRITE
(const byte*) SPRITE#0 SPRITE = ((byte*))(word/signed word/dword/signed dword) 12288
(byte*) SPRITES_COLS
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
(byte*) SPRITES_ENABLE
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
(byte*) SPRITES_XPOS
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
(byte*) SPRITES_YPOS
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
(void()) main()
(label) main::@13
(byte/word/signed word/dword/signed dword~) main::$11 reg byte a 202.0
(signed byte~) main::$12 reg byte a 101.0
(byte/word/signed word/dword/signed dword~) main::$14 reg byte a 202.0
(byte~) main::$4 reg byte a 22.0
(signed byte~) main::$9 reg byte a 101.0
(label) main::@1
(label) main::@14
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@19
(label) main::@20
(label) main::@4
(label) main::@6
(byte*) main::SCREEN
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(label) main::@7
(label) main::@8
(byte) main::i
(byte) main::i#1 i zp ZP_BYTE:5 151.5
(byte) main::i#2 i zp ZP_BYTE:5 46.61538461538461
(byte) main::i2
(byte) main::i2#0 reg byte x 50.5
(signed byte) main::sx
(signed byte) main::sx#1 sx zp ZP_BYTE:2 22.0
(signed byte) main::sx#12 sx zp ZP_BYTE:2 1.9411764705882355
(signed byte) main::sx#6 sx zp ZP_BYTE:2 4.0
(signed byte) main::sy
(signed byte) main::sy#1 sy zp ZP_BYTE:3 1.5
(signed byte) main::sy#5 sy zp ZP_BYTE:3 4.714285714285714
(signed byte) main::sz
(signed byte) main::sz#1 sz zp ZP_BYTE:4 1.0476190476190477
(signed byte) main::sz#5 sz zp ZP_BYTE:4 4.125
(void()) mulf_init()
(byte~) mulf_init::$0 reg byte a 22.0
(byte~) mulf_init::$1 reg byte y 11.0
(byte~) mulf_init::$12 reg byte a 22.0
(byte/signed word/word/dword/signed dword~) mulf_init::$13 reg byte y 11.0
(byte~) mulf_init::$14 reg byte a 22.0
(byte/signed word/word/dword/signed dword~) mulf_init::$16 reg byte y 11.0
(byte~) mulf_init::$17 reg byte a 22.0
(byte~) mulf_init::$2 reg byte a 22.0
(byte~) mulf_init::$3 reg byte y 11.0
(byte~) mulf_init::$4 reg byte a 22.0
(byte/signed word/word/dword/signed dword~) mulf_init::$5 reg byte y 11.0
(byte~) mulf_init::$6 reg byte a 22.0
(byte~) mulf_init::$6 reg byte y 11.0
(byte~) mulf_init::$7 reg byte a 22.0
(byte~) mulf_init::$9 reg byte a 22.0
(label) mulf_init::@1
(label) mulf_init::@return
(signed word) mulf_init::add
(signed word) mulf_init::add#1 add zp ZP_WORD:5 7.333333333333333
(signed word) mulf_init::add#2 add zp ZP_WORD:5 2.75
(signed word) mulf_init::add#1 add zp ZP_WORD:8 7.333333333333333
(signed word) mulf_init::add#2 add zp ZP_WORD:8 1.5
(byte) mulf_init::i
(byte) mulf_init::i#1 reg byte x 16.5
(byte) mulf_init::i#2 reg byte x 5.076923076923077
(byte) mulf_init::i#2 reg byte x 4.782608695652174
(signed word) mulf_init::sqr1
(signed word) mulf_init::sqr1#1 sqr1 zp ZP_WORD:3 5.5
(signed word) mulf_init::sqr1#2 sqr1 zp ZP_WORD:3 6.0
(signed word) mulf_init::sqr1#1 sqr1 zp ZP_WORD:6 5.5
(signed word) mulf_init::sqr1#2 sqr1 zp ZP_WORD:6 5.238095238095238
(byte[512]) mulf_sqr1
(const byte[512]) mulf_sqr1#0 mulf_sqr1 = { fill( 512, 0) }
(byte[512]) mulf_sqr2
@ -51,100 +93,147 @@
(signed byte~) prepare_matrix::$10 reg byte a 4.0
(signed byte~) prepare_matrix::$11 reg byte a 4.0
(signed byte~) prepare_matrix::$12 reg byte a 4.0
(signed byte~) prepare_matrix::$13 $13 zp ZP_BYTE:2 4.0
(signed byte~) prepare_matrix::$13 reg byte a 4.0
(signed byte~) prepare_matrix::$14 reg byte a 4.0
(signed byte~) prepare_matrix::$15 $15 zp ZP_BYTE:2 4.0
(signed byte~) prepare_matrix::$15 reg byte a 4.0
(signed byte~) prepare_matrix::$16 reg byte a 4.0
(signed byte~) prepare_matrix::$17 reg byte a 4.0
(signed byte~) prepare_matrix::$18 $18 zp ZP_BYTE:2 4.0
(signed byte~) prepare_matrix::$18 reg byte a 4.0
(signed byte~) prepare_matrix::$19 reg byte a 4.0
(signed byte~) prepare_matrix::$20 reg byte a 4.0
(signed byte~) prepare_matrix::$21 reg byte a 4.0
(signed byte~) prepare_matrix::$22 reg byte a 4.0
(signed byte~) prepare_matrix::$23 reg byte a 4.0
(signed byte~) prepare_matrix::$24 $24 zp ZP_BYTE:2 4.0
(signed byte~) prepare_matrix::$24 reg byte a 4.0
(signed byte~) prepare_matrix::$25 reg byte a 4.0
(signed byte~) prepare_matrix::$26 reg byte a 4.0
(signed byte~) prepare_matrix::$27 reg byte a 4.0
(signed byte~) prepare_matrix::$28 reg byte a 4.0
(signed byte~) prepare_matrix::$29 $29 zp ZP_BYTE:2 4.0
(signed byte~) prepare_matrix::$29 reg byte a 4.0
(signed byte~) prepare_matrix::$30 reg byte a 4.0
(signed byte~) prepare_matrix::$31 $31 zp ZP_BYTE:2 4.0
(signed byte~) prepare_matrix::$31 reg byte a 4.0
(signed byte~) prepare_matrix::$32 reg byte a 4.0
(signed byte~) prepare_matrix::$33 reg byte a 4.0
(signed byte~) prepare_matrix::$34 reg byte a 4.0
(label) prepare_matrix::@return
(signed byte) prepare_matrix::sx
(const signed byte) prepare_matrix::sx#0 sx = (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) prepare_matrix::sx#0 reg byte y 2.25
(signed byte) prepare_matrix::sy
(const signed byte) prepare_matrix::sy#0 sy = (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) prepare_matrix::sy#0 sy zp ZP_BYTE:3 1.4375
(signed byte) prepare_matrix::sz
(const signed byte) prepare_matrix::sz#0 sz = (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) prepare_matrix::sz#0 reg byte x 4.75
(signed byte) prepare_matrix::t1
(const signed byte) prepare_matrix::t1#0 t1 = (const signed byte) prepare_matrix::sy#0-(const signed byte) prepare_matrix::sz#0
(signed byte) prepare_matrix::t1#0 t1 zp ZP_BYTE:5 0.8333333333333333
(signed byte) prepare_matrix::t10
(const signed byte) prepare_matrix::t10#0 t10 = (const signed byte) prepare_matrix::sy#0+(const signed byte) prepare_matrix::sx#0
(signed byte) prepare_matrix::t10#0 t10 zp ZP_BYTE:18 0.18181818181818182
(signed byte) prepare_matrix::t2
(const signed byte) prepare_matrix::t2#0 t2 = (const signed byte) prepare_matrix::sy#0+(const signed byte) prepare_matrix::sz#0
(signed byte) prepare_matrix::t2#0 t2 zp ZP_BYTE:10 0.9090909090909092
(signed byte) prepare_matrix::t3
(const signed byte) prepare_matrix::t3#0 t3 = (const signed byte) prepare_matrix::sx#0+(const signed byte) prepare_matrix::sz#0
(signed byte) prepare_matrix::t3#0 t3 zp ZP_BYTE:11 0.29411764705882354
(signed byte) prepare_matrix::t4
(const signed byte) prepare_matrix::t4#0 t4 = (const signed byte) prepare_matrix::sx#0-(const signed byte) prepare_matrix::sz#0
(signed byte) prepare_matrix::t4#0 t4 zp ZP_BYTE:12 0.30303030303030304
(signed byte) prepare_matrix::t5
(const signed byte) prepare_matrix::t5#0 t5 = (const signed byte) prepare_matrix::sx#0+(const signed byte) prepare_matrix::t2#0
(signed byte) prepare_matrix::t5#0 t5 zp ZP_BYTE:13 0.29411764705882354
(signed byte) prepare_matrix::t6
(const signed byte) prepare_matrix::t6#0 t6 = (const signed byte) prepare_matrix::sx#0-(const signed byte) prepare_matrix::t1#0
(signed byte) prepare_matrix::t6#0 t6 zp ZP_BYTE:14 0.3125
(signed byte) prepare_matrix::t7
(const signed byte) prepare_matrix::t7#0 t7 = (const signed byte) prepare_matrix::sx#0+(const signed byte) prepare_matrix::t1#0
(signed byte) prepare_matrix::t7#0 t7 zp ZP_BYTE:15 0.30303030303030304
(signed byte) prepare_matrix::t8
(const signed byte) prepare_matrix::t8#0 t8 = (const signed byte) prepare_matrix::t2#0-(const signed byte) prepare_matrix::sx#0
(signed byte) prepare_matrix::t8#0 t8 zp ZP_BYTE:16 0.30303030303030304
(signed byte) prepare_matrix::t9
(const signed byte) prepare_matrix::t9#0 t9 = (const signed byte) prepare_matrix::sy#0-(const signed byte) prepare_matrix::sx#0
(signed byte) prepare_matrix::t9#0 t9 zp ZP_BYTE:17 0.1764705882352941
(void()) rotate((signed byte) rotate::x , (signed byte) rotate::y , (signed byte) rotate::z)
(label) rotate::@return
(signed byte) rotate::x
(signed byte) rotate::x#3 reg byte y 2.0
(signed byte) rotate::x#0 x zp ZP_BYTE:10 34.33333333333333
(signed byte) rotate::y
(signed byte) rotate::y#3 reg byte x 1.0
(signed byte) rotate::y#0 reg byte y 34.33333333333333
(signed byte) rotate::z
(signed byte) rotate::z#3 z zp ZP_BYTE:2 0.6666666666666666
(signed byte) rotate::z#0 reg byte x 34.33333333333333
(signed byte[9]) rotation_matrix
(const signed byte[9]) rotation_matrix#0 rotation_matrix = { fill( 9, 0) }
(void()) sprites_init()
(label) sprites_init::@1
(label) sprites_init::@return
(byte) sprites_init::i
(byte) sprites_init::i#1 reg byte x 16.5
(byte) sprites_init::i#2 reg byte x 14.666666666666666
(byte*) sprites_init::sprites_ptr
(const byte*) sprites_init::sprites_ptr#0 sprites_ptr = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1016
(signed byte*) xr
(const signed byte*) xr#0 xr = ((signed byte*))(byte/word/signed word/dword/signed dword) 240
(signed byte[8]) xs
(const signed byte[8]) xs#0 xs = { -(byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(signed byte*) yr
(const signed byte*) yr#0 yr = ((signed byte*))(byte/word/signed word/dword/signed dword) 241
(signed byte[8]) ys
(const signed byte[8]) ys#0 ys = { -(byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(signed byte*) zr
(const signed byte*) zr#0 zr = ((signed byte*))(byte/word/signed word/dword/signed dword) 242
(signed byte[8]) zs
(const signed byte[8]) zs#0 zs = { -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, -(byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
reg byte y [ rotate::x#3 ]
reg byte x [ rotate::y#3 ]
zp ZP_BYTE:2 [ rotate::z#3 prepare_matrix::$13 prepare_matrix::$15 prepare_matrix::$18 prepare_matrix::$24 prepare_matrix::$29 prepare_matrix::$31 ]
zp ZP_WORD:3 [ mulf_init::sqr1#2 mulf_init::sqr1#1 ]
zp ZP_BYTE:2 [ main::sx#6 main::sx#12 main::sx#1 ]
zp ZP_BYTE:3 [ main::sy#5 main::sy#1 prepare_matrix::sy#0 ]
zp ZP_BYTE:4 [ main::sz#5 main::sz#1 ]
zp ZP_BYTE:5 [ main::i#2 main::i#1 prepare_matrix::t1#0 ]
zp ZP_WORD:6 [ mulf_init::sqr1#2 mulf_init::sqr1#1 ]
reg byte x [ mulf_init::i#2 mulf_init::i#1 ]
zp ZP_WORD:5 [ mulf_init::add#2 mulf_init::add#1 ]
zp ZP_WORD:8 [ mulf_init::add#2 mulf_init::add#1 ]
reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
reg byte y [ prepare_matrix::sx#0 ]
reg byte x [ prepare_matrix::sz#0 ]
reg byte a [ main::$4 ]
zp ZP_BYTE:10 [ rotate::x#0 prepare_matrix::t2#0 ]
reg byte y [ rotate::y#0 ]
reg byte x [ rotate::z#0 ]
reg byte x [ main::i2#0 ]
reg byte a [ main::$9 ]
reg byte a [ main::$11 ]
reg byte a [ main::$12 ]
reg byte a [ main::$14 ]
zp ZP_BYTE:11 [ prepare_matrix::t3#0 ]
zp ZP_BYTE:12 [ prepare_matrix::t4#0 ]
zp ZP_BYTE:13 [ prepare_matrix::t5#0 ]
zp ZP_BYTE:14 [ prepare_matrix::t6#0 ]
zp ZP_BYTE:15 [ prepare_matrix::t7#0 ]
zp ZP_BYTE:16 [ prepare_matrix::t8#0 ]
zp ZP_BYTE:17 [ prepare_matrix::t9#0 ]
zp ZP_BYTE:18 [ prepare_matrix::t10#0 ]
reg byte a [ prepare_matrix::$10 ]
reg byte a [ prepare_matrix::$11 ]
reg byte a [ prepare_matrix::$12 ]
reg byte a [ prepare_matrix::$13 ]
reg byte a [ prepare_matrix::$14 ]
reg byte a [ prepare_matrix::$15 ]
reg byte a [ prepare_matrix::$16 ]
reg byte a [ prepare_matrix::$17 ]
reg byte a [ prepare_matrix::$18 ]
reg byte a [ prepare_matrix::$19 ]
reg byte a [ prepare_matrix::$20 ]
reg byte a [ prepare_matrix::$21 ]
reg byte a [ prepare_matrix::$22 ]
reg byte a [ prepare_matrix::$23 ]
reg byte a [ prepare_matrix::$24 ]
reg byte a [ prepare_matrix::$25 ]
reg byte a [ prepare_matrix::$26 ]
reg byte a [ prepare_matrix::$27 ]
reg byte a [ prepare_matrix::$28 ]
reg byte a [ prepare_matrix::$29 ]
reg byte a [ prepare_matrix::$30 ]
reg byte a [ prepare_matrix::$31 ]
reg byte a [ prepare_matrix::$32 ]
reg byte a [ prepare_matrix::$33 ]
reg byte a [ prepare_matrix::$34 ]
reg byte a [ mulf_init::$0 ]
reg byte y [ mulf_init::$1 ]
reg byte a [ mulf_init::$2 ]
reg byte y [ mulf_init::$3 ]
reg byte a [ mulf_init::$4 ]
reg byte y [ mulf_init::$5 ]
reg byte a [ mulf_init::$6 ]
reg byte y [ mulf_init::$6 ]
reg byte a [ mulf_init::$7 ]
reg byte a [ mulf_init::$9 ]
reg byte a [ mulf_init::$12 ]
reg byte y [ mulf_init::$13 ]
reg byte a [ mulf_init::$14 ]
reg byte y [ mulf_init::$16 ]
reg byte a [ mulf_init::$17 ]

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@37
@37: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @37
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @37
main: scope:[main] from @35
[4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
to:main::@1

View File

@ -349,7 +349,7 @@ mul16s::@return: scope:[mul16s] from mul16s::@2
(byte[512]) mulf_sqr1_hi#0 ← { fill( 512, 0) }
(byte[512]) mulf_sqr2_lo#0 ← { fill( 512, 0) }
(byte[512]) mulf_sqr2_hi#0 ← { fill( 512, 0) }
to:@30
to:@28
mulf_init: scope:[mulf_init] from main::@1
(word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) mulf_init::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
@ -520,17 +520,17 @@ mulf16s::@return: scope:[mulf16s] from mulf16s::@2
(signed dword) mulf16s::return#1 ← (signed dword) mulf16s::return#3
return
to:@return
@30: scope:[] from @19
@28: scope:[] from @19
(byte*) print_screen#6 ← phi( @19/(byte*) print_screen#7 )
(byte*) print_char_cursor#157 ← phi( @19/(byte*) print_char_cursor#158 )
(byte*) print_line_cursor#61 ← phi( @19/(byte*) print_line_cursor#62 )
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
to:@37
main: scope:[main] from @37
(byte*) print_char_cursor#137 ← phi( @37/(byte*) print_char_cursor#147 )
(byte*) print_line_cursor#44 ← phi( @37/(byte*) print_line_cursor#54 )
(byte*) print_screen#4 ← phi( @37/(byte*) print_screen#5 )
(byte*) BGCOL#1 ← phi( @37/(byte*) BGCOL#4 )
to:@35
main: scope:[main] from @35
(byte*) print_char_cursor#137 ← phi( @35/(byte*) print_char_cursor#147 )
(byte*) print_line_cursor#44 ← phi( @35/(byte*) print_line_cursor#54 )
(byte*) print_screen#4 ← phi( @35/(byte*) print_screen#5 )
(byte*) BGCOL#1 ← phi( @35/(byte*) BGCOL#4 )
*((byte*) BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 5
call print_cls
to:main::@1
@ -1366,28 +1366,28 @@ mul16s_error::@return: scope:[mul16s_error] from mul16s_error::@11
(byte*) print_line_cursor#20 ← (byte*) print_line_cursor#41
return
to:@return
@37: scope:[] from @30
(byte*) print_screen#5 ← phi( @30/(byte*) print_screen#6 )
(byte*) print_char_cursor#147 ← phi( @30/(byte*) print_char_cursor#157 )
(byte*) print_line_cursor#54 ← phi( @30/(byte*) print_line_cursor#61 )
(byte*) BGCOL#4 ← phi( @30/(byte*) BGCOL#0 )
@35: scope:[] from @28
(byte*) print_screen#5 ← phi( @28/(byte*) print_screen#6 )
(byte*) print_char_cursor#147 ← phi( @28/(byte*) print_char_cursor#157 )
(byte*) print_line_cursor#54 ← phi( @28/(byte*) print_line_cursor#61 )
(byte*) BGCOL#4 ← phi( @28/(byte*) BGCOL#0 )
call main
to:@38
@38: scope:[] from @37
(byte*) print_char_cursor#127 ← phi( @37/(byte*) print_char_cursor#27 )
(byte*) print_line_cursor#42 ← phi( @37/(byte*) print_line_cursor#8 )
to:@36
@36: scope:[] from @35
(byte*) print_char_cursor#127 ← phi( @35/(byte*) print_char_cursor#27 )
(byte*) print_line_cursor#42 ← phi( @35/(byte*) print_line_cursor#8 )
(byte*) print_line_cursor#21 ← (byte*) print_line_cursor#42
(byte*) print_char_cursor#64 ← (byte*) print_char_cursor#127
to:@end
@end: scope:[] from @38
@end: scope:[] from @36
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @10
(label) @19
(label) @30
(label) @37
(label) @38
(label) @28
(label) @35
(label) @36
(label) @begin
(label) @end
(byte*) BGCOL
@ -3113,7 +3113,7 @@ Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) mul16u::@3
Culled Empty Block (label) @19
Culled Empty Block (label) mulf_init::@6
Culled Empty Block (label) @30
Culled Empty Block (label) @28
Culled Empty Block (label) main::@4
Culled Empty Block (label) muls16u::@3
Culled Empty Block (label) muls16s::@1
@ -3127,7 +3127,7 @@ Culled Empty Block (label) mul16s_compare::@12
Culled Empty Block (label) mul16s_compare::@16
Culled Empty Block (label) mul16s_compare::@19
Culled Empty Block (label) mul16s_error::@11
Culled Empty Block (label) @38
Culled Empty Block (label) @36
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte*) BGCOL#21
Self Phi Eliminated (byte*) print_line_cursor#90
@ -3271,7 +3271,7 @@ Added new block during phi lifting mulf_init::@11(between mulf_init::@4 and mulf
Added new block during phi lifting mulf_init::@12(between mulf_init::@3 and mulf_init::@4)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @37
Adding NOP phi() at start of @35
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
@ -3461,7 +3461,7 @@ Culled Empty Block (label) mulf_init::@9
Culled Empty Block (label) mulf_init::@10
Culled Empty Block (label) print_cls::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @37
Adding NOP phi() at start of @35
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
@ -3496,14 +3496,14 @@ Adding NOP phi() at start of print_cls
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@37
@37: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @37
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @37
main: scope:[main] from @35
[4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
to:main::@1
@ -4697,15 +4697,15 @@ INITIAL ASM
.label print_line_cursor = 9
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b37_from_bbegin:
jmp b37
//SEG4 @37
b37:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG5 [2] call main [ ] ( )
jsr main
//SEG6 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b37:
//SEG6 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
jmp bend
//SEG7 @end
bend:
@ -7670,15 +7670,15 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_line_cursor = 7
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b37_from_bbegin:
jmp b37
//SEG4 @37
b37:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG5 [2] call main [ ] ( )
jsr main
//SEG6 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b37:
//SEG6 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
jmp bend
//SEG7 @end
bend:
@ -9824,7 +9824,7 @@ print_cls: {
mulf_sqr2_hi: .fill $200, 0
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b37
Removing instruction jmp b35
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
@ -9990,8 +9990,8 @@ Replacing label b3_from_b4 with b3
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction bbegin:
Removing instruction b37_from_bbegin:
Removing instruction bend_from_b37:
Removing instruction b35_from_bbegin:
Removing instruction bend_from_b35:
Removing instruction b1_from_main:
Removing instruction mulf_init_from_b1:
Removing instruction b2_from_b1:
@ -10078,7 +10078,7 @@ Removing instruction b12_from_b3:
Removing instruction b4_from_b12:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b37:
Removing instruction b35:
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
@ -10236,7 +10236,7 @@ Fixing long branch [109] bne b1 to beq
Fixing long branch [811] bne b1 to beq
FINAL SYMBOL TABLE
(label) @37
(label) @35
(label) @begin
(label) @end
(byte*) BGCOL
@ -10709,11 +10709,11 @@ Score: 444925
.label print_char_cursor = $f
.label print_line_cursor = 7
//SEG2 @begin
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
//SEG4 @37
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
//SEG4 @35
//SEG5 [2] call main [ ] ( )
jsr main
//SEG6 [3] phi from @37 to @end [phi:@37->@end]
//SEG6 [3] phi from @35 to @end [phi:@35->@end]
//SEG7 @end
//SEG8 main
main: {

View File

@ -1,4 +1,4 @@
(label) @37
(label) @35
(label) @begin
(label) @end
(byte*) BGCOL

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@39
@39: scope:[] from @begin
to:@37
@37: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @39
@end: scope:[] from @37
[3] phi() [ ] ( )
main: scope:[main] from @39
main: scope:[main] from @37
[4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
to:main::@1

View File

@ -325,7 +325,7 @@ mul8s::@return: scope:[mul8s] from mul8s::@2
(byte[512]) mulf_sqr1_hi#0 ← { fill( 512, 0) }
(byte[512]) mulf_sqr2_lo#0 ← { fill( 512, 0) }
(byte[512]) mulf_sqr2_hi#0 ← { fill( 512, 0) }
to:@30
to:@28
mulf_init: scope:[mulf_init] from main::@1
(word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) mulf_init::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
@ -549,17 +549,17 @@ mulf8s::@return: scope:[mulf8s] from mulf8s::@4
(signed word) mulf8s::return#1 ← (signed word) mulf8s::return#3
return
to:@return
@30: scope:[] from @19
@28: scope:[] from @19
(byte*) print_screen#7 ← phi( @19/(byte*) print_screen#8 )
(byte*) print_char_cursor#160 ← phi( @19/(byte*) print_char_cursor#168 )
(byte*) print_line_cursor#67 ← phi( @19/(byte*) print_line_cursor#78 )
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
to:@33
main: scope:[main] from @39
(byte*) print_char_cursor#138 ← phi( @39/(byte*) print_char_cursor#148 )
(byte*) print_line_cursor#46 ← phi( @39/(byte*) print_line_cursor#56 )
(byte*) print_screen#4 ← phi( @39/(byte*) print_screen#5 )
(byte*) BGCOL#1 ← phi( @39/(byte*) BGCOL#5 )
to:@31
main: scope:[main] from @37
(byte*) print_char_cursor#138 ← phi( @37/(byte*) print_char_cursor#148 )
(byte*) print_line_cursor#46 ← phi( @37/(byte*) print_line_cursor#56 )
(byte*) print_screen#4 ← phi( @37/(byte*) print_screen#5 )
(byte*) BGCOL#1 ← phi( @37/(byte*) BGCOL#5 )
*((byte*) BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 5
call print_cls
to:main::@1
@ -707,16 +707,16 @@ muls8s::@return: scope:[muls8s] from muls8s::@4
(signed word) muls8s::return#1 ← (signed word) muls8s::return#3
return
to:@return
@33: scope:[] from @30
(byte*) print_screen#6 ← phi( @30/(byte*) print_screen#7 )
(byte*) print_char_cursor#159 ← phi( @30/(byte*) print_char_cursor#160 )
(byte*) print_line_cursor#66 ← phi( @30/(byte*) print_line_cursor#67 )
(byte*) BGCOL#15 ← phi( @30/(byte*) BGCOL#0 )
@31: scope:[] from @28
(byte*) print_screen#6 ← phi( @28/(byte*) print_screen#7 )
(byte*) print_char_cursor#159 ← phi( @28/(byte*) print_char_cursor#160 )
(byte*) print_line_cursor#66 ← phi( @28/(byte*) print_line_cursor#67 )
(byte*) BGCOL#15 ← phi( @28/(byte*) BGCOL#0 )
(byte[512]) mula_sqr1_lo#0 ← { fill( 512, 0) }
(byte[512]) mula_sqr1_hi#0 ← { fill( 512, 0) }
(byte[512]) mula_sqr2_lo#0 ← { fill( 512, 0) }
(byte[512]) mula_sqr2_hi#0 ← { fill( 512, 0) }
to:@39
to:@37
mulf_init_asm: scope:[mulf_init_asm] from main::@2
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- }
(byte*) mulf_init_asm::mem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255
@ -1437,29 +1437,29 @@ mul8s_error::@return: scope:[mul8s_error] from mul8s_error::@11
(byte*) print_line_cursor#21 ← (byte*) print_line_cursor#43
return
to:@return
@39: scope:[] from @33
(byte*) print_screen#5 ← phi( @33/(byte*) print_screen#6 )
(byte*) print_char_cursor#148 ← phi( @33/(byte*) print_char_cursor#159 )
(byte*) print_line_cursor#56 ← phi( @33/(byte*) print_line_cursor#66 )
(byte*) BGCOL#5 ← phi( @33/(byte*) BGCOL#15 )
@37: scope:[] from @31
(byte*) print_screen#5 ← phi( @31/(byte*) print_screen#6 )
(byte*) print_char_cursor#148 ← phi( @31/(byte*) print_char_cursor#159 )
(byte*) print_line_cursor#56 ← phi( @31/(byte*) print_line_cursor#66 )
(byte*) BGCOL#5 ← phi( @31/(byte*) BGCOL#15 )
call main
to:@40
@40: scope:[] from @39
(byte*) print_char_cursor#129 ← phi( @39/(byte*) print_char_cursor#25 )
(byte*) print_line_cursor#44 ← phi( @39/(byte*) print_line_cursor#9 )
to:@38
@38: scope:[] from @37
(byte*) print_char_cursor#129 ← phi( @37/(byte*) print_char_cursor#25 )
(byte*) print_line_cursor#44 ← phi( @37/(byte*) print_line_cursor#9 )
(byte*) print_line_cursor#22 ← (byte*) print_line_cursor#44
(byte*) print_char_cursor#65 ← (byte*) print_char_cursor#129
to:@end
@end: scope:[] from @40
@end: scope:[] from @38
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @10
(label) @19
(label) @30
(label) @33
(label) @39
(label) @40
(label) @28
(label) @31
(label) @37
(label) @38
(label) @begin
(label) @end
(byte*) BGCOL
@ -3239,13 +3239,13 @@ Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) @19
Culled Empty Block (label) mulf_init::@6
Culled Empty Block (label) mulf8s::@3
Culled Empty Block (label) @30
Culled Empty Block (label) @28
Culled Empty Block (label) main::@6
Culled Empty Block (label) muls8u::@3
Culled Empty Block (label) muls8s::@1
Culled Empty Block (label) muls8s::@2
Culled Empty Block (label) muls8s::@7
Culled Empty Block (label) @33
Culled Empty Block (label) @31
Culled Empty Block (label) mulf_tables_cmp::@9
Culled Empty Block (label) mulf_tables_cmp::@11
Culled Empty Block (label) mul8u_compare::@15
@ -3254,7 +3254,7 @@ Culled Empty Block (label) mul8u_error::@11
Culled Empty Block (label) mul8s_compare::@15
Culled Empty Block (label) mul8s_compare::@17
Culled Empty Block (label) mul8s_error::@11
Culled Empty Block (label) @40
Culled Empty Block (label) @38
Successful SSA optimization Pass2CullEmptyBlocks
Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0
Successful SSA optimization Pass2AliasElimination
@ -3407,7 +3407,7 @@ Added new block during phi lifting mulf_init::@11(between mulf_init::@4 and mulf
Added new block during phi lifting mulf_init::@12(between mulf_init::@3 and mulf_init::@4)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @39
Adding NOP phi() at start of @37
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
@ -3591,7 +3591,7 @@ Culled Empty Block (label) mulf_init::@9
Culled Empty Block (label) mulf_init::@10
Culled Empty Block (label) print_cls::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @39
Adding NOP phi() at start of @37
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
@ -3632,14 +3632,14 @@ Adding NOP phi() at start of print_cls
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@39
@39: scope:[] from @begin
to:@37
@37: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @39
@end: scope:[] from @37
[3] phi() [ ] ( )
main: scope:[main] from @39
main: scope:[main] from @37
[4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
to:main::@1
@ -4908,15 +4908,15 @@ INITIAL ASM
.label print_line_cursor = 5
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @39 [phi:@begin->@39]
b39_from_bbegin:
jmp b39
//SEG4 @39
b39:
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b37_from_bbegin:
jmp b37
//SEG4 @37
b37:
//SEG5 [2] call main [ ] ( )
jsr main
//SEG6 [3] phi from @39 to @end [phi:@39->@end]
bend_from_b39:
//SEG6 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b37:
jmp bend
//SEG7 @end
bend:
@ -7615,15 +7615,15 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_line_cursor = 4
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @39 [phi:@begin->@39]
b39_from_bbegin:
jmp b39
//SEG4 @39
b39:
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b37_from_bbegin:
jmp b37
//SEG4 @37
b37:
//SEG5 [2] call main [ ] ( )
jsr main
//SEG6 [3] phi from @39 to @end [phi:@39->@end]
bend_from_b39:
//SEG6 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b37:
jmp bend
//SEG7 @end
bend:
@ -9629,7 +9629,7 @@ print_cls: {
mula_sqr2_hi: .fill $200, 0
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b39
Removing instruction jmp b37
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
@ -9805,8 +9805,8 @@ Replacing label b3_from_b4 with b3
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction bbegin:
Removing instruction b39_from_bbegin:
Removing instruction bend_from_b39:
Removing instruction b37_from_bbegin:
Removing instruction bend_from_b37:
Removing instruction b1_from_main:
Removing instruction mulf_init_from_b1:
Removing instruction b2_from_b1:
@ -9901,7 +9901,7 @@ Removing instruction b12_from_b3:
Removing instruction b4_from_b12:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b39:
Removing instruction b37:
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
@ -10075,7 +10075,7 @@ Removing unreachable instruction jmp b4
Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
(label) @39
(label) @37
(label) @begin
(label) @end
(byte*) BGCOL
@ -10600,11 +10600,11 @@ Score: 224667
.label print_char_cursor = $a
.label print_line_cursor = 4
//SEG2 @begin
//SEG3 [1] phi from @begin to @39 [phi:@begin->@39]
//SEG4 @39
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
//SEG4 @37
//SEG5 [2] call main [ ] ( )
jsr main
//SEG6 [3] phi from @39 to @end [phi:@39->@end]
//SEG6 [3] phi from @37 to @end [phi:@37->@end]
//SEG7 @end
//SEG8 main
main: {

View File

@ -1,4 +1,4 @@
(label) @39
(label) @37
(label) @begin
(label) @end
(byte*) BGCOL