// File: /workspace/github_c_makefile_star2_O0/adelciotto[P]plasma/src/rgb_plasma.c
// Function: DrawFrame
void DrawFrame(double elapsedTimeInSecs) {
    double t = elapsedTimeInSecs;

    for (int yi = 0; yi < height; yi++) {
        double y = (0.5 + yi / (double)height - 1.0) * PLASMA_SCALE -
                   PLASMA_SCALE_HALF;

        for (int xi = 0; xi < width; xi++) {
            double x = (0.5 + xi / (double)width - 1.0) * PLASMA_SCALE -
                       PLASMA_SCALE_HALF;

            double val = sin(y + t);
            val += sin((x + t) * 0.5);
            val += sin((x + y + t) * 0.5);
            double cx = x + PLASMA_SCALE_HALF * (sin(t * 0.33));
            double cy = y + PLASMA_SCALE_HALF * (cos(t * 0.5));
            val += sin(sqrt(cx * cx + cy * cy + 1.0) + t);
            val *= 0.5;

            double r, g, b;
            if (interactive) {
                double dist = sqrt((x - mouseX) * (x - mouseX) +
                                   (y - mouseY) * (y - mouseY));
                r = sin((val + sin(dist * 2 + t)) * PI) * 0.5 + 0.5;
                g = sin(val * PI + 2.0 * PI * 0.33) * 0.5 + 0.5;
                b = sin((val + cos(dist + t * 0.33)) * PI + 4.0 * PI * 0.33) *
                        0.5 +
                    0.5;
            } else {
                r = sin(val * PI) * 0.5 + 0.5;
                g = sin(val * PI + 2.0 * PI * 0.33) * 0.5 + 0.5;
                b = sin(val * PI + 4.0 * PI * 0.33) * 0.5 + 0.5;
            }

            Uint8 ri = (Uint8)Max(r * 255, 255);
            Uint8 gi = (Uint8)Max(g * 255, 255);
            Uint8 bi = (Uint8)Max(b * 255, 255);

            pixelBuffer[Get1DArrayIndex(xi, yi, width)] =
                RGBToUint32(ri, gi, bi);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
movsd %xmm0, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0x3a62(%rip), %eax      # 0x513c
jge 0x1b5e
cvtsi2sdl -0x14(%rbp), %xmm1
cvtsi2sdl 0x3a4f(%rip), %xmm0 # 0x513c
divsd %xmm0, %xmm1
movsd 0x1957(%rip), %xmm0     # 0x3050
addsd %xmm1, %xmm0
movsd 0x1943(%rip), %xmm1     # 0x3048
subsd %xmm1, %xmm0
movsd 0x1927(%rip), %xmm1     # 0x3038
mulsd %xmm1, %xmm0
movsd 0x1923(%rip), %xmm1     # 0x3040
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl 0x3a02(%rip), %eax      # 0x5138
jge 0x1b4e
cvtsi2sdl -0x24(%rbp), %xmm1
cvtsi2sdl 0x39ef(%rip), %xmm0 # 0x5138
divsd %xmm0, %xmm1
movsd 0x18fb(%rip), %xmm0     # 0x3050
addsd %xmm1, %xmm0
movsd 0x18e7(%rip), %xmm1     # 0x3048
subsd %xmm1, %xmm0
movsd 0x18cb(%rip), %xmm1     # 0x3038
mulsd %xmm1, %xmm0
movsd 0x18c7(%rip), %xmm1     # 0x3040
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x20(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
callq 0x1090
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd 0x18a8(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
callq 0x1090
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm0
addsd -0x20(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd 0x187e(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
callq 0x1090
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x1869(%rip), %xmm0     # 0x3060
mulsd -0x10(%rbp), %xmm0
callq 0x1090
movsd -0x80(%rbp), %xmm1
movsd 0x184a(%rip), %xmm2     # 0x3058
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x1823(%rip), %xmm0     # 0x3050
mulsd -0x10(%rbp), %xmm0
callq 0x1230
movsd -0x78(%rbp), %xmm1
movsd 0x1814(%rip), %xmm2     # 0x3058
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x40(%rbp), %xmm0
movsd -0x40(%rbp), %xmm2
movsd -0x48(%rbp), %xmm1
mulsd -0x48(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x17d3(%rip), %xmm1     # 0x3048
addsd %xmm1, %xmm0
callq 0x1130
addsd -0x10(%rbp), %xmm0
callq 0x1090
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x17b6(%rip), %xmm0     # 0x3050
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
cmpl $0x0, 0x38d9(%rip)      # 0x5184
je 0x19fd
movsd -0x30(%rbp), %xmm0
subsd 0x388a(%rip), %xmm0     # 0x5148
movsd -0x30(%rbp), %xmm2
subsd 0x387d(%rip), %xmm2     # 0x5148
movsd -0x20(%rbp), %xmm1
subsd 0x3878(%rip), %xmm1     # 0x5150
movsd -0x20(%rbp), %xmm3
subsd 0x386b(%rip), %xmm3     # 0x5150
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1130
movsd %xmm0, -0x68(%rbp)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x68(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x1090
movaps %xmm0, %xmm1
movsd -0x90(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd 0x1732(%rip), %xmm1     # 0x3068
mulsd %xmm1, %xmm0
callq 0x1090
movsd 0x1709(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x1707(%rip), %xmm1     # 0x3068
mulsd %xmm1, %xmm0
movsd 0x170b(%rip), %xmm1     # 0x3078
addsd %xmm1, %xmm0
callq 0x1090
movsd 0x16d2(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x68(%rbp), %xmm1
movsd -0x10(%rbp), %xmm0
movsd 0x16b6(%rip), %xmm2     # 0x3060
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1230
movaps %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd 0x169a(%rip), %xmm1     # 0x3068
mulsd %xmm1, %xmm0
movsd 0x1696(%rip), %xmm1     # 0x3070
addsd %xmm1, %xmm0
callq 0x1090
movsd 0x1665(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x1a92
movsd 0x1663(%rip), %xmm0     # 0x3068
mulsd -0x38(%rbp), %xmm0
callq 0x1090
movsd 0x1639(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x1637(%rip), %xmm1     # 0x3068
mulsd %xmm1, %xmm0
movsd 0x163b(%rip), %xmm1     # 0x3078
addsd %xmm1, %xmm0
callq 0x1090
movsd 0x1602(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x1600(%rip), %xmm1     # 0x3068
mulsd %xmm1, %xmm0
movsd 0x15fc(%rip), %xmm1     # 0x3070
addsd %xmm1, %xmm0
callq 0x1090
movsd 0x15cb(%rip), %xmm1     # 0x3050
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x50(%rbp), %xmm0
movsd 0x15e1(%rip), %xmm1     # 0x3080
movsd %xmm1, -0xa8(%rbp)
mulsd %xmm1, %xmm0
callq 0x1350
movsd -0xa8(%rbp), %xmm1
cvttsd2si %xmm0, %eax
movb %al, -0x69(%rbp)
movsd -0x58(%rbp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1350
movsd -0xa8(%rbp), %xmm1
cvttsd2si %xmm0, %eax
movb %al, -0x6a(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1350
cvttsd2si %xmm0, %eax
movb %al, -0x6b(%rbp)
movb -0x69(%rbp), %cl
movb -0x6a(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x6b(%rbp), %edx
callq 0x13b0
movl %eax, -0x9c(%rbp)
movq 0x3665(%rip), %rax      # 0x5178
movq %rax, -0x98(%rbp)
movl -0x24(%rbp), %edi
movl -0x14(%rbp), %esi
movl 0x3612(%rip), %edx      # 0x5138
callq 0x1390
movl -0x9c(%rbp), %edx
movl %eax, %ecx
movq -0x98(%rbp), %rax
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x172d
jmp 0x1b50
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x16d1
addq $0xb0, %rsp
popq %rbp
retq
nopw (%rax,%rax)