// File: /workspace/github_cpp_makefile_star2_O2/greenpau[P]mnpa/main.cpp
// Function: help(int)
void help(int code) {
    cout << endl;
    cout << APP_NAME << " - " << APP_DESCR << endl;
    cout << endl;
    cout << "usage: " << APP_NAME << " [-h] [-d] [--sender PATTERN] ";
    cout << "[--sender PATTERN] [--receiver PATTERN] [--threads THREADS]" << endl;
    cout << endl;
    cout << "examples:" << endl;
    cout << endl;
    cout << "  " << APP_NAME << " --threads 5 --sender ";
    cout << "eth1/1000/64-127/0/0/239.1.2.4/5001/TEST1 --verbose" << endl;
    cout << "  " << APP_NAME << " --threads 5 ";
    cout << "--sender eth1/5/64-128/60/0/224.0.0.1/5001/TEST2 ";
    cout << "--sender eth1/5/64-128/60/0/224.0.0.1/5001/TEST3" << endl;
    cout << "  " << APP_NAME << " --threads 1 ";
    cout << "--receiver 10.254.0.12/239.1.1.1/5001/600" << endl;
    cout << "  " << APP_NAME << " --help" << endl;
    cout << "  " << endl;
    cout << "arguments:" << endl;
    cout << endl;
    cout << "  -s, --sender          sourcing pattern" << endl;
    cout << endl;
    cout << "    A multicast sourcing traffic pattern consists of:" << endl;
    cout << endl;
    cout << "      1. interface name, default: eth0" << endl;
    cout << "      2. number of packets, default: 5" << endl;
    cout << "      3. packet size, e.g. 64, 64-127, 128-255, 300-312" << endl;
    cout << "      4. traffic duration in seconds, default: 2" << endl;
    cout << "      5. thread start offset in seconds, default: 0" << endl;
    cout << "      6. destination ip address, default: 224.0.0.1" << endl;
    cout << "      7. destination port, default: 5001" << endl;
    cout << "      8. traffic tag, default: MNPA" << endl;
    cout << endl;
    cout << "  -r, --receiver      subscription pattern" << endl;
    cout << endl;
    cout << "    A multicast subscription pattern consists of:" << endl;
    cout << endl;
    cout << "      1. interface ip address, e.g 127.0.0.1, or name, e.g. eth1" << endl;
    cout << "      2. multicast group ip address, e.g. 239.1.1.1" << endl;
    cout << "      3. destination port, e.g. 5001" << endl;
    cout << "      4. subscription duration in seconds, default: unlimited (0)" << endl;
    cout << endl;
    cout << "  --igmp-v2-report      send IGMPv2 membership report only" << endl;
    cout << "  --igmp-v3-report      send IGMPv3 membership report only" << endl;
    cout << endl;
    cout << "    The above IGMP v2 or v3 Membership Report switches are used" << endl;
    cout << "    with the --receiver argument. Also, when one of the switches" << endl;
    cout << "    is enabled, the application sends raw membership report packets," << endl;
    cout << "    without responding to membership queries." << endl;
    cout << endl;
    cout << "  -t, --threads         number of concurrent threads, default: 1" << endl;
    cout << "  -p, --priority        program scheduling priority, default: 0" << endl;
    cout << "  -d, --daemonize       run in background, default: disabled" << endl;
    cout << "  -v, --verbose         enable logging, default: disabled" << endl;
    cout << "  --random-payload      enable payload randomization, default: disabled" << endl;
    cout << "  --packet-storm        send packets w/out waiting for conditions, default: disabled" << endl;
    cout << endl;
    cout << "  --stop                stop service" << endl;
    cout << "  --status              status service" << endl;
    cout << endl;
    cout << "documentation: https://github.com/greenpau/mnpa" <<endl;
    cout << endl;
    exit(code);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movl %edi, %ebx
leaq 0x10edc8(%rip), %r14    # 0x127980
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1e69(%rip), %r15     # 0xdaa30
movq %r14, %rdi
movq %r15, %rsi
callq 0x973d0
leaq 0xc163e(%rip), %rsi     # 0xda217
movq %rax, %rdi
callq 0x973d0
leaq 0xc1633(%rip), %rsi     # 0xda21b
movq %rax, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc163b(%rip), %rsi     # 0xda242
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x973d0
leaq 0xc1629(%rip), %rsi     # 0xda24a
movq %rax, %rdi
callq 0x973d0
leaq 0xc1639(%rip), %rsi     # 0xda269
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1656(%rip), %rsi     # 0xda2a5
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc2758(%rip), %r12     # 0xdb3c6
movq %r14, %rdi
movq %r12, %rsi
callq 0x973d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x973d0
leaq 0xc1624(%rip), %rsi     # 0xda2af
movq %rax, %rdi
callq 0x973d0
leaq 0xc162c(%rip), %rsi     # 0xda2c6
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
movq %r12, %rsi
callq 0x973d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x973d0
leaq 0xc1633(%rip), %rsi     # 0xda2fa
movq %rax, %rdi
callq 0x973d0
leaq 0xc1632(%rip), %rsi     # 0xda308
movq %r14, %rdi
callq 0x973d0
leaq 0xc1655(%rip), %rsi     # 0xda33a
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
movq %r12, %rsi
callq 0x973d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x973d0
leaq 0xc1659(%rip), %rsi     # 0xda36b
movq %rax, %rdi
callq 0x973d0
leaq 0xc1658(%rip), %rsi     # 0xda379
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
movq %r12, %rsi
callq 0x973d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x973d0
leaq 0xc1655(%rip), %rsi     # 0xda3a3
movq %rax, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
movq %r12, %rsi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1633(%rip), %rsi     # 0xda3ab
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc161f(%rip), %rsi     # 0xda3b6
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1629(%rip), %rsi     # 0xda3df
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1640(%rip), %rsi     # 0xda415
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1650(%rip), %rsi     # 0xda43c
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1660(%rip), %rsi     # 0xda463
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1681(%rip), %rsi     # 0xda49b
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc169b(%rip), %rsi     # 0xda4cc
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc16b8(%rip), %rsi     # 0xda500
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc16d5(%rip), %rsi     # 0xda534
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc16e7(%rip), %rsi     # 0xda55d
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc16ec(%rip), %rsi     # 0xda581
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc16f8(%rip), %rsi     # 0xda5ac
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc170b(%rip), %rsi     # 0xda5de
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1735(%rip), %rsi     # 0xda61f
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1752(%rip), %rsi     # 0xda653
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1760(%rip), %rsi     # 0xda678
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1783(%rip), %rsi     # 0xda6ba
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc17a7(%rip), %rsi     # 0xda6f5
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc17c3(%rip), %rsi     # 0xda730
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc17ec(%rip), %rsi     # 0xda770
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1816(%rip), %rsi     # 0xda7b1
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1844(%rip), %rsi     # 0xda7f6
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1853(%rip), %rsi     # 0xda824
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc187d(%rip), %rsi     # 0xda865
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc18a6(%rip), %rsi     # 0xda8a5
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc18cc(%rip), %rsi     # 0xda8e2
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc18ef(%rip), %rsi     # 0xda91c
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1920(%rip), %rsi     # 0xda964
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc1956(%rip), %rsi     # 0xda9b9
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
leaq 0xc1964(%rip), %rsi     # 0xda9de
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
leaq 0xc196c(%rip), %rsi     # 0xdaa05
movq %r14, %rdi
callq 0x973d0
movq %rax, %rdi
callq 0x96cb0
movq %r14, %rdi
callq 0x96cb0
movl %ebx, %edi
callq 0x151a0