// File: /workspace/github_cpp_makefile_star2_O1/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 0x3018
cmpl $0x1, %ebx
jne 0x2ae5
movq 0x6515(%rip), %rsi      # 0x8fd8
leaq 0x48(%rsp), %rdi
movl $0x8, %edx
callq 0x4706
movq 0x64e7(%rip), %rsi      # 0x8fc0
leaq 0x48(%rsp), %rdi
callq 0x2260
jmp 0x2af6
movq 0x64ec(%rip), %rsi      # 0x8fd8
leaq 0x48(%rsp), %rdi
callq 0x24b4
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x34fe(%rip), %rsi      # 0x6004
leaq 0x34fb(%rip), %rdx      # 0x6008
leaq 0x8(%rsp), %rdi
callq 0x2f3a
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x45dc
movq %rax, %rbx
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x34d0(%rip), %rsi      # 0x6009
leaq 0x34ce(%rip), %rdx      # 0x600e
leaq 0x28(%rsp), %rdi
callq 0x2f3a
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x45dc
movl $0x1fffff, %edx         # imm = 0x1FFFFF
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2fcc
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b83
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2130
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2b9a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2130
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x3466(%rip), %rsi      # 0x600f
leaq 0x3467(%rip), %rdx      # 0x6017
callq 0x2f3a
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x45dc
movl $0x1fffff, %esi         # imm = 0x1FFFFF
movl $0x1fffff, %edx         # imm = 0x1FFFFF
movq %rax, %rdi
callq 0x2fcc
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2bf0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2130
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x30ba
movl %eax, %r12d
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x30ba
movl %eax, %r15d
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x30ba
movl %eax, %ebp
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x30ba
movl %eax, %ebx
movq 0x63af(%rip), %rdi      # 0x8ff0
movl %r12d, %esi
callq 0x2210
movq %rax, %r14
leaq 0x33c5(%rip), %rsi      # 0x6018
movl $0x1, %edx
movq %rax, %rdi
callq 0x2150
movq %r14, %rdi
movl %r15d, %esi
callq 0x2210
movq %rax, %r14
leaq 0x33a3(%rip), %rsi      # 0x6018
movl $0x1, %edx
movq %rax, %rdi
callq 0x2150
movq %r14, %rdi
movl %ebp, %esi
callq 0x2210
movq %rax, %r14
leaq 0x3382(%rip), %rsi      # 0x6018
movl $0x1, %edx
movq %rax, %rdi
callq 0x2150
movq %r14, %rdi
movl %ebx, %esi
callq 0x2210
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2110
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20c0
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x2cf4
movq 0xe8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2130
leaq 0xa0(%rsp), %rdi
callq 0x2e2c
leaq 0x88(%rsp), %rdi
callq 0x2dc6
leaq 0x50(%rsp), %rdi
callq 0x2e9c
xorl %eax, %eax
addq $0xf0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2d72
jmp 0x2d72
jmp 0x2d72
jmp 0x2d72
jmp 0x2d3a
jmp 0x2d3a
jmp 0x2d72
jmp 0x2d72
movq %rax, %rbx
jmp 0x2d59
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x2d59
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2130
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2d75
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2130
jmp 0x2d75
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x2d88
movq %rbx, %rdi
callq 0x2220
nop