// File: /workspace/github_cpp_makefile_star2_O3/bowbowbow[P]CollaborativeFiltering/recommender.cpp
// Function: InputReader::parse()
void parse() {
        int maxUser = 0, maxItem = 0;
        
        int user, item, rating, timeStamp;
        while(!fin.eof()) {
            fin >> user >> item >> rating >> timeStamp;
            
            input.push_back({user, item, rating});
            
            maxUser = max(maxUser, user);
            maxItem = max(maxItem, item);
        }
        input.pop_back();
        
        userToItem = vector<vector<double> > (maxUser+1, vector<double> (maxItem+1, EMPTY));
        for(int i=0;i<input.size();i++) {
            user = input[i].user, item = input[i].item, rating = input[i].rating;
            userToItem[user][item]= rating;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl $0x1, %r14d
testb $0x2, 0x20(%rdi,%rax)
movl $0x1, %r15d
jne 0x2fc1
leaq 0x220(%rbx), %rax
movq %rax, -0x58(%rbp)
xorl %r15d, %r15d
leaq -0x38(%rbp), %r13
leaq -0x5c(%rbp), %r12
xorl %r14d, %r14d
movq %rbx, %rdi
leaq -0x30(%rbp), %rsi
callq 0x20e0
movq %rax, %rdi
leaq -0x2c(%rbp), %rsi
callq 0x20e0
movq %rax, %rdi
movq %r13, %rsi
callq 0x20e0
movq %rax, %rdi
movq %r12, %rsi
callq 0x20e0
movl -0x30(%rbp), %ecx
movl %ecx, -0x50(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x38(%rbp), %edx
movl %edx, -0x48(%rbp)
movq 0x228(%rbx), %rsi
cmpq 0x230(%rbx), %rsi
je 0x2f88
movl -0x48(%rbp), %edx
movl %edx, 0x8(%rsi)
movq -0x50(%rbp), %rdx
movq %rdx, (%rsi)
addq $0xc, 0x228(%rbx)
jmp 0x2f9b
movq -0x58(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x3238
movl -0x30(%rbp), %ecx
movl -0x2c(%rbp), %eax
cmpl %ecx, %r14d
cmovlel %ecx, %r14d
cmpl %eax, %r15d
cmovlel %eax, %r15d
movq (%rbx), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x20(%rbx,%rax)
je 0x2f21
incl %r15d
incl %r14d
addq $-0xc, 0x228(%rbx)
movabsq $-0x4000000000000000, %rax # imm = 0xC000000000000000
leaq -0x68(%rbp), %rdx
movq %rax, (%rdx)
leaq -0x80(%rbp), %r12
leaq -0x32(%rbp), %rcx
movq %r12, %rdi
movq %r15, %rsi
callq 0x3112
leaq -0xa0(%rbp), %rdi
leaq -0x31(%rbp), %rcx
movq %r14, %rsi
movq %r12, %rdx
callq 0x319e
movupd 0x208(%rbx), %xmm0
movq 0x218(%rbx), %rax
leaq -0xa0(%rbp), %r14
movq (%r14), %rcx
movq %rcx, 0x208(%rbx)
movq 0x8(%r14), %rcx
movq %rcx, 0x210(%rbx)
movq 0x10(%r14), %rcx
movq %rcx, 0x218(%rbx)
leaq -0x50(%rbp), %rdi
movupd %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
xorpd %xmm0, %xmm0
movapd %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x2bd8
movq %r14, %rdi
callq 0x2bd8
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x3071
callq 0x2170
movq 0x220(%rbx), %rax
movq 0x228(%rbx), %rdx
subq %rax, %rdx
je 0x30dc
sarq $0x2, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
movq 0x208(%rbx), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
addq $0x8, %rax
movslq -0x8(%rax), %rsi
movl %esi, -0x30(%rbp)
movslq -0x4(%rax), %rdi
movl %edi, -0x2c(%rbp)
movl (%rax), %r8d
movl %r8d, -0x38(%rbp)
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
leaq (%rsi,%rsi,2), %rsi
movq (%rdx,%rsi,8), %rsi
movsd %xmm0, (%rsi,%rdi,8)
addq $0xc, %rax
decq %rcx
jne 0x30a9
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x30fc
callq 0x2170
movq %rbx, %rdi
callq 0x2270