#include "kharc.h"
int main()
{
int w, t, x, y, d, z, x0, y0, x1, y1, y0x0, y0x1, y1x0, y1x1, gx[1764], gy[1764];
w = openWin(640, 480);
for (t = 0; isClose(w) == 0; t++) {
wait(8); fillRect(w, 640, 480, 0, 0, 0x000000);
for (y = -20; y <= 21; y++) {
for (x = -20; x <= 21; x++) {
d = ff16Sqrt((x * x + y * y) * 65536);
z = ff16Sin(((d * 652) >> 12) - 1043 * t) * 50 / (d + 327680);
x0 = x + 19; y0 = y + 19; x1 = x + 20; y1 = y + 20;
y1x1 = y1 * 42 + x1; y0x0 = y0 * 42 + x0; y0x1 = y0 * 42 + x1; y1x0 = y1 * 42 + x0;
gx[y1x1] = (x * 2 - y * 2 + z * 0) * 4 + 320;
gy[y1x1] = (x * 2 + y * 2 + z * 1) * 2 + 240;
if (x0 >= 0) { if (y0 >= 0) {
drawLine(w, gx[y0x0], gy[y0x0], gx[y0x1], gy[y0x1], 0x00ffff);
drawLine(w, gx[y0x0], gy[y0x0], gx[y1x0], gy[y1x0], 0x00ffff);
}}
}
}
}
return 0;
}int fib(int i)
{
if (i > 1) {
i = fib(i - 2) + fib(i - 1);
}
return i;
}Lb_I(5); Sub_AI(SP,16); Sto_AMd(RP,SP,12); Lod_RMd(R0,SP,16); CmFrJle_RII(R0,1,8); Lod_RMd(R0,SP,16); Add_RI(R0,-2); Sto_RMd(R0,SP,0); Mov_AI(RP,6); Jmp_I(5); Lb_I(6); Sto_RMd(R0,SP,8); Lod_RMd(R0,SP,16); Add_RI(R0,-1); Sto_RMd(R0,SP,0); Mov_AI(RP,7); Jmp_I(5); Lb_I(7); Lod_RMd(R1,SP,8); Add_RR(R0,R1); Sto_RMd(R0,SP,16); Lb_I(8); Lod_RMd(R0,SP,16); Lod_AMd(RP,SP,12); Add_AI(SP,16); Jmp_A(RP);
vJmp: switch (pc) {
L_5: case 5:
sp -= 16; *(int*)&mem[sp+12] = rp;
r0 = *(int*)&mem[sp+16]; if (r0 <= 1) goto L_8;
r0 = *(int*)&mem[sp+16]; r0 += -2; *(int*)&mem[sp+0] = r0;
rp = 6; goto L_5; case 6: *(int*)&mem[sp+8] = r0;
r0 = *(int*)&mem[sp+16]; r0 += -1; *(int*)&mem[sp+0] = r0;
rp = 7; goto L_5; case 7:
r1 = *(int*)&mem[sp+8]; r0 += r1; *(int*)&mem[sp+16] = r0;
L_8: case 8:
r0 = *(int*)&mem[sp+16];
rp = *(int*)&mem[sp+12]; sp += 16; pc = rp; goto vJmp;
}int L_5(int sp16)
{
int sp8, sp12;
int r0, r1;
r0 = sp16; if (r0 <= 1) goto L_8;
r0 = sp16; r0 += -2; sp8 = r0;
r0 = L_5(sp8); sp8 = r0;
r0 = sp16; r0 += -1; sp12 = r0;
r0 = L_5(sp12);
r1 = sp8; r0 += r1; sp16 = r0;
L_8:
r0 = sp16;
return r0;
}