// File: tonymugen[P]sampleSNPs/varfiles.cpp
// Function: sampFiles::GtxtFileI::sample(unsigned long const&, bool const&, char const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
void GtxtFileI::sample(const uint64_t &n, const bool &headSkip, const char &delim, vector<string> &out){
    if (n == 0) {
        cerr << "WARNING: zero rows requested. Nothing to be done." << endl;
        return;
    }
    if (out.size()) {
        out.resize(0);
    }

    uint64_t N = _numLines(); // Number of rows

    try {
        _varFile.open(_fileName.c_str(), ios::in);
		if (!_varFile.is_open()) {
			cerr << "ERROR: failed to open file " << _fileName << " for input" << endl;
			exit(2);
		}

    } catch (system_error &error) {
        cerr << "ERROR: cannot open text file " << _fileName << " for input: " << error.code().message() << flush;
        perror(" ");
        exit(1);
    }

    // Test for potential problems
    if (N < n) {
        cerr << "ERROR: requested a sample of " << n << " rows that is greater than the number of rows (" << N << ") in the input file." << endl;
        return;
    } else if (N == n) {
        cerr << "WARNING: sample size (" << n << ") the same as the number of rows (" << N << ") in the input file. Simply copying the file." << endl;
        string curLine;
        if (_head) {
            if (headSkip) {
                _varFile.ignore(numeric_limits<streamsize>::max(), '\n');
            } else {
                getline(_varFile, curLine);
                string field;
                stringstream lineSS(curLine);
                while (lineSS) {
                    getline(lineSS, field, delim);
                    out.push_back(field);

                }
            }
        }

        // Copy the file
        string field;
        while (_varFile) {
            getline(_varFile, curLine);
            stringstream lineSS(curLine);
            while (lineSS) {
                getline(lineSS, field, delim);
                out.push_back(field);
            }
        }
        _varFile.close();
        return;
    }

    // Passed all the tests, proceed to sampling
    string curLine;
    string field;
    if (_head) {
        if (headSkip) {
            _varFile.ignore(numeric_limits<streamsize>::max(), '\n');
        } else {
            getline(_varFile, curLine);
            stringstream lineSS(curLine);
            while (lineSS) {
                getline(lineSS, field, delim);
                out.push_back(field);

            }
        }
    }

    uint64_t nloc = n; // local copy of n
    uint64_t S;
    RanDraw *snpSamp;  // so that I can catch RanDraw constructor exceptions
    try {
        snpSamp = new RanDraw();
    } catch (string error) {
        cerr << "ERROR: " << error << endl;
        exit(5);
    }
    while (nloc) {
        try {
            S = snpSamp->vitter(nloc, N); // sample the number of SNPs to skip
        } catch (string error) {
            cerr << "ERROR: " << error << endl;
            exit(5);
        }
        N -= S + 1;
        while (S) { // skipping S lines in the HMP file
            _varFile.ignore(numeric_limits<streamsize>::max(), '\n');
            S--;
        }
        getline(_varFile, curLine);
        stringstream lineSS(curLine);
        while (lineSS) {
            getline(lineSS, field, delim);
            out.push_back(field);

        }
        nloc--;

    }
    _varFile.close();
    delete snpSamp;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x860, %rsp            # imm = 0x860
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x798(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x17feb
movq 0x14025(%rip), %rdi     # 0x2bff0
leaq 0xbc23(%rip), %rsi      # 0x23bf5
callq 0x4310
movq %rax, %rdi
movq 0x13fcf(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x18b3c
movq -0x28(%rbp), %rdi
callq 0x1f500
cmpq $0x0, %rax
je 0x18007
movq -0x28(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1f520
movq -0x798(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x798(%rbp), %rdi
movq %rax, -0x30(%rbp)
movq %rdi, %rax
addq $0x8, %rax
movq %rax, -0x7a0(%rbp)
addq $0x218, %rdi            # imm = 0x218
callq 0x4140
movq -0x7a0(%rbp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0x42f0
jmp 0x18052
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
callq 0x45e0
movb %al, -0x7a1(%rbp)
jmp 0x1806a
movb -0x7a1(%rbp), %al
testb $0x1, %al
jne 0x181de
jmp 0x1807a
movq 0x13f6f(%rip), %rdi     # 0x2bff0
leaq 0xb4b0(%rip), %rsi      # 0x23538
callq 0x4310
movq %rax, -0x7b0(%rbp)
jmp 0x18096
movq -0x7b0(%rbp), %rdi
movq -0x798(%rbp), %rsi
addq $0x218, %rsi            # imm = 0x218
callq 0x42e0
movq %rax, -0x7b8(%rbp)
jmp 0x180b9
movq -0x7b8(%rbp), %rdi
leaq 0xb48d(%rip), %rsi      # 0x23554
callq 0x4310
movq %rax, -0x7c0(%rbp)
jmp 0x180d5
movq -0x7c0(%rbp), %rdi
movq 0x13ecd(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x180ea
movl $0x2, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x18b5d
movq -0x38(%rbp), %rdi
callq 0x4130
movq %rax, -0x48(%rbp)
movq 0x13ecc(%rip), %rdi     # 0x2bff0
leaq 0xba70(%rip), %rsi      # 0x23b9b
callq 0x4310
movq %rax, -0x7c8(%rbp)
jmp 0x18139
movq -0x7c8(%rbp), %rdi
movq -0x798(%rbp), %rsi
addq $0x218, %rsi            # imm = 0x218
callq 0x42e0
movq %rax, -0x7d0(%rbp)
jmp 0x1815c
movq -0x7d0(%rbp), %rdi
leaq 0xb87b(%rip), %rsi      # 0x239e5
callq 0x4310
movq %rax, -0x7d8(%rbp)
jmp 0x18178
movq -0x48(%rbp), %rdi
callq 0x1ee90
movq %rax, %rsi
leaq -0x68(%rbp), %rdi
callq 0x1eeb0
jmp 0x1818f
movq -0x7d8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x42e0
movq %rax, -0x7e0(%rbp)
jmp 0x181a8
movq -0x7e0(%rbp), %rdi
movq 0x13e12(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x181bd
leaq -0x68(%rbp), %rdi
callq 0x46d8
leaq 0xb62d(%rip), %rdi      # 0x237fa
callq 0x42a0
jmp 0x181d4
movl $0x1, %edi
callq 0x4400
jmp 0x1820f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x18203
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x1820a
jmp 0x18b5d
movq -0x30(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1827c
movq 0x13dcd(%rip), %rdi     # 0x2bff0
leaq 0xb3b4(%rip), %rsi      # 0x235de
callq 0x4310
movq %rax, %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x40d0
movq %rax, %rdi
leaq 0xb3b4(%rip), %rsi      # 0x235fc
callq 0x4310
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x40d0
movq %rax, %rdi
leaq 0xb3c9(%rip), %rsi      # 0x2362c
callq 0x4310
movq %rax, %rdi
movq 0x13d3e(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x18b3c
movq -0x30(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq (%rcx), %rax
jne 0x185c8
movq 0x13d5c(%rip), %rdi     # 0x2bff0
leaq 0xb3a6(%rip), %rsi      # 0x23641
callq 0x4310
movq %rax, %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x40d0
movq %rax, %rdi
leaq 0xb39f(%rip), %rsi      # 0x23658
callq 0x4310
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x40d0
movq %rax, %rdi
leaq 0xb3a7(%rip), %rsi      # 0x2367b
callq 0x4310
movq %rax, %rdi
movq 0x13ccd(%rip), %rsi     # 0x2bfb0
callq 0x4350
leaq -0x88(%rbp), %rdi
callq 0x44d0
movq -0x798(%rbp), %rax
testb $0x1, 0x238(%rax)
je 0x1845e
movq -0x18(%rbp), %rax
testb $0x1, (%rax)
je 0x18354
movq -0x798(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x7e8(%rbp)
callq 0x1f390
movq -0x7e8(%rbp), %rdi
movq %rax, %rsi
movl $0xa, %edx
callq 0x41f0
jmp 0x1833e
jmp 0x1845c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x185b7
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
leaq -0x88(%rbp), %rsi
callq 0x4080
jmp 0x1836d
leaq -0xa8(%rbp), %rdi
callq 0x44d0
movl $0x10, %edi
movl $0x8, %esi
callq 0x1ee70
movl %eax, -0x7ec(%rbp)
jmp 0x18390
movl -0x7ec(%rbp), %edx
leaq -0x230(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x4560
jmp 0x183ab
jmp 0x183ad
movq -0x230(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x230(%rbp,%rax), %rdi
callq 0x4440
movb %al, -0x7ed(%rbp)
jmp 0x183cd
movb -0x7ed(%rbp), %al
testb $0x1, %al
jne 0x183d9
jmp 0x18431
movq -0x20(%rbp), %rax
movsbl (%rax), %edx
leaq -0x230(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x4640
jmp 0x183f5
movq -0x28(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x1f5b0
jmp 0x18407
jmp 0x183ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1844b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x4260
jmp 0x1844b
leaq -0x230(%rbp), %rdi
callq 0x4260
leaq -0xa8(%rbp), %rdi
callq 0x46d8
jmp 0x1845c
leaq -0xa8(%rbp), %rdi
callq 0x46d8
jmp 0x185b7
jmp 0x1845e
leaq -0x250(%rbp), %rdi
callq 0x44d0
movq -0x798(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rcx), %rcx
leaq 0x8(%rax,%rcx), %rdi
callq 0x4440
movb %al, -0x7ee(%rbp)
jmp 0x1848b
movb -0x7ee(%rbp), %al
testb $0x1, %al
jne 0x1849a
jmp 0x1857c
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
leaq -0x88(%rbp), %rsi
callq 0x4080
jmp 0x184b3
movl $0x10, %edi
movl $0x8, %esi
callq 0x1ee70
movl %eax, -0x7f4(%rbp)
jmp 0x184ca
movl -0x7f4(%rbp), %edx
leaq -0x3d8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x4560
jmp 0x184e5
jmp 0x184e7
movq -0x3d8(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x3d8(%rbp,%rax), %rdi
callq 0x4440
movb %al, -0x7f5(%rbp)
jmp 0x18507
movb -0x7f5(%rbp), %al
testb $0x1, %al
jne 0x18513
jmp 0x1856b
movq -0x20(%rbp), %rax
movsbl (%rax), %edx
leaq -0x3d8(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x4640
jmp 0x1852f
movq -0x28(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x1f5b0
jmp 0x18541
jmp 0x184e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x185ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x4260
jmp 0x185ab
leaq -0x3d8(%rbp), %rdi
callq 0x4260
jmp 0x1846a
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
callq 0x4060
jmp 0x1858e
leaq -0x250(%rbp), %rdi
callq 0x46d8
leaq -0x88(%rbp), %rdi
callq 0x46d8
jmp 0x18b3c
leaq -0x250(%rbp), %rdi
callq 0x46d8
leaq -0x88(%rbp), %rdi
callq 0x46d8
jmp 0x18b5d
jmp 0x185ca
leaq -0x3f8(%rbp), %rdi
callq 0x44d0
leaq -0x418(%rbp), %rdi
callq 0x44d0
movq -0x798(%rbp), %rax
testb $0x1, 0x238(%rax)
je 0x18716
movq -0x18(%rbp), %rax
testb $0x1, (%rax)
je 0x18642
movq -0x798(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x800(%rbp)
callq 0x1f390
movq -0x800(%rbp), %rdi
movq %rax, %rsi
movl $0xa, %edx
callq 0x41f0
jmp 0x1862c
jmp 0x18714
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x18b45
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x4080
jmp 0x1865b
movl $0x10, %edi
movl $0x8, %esi
callq 0x1ee70
movl %eax, -0x804(%rbp)
jmp 0x18672
movl -0x804(%rbp), %edx
leaq -0x5a0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x4560
jmp 0x1868d
jmp 0x1868f
movq -0x5a0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x5a0(%rbp,%rax), %rdi
callq 0x4440
movb %al, -0x805(%rbp)
jmp 0x186af
movb -0x805(%rbp), %al
testb $0x1, %al
jne 0x186bb
jmp 0x18708
movq -0x20(%rbp), %rax
movsbl (%rax), %edx
leaq -0x5a0(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x4640
jmp 0x186d7
movq -0x28(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x1f5b0
jmp 0x186e9
jmp 0x1868f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5a0(%rbp), %rdi
callq 0x4260
jmp 0x18b45
leaq -0x5a0(%rbp), %rdi
callq 0x4260
jmp 0x18716
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x5a8(%rbp)
movl $0x8, %edi
callq 0x4330
movq %rax, -0x810(%rbp)
jmp 0x18737
movq -0x810(%rbp), %rdi
callq 0x22380
jmp 0x18745
movq -0x810(%rbp), %rax
movq %rax, -0x5b8(%rbp)
jmp 0x1883b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x18783
movq -0x810(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0x8, %esi
callq 0x4340
movl -0x3c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x18b45
movq -0x38(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x4430
movq %rax, %rsi
leaq -0x5d8(%rbp), %rdi
callq 0x4150
jmp 0x187b4
movq -0x818(%rbp), %rdi
callq 0x4130
movq 0x13829(%rip), %rdi     # 0x2bff0
leaq 0xaf3f(%rip), %rsi      # 0x2370d
callq 0x4310
movq %rax, -0x820(%rbp)
jmp 0x187dc
movq -0x820(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x42e0
movq %rax, -0x828(%rbp)
jmp 0x187f8
movq -0x828(%rbp), %rdi
movq 0x137aa(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x1880d
movl $0x5, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x18836
jmp 0x18b45
jmp 0x1883d
cmpq $0x0, -0x5a8(%rbp)
je 0x18ae1
movq -0x5b8(%rbp), %rdi
movq -0x5a8(%rbp), %xmm0
movaps 0xac3f(%rip), %xmm2     # 0x234a0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0xac43(%rip), %xmm1     # 0x234b0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm3
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm3, %xmm0
movsd %xmm0, -0x5e0(%rbp)
movq -0x30(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x5e8(%rbp)
leaq -0x5e0(%rbp), %rsi
leaq -0x5e8(%rbp), %rdx
callq 0x227a0
movq %rax, -0x830(%rbp)
jmp 0x188c0
movq -0x830(%rbp), %rax
movq %rax, -0x5b0(%rbp)
jmp 0x18997
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x18b45
movq -0x38(%rbp), %rdi
movq %rdi, -0x838(%rbp)
callq 0x4430
movq %rax, %rsi
leaq -0x608(%rbp), %rdi
callq 0x4150
jmp 0x18910
movq -0x838(%rbp), %rdi
callq 0x4130
movq 0x136cd(%rip), %rdi     # 0x2bff0
leaq 0xade3(%rip), %rsi      # 0x2370d
callq 0x4310
movq %rax, -0x840(%rbp)
jmp 0x18938
movq -0x840(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0x42e0
movq %rax, -0x848(%rbp)
jmp 0x18954
movq -0x848(%rbp), %rdi
movq 0x1364e(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x18969
movl $0x5, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x608(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x18992
jmp 0x18b45
movq -0x5b0(%rbp), %rcx
addq $0x1, %rcx
movq -0x30(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x5b0(%rbp)
je 0x189f8
movq -0x798(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x850(%rbp)
callq 0x1f390
movq -0x850(%rbp), %rdi
movq %rax, %rsi
movl $0xa, %edx
callq 0x41f0
jmp 0x189e4
movq -0x5b0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x5b0(%rbp)
jmp 0x189ad
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x4080
jmp 0x18a11
movl $0x10, %edi
movl $0x8, %esi
callq 0x1ee70
movl %eax, -0x854(%rbp)
jmp 0x18a28
movl -0x854(%rbp), %edx
leaq -0x790(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x4560
jmp 0x18a43
jmp 0x18a45
movq -0x790(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x790(%rbp,%rax), %rdi
callq 0x4440
movb %al, -0x855(%rbp)
jmp 0x18a65
movb -0x855(%rbp), %al
testb $0x1, %al
jne 0x18a71
jmp 0x18abe
movq -0x20(%rbp), %rax
movsbl (%rax), %edx
leaq -0x790(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x4640
jmp 0x18a8d
movq -0x28(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x1f5b0
jmp 0x18a9f
jmp 0x18a45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x4260
jmp 0x18b45
movq -0x5a8(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x5a8(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x4260
jmp 0x1883d
movq -0x798(%rbp), %rdi
addq $0x8, %rdi
callq 0x4060
jmp 0x18af3
movq -0x5b8(%rbp), %rax
movq %rax, -0x860(%rbp)
cmpq $0x0, %rax
je 0x18b24
movq -0x860(%rbp), %rdi
callq 0x1ef60
movq -0x860(%rbp), %rdi
movl $0x8, %esi
callq 0x4340
leaq -0x418(%rbp), %rdi
callq 0x46d8
leaq -0x3f8(%rbp), %rdi
callq 0x46d8
addq $0x860, %rsp            # imm = 0x860
popq %rbp
retq
leaq -0x418(%rbp), %rdi
callq 0x46d8
leaq -0x3f8(%rbp), %rdi
callq 0x46d8
movq -0x38(%rbp), %rdi
callq 0x4610
movq %rax, %rdi
callq 0x82c0
nop