// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_window_draw_line
struct value*
builtin_window_draw_line(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("window-draw-line!", args, 5);
    ASSERT_TYPE("window-draw-line!", args, 0, VALUE_WINDOW);
    ASSERT_TYPE("window-draw-line!", args, 1, VALUE_NUMBER);
    ASSERT_TYPE("window-draw-line!", args, 2, VALUE_NUMBER);
    ASSERT_TYPE("window-draw-line!", args, 3, VALUE_NUMBER);
    ASSERT_TYPE("window-draw-line!", args, 4, VALUE_NUMBER);

    struct value* window = list_nth(args, 0);
    struct value* x1 = list_nth(args, 1);
    struct value* y1 = list_nth(args, 2);
    struct value* x2 = list_nth(args, 3);
    struct value* y2 = list_nth(args, 4);

    SDL_SetRenderDrawColor(window->as.window.renderer, 255, 255, 255, 255);
    SDL_RenderDrawLine(window->as.window.renderer,
        x1->as.number, y1->as.number,
        x2->as.number, y2->as.number);

    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x5, %rax
je 0x5514
movq 0x8b07(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x40(%rbp), %rdi
movq %rax, %r8
leaq 0x4d0d(%rip), %rsi      # 0xa204
leaq 0x4ca9(%rip), %rdx      # 0xa1a7
movl $0x5, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xc, (%rax)
je 0x5582
movq 0x8ab3(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0xc, %edi
callq 0x86d0
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r8
movq %rax, %r9
leaq 0x4d1b(%rip), %rsi      # 0xa283
leaq 0x4c38(%rip), %rdx      # 0xa1a7
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
cmpl $0x4, (%rax)
je 0x55f5
movq 0x8a44(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %r8
movq %rax, %r9
leaq 0x4cab(%rip), %rsi      # 0xa283
leaq 0x4bc8(%rip), %rdx      # 0xa1a7
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x6670
cmpl $0x4, (%rax)
je 0x5668
movq 0x89d1(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %r8
movq %rax, %r9
leaq 0x4c38(%rip), %rsi      # 0xa283
leaq 0x4b55(%rip), %rdx      # 0xa1a7
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0x6670
cmpl $0x4, (%rax)
je 0x56db
movq 0x895e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x80(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %r8
movq %rax, %r9
leaq 0x4bc5(%rip), %rsi      # 0xa283
leaq 0x4ae2(%rip), %rdx      # 0xa1a7
movl $0x3, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
movl $0x4, %esi
callq 0x6670
cmpl $0x4, (%rax)
je 0x575a
movq 0x88eb(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
movl $0x4, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %r8
movq %rax, %r9
leaq 0x4b46(%rip), %rsi      # 0xa283
leaq 0x4a63(%rip), %rdx      # 0xa1a7
movl $0x4, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x6670
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0x6670
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movl $0x4, %esi
callq 0x6670
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0xff, %r8d
movl %r8d, %esi
movl %r8d, %edx
movl %r8d, %ecx
callq 0x11f0
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl %eax, %esi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl %eax, %edx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl %eax, %ecx
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movl %eax, %r8d
callq 0x10a0
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x90, %rsp
popq %rbp
retq
nopw (%rax,%rax)