// File: aalto-speech[P]ftk/src/strscore.cc
// Function: main
int main(int argc, char* argv[]) {

    conf::Config config;
    config("usage: strscore [OPTION...] ARPAFILE INPUT OUTPUT\n")
    ('8', "utf-8", "", "", "Utf-8 character encoding in use")
    ('h', "help", "", "", "display help");
    config.default_parse(argc, argv);
    if (config.arguments.size() != 3) config.print_help(stderr, 1);

    string arpafname = config.arguments[0];
    string infname = config.arguments[1];
    string outfname = config.arguments[2];
    bool utf8_encoding = config["utf-8"].specified;

    Ngram lm;
    lm.read_arpa(arpafname);

    ifstream infile(infname);
    if (!infile) {
        cerr << "Something went wrong opening the input file." << endl;
        exit(1);
    }

    ofstream outfile(outfname);
    if (!outfile) {
        cerr << "Something went wrong opening the output file." << endl;
        exit(1);
    }

    float count;
    string line, lstr;
    vector<pair<string, float> > scores;
    float normalizer = SMALL_LP;
    while (getline(infile, line)) {
        stringstream ss(line);
        ss >> count;
        ss >> lstr;

        float total_prob = 0.0;
        int node_id = lm.root_node;

        vector<unsigned int> char_positions;
        get_character_positions(lstr, char_positions, utf8_encoding);
        for (unsigned int i=0; i<char_positions.size()-1; i++) {
            unsigned int start_pos = char_positions[i];
            unsigned int end_pos = char_positions[i+1];
            int sym = lm.vocabulary_lookup[lstr.substr(start_pos, end_pos-start_pos)];
            node_id = lm.score(node_id, sym, total_prob);
        }

        total_prob *= log(10.0); // Convert from log10 (ARPA default) to ln
        normalizer = add_log_domain_probs(normalizer, total_prob);
        scores.push_back(make_pair(lstr, total_prob));
    }

    for (auto it=scores.begin(); it != scores.end(); ++it)
        outfile << it->second-normalizer << "\t" << it->first << endl;

    infile.close();
    outfile.close();

    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb50, %rsp            # imm = 0xB50
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xb8a0
leaq -0xe9(%rbp), %rdi
movq %rdi, -0xa70(%rbp)
callq 0x4700
movq -0xa70(%rbp), %rdx
leaq 0x620cc(%rip), %rsi     # 0x67012
leaq -0xe8(%rbp), %rdi
callq 0x4560
jmp 0x4f54
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xb910
movq %rax, -0xa78(%rbp)
jmp 0x4f70
leaq -0x121(%rbp), %rdi
movq %rdi, -0xa80(%rbp)
callq 0x4700
movq -0xa80(%rbp), %rdx
leaq 0x620b4(%rip), %rsi     # 0x67045
leaq -0x120(%rbp), %rdi
callq 0x4560
jmp 0x4f9f
leaq -0x149(%rbp), %rdi
movq %rdi, -0xa88(%rbp)
callq 0x4700
movq -0xa88(%rbp), %rdx
leaq 0x62439(%rip), %rsi     # 0x673f9
leaq -0x148(%rbp), %rdi
callq 0x4560
jmp 0x4fce
leaq -0x171(%rbp), %rdi
movq %rdi, -0xa90(%rbp)
callq 0x4700
movq -0xa90(%rbp), %rdx
leaq 0x6240a(%rip), %rsi     # 0x673f9
leaq -0x170(%rbp), %rdi
callq 0x4560
jmp 0x4ffd
leaq -0x199(%rbp), %rdi
movq %rdi, -0xa98(%rbp)
callq 0x4700
movq -0xa98(%rbp), %rdx
leaq 0x6202d(%rip), %rsi     # 0x6704b
leaq -0x198(%rbp), %rdi
callq 0x4560
jmp 0x502c
movq -0xa78(%rbp), %rdi
movl $0x38, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0xb940
movq %rax, -0xaa0(%rbp)
jmp 0x5062
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0xaa8(%rbp)
callq 0x4700
movq -0xaa8(%rbp), %rdx
leaq 0x61ff0(%rip), %rsi     # 0x67073
leaq -0x1c0(%rbp), %rdi
callq 0x4560
jmp 0x5091
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0x4700
movq -0xab0(%rbp), %rdx
leaq 0x62347(%rip), %rsi     # 0x673f9
leaq -0x1e8(%rbp), %rdi
callq 0x4560
jmp 0x50c0
leaq -0x211(%rbp), %rdi
movq %rdi, -0xab8(%rbp)
callq 0x4700
movq -0xab8(%rbp), %rdx
leaq 0x62318(%rip), %rsi     # 0x673f9
leaq -0x210(%rbp), %rdi
callq 0x4560
jmp 0x50ef
leaq -0x239(%rbp), %rdi
movq %rdi, -0xac0(%rbp)
callq 0x4700
movq -0xac0(%rbp), %rdx
leaq 0x61f5b(%rip), %rsi     # 0x6706b
leaq -0x238(%rbp), %rdi
callq 0x4560
jmp 0x511e
movq -0xaa0(%rbp), %rdi
movl $0x68, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0xb940
jmp 0x514d
leaq -0x238(%rbp), %rdi
callq 0x4828
leaq -0x239(%rbp), %rdi
callq 0x4430
leaq -0x210(%rbp), %rdi
callq 0x4828
leaq -0x211(%rbp), %rdi
callq 0x4430
leaq -0x1e8(%rbp), %rdi
callq 0x4828
leaq -0x1e9(%rbp), %rdi
callq 0x4430
leaq -0x1c0(%rbp), %rdi
callq 0x4828
leaq -0x1c1(%rbp), %rdi
callq 0x4430
leaq -0x198(%rbp), %rdi
callq 0x4828
leaq -0x199(%rbp), %rdi
callq 0x4430
leaq -0x170(%rbp), %rdi
callq 0x4828
leaq -0x171(%rbp), %rdi
callq 0x4430
leaq -0x148(%rbp), %rdi
callq 0x4828
leaq -0x149(%rbp), %rdi
callq 0x4430
leaq -0x120(%rbp), %rdi
callq 0x4828
leaq -0x121(%rbp), %rdi
callq 0x4430
leaq -0xe8(%rbp), %rdi
callq 0x4828
leaq -0xe9(%rbp), %rdi
callq 0x4430
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0xc790
jmp 0x523a
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x5f50
cmpq $0x3, %rax
je 0x5473
movq 0x90d62(%rip), %rax     # 0x95fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0xcf50
jmp 0x5274
jmp 0x5473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x544b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x543f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5433
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x541b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5403
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x53eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x53df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x53d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x53bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x53a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x538b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x4828
leaq -0x239(%rbp), %rdi
callq 0x4430
leaq -0x210(%rbp), %rdi
callq 0x4828
leaq -0x211(%rbp), %rdi
callq 0x4430
leaq -0x1e8(%rbp), %rdi
callq 0x4828
leaq -0x1e9(%rbp), %rdi
callq 0x4430
leaq -0x1c0(%rbp), %rdi
callq 0x4828
leaq -0x1c1(%rbp), %rdi
callq 0x4430
leaq -0x198(%rbp), %rdi
callq 0x4828
leaq -0x199(%rbp), %rdi
callq 0x4430
leaq -0x170(%rbp), %rdi
callq 0x4828
leaq -0x171(%rbp), %rdi
callq 0x4430
leaq -0x148(%rbp), %rdi
callq 0x4828
leaq -0x149(%rbp), %rdi
callq 0x4430
leaq -0x120(%rbp), %rdi
callq 0x4828
leaq -0x121(%rbp), %rdi
callq 0x4430
leaq -0xe8(%rbp), %rdi
callq 0x4828
leaq -0xe9(%rbp), %rdi
callq 0x4430
jmp 0x5cb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5cb5
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5f70
movq %rax, %rsi
leaq -0x260(%rbp), %rdi
callq 0x41b0
jmp 0x5491
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x5f70
movq %rax, %rsi
leaq -0x280(%rbp), %rdi
callq 0x41b0
jmp 0x54b0
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x5f70
movq %rax, %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x41b0
jmp 0x54cf
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x4700
movq -0xac8(%rbp), %rdx
leaq 0x61b55(%rip), %rsi     # 0x67045
leaq -0x2c8(%rbp), %rdi
callq 0x4560
jmp 0x54fe
leaq -0xc8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0xc8d0
movq %rax, -0xad0(%rbp)
jmp 0x551a
movq -0xad0(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xad1(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x4828
leaq -0x2c9(%rbp), %rdi
callq 0x4430
movb -0xad1(%rbp), %al
andb $0x1, %al
movb %al, -0x2a1(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x5f90
jmp 0x555e
leaq -0x3e8(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x41b0
jmp 0x5573
leaq -0x3c8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x14440
jmp 0x5588
leaq -0x3e8(%rbp), %rdi
callq 0x4828
leaq -0x5f0(%rbp), %rdi
leaq -0x280(%rbp), %rsi
movl $0x8, %edx
callq 0x4650
jmp 0x55ae
movq -0x5f0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x5f0(%rbp,%rax), %rdi
callq 0x41e0
movb %al, -0xad2(%rbp)
jmp 0x55ce
movb -0xad2(%rbp), %al
testb $0x1, %al
jne 0x55dd
jmp 0x56f1
movq 0x90a04(%rip), %rdi     # 0x95fe8
leaq 0x61a8d(%rip), %rsi     # 0x67078
callq 0x43d0
movq %rax, -0xae0(%rbp)
jmp 0x55f9
movq -0xae0(%rbp), %rdi
movq 0x90991(%rip), %rsi     # 0x95f98
callq 0x4410
jmp 0x560e
movl $0x1, %edi
callq 0x4480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5ca9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5c9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5678
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x4828
leaq -0x2c9(%rbp), %rdi
callq 0x4430
jmp 0x5c91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5c91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5c85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x4828
jmp 0x5c85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5c79
leaq -0x7f0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
movl $0x10, %edx
callq 0x47b0
jmp 0x570b
movq -0x7f0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x7f0(%rbp,%rax), %rdi
callq 0x41e0
movb %al, -0xae1(%rbp)
jmp 0x572b
movb -0xae1(%rbp), %al
testb $0x1, %al
jne 0x5737
jmp 0x5789
movq 0x908aa(%rip), %rdi     # 0x95fe8
leaq 0x61960(%rip), %rsi     # 0x670a5
callq 0x43d0
movq %rax, -0xaf0(%rbp)
jmp 0x5753
movq -0xaf0(%rbp), %rdi
movq 0x90837(%rip), %rsi     # 0x95f98
callq 0x4410
jmp 0x5768
movl $0x1, %edi
callq 0x4480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5c6d
leaq -0x818(%rbp), %rdi
callq 0x4570
leaq -0x838(%rbp), %rdi
callq 0x4570
leaq -0x850(%rbp), %rdi
callq 0x60b0
movss 0x6184f(%rip), %xmm0    # 0x67004
movss %xmm0, -0x854(%rbp)
leaq -0x5f0(%rbp), %rdi
leaq -0x818(%rbp), %rsi
callq 0x40b0
movq %rax, -0xaf8(%rbp)
jmp 0x57d9
movq -0xaf8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x44b0
movb %al, -0xaf9(%rbp)
jmp 0x57f7
movb -0xaf9(%rbp), %al
testb $0x1, %al
jne 0x5806
jmp 0x5b4a
movl $0x10, %edi
movl $0x8, %esi
callq 0x60d0
movl %eax, -0xb00(%rbp)
jmp 0x581d
movl -0xb00(%rbp), %edx
leaq -0x9e0(%rbp), %rdi
leaq -0x818(%rbp), %rsi
callq 0x4640
jmp 0x5838
leaq -0x9e0(%rbp), %rdi
leaq -0x7f4(%rbp), %rsi
callq 0x40c0
jmp 0x584d
leaq -0x9e0(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x44c0
jmp 0x5862
movl $0x0, -0x9e4(%rbp)
movl -0x3c8(%rbp), %eax
movl %eax, -0x9e8(%rbp)
leaq -0xa00(%rbp), %rdi
movq %rdi, -0xb08(%rbp)
callq 0x60f0
movq -0xb08(%rbp), %rsi
movzbl -0x2a1(%rbp), %edx
andl $0x1, %edx
leaq -0x838(%rbp), %rdi
callq 0x5cd0
jmp 0x58aa
movl $0x0, -0xa04(%rbp)
movl -0xa04(%rbp), %eax
movq %rax, -0xb10(%rbp)
leaq -0xa00(%rbp), %rdi
callq 0x6110
movq %rax, %rcx
movq -0xb10(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x5a4e
movl -0xa04(%rbp), %eax
movl %eax, %esi
leaq -0xa00(%rbp), %rdi
movq %rdi, -0xb20(%rbp)
callq 0x6130
movq -0xb20(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0xa08(%rbp)
movl -0xa04(%rbp), %eax
incl %eax
movl %eax, %esi
callq 0x6130
movl (%rax), %eax
movl %eax, -0xa0c(%rbp)
leaq -0x380(%rbp), %rax
movq %rax, -0xb18(%rbp)
movl -0xa08(%rbp), %eax
movl %eax, %edx
movl %edx, %ecx
movl -0xa0c(%rbp), %eax
subl %ecx, %eax
movl %eax, %ecx
leaq -0xa30(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x43f0
jmp 0x595c
movq -0xb18(%rbp), %rdi
leaq -0xa30(%rbp), %rsi
callq 0x6150
movq %rax, -0xb28(%rbp)
jmp 0x5978
movq -0xb28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xb30(%rbp)
leaq -0xa30(%rbp), %rdi
callq 0x4828
movl -0xb30(%rbp), %eax
movl %eax, -0xa10(%rbp)
movl -0x9e8(%rbp), %esi
movl -0xa10(%rbp), %edx
leaq -0x3c8(%rbp), %rdi
leaq -0x9e4(%rbp), %rcx
callq 0x14240
movl %eax, -0xb2c(%rbp)
jmp 0x59c6
movl -0xb2c(%rbp), %eax
movl %eax, -0x9e8(%rbp)
movl -0xa04(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa04(%rbp)
jmp 0x58b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5c49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5b39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5b2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa30(%rbp), %rdi
callq 0x4828
jmp 0x5b2d
movsd 0x615b2(%rip), %xmm0    # 0x67008
callq 0x4350
movaps %xmm0, %xmm1
movss -0x9e4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x9e4(%rbp)
movss -0x854(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x9e4(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x5d50
movsd %xmm0, -0xb38(%rbp)
jmp 0x5aa1
movsd -0xb38(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x854(%rbp)
leaq -0xa58(%rbp), %rdi
leaq -0x838(%rbp), %rsi
leaq -0x9e4(%rbp), %rdx
callq 0x6260
jmp 0x5ad1
leaq -0x850(%rbp), %rdi
leaq -0xa58(%rbp), %rsi
callq 0x6230
jmp 0x5ae6
leaq -0xa58(%rbp), %rdi
callq 0x62a0
leaq -0xa00(%rbp), %rdi
callq 0x62c0
leaq -0x9e0(%rbp), %rdi
callq 0x4320
jmp 0x57bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa58(%rbp), %rdi
callq 0x62a0
leaq -0xa00(%rbp), %rdi
callq 0x62c0
leaq -0x9e0(%rbp), %rdi
callq 0x4320
jmp 0x5c49
leaq -0x850(%rbp), %rdi
callq 0x6320
movq %rax, -0xa60(%rbp)
leaq -0x850(%rbp), %rdi
callq 0x6390
movq %rax, -0xa68(%rbp)
leaq -0xa60(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0x6350
testb $0x1, %al
jne 0x5b8c
jmp 0x5c26
leaq -0xa60(%rbp), %rdi
callq 0x63c0
movss 0x20(%rax), %xmm0
movss -0x854(%rbp), %xmm1
subss %xmm1, %xmm0
leaq -0x7f0(%rbp), %rdi
callq 0x4310
movq %rax, -0xb40(%rbp)
jmp 0x5bbe
movq -0xb40(%rbp), %rdi
leaq 0x6182c(%rip), %rsi     # 0x673f8
callq 0x43d0
movq %rax, -0xb48(%rbp)
jmp 0x5bda
leaq -0xa60(%rbp), %rdi
callq 0x63c0
movq -0xb48(%rbp), %rdi
movq %rax, %rsi
callq 0x4390
movq %rax, -0xb50(%rbp)
jmp 0x5bfe
movq -0xb50(%rbp), %rdi
movq 0x9038c(%rip), %rsi     # 0x95f98
callq 0x4410
jmp 0x5c13
jmp 0x5c15
leaq -0xa60(%rbp), %rdi
callq 0x63e0
jmp 0x5b5d
leaq -0x5f0(%rbp), %rdi
callq 0x40d0
jmp 0x5c34
leaq -0x7f0(%rbp), %rdi
callq 0x4580
jmp 0x5c42
xorl %edi, %edi
callq 0x4480
leaq -0x850(%rbp), %rdi
callq 0x6400
leaq -0x838(%rbp), %rdi
callq 0x4828
leaq -0x818(%rbp), %rdi
callq 0x4828
leaq -0x7f0(%rbp), %rdi
callq 0x45d0
leaq -0x5f0(%rbp), %rdi
callq 0x4110
leaq -0x3c8(%rbp), %rdi
callq 0x6460
leaq -0x2a0(%rbp), %rdi
callq 0x4828
leaq -0x280(%rbp), %rdi
callq 0x4828
leaq -0x260(%rbp), %rdi
callq 0x4828
leaq -0xc8(%rbp), %rdi
callq 0x64e0
movq -0xf8(%rbp), %rdi
callq 0x46f0
nopl (%rax)