// File: /workspace/github_c_makefile_star2_O0/adelciotto[P]scg/examples/plasma.c
// Function: draw_plasma
static void draw_plasma(scg_image_t *plasma_buffer, float32_t t) {
    for (int yi = 0; yi < PLASMA_BUFFER_HEIGHT; yi++) {
        float32_t y = (0.5f + yi / (float32_t)PLASMA_BUFFER_HEIGHT - 1.0f) *
                          PLASMA_SCALE -
                      PLASMA_SCALE_HALF;

        for (int xi = 0; xi < PLASMA_BUFFER_WIDTH; xi++) {
            float32_t x = (0.5f + xi / (float32_t)PLASMA_BUFFER_WIDTH - 1.0f) *
                              PLASMA_SCALE -
                          PLASMA_SCALE_HALF;

            float32_t val = sinf(y + t);
            val += sinf((x + t) * 0.5f);
            val += sinf((x + y + t) * 0.5f);
            float32_t cx = x + PLASMA_SCALE_HALF * (sinf(t * 0.33f));
            float32_t cy = y + PLASMA_SCALE_HALF * (cosf(t * 0.5f));
            val += sinf(sqrt(cx * cx + cy * cy + 1.0f) + t);
            val *= 0.5f;

            float32_t r = fabs(sinf(val * SCG_PI) * 0.5f + 0.5f);
            float32_t g =
                fabs(sinf(val * SCG_PI + 2.0f * SCG_PI * 0.33f) * 0.5f + 0.5f);
            float32_t b =
                fabs(sinf(val * SCG_PI + 4.0f * SCG_PI * 0.33f) * 0.5f + 0.5f);

            scg_pixel_t color =
                scg_pixel_new_rgb((uint8_t)scg_min_float32(r * 255.0f, 255.0f),
                                  (uint8_t)scg_min_float32(g * 255.0f, 255.0f),
                                  (uint8_t)scg_min_float32(b * 255.0f, 255.0f));

            scg_image_set_pixel(plasma_buffer, xi, yi, color);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movss %xmm0, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
cmpl $0x80, -0x10(%rbp)
jge 0x6b9d
cvtsi2ssl -0x10(%rbp), %xmm1
movss 0x817(%rip), %xmm0      # 0x703c
divss %xmm0, %xmm1
movss 0x7d3(%rip), %xmm0      # 0x7004
addss %xmm1, %xmm0
movss 0x7cb(%rip), %xmm1      # 0x7008
subss %xmm1, %xmm0
movss 0x7df(%rip), %xmm1      # 0x7028
mulss %xmm1, %xmm0
movss 0x7e3(%rip), %xmm1      # 0x7038
mulss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x85b(%rip), %xmm1      # 0x70c0
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
cmpl $0x80, -0x18(%rbp)
jge 0x6b8d
cvtsi2ssl -0x18(%rbp), %xmm0
movss 0x7ad(%rip), %xmm1      # 0x7040
mulss %xmm1, %xmm0
movss 0x765(%rip), %xmm1      # 0x7004
movss %xmm1, -0x54(%rbp)
addss %xmm1, %xmm0
movss 0x758(%rip), %xmm1      # 0x7008
movss %xmm1, -0x5c(%rbp)
subss %xmm1, %xmm0
movss 0x767(%rip), %xmm1      # 0x7028
movss %xmm1, -0x58(%rbp)
mulss %xmm1, %xmm0
movss 0x766(%rip), %xmm1      # 0x7038
mulss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x7de(%rip), %xmm1      # 0x70c0
movsd %xmm1, -0x70(%rbp)
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x14(%rbp), %xmm0
movss -0xc(%rbp), %xmm1
addss %xmm1, %xmm0
callq 0x21e0
movss -0x54(%rbp), %xmm1
movss %xmm0, -0x20(%rbp)
movss -0x1c(%rbp), %xmm0
movss -0xc(%rbp), %xmm2
addss %xmm2, %xmm0
mulss %xmm1, %xmm0
callq 0x21e0
movss -0x54(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x20(%rbp), %xmm0
addss %xmm2, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x1c(%rbp), %xmm0
movss -0x14(%rbp), %xmm2
addss %xmm2, %xmm0
movss -0xc(%rbp), %xmm2
addss %xmm2, %xmm0
mulss %xmm1, %xmm0
callq 0x21e0
movaps %xmm0, %xmm1
movss -0x20(%rbp), %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
movss -0xc(%rbp), %xmm0
movss 0x6ba(%rip), %xmm1      # 0x7044
mulss %xmm1, %xmm0
callq 0x21e0
movsd -0x78(%rbp), %xmm2
movsd -0x70(%rbp), %xmm3
movss -0x54(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x24(%rbp)
movss -0x14(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
movss -0xc(%rbp), %xmm0
mulss %xmm1, %xmm0
callq 0x2180
movsd -0x70(%rbp), %xmm3
movsd -0x68(%rbp), %xmm2
movss -0x5c(%rbp), %xmm1
cvtss2sd %xmm0, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x24(%rbp), %xmm0
movss -0x28(%rbp), %xmm2
mulss %xmm2, %xmm2
mulss %xmm0, %xmm0
addss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x21b0
movss -0xc(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x21e0
movss -0x58(%rbp), %xmm1
movss -0x54(%rbp), %xmm2
movaps %xmm0, %xmm3
movss -0x20(%rbp), %xmm0
addss %xmm3, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x20(%rbp), %xmm0
mulss %xmm2, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x20(%rbp), %xmm0
mulss %xmm1, %xmm0
callq 0x21e0
movss -0x58(%rbp), %xmm1
movss -0x54(%rbp), %xmm2
mulss %xmm2, %xmm0
addss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
movapd 0x5fb(%rip), %xmm2      # 0x7080
movaps %xmm2, -0x50(%rbp)
pand %xmm2, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x20(%rbp), %xmm0
mulss %xmm1, %xmm0
movss 0x5a1(%rip), %xmm1      # 0x7048
addss %xmm1, %xmm0
callq 0x21e0
movss -0x58(%rbp), %xmm1
movss -0x54(%rbp), %xmm3
movaps -0x50(%rbp), %xmm2
mulss %xmm3, %xmm0
addss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
pand %xmm2, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
mulss %xmm1, %xmm0
movss 0x564(%rip), %xmm1      # 0x704c
addss %xmm1, %xmm0
callq 0x21e0
movss -0x54(%rbp), %xmm2
movaps -0x50(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
pand %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x34(%rbp)
movss -0x34(%rbp), %xmm0
movss 0x4ec(%rip), %xmm1      # 0x700c
movss %xmm1, -0x3c(%rbp)
mulss %xmm1, %xmm0
callq 0x2560
movss -0x3c(%rbp), %xmm1
cvttss2si %xmm0, %eax
movb %al, -0x38(%rbp)
movss -0x30(%rbp), %xmm0
mulss %xmm1, %xmm0
callq 0x2560
movss -0x3c(%rbp), %xmm1
cvttss2si %xmm0, %eax
movb %al, -0x37(%rbp)
movss -0x2c(%rbp), %xmm0
mulss %xmm1, %xmm0
callq 0x2560
cvttss2si %xmm0, %eax
movb %al, -0x36(%rbp)
movb $-0x1, -0x35(%rbp)
movq -0x8(%rbp), %rdi
movl -0x18(%rbp), %esi
movl -0x10(%rbp), %edx
movl -0x38(%rbp), %ecx
callq 0x2f70
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x6879
jmp 0x6b8f
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x680b
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)