// File: /workspace/github_c_makefile_star2_O0/SimpleDoger[P]Darknet_CPU_Only/box.c
// Function: diou
dbox diou(box a, box b)
{
    float u = box_union(a,b);
    float i = box_intersection(a,b);
    dbox di = dintersect(a,b);
    dbox du = dunion(a,b);
    dbox dd = {0,0,0,0};

    if(i <= 0 || 1) {
        dd.dx = b.x - a.x;
        dd.dy = b.y - a.y;
        dd.dw = b.w - a.w;
        dd.dh = b.h - a.h;
        return dd;
    }

    dd.dx = 2*pow((1-(i/u)),1)*(di.dx*u - du.dx*i)/(u*u);
    dd.dy = 2*pow((1-(i/u)),1)*(di.dy*u - du.dy*i)/(u*u);
    dd.dw = 2*pow((1-(i/u)),1)*(di.dw*u - du.dw*i)/(u*u);
    dd.dh = 2*pow((1-(i/u)),1)*(di.dh*u - du.dh*i)/(u*u);
    return dd;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movlpd %xmm0, -0x20(%rbp)
movlpd %xmm1, -0x18(%rbp)
movlpd %xmm2, -0x30(%rbp)
movlpd %xmm3, -0x28(%rbp)
movsd -0x20(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
movsd -0x28(%rbp), %xmm3
callq 0x45440
movss %xmm0, -0x34(%rbp)
movsd -0x20(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
movsd -0x28(%rbp), %xmm3
callq 0x453a0
movss %xmm0, -0x38(%rbp)
movsd -0x20(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
movsd -0x28(%rbp), %xmm3
callq 0x45580
movlpd %xmm0, -0x48(%rbp)
movlpd %xmm1, -0x40(%rbp)
movsd -0x20(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
movsd -0x28(%rbp), %xmm3
callq 0x45660
movlpd %xmm0, -0x58(%rbp)
movlpd %xmm1, -0x50(%rbp)
leaq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x3190
xorps %xmm0, %xmm0
ucomiss -0x38(%rbp), %xmm0
jae 0x45edf
movb $0x1, %al
testb $0x1, %al
jne 0x45edf
jmp 0x45f20
movss -0x30(%rbp), %xmm0
subss -0x20(%rbp), %xmm0
movss %xmm0, -0x10(%rbp)
movss -0x2c(%rbp), %xmm0
subss -0x1c(%rbp), %xmm0
movss %xmm0, -0xc(%rbp)
movss -0x28(%rbp), %xmm0
subss -0x18(%rbp), %xmm0
movss %xmm0, -0x8(%rbp)
movss -0x24(%rbp), %xmm0
subss -0x14(%rbp), %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0x46128
movss -0x38(%rbp), %xmm1
divss -0x34(%rbp), %xmm1
movss 0x2b0da(%rip), %xmm0    # 0x7100c
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x2b11e(%rip), %xmm1    # 0x71060
callq 0x30e0
movaps %xmm0, %xmm1
movsd 0x2b106(%rip), %xmm0    # 0x71058
mulsd %xmm1, %xmm0
movss -0x48(%rbp), %xmm1
movss -0x34(%rbp), %xmm3
movss -0x58(%rbp), %xmm2
mulss -0x38(%rbp), %xmm2
movd %xmm2, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm2
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0x34(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x10(%rbp)
movss -0x38(%rbp), %xmm1
divss -0x34(%rbp), %xmm1
movss 0x2b058(%rip), %xmm0    # 0x7100c
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x2b09c(%rip), %xmm1    # 0x71060
callq 0x30e0
movaps %xmm0, %xmm1
movsd 0x2b084(%rip), %xmm0    # 0x71058
mulsd %xmm1, %xmm0
movss -0x44(%rbp), %xmm1
movss -0x34(%rbp), %xmm3
movss -0x54(%rbp), %xmm2
mulss -0x38(%rbp), %xmm2
movd %xmm2, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm2
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0x34(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xc(%rbp)
movss -0x38(%rbp), %xmm1
divss -0x34(%rbp), %xmm1
movss 0x2afd6(%rip), %xmm0    # 0x7100c
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x2b01a(%rip), %xmm1    # 0x71060
callq 0x30e0
movaps %xmm0, %xmm1
movsd 0x2b002(%rip), %xmm0    # 0x71058
mulsd %xmm1, %xmm0
movss -0x40(%rbp), %xmm1
movss -0x34(%rbp), %xmm3
movss -0x50(%rbp), %xmm2
mulss -0x38(%rbp), %xmm2
movd %xmm2, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm2
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0x34(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x8(%rbp)
movss -0x38(%rbp), %xmm1
divss -0x34(%rbp), %xmm1
movss 0x2af54(%rip), %xmm0    # 0x7100c
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x2af98(%rip), %xmm1    # 0x71060
callq 0x30e0
movaps %xmm0, %xmm1
movsd 0x2af80(%rip), %xmm0    # 0x71058
mulsd %xmm1, %xmm0
movss -0x3c(%rbp), %xmm1
movss -0x34(%rbp), %xmm3
movss -0x4c(%rbp), %xmm2
mulss -0x38(%rbp), %xmm2
movd %xmm2, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm2
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0x34(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
movsd -0x10(%rbp), %xmm0
movsd -0x8(%rbp), %xmm1
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)