// File: /workspace/github_cpp_makefile_star2_O2/YerevaNN[P]pmi/test.cpp
// Function: main
int main(int argc, char** argv){
    model m;
    
    

    if(argc == 1) {
        m.train(std::cin);
        m.dump(std::cout);
    }
    else {
        m.load(std::cin);
    }
    
    ngram they_could = hash(m.lookup("they"),
                            m.lookup("could"));
    ngram anywhere = hash(m.lookup("anywhere"));
	
    int they_could_count = m.count(they_could, they_could);
    int anywhere_count = m.count(anywhere, anywhere);
    int they_could__anywhere_count = m.count(they_could, anywhere);
    int they_could__anywhere_count_ = m.count(anywhere, they_could);
    
    std::cerr << they_could_count << " " << anywhere_count << " " << they_could__anywhere_count << " " << they_could__anywhere_count_ << std::endl;
    
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xf0, %rsp
movl %edi, %ebx
leaq 0x48(%rsp), %rdi
callq 0x2834
cmpl $0x1, %ebx
jne 0x23c3
movq 0x7c35(%rip), %rsi      # 0x9fd8
leaq 0x48(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x4410
movq 0x7c09(%rip), %rsi      # 0x9fc0
leaq 0x48(%rsp), %rdi
callq 0x2b54
jmp 0x23d4
movq 0x7c0e(%rip), %rsi      # 0x9fd8
leaq 0x48(%rsp), %rdi
callq 0x2d34
leaq 0x3c29(%rip), %rsi      # 0x6004
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2070
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4310
movq %rax, %rbx
leaq 0x3c06(%rip), %rsi      # 0x6009
leaq 0x28(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x2070
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x4310
movl $0x1fffff, %edx         # imm = 0x1FFFFF
movq %rbx, %rdi
movq %rax, %rsi
callq 0x27e8
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x20a0
leaq 0x8(%rsp), %rdi
callq 0x20a0
leaq 0x3bc0(%rip), %rsi      # 0x600f
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x2070
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4310
movl $0x1fffff, %esi         # imm = 0x1FFFFF
movl $0x1fffff, %edx         # imm = 0x1FFFFF
movq %rax, %rdi
callq 0x27e8
movq %rax, %r15
leaq 0x8(%rsp), %rdi
callq 0x20a0
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x28d0
movl %eax, %r12d
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
movq %r15, %rdx
callq 0x28d0
movl %eax, %r14d
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x28d0
movl %eax, %ebp
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x28d0
movl %eax, %ebx
movq 0x7b13(%rip), %rdi      # 0x9ff0
movl %r12d, %esi
callq 0x2200
leaq 0x3b2c(%rip), %rsi      # 0x6018
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
movl %r14d, %esi
callq 0x2200
leaq 0x3b12(%rip), %rsi      # 0x6018
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
movl %ebp, %esi
callq 0x2200
leaq 0x3af9(%rip), %rsi      # 0x6018
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
movl %ebx, %esi
callq 0x2200
movq %rax, %rdi
callq 0x20b0
leaq 0x48(%rsp), %rdi
callq 0x2598
xorl %eax, %eax
addq $0xf0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2583
jmp 0x2583
jmp 0x2583
jmp 0x2583
jmp 0x2565
jmp 0x2565
jmp 0x2583
jmp 0x2583
movq %rax, %rbx
jmp 0x2577
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x20a0
leaq 0x8(%rsp), %rdi
callq 0x20a0
jmp 0x2586
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x2598
movq %rbx, %rdi
callq 0x2210