// File: /workspace/github_c_makefile_star2_O0/pje[P]pixelsort/sorting.c
// Function: create_pixel_list
pixel_t * create_pixel_list(const struct image * const img, const sort_plan_t * plan_ptr) {
    pixel_t *new_pixels = (pixel_t*)malloc(sizeof(pixel_t) * img->width * img->height);

    if (ROW != plan_ptr->orientation) {
        for (size_t column_index = 0; column_index < img->width; column_index++) {
            for (size_t row_index = 0; row_index < img->height; row_index++) {
                size_t destination_index = (img->height * column_index) + row_index;
                size_t source_index = (img->width * row_index) + column_index;
                pixel_t p = {
                    .r = img->buffer[(source_index * sizeof(pixel_t)) + 0],
                    .g = img->buffer[(source_index * sizeof(pixel_t)) + 1],
                    .b = img->buffer[(source_index * sizeof(pixel_t)) + 2],
                    .a = img->buffer[(source_index * sizeof(pixel_t)) + 3]
                };
                new_pixels[destination_index] = p;
            }
        }
    } else {
        for (size_t index = 0; index < ((img->width) * (img->height)); index++) {
            pixel_t p = {
                .r = img->buffer[(index * sizeof(pixel_t)) + 0],
                .g = img->buffer[(index * sizeof(pixel_t)) + 1],
                .b = img->buffer[(index * sizeof(pixel_t)) + 2],
                .a = img->buffer[(index * sizeof(pixel_t)) + 3]
            };
            new_pixels[index] = p;
        }
    }

    return new_pixels;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
shlq $0x2, %rdi
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
imulq %rax, %rdi
callq 0x1110
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movl $0x1, %eax
cmpl 0x8(%rcx), %eax
je 0x11a61
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
cmpq %rcx, %rax
jae 0x11a5c
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq -0x8(%rbp), %rcx
movl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jae 0x11a49
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
imulq -0x20(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
imulq -0x28(%rbp), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x38(%rbp), %rcx
shlq $0x2, %rcx
movb (%rax,%rcx), %al
movb %al, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x38(%rbp), %rcx
shlq $0x2, %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x3b(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x38(%rbp), %rcx
shlq $0x2, %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x3a(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x38(%rbp), %rcx
shlq $0x2, %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x39(%rbp)
movq -0x18(%rbp), %rax
movq -0x30(%rbp), %rcx
movl -0x3c(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x11997
jmp 0x11a4b
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x1197b
jmp 0x11afb
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
movq -0x8(%rbp), %rdx
imull 0xc(%rdx), %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x11af9
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
shlq $0x2, %rcx
movb (%rax,%rcx), %al
movb %al, -0x4c(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
shlq $0x2, %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x4b(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
shlq $0x2, %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x4a(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
shlq $0x2, %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x49(%rbp)
movq -0x18(%rbp), %rax
movq -0x48(%rbp), %rcx
movl -0x4c(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x11a69
jmp 0x11afb
movq -0x18(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)