// File: /workspace/github_cpp_makefile_star2_O1/bowbowbow[P]CollaborativeFiltering/recommender.cpp
// Function: CF::buildItemToItemC()
void buildItemToItemC() {
        itemToItem = vector<vector<double> > (itemSize+1, vector<double> (itemSize+1));
        for(int i=1; i<= itemSize; i++) {
            for(int j=1; j <= itemSize; j++) {
                double top = 0, bleft =0, bright = 0;
                
                int cnt = 0;
                for(int k=1; k<= userSize; k++) {
                    if(userToItem[k][i] == EMPTY) continue;
                    if(userToItem[k][j] == EMPTY) continue;
                    
                    cnt++;
                    top += userToItem[k][i]*userToItem[k][j];
                    
                    bleft += userToItem[k][i]*userToItem[k][i];
                    bright += userToItem[k][j]*userToItem[k][j];
                }
                
                if(cnt < 1) {
                    itemToItem[i][j] = 0;
                } else {
                    itemToItem[i][j] = top/(sqrt(bleft)*sqrt(bright));
                }
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %rdi, %rbx
movslq 0x48(%rdi), %r14
incq %r14
leaq -0x50(%rbp), %r15
leaq -0x22(%rbp), %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x3b0e
leaq -0x68(%rbp), %rdi
leaq -0x21(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x31b8
xorps %xmm0, %xmm0
leaq -0x80(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x18(%rbx), %rax
movupd 0x20(%rbx), %xmm0
leaq -0x68(%rbp), %r14
movq (%r14), %rcx
movq %rcx, 0x18(%rbx)
movq 0x8(%r14), %rcx
movq %rcx, 0x20(%rbx)
movq 0x10(%r14), %rcx
movq %rcx, 0x28(%rbx)
movq (%rdi), %rcx
movq 0x8(%rdi), %rdx
movq 0x10(%rdi), %rsi
movq %rax, (%rdi)
movupd %xmm0, 0x8(%rdi)
movq %rcx, (%r14)
movq %rdx, 0x8(%r14)
movq %rsi, 0x10(%r14)
callq 0x2bf0
movq %r14, %rdi
callq 0x2bf0
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0x3986
callq 0x2170
cmpl $0x0, 0x48(%rbx)
jle 0x3ae8
movl $0x1, %r14d
xorpd %xmm5, %xmm5
movsd 0x6a6(%rip), %xmm6      # 0x4048
cmpl $0x0, 0x48(%rbx)
jle 0x3ad4
movl $0x1, %r12d
leaq (%r14,%r14,2), %r15
movl 0x4c(%rbx), %ecx
xorpd %xmm1, %xmm1
testl %ecx, %ecx
jle 0x3a33
movq (%rbx), %rax
leaq (%rcx,%rcx,2), %rcx
leaq 0x18(,%rcx,8), %rcx
xorpd %xmm8, %xmm8
xorl %edx, %edx
movl $0x18, %esi
xorpd %xmm0, %xmm0
xorpd %xmm7, %xmm7
movq (%rax,%rsi), %rdi
movsd (%rdi,%r14,8), %xmm2
ucomisd %xmm6, %xmm2
jne 0x39f6
jnp 0x3a23
movsd (%rdi,%r12,8), %xmm3
ucomisd %xmm6, %xmm3
jne 0x3a04
jnp 0x3a23
incl %edx
movapd %xmm2, %xmm4
mulsd %xmm3, %xmm4
addsd %xmm4, %xmm7
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm0
mulsd %xmm3, %xmm3
addsd %xmm3, %xmm8
addq $0x18, %rsi
cmpq %rsi, %rcx
jne 0x39e4
testl %edx, %edx
setle %al
jmp 0x3a42
movb $0x1, %al
xorpd %xmm7, %xmm7
xorpd %xmm0, %xmm0
xorpd %xmm8, %xmm8
testb %al, %al
jne 0x3ab1
ucomisd %xmm5, %xmm0
movsd %xmm7, -0x38(%rbp)
jb 0x3a5a
xorps %xmm2, %xmm2
sqrtsd %xmm0, %xmm2
jmp 0x3a73
movsd %xmm8, -0x30(%rbp)
callq 0x2120
movsd -0x30(%rbp), %xmm8
xorpd %xmm5, %xmm5
movapd %xmm0, %xmm2
ucomisd %xmm5, %xmm8
jb 0x3a84
xorps %xmm0, %xmm0
sqrtsd %xmm8, %xmm0
jmp 0x3a9c
movapd %xmm8, %xmm0
movsd %xmm2, -0x30(%rbp)
callq 0x2120
movsd -0x30(%rbp), %xmm2
xorpd %xmm5, %xmm5
movsd 0x5a4(%rip), %xmm6      # 0x4048
movsd -0x38(%rbp), %xmm1
mulsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movq 0x18(%rbx), %rax
movq (%rax,%r15,8), %rax
movsd %xmm1, (%rax,%r12,8)
leaq 0x1(%r12), %rax
movslq 0x48(%rbx), %rcx
cmpq %rcx, %r12
movq %rax, %r12
jl 0x39b6
leaq 0x1(%r14), %rax
movslq 0x48(%rbx), %rcx
cmpq %rcx, %r14
movq %rax, %r14
jl 0x39a2
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0x3b06
callq 0x2170
movq %rbx, %rdi
callq 0x2270