// File: /workspace/github_c_makefile_star2_O3/adsr[P]phpspy/phpspy.c
// Function: usage
void usage(FILE *fp, int exit_code) {
    fprintf(fp, "Usage:\n");
    fprintf(fp, "  phpspy [options] -p <pid>\n");
    fprintf(fp, "  phpspy [options] -P <pgrep-args>\n");
    fprintf(fp, "  phpspy [options] [--] <cmd>\n");
    fprintf(fp, "\n");
    fprintf(fp, "Options:\n");
    fprintf(fp, "  -h, --help                         Show this help\n");
    fprintf(fp, "  -p, --pid=<pid>                    Trace PHP process at `pid`\n");
    fprintf(fp, "  -P, --pgrep=<args>                 Concurrently trace processes that\n");
    fprintf(fp, "                                       match pgrep `args` (see also `-T`)\n");
    fprintf(fp, "  -T, --threads=<num>                Set number of threads to use with `-P`\n");
    fprintf(fp, "                                       (default: %d)\n", opt_num_workers);
    fprintf(fp, "  -s, --sleep-ns=<ns>                Sleep `ns` nanoseconds between traces\n");
    fprintf(fp, "                                       (see also `-H`) (default: %ld)\n", opt_sleep_ns);
    fprintf(fp, "  -H, --rate-hz=<hz>                 Trace `hz` times per second\n");
    fprintf(fp, "                                       (see also `-s`) (default: %lu)\n", 1000000000UL/opt_sleep_ns);
    fprintf(fp, "  -V, --php-version=<ver>            Set PHP version\n");
    fprintf(fp, "                                       (default: %s;\n", opt_phpv);
    fprintf(fp, "                                       supported: 70 71 72 73 74 80 81 82 83)\n");
    fprintf(fp, "  -l, --limit=<num>                  Limit total number of traces to capture\n");
    fprintf(fp, "                                       (approximate limit in pgrep mode)\n");
    fprintf(fp, "                                       (default: %lu; 0=unlimited)\n", opt_trace_limit);
    fprintf(fp, "  -i, --time-limit-ms=<ms>           Stop tracing after `ms` milliseconds\n");
    fprintf(fp, "                                       (second granularity in pgrep mode)\n");
    fprintf(fp, "                                       (default: %lu; 0=unlimited)\n", opt_time_limit_ms);
    fprintf(fp, "  -n, --max-depth=<max>              Set max stack trace depth\n");
    fprintf(fp, "                                       (default: %d; -1=unlimited)\n", opt_max_stack_depth);
    fprintf(fp, "  -r, --request-info=<opts>          Set request info parts to capture\n");
    fprintf(fp, "                                       (q=query c=cookie u=uri p=path\n");
    fprintf(fp, "                                       capital=negation)\n");
    fprintf(fp, "                                       (default: QCUP; none)\n");
    fprintf(fp, "  -m, --memory-usage                 Capture peak and current memory usage\n");
    fprintf(fp, "                                       with each trace (requires target PHP\n");
    fprintf(fp, "                                       process to have debug symbols)\n");
    fprintf(fp, "  -o, --output=<path>                Write phpspy output to `path`\n");
    fprintf(fp, "                                       (default: %s; -=stdout)\n", opt_path_output);
    fprintf(fp, "  -O, --child-stdout=<path>          Write child stdout to `path`\n");
    fprintf(fp, "                                       (default: %s)\n", opt_path_child_out);
    fprintf(fp, "  -E, --child-stderr=<path>          Write child stderr to `path`\n");
    fprintf(fp, "                                       (default: %s)\n", opt_path_child_err);
    fprintf(fp, "  -x, --addr-executor-globals=<hex>  Set address of executor_globals in hex\n");
    fprintf(fp, "                                       (default: %lu; 0=find dynamically)\n", opt_sapi_globals_addr);
    fprintf(fp, "  -a, --addr-sapi-globals=<hex>      Set address of sapi_globals in hex\n");
    fprintf(fp, "                                       (default: %lu; 0=find dynamically)\n", opt_executor_globals_addr);
    fprintf(fp, "  -1, --single-line                  Output in single-line mode\n");
    fprintf(fp, "  -b, --buffer-size=<size>           Set output buffer size to `size`.\n");
    fprintf(fp, "                                       Note: In `-P` mode, setting this\n");
    fprintf(fp, "                                       above PIPE_BUF (4096) may lead to\n");
    fprintf(fp, "                                       interlaced writes across threads\n");
    fprintf(fp, "                                       unless `-J m` is specified.\n");
    fprintf(fp, "                                       (default: %d)\n", opt_fout_buffer_size);
    fprintf(fp, "  -f, --filter=<regex>               Filter output by POSIX regex\n");
    fprintf(fp, "                                       (default: none)\n");
    fprintf(fp, "  -F, --filter-negate=<regex>        Same as `-f` except negated\n");
    fprintf(fp, "  -d, --verbose-fields=<opts>        Set verbose output fields\n");
    fprintf(fp, "                                       (p=pid t=timestamp\n");
    fprintf(fp, "                                       capital=negation)\n");
    fprintf(fp, "                                       (default: PT; none)\n");
    fprintf(fp, "  -c, --continue-on-error            Attempt to continue tracing after\n");
    fprintf(fp, "                                       encountering an error\n");
    fprintf(fp, "  -w, --libname-awk-patt=<patt>      Awk pattern to match name of PHP lib\n");
    fprintf(fp, "                                       (default: %s)\n", opt_libname_awk_patt);
    fprintf(fp, "  -#, --comment=<any>                Ignored; intended for self-documenting\n");
    fprintf(fp, "                                       commands\n");
    fprintf(fp, "  -@, --nothing                      Ignored\n");
    fprintf(fp, "  -v, --version                      Print phpspy version and exit\n");
    fprintf(fp, "\n");
    fprintf(fp, "Experimental options:\n");
    fprintf(fp, "  -j, --event-handler=<handler>      Set event handler (fout, callgrind)\n");
    fprintf(fp, "                                       (default: fout)\n");
    fprintf(fp, "  -J, --event-handler-opts=<opts>    Set event handler options\n");
    fprintf(fp, "                                       (fout: m=use mutex to prevent\n");
    fprintf(fp, "                                       interlaced writes on stdout in `-P`\n");
    fprintf(fp, "                                       mode)\n");
    fprintf(fp, "  -S, --pause-process                Pause process while reading stacktrace\n");
    fprintf(fp, "                                       (unsafe for production!)\n");
    fprintf(fp, "  -e, --peek-var=<varspec>           Peek at the contents of the var located\n");
    fprintf(fp, "                                       at `varspec`, which has the format:\n");
    fprintf(fp, "                                       <varname>@<path>:<lineno>\n");
    fprintf(fp, "                                       <varname>@<path>:<start>-<end>\n");
    fprintf(fp, "                                       e.g., xyz@/path/to.php:10-20\n");
    fprintf(fp, "  -g, --peek-global=<glospec>        Peek at the contents of a global var\n");
    fprintf(fp, "                                       located at `glospec`, which has\n");
    fprintf(fp, "                                       the format: <global>.<key>\n");
    fprintf(fp, "                                       where <global> is one of:\n");
    fprintf(fp, "                                       post|get|cookie|server|files|globals\n");
    fprintf(fp, "                                       e.g., server.REQUEST_TIME\n");
    fprintf(fp, "  -t, --top                          Show dynamic top-like output\n");
    cleanup();
    exit(exit_code);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
leaq 0x11d99(%rip), %rdi     # 0x1c9f1
movl $0x7, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d88(%rip), %rdi     # 0x1c9f9
movl $0x1c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d8c(%rip), %rdi     # 0x1ca16
movl $0x23, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d97(%rip), %rdi     # 0x1ca3a
movl $0x1e, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0xa, %edi
movq %r14, %rsi
callq 0x6290
leaq 0x11d90(%rip), %rdi     # 0x1ca59
movl $0x9, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d81(%rip), %rdi     # 0x1ca63
movl $0x34, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d9d(%rip), %rdi     # 0x1ca98
movl $0x40, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11dc5(%rip), %rdi     # 0x1cad9
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11df4(%rip), %rdi     # 0x1cb21
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11e26(%rip), %rdi     # 0x1cb6c
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl 0x1a5d6(%rip), %edx     # 0x25334
leaq 0x11e54(%rip), %r15     # 0x1cbb9
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11e76(%rip), %rdi     # 0x1cbef
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a5a6(%rip), %rdx     # 0x25338
leaq 0x11ea2(%rip), %rsi     # 0x1cc3b
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11ed8(%rip), %rdi     # 0x1cc82
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0x3b9aca00, %eax       # imm = 0x3B9ACA00
xorl %edx, %edx
divq 0x1a56e(%rip)           # 0x25338
leaq 0x11ef3(%rip), %rsi     # 0x1ccc4
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x6320
leaq 0x11f26(%rip), %rdi     # 0x1cd0b
movl $0x35, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a562(%rip), %rdx     # 0x25360
leaq 0x11f3c(%rip), %rsi     # 0x1cd41
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11f61(%rip), %rdi     # 0x1cd77
movl $0x4e, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f97(%rip), %rdi     # 0x1cdc6
movl $0x4d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11fcc(%rip), %rdi     # 0x1ce14
movl $0x49, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1b277(%rip), %rdx     # 0x260d8
leaq 0x11ff6(%rip), %r12     # 0x1ce5e
movq %r14, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12026(%rip), %rdi     # 0x1cea2
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12058(%rip), %rdi     # 0x1ceed
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1b232(%rip), %rdx     # 0x260e0
movq %r14, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12076(%rip), %rdi     # 0x1cf38
movl $0x3f, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl 0x1a466(%rip), %edx     # 0x25340
leaq 0x12097(%rip), %rsi     # 0x1cf78
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x120ca(%rip), %rdi     # 0x1cfbc
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x120f9(%rip), %rdi     # 0x1d004
movl $0x46, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12127(%rip), %r12     # 0x1d04b
movl $0x39, %esi
movl $0x1, %edx
movq %r12, %rdi
movq %r14, %rcx
callq 0x65a0
leaq 0x12145(%rip), %rdi     # 0x1d085
movl $0x3d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1216a(%rip), %rdi     # 0x1d0c3
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1219d(%rip), %rdi     # 0x1d10f
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x121d1(%rip), %rdi     # 0x1d15c
movl $0x46, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x121ff(%rip), %rdi     # 0x1d1a3
movl $0x43, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a38b(%rip), %rdx     # 0x25348
leaq 0x12223(%rip), %rsi     # 0x1d1e7
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x12252(%rip), %rdi     # 0x1d227
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a362(%rip), %rdx     # 0x25350
leaq 0x12275(%rip), %r13     # 0x1d26a
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12297(%rip), %rdi     # 0x1d2a0
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a336(%rip), %rdx     # 0x25358
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x122ad(%rip), %rdi     # 0x1d2e3
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1b069(%rip), %rdx     # 0x260b8
leaq 0x122da(%rip), %rbp     # 0x1d330
movq %r14, %rdi
movq %rbp, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12311(%rip), %rdi     # 0x1d37b
movl $0x48, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1b02d(%rip), %rdx     # 0x260b0
movq %r14, %rdi
movq %rbp, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x1232d(%rip), %rdi     # 0x1d3c4
movl $0x40, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12355(%rip), %rdi     # 0x1d405
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12384(%rip), %rdi     # 0x1d44d
movl $0x48, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x123b4(%rip), %rdi     # 0x1d496
movl $0x49, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x123e5(%rip), %rdi     # 0x1d4e0
movl $0x48, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12415(%rip), %rdi     # 0x1d529
movl $0x43, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl 0x1a244(%rip), %edx     # 0x25370
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x1242d(%rip), %rdi     # 0x1d56d
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12457(%rip), %rdi     # 0x1d5b0
movl $0x37, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12476(%rip), %rdi     # 0x1d5e8
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1249f(%rip), %rdi     # 0x1d62a
movl $0x3f, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x124c6(%rip), %rdi     # 0x1d66a
movl $0x3a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0x39, %esi
movl $0x1, %edx
movq %r12, %rdi
movq %r14, %rcx
callq 0x65a0
leaq 0x124d3(%rip), %rdi     # 0x1d6a5
movl $0x3b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x124f6(%rip), %rdi     # 0x1d6e1
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12525(%rip), %rdi     # 0x1d729
movl $0x3d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1254a(%rip), %rdi     # 0x1d767
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a142(%rip), %rdx     # 0x25378
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12568(%rip), %rdi     # 0x1d7b2
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1259c(%rip), %rdi     # 0x1d7ff
movl $0x30, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x125b4(%rip), %rdi     # 0x1d830
movl $0x2d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x125c9(%rip), %rdi     # 0x1d85e
movl $0x43, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0xa, %edi
movq %r14, %rsi
callq 0x6290
leaq 0x125e7(%rip), %rdi     # 0x1d8a2
movl $0x16, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x125e5(%rip), %rdi     # 0x1d8b9
movl $0x49, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12616(%rip), %rdi     # 0x1d903
movl $0x37, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12635(%rip), %rdi     # 0x1d93b
movl $0x3f, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1265c(%rip), %rdi     # 0x1d97b
movl $0x45, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12689(%rip), %rdi     # 0x1d9c1
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x126bc(%rip), %rdi     # 0x1da0d
movl $0x2d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x126d1(%rip), %rdi     # 0x1da3b
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12705(%rip), %rdi     # 0x1da88
movl $0x40, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1272d(%rip), %rdi     # 0x1dac9
movl $0x4d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12762(%rip), %rdi     # 0x1db17
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12795(%rip), %rdi     # 0x1db63
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x127be(%rip), %rdi     # 0x1dba5
movl $0x46, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x127ec(%rip), %rdi     # 0x1dbec
movl $0x44, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12818(%rip), %rdi     # 0x1dc31
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1284a(%rip), %rdi     # 0x1dc7c
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12879(%rip), %rdi     # 0x1dcc4
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x128a3(%rip), %rdi     # 0x1dd07
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x128cc(%rip), %rdi     # 0x1dd49
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12900(%rip), %rdi     # 0x1dd96
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12929(%rip), %rdi     # 0x1ddd8
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
callq 0x13d4f
movl %ebx, %edi
callq 0x6590