// File: /workspace/github_cpp_makefile_star2_O2/yahoo[P]UDPing/src/client.cc
// Function: main
int main( int argc, char **argv ) {
    if (getuid()) {
        cerr << "udping_client must run as root" << endl;
        exit (-1);
    }
    struct timespec iter_start;
    double wall_elapsed = 0;
    setOptions(new Options(argc, argv, "l:r:p:d:i:s:n:m:a:vhq"));
    
    /* Parse command line options */
    stringstream usage;
    usage << "Usage:  udping_client -r <remote hostname> -p <remote port> -d <delay> -l <local IP> -s <starting port>|<source port descriptor> [-n <number of ports>] -i <measurement interval seconds> -m <max packet size> -a <next-hop MAC,...> [-v] [-q]" << endl <<
    "  Source port descriptor should be a set of ranges separated by commas.\n  Each range can either be a port, or a range of ports separated by a dash.\n  For example:" << endl <<
    "    5000 -> port 5000" << endl <<
    "    5000-5009 -> ports 5000,5001,...,5009" << endl <<
    "    5000,5005,5010 -> ports 5000,5005,5010" << endl <<
    "    5000-5001,5005-5006 -> ports 5000,5001,5005,5006" << endl <<
    "  If a single port is specified AND a number of ports is specified, then source traffic\n  from the count specified starting with the starting port" << endl;
    if (getOptions()->getFlagOption('h')) {
        cerr << usage.str() << endl;
        exit (0);
    }
    string dstHost = getOptions()->getStringOption ('r', 1, usage.str(), "No remote hostname provided\n");
    int dstPort = getOptions()->parseIntOption('p', 1, 1024, 65536, usage.str(), "Port number is out of range 1024-65532\n");
    string srcIp = getOptions()->getStringOption ('l', 1, usage.str(), "No local IP provided\n");
    string srcPorts = getOptions()->getStringOption('s', 1, usage.str(), "Please define a valid source port");
    int numPorts = getOptions()->parseIntOption('n', 0, 1, MAX_SOCKETS, usage.str(), "Number of ports is out of range 1-MAX_SOCKETS\n");
    if ((atoi(srcPorts.c_str()) > 0) && (numPorts > 0) && (string::npos == srcPorts.find_first_not_of("1234567890"))) {
        int startingPort = atoi(srcPorts.c_str());
        if ((startingPort > MAX_PORT) || (startingPort < MIN_PORT)) {
            cerr << usage.str() << "Starting port is out of range MIN_PORT-MAX_PORT\n";
            exit (-1);
        }
        int endingPort = startingPort + numPorts - 1;
        stringstream buffer;
        buffer << to_string((long long)startingPort) << "-" << to_string((long long)endingPort);
        srcPorts = buffer.str();
    }
    int delay = getOptions()->parseIntOption('d', 1, 0, 1000, usage.str(), "Delay is out of range 0-1000 ms\n");
    int interval = getOptions()->parseIntOption('i', 1, 1, 900, usage.str(), "Measurement interval is out of range 0-900 s\n");
    int maxPacketSize = getOptions()->parseIntOption('m', 1, 1, MAXBUF, usage.str(), "Max packet size is out of range 1-MAXBUF\n");
    string dstMac = getOptions()->getStringOption ('a', 1, usage.str(), "You must specify one or more next-hop MAC addresses\n");

    MacList dstml(dstMac);
    if (dstml.getNumMacs() == 0) {
        cerr << "Invalid next-hop MAC address string" << endl << usage.str();
        exit (-1);
    }

    srand (time(0) + getpid());

    ClientSessionList sessions( srcIp, srcPorts, dstHost, dstPort, dstMac, interval, maxPacketSize );

    if (!getuid()) {
        // I'm running as root.  Switch to nobody or die!!!
        struct passwd* pwd = getpwnam("nobody");
        if (pwd && pwd->pw_uid) {
            if (setgid(pwd->pw_gid)) {
                cerr << "Couldn't change userid to nobody (setgid failed).  Terminating client" << endl;
                exit(-1);
            }
            if (setuid(pwd->pw_uid)) {
                cerr << "Couldn't change userid to nobody (setuid failed).  Terminating client" << endl;
                exit(-1);
            }
        } else {
            cerr << "Couldn't change userid to nobody.  Terminating client" << endl;
            exit(-1);
        }
    }

    int ix;
    while (1) {
        startTimer(&iter_start);
        ClientSession* session = sessions.getNextSession();
        if (session->rollover()) {
            session->reset();
        }
        (void) session->sendPingPacket();
        session->increment();
        doRandomPause(&iter_start, delay);
    };
    return(0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x6d8, %rsp            # imm = 0x6D8
movq %rsi, %rbx
movl %edi, %ebp
callq 0x2160
testl %eax, %eax
jne 0x2a65
movl $0x800, %edi            # imm = 0x800
callq 0x22b0
movq %rax, %r14
leaq 0x29e0(%rip), %rsi      # 0x5023
leaq 0x2e8(%rsp), %rdi
leaq 0x550(%rsp), %rdx
callq 0x2120
movb $0x1, %r15b
leaq 0x2e8(%rsp), %rcx
movq %r14, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x3330
xorl %r15d, %r15d
movq %r14, %rdi
callq 0x3488
leaq 0x2e8(%rsp), %rdi
callq 0x2140
leaq 0x550(%rsp), %rdi
callq 0x21a0
leaq 0x560(%rsp), %rdi
leaq 0x2995(%rip), %rsi      # 0x5039
callq 0x22a0
movq %rax, %rdi
callq 0x2150
leaq 0x2a70(%rip), %rsi      # 0x5128
movq %rax, %rdi
callq 0x22a0
movq %rax, %rdi
callq 0x2150
leaq 0x2afc(%rip), %rsi      # 0x51cb
movq %rax, %rdi
callq 0x22a0
movq %rax, %rdi
callq 0x2150
leaq 0x2afb(%rip), %rsi      # 0x51e1
movq %rax, %rdi
callq 0x22a0
movq %rax, %rdi
callq 0x2150
leaq 0x2b0e(%rip), %rsi      # 0x520b
movq %rax, %rdi
callq 0x22a0
movq %rax, %rdi
callq 0x2150
leaq 0x2b22(%rip), %rsi      # 0x5236
movq %rax, %rdi
callq 0x22a0
movq %rax, %rdi
callq 0x2150
leaq 0x2b40(%rip), %rsi      # 0x526b
movq %rax, %rdi
callq 0x22a0
movq %rax, %rdi
callq 0x2150
callq 0x3490
pushq $0x68
popq %rsi
movq %rax, %rdi
callq 0x345e
testl %eax, %eax
jne 0x2a88
callq 0x3490
movq %rax, %r14
leaq 0x568(%rsp), %rbx
leaq 0x2c8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2b84(%rip), %rsi      # 0x52fe
leaq 0x2a8(%rsp), %rdi
leaq 0x3c8(%rsp), %rdx
callq 0x2120
pushq $0x72
popq %rsi
pushq $0x1
popq %rdx
leaq 0x2c8(%rsp), %rcx
leaq 0x2a8(%rsp), %r8
movq %r14, %rdi
callq 0x3424
leaq 0x3a8(%rsp), %rdi
leaq 0x268(%rsp), %rdx
movq %rax, %rsi
callq 0x2120
leaq 0x2a8(%rsp), %rdi
callq 0x2140
leaq 0x2c8(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r14
leaq 0x288(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2b1d(%rip), %rsi      # 0x531b
leaq 0x388(%rsp), %r15
leaq 0x3c8(%rsp), %rdx
movq %r15, %rdi
callq 0x2120
movq %r15, (%rsp)
pushq $0x70
popq %rsi
pushq $0x1
popq %rdx
leaq 0x288(%rsp), %r9
movq %r14, %rdi
movl $0x400, %ecx            # imm = 0x400
movl $0x10000, %r8d          # imm = 0x10000
callq 0x33c2
movl %eax, %ebp
leaq 0x388(%rsp), %rdi
callq 0x2140
leaq 0x288(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r14
leaq 0x248(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2acd(%rip), %rsi      # 0x5343
leaq 0x228(%rsp), %rdi
leaq 0x3c8(%rsp), %rdx
callq 0x2120
pushq $0x6c
popq %rsi
pushq $0x1
popq %rdx
leaq 0x248(%rsp), %rcx
leaq 0x228(%rsp), %r8
movq %r14, %rdi
callq 0x3424
leaq 0x268(%rsp), %rdi
leaq 0x38(%rsp), %rdx
movq %rax, %rsi
callq 0x2120
leaq 0x228(%rsp), %rdi
callq 0x2140
leaq 0x248(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r14
leaq 0x208(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2a62(%rip), %rsi      # 0x5359
leaq 0x1e8(%rsp), %rdi
leaq 0x3c8(%rsp), %rdx
callq 0x2120
pushq $0x73
popq %rsi
pushq $0x1
popq %rdx
leaq 0x208(%rsp), %rcx
leaq 0x1e8(%rsp), %r8
movq %r14, %rdi
callq 0x3424
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
movq %rax, %rsi
callq 0x2120
leaq 0x1e8(%rsp), %rdi
callq 0x2140
leaq 0x208(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r14
leaq 0x1c8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2a06(%rip), %rsi      # 0x537b
leaq 0x368(%rsp), %r15
leaq 0x3c8(%rsp), %rdx
movq %r15, %rdi
callq 0x2120
movq %r15, (%rsp)
pushq $0x6e
popq %rsi
pushq $0x1
popq %rcx
leaq 0x1c8(%rsp), %r9
movq %r14, %rdi
xorl %edx, %edx
movl $0x1388, %r8d           # imm = 0x1388
callq 0x33c2
movl %eax, %r14d
leaq 0x368(%rsp), %rdi
callq 0x2140
leaq 0x1c8(%rsp), %rdi
callq 0x2140
movq 0x38(%rsp), %rdi
callq 0x2380
testl %r14d, %r14d
jle 0x2b77
testl %eax, %eax
jle 0x2b77
leaq 0x29bc(%rip), %rsi      # 0x53aa
leaq 0x38(%rsp), %rdi
xorl %edx, %edx
callq 0x2190
cmpq $-0x1, %rax
jne 0x2b77
movq 0x38(%rsp), %rdi
callq 0x2380
movl %eax, %r15d
leal -0xea61(%r15), %eax
cmpl $0xffff199e, %eax       # imm = 0xFFFF199E
ja 0x2acd
leaq 0x3c8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
movq 0x55b6(%rip), %rdi      # 0x7ff0
leaq 0x3c8(%rsp), %rsi
callq 0x2220
leaq 0x2967(%rip), %rsi      # 0x53b5
movq %rax, %rdi
callq 0x22a0
leaq 0x3c8(%rsp), %rdi
callq 0x2140
jmp 0x2a80
movq 0x5584(%rip), %rdi      # 0x7ff0
leaq 0x2591(%rip), %rsi      # 0x5004
callq 0x22a0
movq %rax, %rdi
callq 0x2150
pushq $-0x1
popq %rdi
callq 0x22e0
leaq 0x568(%rsp), %rsi
leaq 0x3c8(%rsp), %rdi
callq 0x2390
movq 0x554c(%rip), %rdi      # 0x7ff0
leaq 0x3c8(%rsp), %rsi
callq 0x2220
movq %rax, %rdi
callq 0x2150
leaq 0x3c8(%rsp), %rdi
callq 0x2140
xorl %edi, %edi
callq 0x22e0
leaq 0x3c8(%rsp), %rdi
callq 0x21a0
movl %r15d, %esi
leaq 0x18(%rsp), %rdi
callq 0x3230
leaq 0x3d8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2220
leaq 0x2c3b(%rip), %rsi      # 0x573b
movq %rax, %rdi
callq 0x22a0
movq %rax, %r12
leal (%r14,%r15), %eax
decl %eax
movl %eax, %esi
leaq 0x58(%rsp), %rdi
callq 0x3230
leaq 0x58(%rsp), %rsi
movq %r12, %rdi
callq 0x2220
leaq 0x58(%rsp), %rdi
callq 0x2140
leaq 0x18(%rsp), %rdi
callq 0x2140
leaq 0x3e0(%rsp), %rsi
leaq 0x18(%rsp), %rdi
callq 0x2390
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %r14
movq %r14, %rsi
callq 0x22f0
movq %r14, %rdi
callq 0x2140
leaq 0x3c8(%rsp), %rdi
callq 0x21b0
callq 0x3490
movq %rax, %r14
leaq 0x1a8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2850(%rip), %rsi      # 0x53e6
leaq 0x348(%rsp), %r15
leaq 0x3c8(%rsp), %rdx
movq %r15, %rdi
callq 0x2120
movq %r15, (%rsp)
pushq $0x64
popq %rsi
pushq $0x1
popq %rdx
leaq 0x1a8(%rsp), %r9
movq %r14, %rdi
xorl %ecx, %ecx
movl $0x3e8, %r8d            # imm = 0x3E8
callq 0x33c2
movl %eax, %r14d
leaq 0x348(%rsp), %rdi
callq 0x2140
leaq 0x1a8(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r15
leaq 0x188(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x27fb(%rip), %rsi      # 0x5407
leaq 0x328(%rsp), %r12
leaq 0x3c8(%rsp), %rdx
movq %r12, %rdi
callq 0x2120
movq %r12, (%rsp)
pushq $0x69
popq %rsi
pushq $0x1
popq %rcx
leaq 0x188(%rsp), %r9
movq %r15, %rdi
movl %ecx, %edx
movl $0x384, %r8d            # imm = 0x384
callq 0x33c2
movl %eax, %r15d
leaq 0x328(%rsp), %rdi
callq 0x2140
leaq 0x188(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r12
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x27b3(%rip), %rsi      # 0x5435
leaq 0x308(%rsp), %r13
leaq 0x3c8(%rsp), %rdx
movq %r13, %rdi
callq 0x2120
movq %r13, (%rsp)
pushq $0x6d
popq %rsi
pushq $0x1
popq %rcx
leaq 0x168(%rsp), %r9
movq %r12, %rdi
movl %ecx, %edx
movl $0x7d0, %r8d            # imm = 0x7D0
callq 0x33c2
movl %eax, %r12d
leaq 0x308(%rsp), %rdi
callq 0x2140
leaq 0x168(%rsp), %rdi
callq 0x2140
callq 0x3490
movq %rax, %r13
leaq 0x148(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x2767(%rip), %rsi      # 0x545f
leaq 0x128(%rsp), %rdi
leaq 0x3c8(%rsp), %rdx
callq 0x2120
pushq $0x61
popq %rsi
pushq $0x1
popq %rdx
leaq 0x148(%rsp), %rcx
leaq 0x128(%rsp), %r8
movq %r13, %rdi
callq 0x3424
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rdx
movq %rax, %rsi
callq 0x2120
leaq 0x128(%rsp), %rdi
callq 0x2140
leaq 0x148(%rsp), %rdi
callq 0x2140
leaq 0x108(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2320
leaq 0x78(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x4298
leaq 0x108(%rsp), %rdi
callq 0x2140
leaq 0x78(%rsp), %rdi
callq 0x43f0
testl %eax, %eax
jne 0x2dd9
movq 0x5253(%rip), %rdi      # 0x7ff0
leaq 0x26f0(%rip), %rsi      # 0x5494
callq 0x22a0
movq %rax, %rdi
callq 0x2150
movq %rax, %r14
leaq 0x3c8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2390
leaq 0x3c8(%rsp), %rsi
movq %r14, %rdi
callq 0x2220
jmp 0x2a56
xorl %edi, %edi
callq 0x2250
movq %rax, %rbx
callq 0x2350
addl %eax, %ebx
movl %ebx, %edi
callq 0x2280
leaq 0xe8(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x2320
leaq 0xc8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x2320
leaq 0xa8(%rsp), %rdi
leaq 0x3a8(%rsp), %rsi
callq 0x2320
leaq 0x88(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2320
movl %r12d, 0x8(%rsp)
movl %r15d, (%rsp)
leaq 0x3c8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
leaq 0x88(%rsp), %r9
movl %ebp, %r8d
callq 0x3af6
leaq 0x88(%rsp), %rdi
callq 0x2140
leaq 0xa8(%rsp), %rdi
callq 0x2140
leaq 0xc8(%rsp), %rdi
callq 0x2140
leaq 0xe8(%rsp), %rdi
callq 0x2140
callq 0x2160
testl %eax, %eax
jne 0x2f07
leaq 0x25fc(%rip), %rdi      # 0x54b8
callq 0x21e0
testq %rax, %rax
je 0x2ecf
movq %rax, %rbx
cmpl $0x0, 0x10(%rax)
jne 0x2eef
movq 0x511a(%rip), %rdi      # 0x7ff0
leaq 0x266e(%rip), %rsi      # 0x554b
callq 0x22a0
movq %rax, %rdi
callq 0x2150
jmp 0x2a80
movl 0x14(%rbx), %edi
callq 0x23e0
testl %eax, %eax
jne 0x2f54
movl 0x10(%rbx), %edi
callq 0x2400
testl %eax, %eax
jne 0x2f74
leaq 0x58(%rsp), %rdi
callq 0x3498
leaq 0x3c8(%rsp), %rdi
callq 0x3f48
movq %rax, %rbx
movq %rax, %rdi
callq 0x4062
testb %al, %al
je 0x2f35
movq %rbx, %rdi
callq 0x404a
movq %rbx, %rdi
callq 0x40ba
movq %rbx, %rdi
callq 0x40b6
leaq 0x58(%rsp), %rdi
movl %r14d, %esi
callq 0x34db
jmp 0x2f07
movq 0x5095(%rip), %rdi      # 0x7ff0
leaq 0x255d(%rip), %rsi      # 0x54bf
callq 0x22a0
movq %rax, %rdi
callq 0x2150
jmp 0x2a80
movq 0x5075(%rip), %rdi      # 0x7ff0
leaq 0x2583(%rip), %rsi      # 0x5505
callq 0x22a0
movq %rax, %rdi
callq 0x2150
jmp 0x2a80
jmp 0x2f98
jmp 0x2f98
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
callq 0x3eea
jmp 0x3006
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x2140
jmp 0x2fbf
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x2140
jmp 0x2fd1
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x2140
jmp 0x2fe3
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
jmp 0x2ffa
jmp 0x3003
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
callq 0x2140
jmp 0x3006
jmp 0x3003
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x43be
jmp 0x3027
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x2140
jmp 0x3027
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
jmp 0x3125
jmp 0x3033
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x2140
jmp 0x3048
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
jmp 0x3125
jmp 0x312c
movq %rax, %rbx
leaq 0x308(%rsp), %rdi
callq 0x2140
jmp 0x306f
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
jmp 0x3125
jmp 0x30c2
jmp 0x312c
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x2140
jmp 0x30b6
movq %rax, %rbx
leaq 0x328(%rsp), %rdi
callq 0x2140
jmp 0x30a9
jmp 0x30b3
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
jmp 0x3125
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x2140
jmp 0x30c5
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
callq 0x21b0
jmp 0x312f
jmp 0x312c
movq %rax, %rbx
leaq 0x348(%rsp), %rdi
callq 0x2140
jmp 0x30fc
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
jmp 0x3125
jmp 0x312c
jmp 0x312c
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
jmp 0x3125
jmp 0x312c
movq %rax, %rbx
leaq 0x368(%rsp), %rdi
callq 0x2140
jmp 0x311d
movq %rax, %rbx
leaq 0x1c8(%rsp), %rdi
callq 0x2140
jmp 0x312f
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
jmp 0x3155
jmp 0x3138
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x2140
jmp 0x314d
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
callq 0x2140
jmp 0x315f
movq %rax, %rbx
leaq 0x268(%rsp), %rdi
jmp 0x31a9
jmp 0x316b
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
callq 0x2140
jmp 0x3180
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
jmp 0x31a9
jmp 0x31b0
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
callq 0x2140
jmp 0x31a1
movq %rax, %rbx
leaq 0x288(%rsp), %rdi
callq 0x2140
jmp 0x31b3
movq %rax, %rbx
leaq 0x3a8(%rsp), %rdi
jmp 0x31e9
jmp 0x31bf
movq %rax, %rbx
leaq 0x2a8(%rsp), %rdi
callq 0x2140
jmp 0x31d4
movq %rax, %rbx
leaq 0x2c8(%rsp), %rdi
jmp 0x31e9
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
callq 0x2140
jmp 0x31f7
jmp 0x31f4
jmp 0x31f4
movq %rax, %rbx
leaq 0x550(%rsp), %rdi
callq 0x21b0
jmp 0x3228
movq %rax, %rbx
leaq 0x2e8(%rsp), %rdi
callq 0x2140
testb %r15b, %r15b
jne 0x3220
jmp 0x3228
movq %rax, %rbx
movq %r14, %rdi
callq 0x2270
movq %rbx, %rdi
callq 0x23d0