// File: /workspace/github_c_makefile_star2_O1/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 0x11b63(%rip), %rdi     # 0x1c9f1
movl $0x7, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b52(%rip), %rdi     # 0x1c9f9
movl $0x1c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b56(%rip), %rdi     # 0x1ca16
movl $0x23, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b61(%rip), %rdi     # 0x1ca3a
movl $0x1e, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0xa, %edi
movq %r14, %rsi
callq 0x6290
leaq 0x11b5a(%rip), %rdi     # 0x1ca59
movl $0x9, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b4b(%rip), %rdi     # 0x1ca63
movl $0x34, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b67(%rip), %rdi     # 0x1ca98
movl $0x40, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b8f(%rip), %rdi     # 0x1cad9
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11bbe(%rip), %rdi     # 0x1cb21
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11bf0(%rip), %rdi     # 0x1cb6c
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl 0x1a3a0(%rip), %edx     # 0x25334
leaq 0x11c1e(%rip), %r15     # 0x1cbb9
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11c40(%rip), %rdi     # 0x1cbef
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a370(%rip), %rdx     # 0x25338
leaq 0x11c6c(%rip), %rsi     # 0x1cc3b
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11ca2(%rip), %rdi     # 0x1cc82
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0x3b9aca00, %eax       # imm = 0x3B9ACA00
xorl %edx, %edx
divq 0x1a338(%rip)           # 0x25338
leaq 0x11cbd(%rip), %rsi     # 0x1ccc4
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x6320
leaq 0x11cf0(%rip), %rdi     # 0x1cd0b
movl $0x35, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a32c(%rip), %rdx     # 0x25360
leaq 0x11d06(%rip), %rsi     # 0x1cd41
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11d2b(%rip), %rdi     # 0x1cd77
movl $0x4e, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d61(%rip), %rdi     # 0x1cdc6
movl $0x4d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d96(%rip), %rdi     # 0x1ce14
movl $0x49, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1b041(%rip), %rdx     # 0x260d8
leaq 0x11dc0(%rip), %r12     # 0x1ce5e
movq %r14, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11df0(%rip), %rdi     # 0x1cea2
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11e22(%rip), %rdi     # 0x1ceed
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1affc(%rip), %rdx     # 0x260e0
movq %r14, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11e40(%rip), %rdi     # 0x1cf38
movl $0x3f, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl 0x1a230(%rip), %edx     # 0x25340
leaq 0x11e61(%rip), %rsi     # 0x1cf78
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11e94(%rip), %rdi     # 0x1cfbc
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11ec3(%rip), %rdi     # 0x1d004
movl $0x46, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11ef1(%rip), %r12     # 0x1d04b
movl $0x39, %esi
movl $0x1, %edx
movq %r12, %rdi
movq %r14, %rcx
callq 0x65a0
leaq 0x11f0f(%rip), %rdi     # 0x1d085
movl $0x3d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f34(%rip), %rdi     # 0x1d0c3
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f67(%rip), %rdi     # 0x1d10f
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f9b(%rip), %rdi     # 0x1d15c
movl $0x46, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x11fc9(%rip), %rdi     # 0x1d1a3
movl $0x43, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a155(%rip), %rdx     # 0x25348
leaq 0x11fed(%rip), %rsi     # 0x1d1e7
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x1201c(%rip), %rdi     # 0x1d227
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a12c(%rip), %rdx     # 0x25350
leaq 0x1203f(%rip), %r13     # 0x1d26a
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12061(%rip), %rdi     # 0x1d2a0
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1a100(%rip), %rdx     # 0x25358
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12077(%rip), %rdi     # 0x1d2e3
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1ae33(%rip), %rdx     # 0x260b8
leaq 0x120a4(%rip), %rbp     # 0x1d330
movq %r14, %rdi
movq %rbp, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x120db(%rip), %rdi     # 0x1d37b
movl $0x48, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x1adf7(%rip), %rdx     # 0x260b0
movq %r14, %rdi
movq %rbp, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x120f7(%rip), %rdi     # 0x1d3c4
movl $0x40, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1211f(%rip), %rdi     # 0x1d405
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1214e(%rip), %rdi     # 0x1d44d
movl $0x48, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1217e(%rip), %rdi     # 0x1d496
movl $0x49, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x121af(%rip), %rdi     # 0x1d4e0
movl $0x48, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x121df(%rip), %rdi     # 0x1d529
movl $0x43, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl 0x1a00e(%rip), %edx     # 0x25370
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x121f7(%rip), %rdi     # 0x1d56d
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12221(%rip), %rdi     # 0x1d5b0
movl $0x37, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12240(%rip), %rdi     # 0x1d5e8
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12269(%rip), %rdi     # 0x1d62a
movl $0x3f, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12290(%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 0x1229d(%rip), %rdi     # 0x1d6a5
movl $0x3b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x122c0(%rip), %rdi     # 0x1d6e1
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x122ef(%rip), %rdi     # 0x1d729
movl $0x3d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12314(%rip), %rdi     # 0x1d767
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movq 0x19f0c(%rip), %rdx     # 0x25378
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x12332(%rip), %rdi     # 0x1d7b2
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12366(%rip), %rdi     # 0x1d7ff
movl $0x30, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1237e(%rip), %rdi     # 0x1d830
movl $0x2d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12393(%rip), %rdi     # 0x1d85e
movl $0x43, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
movl $0xa, %edi
movq %r14, %rsi
callq 0x6290
leaq 0x123b1(%rip), %rdi     # 0x1d8a2
movl $0x16, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x123af(%rip), %rdi     # 0x1d8b9
movl $0x49, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x123e0(%rip), %rdi     # 0x1d903
movl $0x37, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x123ff(%rip), %rdi     # 0x1d93b
movl $0x3f, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12426(%rip), %rdi     # 0x1d97b
movl $0x45, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12453(%rip), %rdi     # 0x1d9c1
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12486(%rip), %rdi     # 0x1da0d
movl $0x2d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1249b(%rip), %rdi     # 0x1da3b
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x124cf(%rip), %rdi     # 0x1da88
movl $0x40, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x124f7(%rip), %rdi     # 0x1dac9
movl $0x4d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1252c(%rip), %rdi     # 0x1db17
movl $0x4b, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1255f(%rip), %rdi     # 0x1db63
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12588(%rip), %rdi     # 0x1dba5
movl $0x46, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x125b6(%rip), %rdi     # 0x1dbec
movl $0x44, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x125e2(%rip), %rdi     # 0x1dc31
movl $0x4a, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12614(%rip), %rdi     # 0x1dc7c
movl $0x47, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12643(%rip), %rdi     # 0x1dcc4
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x1266d(%rip), %rdi     # 0x1dd07
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x12696(%rip), %rdi     # 0x1dd49
movl $0x4c, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x126ca(%rip), %rdi     # 0x1dd96
movl $0x41, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
leaq 0x126f3(%rip), %rdi     # 0x1ddd8
movl $0x42, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x65a0
callq 0x14120
movl %ebx, %edi
callq 0x6590