// File: /workspace/github_c_makefile_star2_O2/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, 0x4(%rsp)
movq %rdi, %r14
leaq 0x114ee(%rip), %rdi     # 0x1b9f1
pushq $0x7
popq %rsi
pushq $0x1
popq %r15
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x114dd(%rip), %rdi     # 0x1b9f9
pushq $0x1c
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x114e5(%rip), %rdi     # 0x1ba16
pushq $0x23
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x114f4(%rip), %rdi     # 0x1ba3a
pushq $0x1e
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
pushq $0xa
popq %rdi
movq %r14, %rsi
callq 0x6290
leaq 0x114f3(%rip), %rdi     # 0x1ba59
pushq $0x9
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x114e8(%rip), %rdi     # 0x1ba63
pushq $0x34
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11508(%rip), %rdi     # 0x1ba98
pushq $0x40
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11534(%rip), %rdi     # 0x1bad9
pushq $0x47
popq %r12
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11563(%rip), %rdi     # 0x1bb21
pushq $0x4a
popq %rsi
movq %rsi, %r13
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11596(%rip), %rdi     # 0x1bb6c
pushq $0x4c
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movl 0x1ad4a(%rip), %edx     # 0x25334
leaq 0x115c8(%rip), %rsi     # 0x1bbb9
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x115ed(%rip), %rdi     # 0x1bbef
pushq $0x4b
popq %rbp
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1ad1e(%rip), %rdx     # 0x25338
leaq 0x1161a(%rip), %rsi     # 0x1bc3b
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11650(%rip), %rdi     # 0x1bc82
pushq $0x41
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movl $0x3b9aca00, %eax       # imm = 0x3B9ACA00
xorl %edx, %edx
divq 0x1acea(%rip)           # 0x25338
leaq 0x1166f(%rip), %rsi     # 0x1bcc4
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x6320
leaq 0x116a2(%rip), %rdi     # 0x1bd0b
pushq $0x35
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1ace2(%rip), %rdx     # 0x25360
leaq 0x116bc(%rip), %rsi     # 0x1bd41
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x116e1(%rip), %rdi     # 0x1bd77
pushq $0x4e
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x1171b(%rip), %rdi     # 0x1bdc6
pushq $0x4d
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11754(%rip), %rdi     # 0x1be14
pushq $0x49
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1ba03(%rip), %rdx     # 0x260d8
leaq 0x11782(%rip), %rbx     # 0x1be5e
movq %r14, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x117b2(%rip), %rdi     # 0x1bea2
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x117e8(%rip), %rdi     # 0x1beed
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1b9c6(%rip), %rdx     # 0x260e0
movq %r14, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x1180a(%rip), %rdi     # 0x1bf38
pushq $0x3f
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movl 0x1abfe(%rip), %edx     # 0x25340
leaq 0x1182f(%rip), %rsi     # 0x1bf78
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11862(%rip), %rdi     # 0x1bfbc
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11895(%rip), %rdi     # 0x1c004
pushq $0x46
popq %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x118c4(%rip), %rdi     # 0x1c04b
pushq $0x39
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x118e9(%rip), %rdi     # 0x1c085
pushq $0x3d
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11912(%rip), %rdi     # 0x1c0c3
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11949(%rip), %rdi     # 0x1c10f
pushq $0x4c
popq %r13
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x1197d(%rip), %rdi     # 0x1c15c
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x119af(%rip), %rdi     # 0x1c1a3
pushq $0x43
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1ab3f(%rip), %rdx     # 0x25348
leaq 0x119d7(%rip), %rsi     # 0x1c1e7
movq %r14, %rdi
xorl %eax, %eax
callq 0x6320
leaq 0x11a06(%rip), %rdi     # 0x1c227
pushq $0x42
popq %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1ab17(%rip), %rdx     # 0x25350
leaq 0x11a2a(%rip), %r12     # 0x1c26a
movq %r14, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11a4c(%rip), %rdi     # 0x1c2a0
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1aaef(%rip), %rdx     # 0x25358
movq %r14, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11a66(%rip), %rdi     # 0x1c2e3
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1b826(%rip), %rdx     # 0x260b8
leaq 0x11a97(%rip), %r13     # 0x1c330
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11ace(%rip), %rdi     # 0x1c37b
pushq $0x48
popq %rbp
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1b7eb(%rip), %rdx     # 0x260b0
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x6320
leaq 0x11aeb(%rip), %rdi     # 0x1c3c4
pushq $0x40
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b17(%rip), %rdi     # 0x1c405
pushq $0x47
popq %r12
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b46(%rip), %rdi     # 0x1c44d
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11b7a(%rip), %rdi     # 0x1c496
pushq $0x49
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11baf(%rip), %rdi     # 0x1c4e0
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11be3(%rip), %rdi     # 0x1c529
pushq $0x43
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movl 0x1aa16(%rip), %edx     # 0x25370
movq %r14, %rdi
leaq 0x11255(%rip), %rsi     # 0x1bbb9
xorl %eax, %eax
callq 0x6320
leaq 0x11bfb(%rip), %rdi     # 0x1c56d
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11c29(%rip), %rdi     # 0x1c5b0
pushq $0x37
popq %rbp
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11c49(%rip), %rdi     # 0x1c5e8
pushq $0x41
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11c76(%rip), %rdi     # 0x1c62a
pushq $0x3f
popq %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11c9e(%rip), %rdi     # 0x1c66a
pushq $0x3a
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x1166a(%rip), %rdi     # 0x1c04b
pushq $0x39
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11caf(%rip), %rdi     # 0x1c6a5
pushq $0x3b
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11cd6(%rip), %rdi     # 0x1c6e1
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d09(%rip), %rdi     # 0x1c729
pushq $0x3d
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d32(%rip), %rdi     # 0x1c767
pushq $0x4a
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
movq 0x1a92e(%rip), %rdx     # 0x25378
movq %r14, %rdi
leaq 0x11816(%rip), %rsi     # 0x1c26a
xorl %eax, %eax
callq 0x6320
leaq 0x11d50(%rip), %rdi     # 0x1c7b2
pushq $0x4c
popq %r13
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11d84(%rip), %rdi     # 0x1c7ff
pushq $0x30
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11da0(%rip), %rdi     # 0x1c830
pushq $0x2d
popq %r12
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11db5(%rip), %rdi     # 0x1c85e
pushq $0x43
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
pushq $0xa
popq %rdi
movq %r14, %rsi
callq 0x6290
leaq 0x11dd9(%rip), %rdi     # 0x1c8a2
pushq $0x16
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11ddb(%rip), %rdi     # 0x1c8b9
pushq $0x49
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11e10(%rip), %rdi     # 0x1c903
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11e33(%rip), %rdi     # 0x1c93b
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11e5e(%rip), %rdi     # 0x1c97b
pushq $0x45
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11e8f(%rip), %rdi     # 0x1c9c1
pushq $0x4b
popq %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11ec3(%rip), %rdi     # 0x1ca0d
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11edc(%rip), %rdi     # 0x1ca3b
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f14(%rip), %rdi     # 0x1ca88
pushq $0x40
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f40(%rip), %rdi     # 0x1cac9
pushq $0x4d
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11f79(%rip), %rdi     # 0x1cb17
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11fb0(%rip), %rdi     # 0x1cb63
pushq $0x41
popq %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x11fda(%rip), %rdi     # 0x1cba5
pushq $0x46
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x1200c(%rip), %rdi     # 0x1cbec
pushq $0x44
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x1203c(%rip), %rdi     # 0x1cc31
pushq $0x4a
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x12072(%rip), %rdi     # 0x1cc7c
pushq $0x47
popq %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x120a5(%rip), %rdi     # 0x1ccc4
pushq $0x42
popq %r12
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x120cf(%rip), %rdi     # 0x1cd07
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x120fc(%rip), %rdi     # 0x1cd49
movq %r13, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x12134(%rip), %rdi     # 0x1cd96
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
leaq 0x12161(%rip), %rdi     # 0x1cdd8
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x65a0
callq 0x13cca
movl 0x4(%rsp), %edi
callq 0x6590