// File: /workspace/github_cpp_makefile_star2_O3/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 0x1154e3(%rip), %r14    # 0x12e980
movq %r14, %rdi
callq 0xa0970
leaq 0xca5b4(%rip), %r15     # 0xe3a60
movq %r14, %rdi
movq %r15, %rsi
callq 0xa1090
leaq 0xc9d89(%rip), %rsi     # 0xe3247
movq %rax, %rdi
callq 0xa1090
leaq 0xc9d7e(%rip), %rsi     # 0xe324b
movq %rax, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9d86(%rip), %rsi     # 0xe3272
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
movq %r15, %rsi
callq 0xa1090
leaq 0xc9d74(%rip), %rsi     # 0xe327a
movq %rax, %rdi
callq 0xa1090
leaq 0xc9d84(%rip), %rsi     # 0xe3299
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9da1(%rip), %rsi     # 0xe32d5
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xcaea3(%rip), %r12     # 0xe43f6
movq %r14, %rdi
movq %r12, %rsi
callq 0xa1090
movq %rax, %rdi
movq %r15, %rsi
callq 0xa1090
leaq 0xc9d6f(%rip), %rsi     # 0xe32df
movq %rax, %rdi
callq 0xa1090
leaq 0xc9d77(%rip), %rsi     # 0xe32f6
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
movq %r12, %rsi
callq 0xa1090
movq %rax, %rdi
movq %r15, %rsi
callq 0xa1090
leaq 0xc9d7e(%rip), %rsi     # 0xe332a
movq %rax, %rdi
callq 0xa1090
leaq 0xc9d7d(%rip), %rsi     # 0xe3338
movq %r14, %rdi
callq 0xa1090
leaq 0xc9da0(%rip), %rsi     # 0xe336a
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
movq %r12, %rsi
callq 0xa1090
movq %rax, %rdi
movq %r15, %rsi
callq 0xa1090
leaq 0xc9da4(%rip), %rsi     # 0xe339b
movq %rax, %rdi
callq 0xa1090
leaq 0xc9da3(%rip), %rsi     # 0xe33a9
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
movq %r12, %rsi
callq 0xa1090
movq %rax, %rdi
movq %r15, %rsi
callq 0xa1090
leaq 0xc9da0(%rip), %rsi     # 0xe33d3
movq %rax, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
movq %r12, %rsi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9d7e(%rip), %rsi     # 0xe33db
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9d6a(%rip), %rsi     # 0xe33e6
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9d74(%rip), %rsi     # 0xe340f
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9d8b(%rip), %rsi     # 0xe3445
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9d9b(%rip), %rsi     # 0xe346c
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9dab(%rip), %rsi     # 0xe3493
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9dcc(%rip), %rsi     # 0xe34cb
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9de6(%rip), %rsi     # 0xe34fc
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9e03(%rip), %rsi     # 0xe3530
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9e20(%rip), %rsi     # 0xe3564
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9e32(%rip), %rsi     # 0xe358d
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9e37(%rip), %rsi     # 0xe35b1
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9e43(%rip), %rsi     # 0xe35dc
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9e56(%rip), %rsi     # 0xe360e
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9e80(%rip), %rsi     # 0xe364f
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9e9d(%rip), %rsi     # 0xe3683
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9eab(%rip), %rsi     # 0xe36a8
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9ece(%rip), %rsi     # 0xe36ea
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9ef2(%rip), %rsi     # 0xe3725
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9f0e(%rip), %rsi     # 0xe3760
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9f37(%rip), %rsi     # 0xe37a0
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9f61(%rip), %rsi     # 0xe37e1
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9f8f(%rip), %rsi     # 0xe3826
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xc9f9e(%rip), %rsi     # 0xe3854
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9fc8(%rip), %rsi     # 0xe3895
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xc9ff1(%rip), %rsi     # 0xe38d5
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xca017(%rip), %rsi     # 0xe3912
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xca03a(%rip), %rsi     # 0xe394c
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xca06b(%rip), %rsi     # 0xe3994
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xca0a1(%rip), %rsi     # 0xe39e9
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
leaq 0xca0af(%rip), %rsi     # 0xe3a0e
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
leaq 0xca0b7(%rip), %rsi     # 0xe3a35
movq %r14, %rdi
callq 0xa1090
movq %rax, %rdi
callq 0xa0970
movq %r14, %rdi
callq 0xa0970
movl %ebx, %edi
callq 0x151a0