// File: /workspace/github_c_makefile_star2_O0/algorithm-archivists[P]GathVL/src/objects/../../include/stb_image_resize.h
// Function: stbir__resample_horizontal_upsample(stbir__info*, float*)
static void stbir__resample_horizontal_upsample(stbir__info* stbir_info, float* output_buffer)
{
    int x, k;
    int output_w = stbir_info->output_w;
    int channels = stbir_info->channels;
    float* decode_buffer = stbir__get_decode_buffer(stbir_info);
    stbir__contributors* horizontal_contributors = stbir_info->horizontal_contributors;
    float* horizontal_coefficients = stbir_info->horizontal_coefficients;
    int coefficient_width = stbir_info->horizontal_coefficient_width;

    for (x = 0; x < output_w; x++)
    {
        int n0 = horizontal_contributors[x].n0;
        int n1 = horizontal_contributors[x].n1;

        int out_pixel_index = x * channels;
        int coefficient_group = coefficient_width * x;
        int coefficient_counter = 0;

        STBIR_ASSERT(n1 >= n0);
        STBIR_ASSERT(n0 >= -stbir_info->horizontal_filter_pixel_margin);
        STBIR_ASSERT(n1 >= -stbir_info->horizontal_filter_pixel_margin);
        STBIR_ASSERT(n0 < stbir_info->input_w + stbir_info->horizontal_filter_pixel_margin);
        STBIR_ASSERT(n1 < stbir_info->input_w + stbir_info->horizontal_filter_pixel_margin);

        switch (channels) {
            case 1:
                for (k = n0; k <= n1; k++)
                {
                    int in_pixel_index = k * 1;
                    float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++];
                    STBIR_ASSERT(coefficient != 0);
                    output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient;
                }
                break;
            case 2:
                for (k = n0; k <= n1; k++)
                {
                    int in_pixel_index = k * 2;
                    float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++];
                    STBIR_ASSERT(coefficient != 0);
                    output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient;
                    output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient;
                }
                break;
            case 3:
                for (k = n0; k <= n1; k++)
                {
                    int in_pixel_index = k * 3;
                    float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++];
                    STBIR_ASSERT(coefficient != 0);
                    output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient;
                    output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient;
                    output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient;
                }
                break;
            case 4:
                for (k = n0; k <= n1; k++)
                {
                    int in_pixel_index = k * 4;
                    float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++];
                    STBIR_ASSERT(coefficient != 0);
                    output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient;
                    output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient;
                    output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient;
                    output_buffer[out_pixel_index + 3] += decode_buffer[in_pixel_index + 3] * coefficient;
                }
                break;
            default:
                for (k = n0; k <= n1; k++)
                {
                    int in_pixel_index = k * channels;
                    float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++];
                    int c;
                    STBIR_ASSERT(coefficient != 0);
                    for (c = 0; c < channels; c++)
                        output_buffer[out_pixel_index + c] += decode_buffer[in_pixel_index + c] * coefficient;
                }
                break;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl 0x4c(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x34810
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movl 0xa8(%rax), %eax
movl %eax, -0x3c(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x33e73
movq -0x30(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl (%rax,%rcx,8), %eax
movl %eax, -0x40(%rbp)
movq -0x30(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl 0x4(%rax,%rcx,8), %eax
movl %eax, -0x44(%rbp)
movl -0x14(%rbp), %eax
imull -0x20(%rbp), %eax
movl %eax, -0x48(%rbp)
movl -0x3c(%rbp), %eax
imull -0x14(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x40(%rbp), %eax
jl 0x3384e
jmp 0x3386d
leaq 0x9967(%rip), %rdi      # 0x3d1bc
leaq 0x90bd(%rip), %rsi      # 0x3c919
movl $0x5b2, %edx            # imm = 0x5B2
leaq 0x995d(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movl -0x40(%rbp), %eax
movq -0x8(%rbp), %rdx
xorl %ecx, %ecx
subl 0xb8(%rdx), %ecx
cmpl %ecx, %eax
jl 0x33882
jmp 0x338a1
leaq 0x997d(%rip), %rdi      # 0x3d206
leaq 0x9089(%rip), %rsi      # 0x3c919
movl $0x5b3, %edx            # imm = 0x5B3
leaq 0x9929(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movl -0x44(%rbp), %eax
movq -0x8(%rbp), %rdx
xorl %ecx, %ecx
subl 0xb8(%rdx), %ecx
cmpl %ecx, %eax
jl 0x338b6
jmp 0x338d5
leaq 0x997b(%rip), %rdi      # 0x3d238
leaq 0x9055(%rip), %rsi      # 0x3c919
movl $0x5b4, %edx            # imm = 0x5B4
leaq 0x98f5(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movl -0x40(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
movq -0x8(%rbp), %rdx
addl 0xb8(%rdx), %ecx
cmpl %ecx, %eax
jge 0x338ef
jmp 0x3390e
leaq 0x9974(%rip), %rdi      # 0x3d26a
leaq 0x901c(%rip), %rsi      # 0x3c919
movl $0x5b5, %edx            # imm = 0x5B5
leaq 0x98bc(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movl -0x44(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
movq -0x8(%rbp), %rdx
addl 0xb8(%rdx), %ecx
cmpl %ecx, %eax
jge 0x33928
jmp 0x33947
leaq 0x9981(%rip), %rdi      # 0x3d2b0
leaq 0x8fe3(%rip), %rsi      # 0x3c919
movl $0x5b6, %edx            # imm = 0x5B6
leaq 0x9883(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movl -0x20(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x88(%rbp)
subl $0x3, %eax
ja 0x33d92
movq -0x88(%rbp), %rax
leaq 0x7cac(%rip), %rcx      # 0x3b618
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x40(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x44(%rbp), %eax
jg 0x33a27
movl -0x18(%rbp), %eax
shll $0x0, %eax
movl %eax, -0x54(%rbp)
movq -0x38(%rbp), %rax
movl -0x4c(%rbp), %ecx
movl -0x50(%rbp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, -0x50(%rbp)
addl %edx, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x58(%rbp)
movss -0x58(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x339c2
jp 0x339c2
jmp 0x339c4
jmp 0x339e3
leaq 0x992b(%rip), %rdi      # 0x3d2f6
leaq 0x8f47(%rip), %rsi      # 0x3c919
movl $0x5be, %edx            # imm = 0x5BE
leaq 0x97e7(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movq -0x28(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x58(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x3397b
jmp 0x33e63
movl -0x40(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x44(%rbp), %eax
jg 0x33b13
movl -0x18(%rbp), %eax
shll %eax
movl %eax, -0x5c(%rbp)
movq -0x38(%rbp), %rax
movl -0x4c(%rbp), %ecx
movl -0x50(%rbp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, -0x50(%rbp)
addl %edx, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x60(%rbp)
movss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33a78
jp 0x33a78
jmp 0x33a7a
jmp 0x33a99
leaq 0x9875(%rip), %rdi      # 0x3d2f6
leaq 0x8e91(%rip), %rsi      # 0x3c919
movl $0x5c7, %edx            # imm = 0x5C7
leaq 0x9731(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movq -0x28(%rbp), %rax
movl -0x5c(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x60(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
movl -0x5c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x60(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x33a32
jmp 0x33e63
movl -0x40(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x44(%rbp), %eax
jg 0x33c34
imull $0x3, -0x18(%rbp), %eax
movl %eax, -0x64(%rbp)
movq -0x38(%rbp), %rax
movl -0x4c(%rbp), %ecx
movl -0x50(%rbp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, -0x50(%rbp)
addl %edx, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x68(%rbp)
movss -0x68(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33b63
jp 0x33b63
jmp 0x33b65
jmp 0x33b84
leaq 0x978a(%rip), %rdi      # 0x3d2f6
leaq 0x8da6(%rip), %rsi      # 0x3c919
movl $0x5d1, %edx            # imm = 0x5D1
leaq 0x9646(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movq -0x28(%rbp), %rax
movl -0x64(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x68(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
movl -0x64(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x68(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
movl -0x64(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x68(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x33b1e
jmp 0x33e63
movl -0x40(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x44(%rbp), %eax
jg 0x33d8d
movl -0x18(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x6c(%rbp)
movq -0x38(%rbp), %rax
movl -0x4c(%rbp), %ecx
movl -0x50(%rbp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, -0x50(%rbp)
addl %edx, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x70(%rbp)
movss -0x70(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c86
jp 0x33c86
jmp 0x33c88
jmp 0x33ca7
leaq 0x9667(%rip), %rdi      # 0x3d2f6
leaq 0x8c83(%rip), %rsi      # 0x3c919
movl $0x5dc, %edx            # imm = 0x5DC
leaq 0x9523(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movq -0x28(%rbp), %rax
movl -0x6c(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x70(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
movl -0x6c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x70(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
movl -0x6c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x70(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movq -0x28(%rbp), %rax
movl -0x6c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x70(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x33c3f
jmp 0x33e63
movl -0x40(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x44(%rbp), %eax
jg 0x33e61
movl -0x18(%rbp), %eax
imull -0x20(%rbp), %eax
movl %eax, -0x74(%rbp)
movq -0x38(%rbp), %rax
movl -0x4c(%rbp), %ecx
movl -0x50(%rbp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, -0x50(%rbp)
addl %edx, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x78(%rbp)
movss -0x78(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33de0
jp 0x33de0
jmp 0x33de2
jmp 0x33e01
leaq 0x950d(%rip), %rdi      # 0x3d2f6
leaq 0x8b29(%rip), %rsi      # 0x3c919
movl $0x5e9, %edx            # imm = 0x5E9
leaq 0x93c9(%rip), %rcx      # 0x3d1c5
callq 0x50f0
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x33e51
movq -0x28(%rbp), %rax
movl -0x74(%rbp), %ecx
addl -0x7c(%rbp), %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss -0x78(%rbp), %xmm2
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
addl -0x7c(%rbp), %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x33e08
jmp 0x33e53
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x33d98
jmp 0x33e63
jmp 0x33e65
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x33800
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax)