// Generated by the Spiral compiler (Zig backend). Build: zig build-exe main.zig -O ReleaseSafe (or -O Debug -fno-llvm: seconds)
const std = @import("std");
var spiral_threaded: std.Io.Threaded = .init_single_threaded;
var spiral_arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
var spiral_io: std.Io = undefined;
var spiral_gpa: std.mem.Allocator = undefined;
var spiral_true: bool = true;
fn spiralPrint(s: []const u8) void {
    std.Io.File.stdout().writeStreamingAll(spiral_io, s) catch {};
}
fn spiralPrintAny(x: anytype) void {
    const T = @TypeOf(x);
    if (T == []const u8) return spiralPrint(x);
    const s = switch (@typeInfo(T)) {
        .float => std.fmt.allocPrint(spiral_gpa, "{d}", .{x}),
        .bool => std.fmt.allocPrint(spiral_gpa, "{}", .{x}),
        else => std.fmt.allocPrint(spiral_gpa, "{d}", .{x}),
    } catch @panic("out of memory");
    spiralPrint(s);
}
fn spiralFail(s: []const u8) noreturn {
    std.Io.File.stderr().writeStreamingAll(spiral_io, s) catch {};
    std.Io.File.stderr().writeStreamingAll(spiral_io, "\n") catch {};
    std.process.exit(1);
}
fn spiralConv(comptime T: type, x: anytype) T {
    const S = @TypeOf(x);
    if (@typeInfo(T) == .float) {
        if (@typeInfo(S) == .float) return @floatCast(x) else return @floatFromInt(x);
    }
    if (@typeInfo(S) == .float) return @intFromFloat(x);
    const U = @Int(.unsigned, @bitSizeOf(T));
    const wide: i128 = x;
    return @bitCast(@as(U, @truncate(@as(u128, @bitCast(wide)))));
}
fn spiralConcat(a: []const u8, b: []const u8) []const u8 {
    return std.mem.concat(spiral_gpa, u8, &.{ a, b }) catch @panic("out of memory");
}
fn spiralStringSlice(s: []const u8, from: i64, upto: i64) []const u8 {
    const len: i64 = @intCast(s.len);
    if (from < 0 or from > len or upto < from - 1 or upto >= len) std.process.exit(3);
    if (upto < from) return "";
    const a: usize = @intCast(from);
    const b: usize = @intCast(upto + 1);
    if ((s[a] & 0xC0) == 0x80 or (b < s.len and (s[b] & 0xC0) == 0x80)) std.process.exit(3);
    return s[a..b];
}
fn spiralIndex(len: usize, i: anytype) usize {
    if (i < 0 or i >= len) std.process.exit(3);
    return @intCast(i);
}
fn spiralNewArray(comptime T: type, n: anytype) []T {
    const len: usize = @intCast(n);
    const a = spiral_gpa.alloc(T, len) catch @panic("out of memory");
    switch (@typeInfo(T)) {
        .int, .float, .bool => @memset(a, std.mem.zeroes(T)),
        else => if (T == []const u8) @memset(a, ""),
    }
    return a;
}
fn spiralCreate(comptime T: type, v: T) *T {
    const p = spiral_gpa.create(T) catch @panic("out of memory");
    p.* = v;
    return p;
}
const Mut0 = struct { l0: i32 };
const Mut1 = struct { l0: f64, l1: f64, l2: f64 };
const Mut2 = struct { l0: i32 };
const Mut3 = struct { l0: f64 };
fn mutCreate0(a0: i32) *Mut0 {
    return spiralCreate(Mut0, .{ .l0 = a0 });
}
fn method0(p0: *Mut0) bool {
    var v0: *Mut0 = p0; _ = &v0;
    var v1: i32 = undefined; _ = &v1;
    var v2: bool = undefined; _ = &v2;
    v1 = v0.l0;
    v2 = v1 < @as(i32, 7040);
    return v2;
}
fn mutCreate1(a0: f64, a1: f64, a2: f64) *Mut1 {
    return spiralCreate(Mut1, .{ .l0 = a0, .l1 = a1, .l2 = a2 });
}
fn mutCreate2(a0: i32) *Mut2 {
    return spiralCreate(Mut2, .{ .l0 = a0 });
}
fn method1(p0: *Mut0) bool {
    var v0: *Mut0 = p0; _ = &v0;
    var v1: i32 = undefined; _ = &v1;
    var v2: bool = undefined; _ = &v2;
    v1 = v0.l0;
    v2 = v1 < @as(i32, 60);
    return v2;
}
fn mutCreate3(a0: f64) *Mut3 {
    return spiralCreate(Mut3, .{ .l0 = a0 });
}
fn method4(p0: f64, p1: *Mut3) bool {
    var v0: f64 = p0; _ = &v0;
    var v1: *Mut3 = p1; _ = &v1;
    var v2: f64 = undefined; _ = &v2;
    var v3: bool = undefined; _ = &v3;
    v2 = v1.l0;
    v3 = v2 < v0;
    return v3;
}
fn method5(p0: f64, p1: *Mut3) bool {
    var v0: f64 = p0; _ = &v0;
    var v1: *Mut3 = p1; _ = &v1;
    var v2: f64 = undefined; _ = &v2;
    var v3: bool = undefined; _ = &v3;
    v2 = v1.l0;
    v3 = v2 < v0;
    return v3;
}
fn method6(p0: []f64, p1: []i32, p2: f64, p3: f64, p4: f64, p5: f64, p6: f64, p7: f64, p8: f64, p9: i32) void {
    var v0: []f64 = p0; _ = &v0;
    var v1: []i32 = p1; _ = &v1;
    var v2: f64 = p2; _ = &v2;
    var v3: f64 = p3; _ = &v3;
    var v4: f64 = p4; _ = &v4;
    var v5: f64 = p5; _ = &v5;
    var v6: f64 = p6; _ = &v6;
    var v7: f64 = p7; _ = &v7;
    var v8: f64 = p8; _ = &v8;
    var v9: i32 = p9; _ = &v9;
    var v10: f64 = undefined; _ = &v10;
    var v11: f64 = undefined; _ = &v11;
    var v12: f64 = undefined; _ = &v12;
    var v13: f64 = undefined; _ = &v13;
    var v14: f64 = undefined; _ = &v14;
    var v15: f64 = undefined; _ = &v15;
    var v16: f64 = undefined; _ = &v16;
    var v17: f64 = undefined; _ = &v17;
    var v18: f64 = undefined; _ = &v18;
    var v19: f64 = undefined; _ = &v19;
    var v20: f64 = undefined; _ = &v20;
    var v21: f64 = undefined; _ = &v21;
    var v22: f64 = undefined; _ = &v22;
    var v23: f64 = undefined; _ = &v23;
    var v24: f64 = undefined; _ = &v24;
    var v25: f64 = undefined; _ = &v25;
    var v26: f64 = undefined; _ = &v26;
    var v27: f64 = undefined; _ = &v27;
    var v28: f64 = undefined; _ = &v28;
    var v29: f64 = undefined; _ = &v29;
    var v30: f64 = undefined; _ = &v30;
    var v31: f64 = undefined; _ = &v31;
    var v32: f64 = undefined; _ = &v32;
    var v33: f64 = undefined; _ = &v33;
    var v34: f64 = undefined; _ = &v34;
    var v35: f64 = undefined; _ = &v35;
    var v36: f64 = undefined; _ = &v36;
    var v37: f64 = undefined; _ = &v37;
    var v38: f64 = undefined; _ = &v38;
    var v39: f64 = undefined; _ = &v39;
    var v40: f64 = undefined; _ = &v40;
    var v41: f64 = undefined; _ = &v41;
    var v42: f64 = undefined; _ = &v42;
    var v43: f64 = undefined; _ = &v43;
    var v44: f64 = undefined; _ = &v44;
    var v45: f64 = undefined; _ = &v45;
    var v46: f64 = undefined; _ = &v46;
    var v47: f64 = undefined; _ = &v47;
    var v48: f64 = undefined; _ = &v48;
    var v49: f64 = undefined; _ = &v49;
    var v50: f64 = undefined; _ = &v50;
    var v51: f64 = undefined; _ = &v51;
    var v52: f64 = undefined; _ = &v52;
    var v53: i32 = undefined; _ = &v53;
    var v54: f64 = undefined; _ = &v54;
    var v55: f64 = undefined; _ = &v55;
    var v56: i32 = undefined; _ = &v56;
    var v57: i32 = undefined; _ = &v57;
    var v58: i32 = undefined; _ = &v58;
    var v59: bool = undefined; _ = &v59;
    var v61: bool = undefined; _ = &v61;
    var v60: bool = undefined; _ = &v60;
    var v62: f64 = undefined; _ = &v62;
    var v63: bool = undefined; _ = &v63;
    v10 = @sin(v2);
    v11 = v7 * v10;
    v12 = @sin(v3);
    v13 = v11 * v12;
    v14 = @cos(v4);
    v15 = v13 * v14;
    v16 = @cos(v2);
    v17 = v8 * v16;
    v18 = v17 * v12;
    v19 = v18 * v14;
    v20 = v15 - v19;
    v21 = v7 * v16;
    v22 = @sin(v4);
    v23 = v21 * v22;
    v24 = v20 + v23;
    v25 = v8 * v10;
    v26 = v25 * v22;
    v27 = v24 + v26;
    v28 = @cos(v3);
    v29 = v6 * v28;
    v30 = v29 * v14;
    v31 = v27 + v30;
    v32 = v21 * v14;
    v33 = v25 * v14;
    v34 = v32 + v33;
    v35 = v13 * v22;
    v36 = v34 - v35;
    v37 = v18 * v22;
    v38 = v36 + v37;
    v39 = v29 * v22;
    v40 = v38 - v39;
    v41 = v17 * v28;
    v42 = v11 * v28;
    v43 = v41 - v42;
    v44 = v6 * v12;
    v45 = v43 + v44;
    v46 = v45 + @as(f64, 100.0);
    v47 = @as(f64, 1.0) / v46;
    v48 = @as(f64, 80.0) + v5;
    v49 = @as(f64, 40.0) * v47;
    v50 = v49 * v31;
    v51 = v50 * @as(f64, 2.0);
    v52 = v48 + v51;
    v53 = spiralConv(i32, v52);
    v54 = v49 * v40;
    v55 = @as(f64, 22.0) + v54;
    v56 = spiralConv(i32, v55);
    v57 = v56 *% @as(i32, 160);
    v58 = v53 +% v57;
    v59 = v58 >= @as(i32, 0);
    if (v59) {
        v60 = v58 < @as(i32, 7040);
        v61 = v60;
    } else {
        v61 = false;
    }
    if (v61) {
        v62 = v0[spiralIndex(v0.len, v58)];
        v63 = v47 > v62;
        if (v63) {
            v0[spiralIndex(v0.len, v58)] = v47;
            v1[spiralIndex(v1.len, v58)] = v9;
        } else {
        }
    } else {
    }
}
fn method3(p0: []f64, p1: []i32, p2: f64, p3: f64, p4: f64, p5: f64, p6: f64) void {
    var v0: []f64 = p0; _ = &v0;
    var v1: []i32 = p1; _ = &v1;
    var v2: f64 = p2; _ = &v2;
    var v3: f64 = p3; _ = &v3;
    var v4: f64 = p4; _ = &v4;
    var v5: f64 = p5; _ = &v5;
    var v6: f64 = p6; _ = &v6;
    var v7: f64 = undefined; _ = &v7;
    var v8: *Mut3 = undefined; _ = &v8;
    var v10: *Mut3 = undefined; _ = &v10;
    var v12: f64 = undefined; _ = &v12;
    var v13: f64 = undefined; _ = &v13;
    var v14: i32 = undefined; _ = &v14;
    var v15: i32 = undefined; _ = &v15;
    var v16: f64 = undefined; _ = &v16;
    var v17: i32 = undefined; _ = &v17;
    var v18: i32 = undefined; _ = &v18;
    var v19: f64 = undefined; _ = &v19;
    var v20: i32 = undefined; _ = &v20;
    var v21: i32 = undefined; _ = &v21;
    var v22: f64 = undefined; _ = &v22;
    var v23: f64 = undefined; _ = &v23;
    var v24: f64 = undefined; _ = &v24;
    var v25: f64 = undefined; _ = &v25;
    v7 = -v5;
    v8 = mutCreate3(v7);
    while (method4(v5, v8)) {
        v10 = mutCreate3(v7);
        while (method5(v5, v10)) {
            v12 = v8.l0;
            v13 = v10.l0;
            v14 = @as(i32, 59);
            _ = method6(v0, v1, v2, v3, v4, v6, v12, v13, v7, v14);
            v15 = @as(i32, 92);
            _ = method6(v0, v1, v2, v3, v4, v6, v5, v13, v12, v15);
            v16 = -v12;
            v17 = @as(i32, 47);
            _ = method6(v0, v1, v2, v3, v4, v6, v7, v13, v16, v17);
            v18 = @as(i32, 61);
            _ = method6(v0, v1, v2, v3, v4, v6, v16, v13, v5, v18);
            v19 = -v13;
            v20 = @as(i32, 62);
            _ = method6(v0, v1, v2, v3, v4, v6, v12, v7, v19, v20);
            v21 = @as(i32, 60);
            _ = method6(v0, v1, v2, v3, v4, v6, v12, v5, v13, v21);
            v22 = v10.l0;
            v23 = v22 + @as(f64, 0.6);
            v10.l0 = v23;
        }
        v24 = v8.l0;
        v25 = v24 + @as(f64, 0.6);
        v8.l0 = v25;
    }
}
fn method7(p0: *Mut0) bool {
    var v0: *Mut0 = p0; _ = &v0;
    var v1: i32 = undefined; _ = &v1;
    var v2: bool = undefined; _ = &v2;
    v1 = v0.l0;
    v2 = v1 < @as(i32, 44);
    return v2;
}
fn method8(p0: *Mut0) bool {
    var v0: *Mut0 = p0; _ = &v0;
    var v1: i32 = undefined; _ = &v1;
    var v2: bool = undefined; _ = &v2;
    v1 = v0.l0;
    v2 = v1 < @as(i32, 160);
    return v2;
}
fn method2(p0: []f64, p1: []i32, p2: f64, p3: f64, p4: f64, p5: i32) i32 {
    var v0: []f64 = p0; _ = &v0;
    var v1: []i32 = p1; _ = &v1;
    var v2: f64 = p2; _ = &v2;
    var v3: f64 = p3; _ = &v3;
    var v4: f64 = p4; _ = &v4;
    var v5: i32 = p5; _ = &v5;
    var v6: *Mut0 = undefined; _ = &v6;
    var v8: i32 = undefined; _ = &v8;
    var v9: i32 = undefined; _ = &v9;
    var v10: f64 = undefined; _ = &v10;
    var v11: f64 = undefined; _ = &v11;
    var v12: f64 = undefined; _ = &v12;
    var v13: f64 = undefined; _ = &v13;
    var v14: f64 = undefined; _ = &v14;
    var v15: f64 = undefined; _ = &v15;
    var v16: *Mut2 = undefined; _ = &v16;
    var v17: *Mut0 = undefined; _ = &v17;
    var v19: i32 = undefined; _ = &v19;
    var v20: *Mut0 = undefined; _ = &v20;
    var v22: i32 = undefined; _ = &v22;
    var v23: i32 = undefined; _ = &v23;
    var v24: i32 = undefined; _ = &v24;
    var v25: i32 = undefined; _ = &v25;
    var v26: bool = undefined; _ = &v26;
    var v44: []const u8 = undefined; _ = &v44;
    var v27: []const u8 = undefined; _ = &v27;
    var v28: bool = undefined; _ = &v28;
    var v29: []const u8 = undefined; _ = &v29;
    var v30: bool = undefined; _ = &v30;
    var v31: []const u8 = undefined; _ = &v31;
    var v32: bool = undefined; _ = &v32;
    var v33: []const u8 = undefined; _ = &v33;
    var v34: bool = undefined; _ = &v34;
    var v35: []const u8 = undefined; _ = &v35;
    var v36: bool = undefined; _ = &v36;
    var v37: []const u8 = undefined; _ = &v37;
    var v38: []const u8 = undefined; _ = &v38;
    var v45: i32 = undefined; _ = &v45;
    var v46: i32 = undefined; _ = &v46;
    var v47: i32 = undefined; _ = &v47;
    var v48: i32 = undefined; _ = &v48;
    var v49: i32 = undefined; _ = &v49;
    var v50: i32 = undefined; _ = &v50;
    var v51: i32 = undefined; _ = &v51;
    v6 = mutCreate0(@as(i32, 0));
    while (method0(v6)) {
        v8 = v6.l0;
        v0[spiralIndex(v0.len, v8)] = @as(f64, 0.0);
        v1[spiralIndex(v1.len, v8)] = @as(i32, 46);
        v9 = v8 +% @as(i32, 1);
        v6.l0 = v9;
    }
    v10 = @as(f64, 20.0);
    v11 = @as(f64, -40.0);
    _ = method3(v0, v1, v2, v3, v4, v10, v11);
    v12 = @as(f64, 10.0);
    v13 = @as(f64, 10.0);
    _ = method3(v0, v1, v2, v3, v4, v12, v13);
    v14 = @as(f64, 5.0);
    v15 = @as(f64, 40.0);
    _ = method3(v0, v1, v2, v3, v4, v14, v15);
    _ = spiralPrint("u001b[H");
    v16 = mutCreate2(v5);
    v17 = mutCreate0(@as(i32, 0));
    while (method7(v17)) {
        v19 = v17.l0;
        v20 = mutCreate0(@as(i32, 0));
        while (method8(v20)) {
            v22 = v20.l0;
            v23 = v19 *% @as(i32, 160);
            v24 = v22 +% v23;
            v25 = v1[spiralIndex(v1.len, v24)];
            v26 = v25 == @as(i32, 59);
            if (v26) {
                v27 = ";";
                v44 = v27;
            } else {
                v28 = v25 == @as(i32, 92);
                if (v28) {
                    v29 = "\\";
                    v44 = v29;
                } else {
                    v30 = v25 == @as(i32, 47);
                    if (v30) {
                        v31 = "/";
                        v44 = v31;
                    } else {
                        v32 = v25 == @as(i32, 61);
                        if (v32) {
                            v33 = "=";
                            v44 = v33;
                        } else {
                            v34 = v25 == @as(i32, 62);
                            if (v34) {
                                v35 = ">";
                                v44 = v35;
                            } else {
                                v36 = v25 == @as(i32, 60);
                                if (v36) {
                                    v37 = "<";
                                    v44 = v37;
                                } else {
                                    v38 = ".";
                                    v44 = v38;
                                }
                            }
                        }
                    }
                }
            }
            _ = spiralPrintAny(v44);
            v45 = v16.l0;
            v46 = v45 *% @as(i32, 31);
            v47 = v46 +% v25;
            v48 = @rem(v47, @as(i32, 1000003));
            v16.l0 = v48;
            v49 = v22 +% @as(i32, 1);
            v20.l0 = v49;
        }
        _ = spiralPrint("\n");
        v50 = v19 +% @as(i32, 1);
        v17.l0 = v50;
    }
    v51 = v16.l0;
    return v51;
}
fn spiralMain() i32 {
    var v0: []f64 = undefined; _ = &v0;
    var v1: *Mut0 = undefined; _ = &v1;
    var v3: i32 = undefined; _ = &v3;
    var v4: i32 = undefined; _ = &v4;
    var v5: []i32 = undefined; _ = &v5;
    var v6: *Mut0 = undefined; _ = &v6;
    var v8: i32 = undefined; _ = &v8;
    var v9: i32 = undefined; _ = &v9;
    var v10: *Mut1 = undefined; _ = &v10;
    var v11: *Mut2 = undefined; _ = &v11;
    var v12: *Mut0 = undefined; _ = &v12;
    var v14: i32 = undefined; _ = &v14;
    var v15: f64 = undefined; _ = &v15;
    var v16: f64 = undefined; _ = &v16;
    var v17: f64 = undefined; _ = &v17;
    var v18: i32 = undefined; _ = &v18;
    var v19: i32 = undefined; _ = &v19;
    var v20: f64 = undefined; _ = &v20;
    var v21: f64 = undefined; _ = &v21;
    var v22: f64 = undefined; _ = &v22;
    var v23: f64 = undefined; _ = &v23;
    var v24: f64 = undefined; _ = &v24;
    var v25: f64 = undefined; _ = &v25;
    var v26: i32 = undefined; _ = &v26;
    var v27: i32 = undefined; _ = &v27;
    v0 = spiralNewArray(f64, @as(i32, 7040));
    v1 = mutCreate0(@as(i32, 0));
    while (method0(v1)) {
        v3 = v1.l0;
        v0[spiralIndex(v0.len, v3)] = @as(f64, 0.0);
        v4 = v3 +% @as(i32, 1);
        v1.l0 = v4;
    }
    v5 = spiralNewArray(i32, @as(i32, 7040));
    v6 = mutCreate0(@as(i32, 0));
    while (method0(v6)) {
        v8 = v6.l0;
        v5[spiralIndex(v5.len, v8)] = @as(i32, 46);
        v9 = v8 +% @as(i32, 1);
        v6.l0 = v9;
    }
    v10 = mutCreate1(@as(f64, 0.0), @as(f64, 0.0), @as(f64, 0.0));
    v11 = mutCreate2(@as(i32, 0));
    v12 = mutCreate0(@as(i32, 0));
    while (method1(v12)) {
        v14 = v12.l0;
        v15 = v10.l0;
        v16 = v10.l1;
        v17 = v10.l2;
        v18 = v11.l0;
        v19 = method2(v0, v5, v15, v16, v17, v18);
        v11.l0 = v19;
        v20 = v10.l0;
        v21 = v10.l1;
        v22 = v10.l2;
        v23 = v20 + @as(f64, 0.05);
        v24 = v21 + @as(f64, 0.05);
        v25 = v22 + @as(f64, 0.01);
        v10.l0 = v23;
        v10.l1 = v24;
        v10.l2 = v25;
        v26 = v14 +% @as(i32, 1);
        v12.l0 = v26;
    }
    v27 = v11.l0;
    _ = spiralPrint("cube: "); spiralPrintAny(@as(i32, 60)); spiralPrint(" frames, checksum "); spiralPrintAny(v27); spiralPrint("\n");
    return @as(i32, 0);
}
pub fn main() void {
    spiral_io = spiral_threaded.io();
    spiral_gpa = spiral_arena.allocator();
    var code: i32 = 0;
    const thread = std.Thread.spawn(.{ .stack_size = 1 << 30 }, spiralMainThread, .{&code}) catch @panic("cannot start the main thread");
    thread.join();
    std.process.exit(@truncate(@as(u32, @bitCast(code))));
}
fn spiralMainThread(code: *i32) void {
    code.* = spiralMain();
}
