// File: /workspace/github_c_makefile_star2_O0/SimpleDoger[P]Darknet_CPU_Only/image.c
// Function: resize_image
image resize_image(image im, int w, int h)
{
    image resized = make_image(w, h, im.c);   
    image part = make_image(w, im.h, im.c);
    int r, c, k;
    float w_scale = (float)(im.w - 1) / (w - 1);
    float h_scale = (float)(im.h - 1) / (h - 1);
    for(k = 0; k < im.c; ++k){
        for(r = 0; r < im.h; ++r){
            for(c = 0; c < w; ++c){
                float val = 0;
                if(c == w-1 || im.w == 1){
                    val = get_pixel(im, im.w-1, r, k);
                } else {
                    float sx = c*w_scale;
                    int ix = (int) sx;
                    float dx = sx - ix;
                    val = (1 - dx) * get_pixel(im, ix, r, k) + dx * get_pixel(im, ix+1, r, k);
                }
                set_pixel(part, c, r, k, val);
            }
        }
    }
    for(k = 0; k < im.c; ++k){
        for(r = 0; r < h; ++r){
            float sy = r*h_scale;
            int iy = (int) sy;
            float dy = sy - iy;
            for(c = 0; c < w; ++c){
                float val = (1-dy) * get_pixel(part, c, iy, k);
                set_pixel(resized, c, r, k, val);
            }
            if(r == h-1 || im.h == 1) continue;
            for(c = 0; c < w; ++c){
                float val = dy * get_pixel(part, c, iy+1, k);
                add_pixel(resized, c, r, k, val);
            }
        }
    }

    free_image(part);
    return resized;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x70(%rbp)
movq %rdi, %rax
movq %rax, -0x68(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movl %esi, -0x4(%rbp)
movl %edx, -0x8(%rbp)
movl -0x4(%rbp), %esi
movl -0x8(%rbp), %edx
movl 0x8(%rax), %ecx
callq 0xe3e0
movq -0x60(%rbp), %rax
movl -0x4(%rbp), %esi
movl 0x4(%rax), %edx
movl 0x8(%rax), %ecx
leaq -0x20(%rbp), %rdi
callq 0xe3e0
movq -0x60(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
cvtsi2ss %ecx, %xmm0
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cvtsi2ss %ecx, %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
movl 0x4(%rax), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm0
movl -0x8(%rbp), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x60(%rbp), %rcx
movl -0x2c(%rbp), %eax
cmpl 0x8(%rcx), %eax
jge 0xfe40
movl $0x0, -0x24(%rbp)
movq -0x60(%rbp), %rcx
movl -0x24(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xfe30
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0xfe20
xorps %xmm0, %xmm0
movss %xmm0, -0x38(%rbp)
movl -0x28(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0xfce4
movq -0x60(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xfd1b
movq -0x60(%rbp), %rax
movl (%rax), %edi
subl $0x1, %edi
movl -0x24(%rbp), %esi
movl -0x2c(%rbp), %edx
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe580
movss %xmm0, -0x38(%rbp)
jmp 0xfde2
movq -0x60(%rbp), %rax
cvtsi2ssl -0x28(%rbp), %xmm0
mulss -0x30(%rbp), %xmm0
movss %xmm0, -0x3c(%rbp)
cvttss2si -0x3c(%rbp), %ecx
movl %ecx, -0x40(%rbp)
movss -0x3c(%rbp), %xmm0
cvtsi2ssl -0x40(%rbp), %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x44(%rbp)
movss 0x612bb(%rip), %xmm0    # 0x7100c
subss -0x44(%rbp), %xmm0
movss %xmm0, -0x74(%rbp)
movl -0x40(%rbp), %edi
movl -0x24(%rbp), %esi
movl -0x2c(%rbp), %edx
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe580
movq -0x60(%rbp), %rax
movss %xmm0, -0x78(%rbp)
movss -0x44(%rbp), %xmm0
movss %xmm0, -0x7c(%rbp)
movl -0x40(%rbp), %edi
addl $0x1, %edi
movl -0x24(%rbp), %esi
movl -0x2c(%rbp), %edx
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe580
movss -0x7c(%rbp), %xmm1
movss -0x78(%rbp), %xmm2
movaps %xmm0, %xmm3
movss -0x74(%rbp), %xmm0
mulss %xmm3, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x38(%rbp)
movl -0x28(%rbp), %edi
movl -0x24(%rbp), %esi
movl -0x2c(%rbp), %edx
movss -0x38(%rbp), %xmm0
leaq -0x20(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe6b0
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xfcba
jmp 0xfe22
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xfca3
jmp 0xfe32
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xfc8c
movl $0x0, -0x2c(%rbp)
movq -0x60(%rbp), %rcx
movl -0x2c(%rbp), %eax
cmpl 0x8(%rcx), %eax
jge 0x1000f
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0xffff
cvtsi2ssl -0x24(%rbp), %xmm0
mulss -0x34(%rbp), %xmm0
movss %xmm0, -0x48(%rbp)
cvttss2si -0x48(%rbp), %eax
movl %eax, -0x4c(%rbp)
movss -0x48(%rbp), %xmm0
cvtsi2ssl -0x4c(%rbp), %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x50(%rbp)
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0xff33
movss 0x6115d(%rip), %xmm0    # 0x7100c
subss -0x50(%rbp), %xmm0
movss %xmm0, -0x80(%rbp)
movl -0x28(%rbp), %edi
movl -0x4c(%rbp), %esi
movl -0x2c(%rbp), %edx
leaq -0x20(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe580
movq -0x70(%rbp), %rax
movaps %xmm0, %xmm1
movss -0x80(%rbp), %xmm0
mulss %xmm1, %xmm0
movss %xmm0, -0x54(%rbp)
movl -0x28(%rbp), %edi
movl -0x24(%rbp), %esi
movl -0x2c(%rbp), %edx
movss -0x54(%rbp), %xmm0
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe6b0
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xfe9b
movl -0x24(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0xff4a
movq -0x60(%rbp), %rax
cmpl $0x1, 0x4(%rax)
jne 0xff4f
jmp 0xfff1
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0xffef
movss -0x50(%rbp), %xmm0
movss %xmm0, -0x84(%rbp)
movl -0x28(%rbp), %edi
movl -0x4c(%rbp), %esi
addl $0x1, %esi
movl -0x2c(%rbp), %edx
leaq -0x20(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe580
movq -0x70(%rbp), %rax
movaps %xmm0, %xmm1
movss -0x84(%rbp), %xmm0
mulss %xmm1, %xmm0
movss %xmm0, -0x58(%rbp)
movl -0x28(%rbp), %edi
movl -0x24(%rbp), %esi
movl -0x2c(%rbp), %edx
movss -0x58(%rbp), %xmm0
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x14c20
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xff56
jmp 0xfff1
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xfe5e
jmp 0x10001
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xfe47
leaq -0x20(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xedb0
movq -0x68(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
nop