// File: /workspace/github_cpp_makefile_star2_O1/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 0x2fc7
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), %eax
movl %eax, -0x50(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x48(%rbp)
movq 0x228(%rbx), %rsi
cmpq 0x230(%rbx), %rsi
je 0x2f8e
movl -0x48(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x50(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x228(%rbx)
jmp 0x2f9b
movq -0x58(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x3252
movl -0x30(%rbp), %eax
cmpl %eax, %r14d
cmovlel %eax, %r14d
movl -0x2c(%rbp), %eax
cmpl %eax, %r15d
cmovlel %eax, %r15d
movq (%rbx), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x20(%rbx,%rax)
je 0x2f27
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 0x312c
leaq -0x98(%rbp), %rdi
leaq -0x31(%rbp), %rcx
movq %r14, %rsi
movq %r12, %rdx
callq 0x31b8
xorps %xmm0, %xmm0
leaq -0x50(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x208(%rbx), %rax
movupd 0x210(%rbx), %xmm0
leaq -0x98(%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)
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 -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x308a
callq 0x2170
movq 0x220(%rbx), %rax
movq 0x228(%rbx), %rdx
subq %rax, %rdx
je 0x30f5
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 0x30c2
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 0x3115
callq 0x2170
movq %rbx, %rdi
callq 0x2270