#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ _filter_all_classes(int);
int /*<<< orphan*/ _filter_all_nvrm_ioctls(int);
int /*<<< orphan*/ _filter_all_nvrm_mthds(int);
int /*<<< orphan*/ _filter_buffer_usage(int);
int /*<<< orphan*/ _filter_class(char *, int);
int /*<<< orphan*/ _filter_cp(int);
int /*<<< orphan*/ _filter_decode_pb(int);
int /*<<< orphan*/ _filter_dump_object_tree_on_create_destroy(int);
int /*<<< orphan*/ _filter_fp(int);
int /*<<< orphan*/ _filter_gp(int);
int /*<<< orphan*/ _filter_gpu_addr(int);
int /*<<< orphan*/ _filter_info(int);
int /*<<< orphan*/ _filter_ioctl_desc(int);
int /*<<< orphan*/ _filter_ioctl_raw(int);
int /*<<< orphan*/ _filter_macro_dis_enabled(int);
int /*<<< orphan*/ _filter_macro_rt(int);
int /*<<< orphan*/ _filter_macro_rt_verbose(int);
int /*<<< orphan*/ _filter_msg(int);
int /*<<< orphan*/ _filter_nvrm_describe_classes(int);
int /*<<< orphan*/ _filter_nvrm_describe_handles(int);
int /*<<< orphan*/ _filter_nvrm_ioctl(char *, int);
int /*<<< orphan*/ _filter_nvrm_mthd(char *, int);
int /*<<< orphan*/ _filter_nvrm_show_unk_zero_fields(int);
int /*<<< orphan*/ _filter_read(int);
int /*<<< orphan*/ _filter_sys_mmap(int);
int /*<<< orphan*/ _filter_sys_mmap_details(int);
int /*<<< orphan*/ _filter_sys_mremap(int);
int /*<<< orphan*/ _filter_sys_munmap(int);
int /*<<< orphan*/ _filter_sys_open(int);
int /*<<< orphan*/ _filter_sys_write(int);
int /*<<< orphan*/ _filter_tcp(int);
int /*<<< orphan*/ _filter_tep(int);
int /*<<< orphan*/ _filter_tic(int);
int /*<<< orphan*/ _filter_tsc(int);
int /*<<< orphan*/ _filter_vp(int);
int /*<<< orphan*/ _filter_write(int);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fflush(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *);
int /*<<< orphan*/ free(char *);
int /*<<< orphan*/ stderr;
scalar_t__ strcmp(char *, char *);
char *strdup(char const *);
scalar_t__ strncmp(char *, char *, int);
char *strsep(char **, char *);
void handle_filter_opt(const char *_arg, int en) {
  char *arg = strdup(_arg);
  char *tokens = arg;
  while (tokens) {
    char *token = strsep(&tokens, ",");
    if (strcmp(token, "write") == 0)
      _filter_write(en);
    else if (strcmp(token, "read") == 0)
      _filter_read(en);
    else if (strcmp(token, "gpu-addr") == 0)
      _filter_gpu_addr(en);
    else if (strcmp(token, "mem") == 0) {
      _filter_write(en);
      _filter_read(en);
    } else if (strcmp(token, "ioctl-raw") == 0)
      _filter_ioctl_raw(en);
    else if (strcmp(token, "ioctl-desc") == 0)
      _filter_ioctl_desc(en);
    else if (strcmp(token, "ioctl") == 0) {
      if (!en)
        _filter_ioctl_raw(en);
      _filter_ioctl_desc(en);
      _filter_dump_object_tree_on_create_destroy(en);
    } else if (strcmp(token, "tsc") == 0)
      _filter_tsc(en);
    else if (strcmp(token, "tic") == 0)
      _filter_tic(en);
    else if (strcmp(token, "vp") == 0)
      _filter_vp(en);
    else if (strcmp(token, "fp") == 0)
      _filter_fp(en);
    else if (strcmp(token, "gp") == 0)
      _filter_gp(en);
    else if (strcmp(token, "cp") == 0)
      _filter_cp(en);
    else if (strcmp(token, "tep") == 0)
      _filter_tep(en);
    else if (strcmp(token, "tcp") == 0)
      _filter_tcp(en);
    else if (strcmp(token, "shader") == 0) {
      _filter_vp(en);
      _filter_fp(en);
      _filter_gp(en);
      _filter_tcp(en);
      _filter_tep(en);
    } else if (strcmp(token, "macro-rt-verbose") == 0)
      _filter_macro_rt_verbose(en);
    else if (strcmp(token, "macro-rt") == 0)
      _filter_macro_rt(en);
    else if (strcmp(token, "macro-dis") == 0)
      _filter_macro_dis_enabled(en);
    else if (strcmp(token, "macro") == 0) {
      if (!en)
        _filter_macro_rt_verbose(en);
      _filter_macro_rt(en);
      _filter_macro_dis_enabled(en);
    } else if (strcmp(token, "buffer-usage") == 0)
      _filter_buffer_usage(en);
    else if (strncmp(token, "class=", 6) == 0) {
      if (strcmp(token + 6, "all") == 0)
        _filter_all_classes(en);
      else
        _filter_class(token + 6, en);
    } else if (strcmp(token, "pb") == 0)
      _filter_decode_pb(en);
    else if (strcmp(token, "sys_mmap") == 0)
      _filter_sys_mmap(en);
    else if (strcmp(token, "sys_mmap_details") == 0)
      _filter_sys_mmap_details(en);
    else if (strcmp(token, "sys_munmap") == 0)
      _filter_sys_munmap(en);
    else if (strcmp(token, "sys_mremap") == 0)
      _filter_sys_mremap(en);
    else if (strcmp(token, "sys_open") == 0)
      _filter_sys_open(en);
    else if (strcmp(token, "msg") == 0)
      _filter_msg(en);
    else if (strcmp(token, "sys_write") == 0)
      _filter_sys_write(en);
    else if (strcmp(token, "sys") == 0) {
      _filter_sys_mmap(en);
      if (!en)
        _filter_sys_mmap_details(en);
      _filter_sys_munmap(en);
      _filter_sys_mremap(en);
      _filter_sys_open(en);
      _filter_sys_write(en);
      if (!en)
        _filter_ioctl_raw(en);
      _filter_ioctl_desc(en);
      _filter_dump_object_tree_on_create_destroy(en);
    } else if (strcmp(token, "nvrm-handle-desc") == 0)
      _filter_nvrm_describe_handles(en);
    else if (strcmp(token, "nvrm-class-desc") == 0)
      _filter_nvrm_describe_classes(en);
    else if (strncmp(token, "nvrm-mthd=", 10) == 0) {
      if (strcmp(token + 10, "all") == 0)
        _filter_all_nvrm_mthds(en);
      else
        _filter_nvrm_mthd(token + 10, en);
      if (en) {
        _filter_nvrm_ioctl("call", en);
        _filter_ioctl_desc(en);
      }
    } else if (strcmp(token, "nvrm-unk-0-fields") == 0)
      _filter_nvrm_show_unk_zero_fields(en);
    else if (strncmp(token, "nvrm-ioctl=", 11) == 0) {
      if (strcmp(token + 11, "all") == 0)
        _filter_all_nvrm_ioctls(en);
      else
        _filter_nvrm_ioctl(token + 11, en);
      if (en)
        _filter_ioctl_desc(en);
    } else if (strcmp(token, "nvrm-obj-tree") == 0)
      _filter_dump_object_tree_on_create_destroy(en);
    else if (strcmp(token, "nvrm") == 0) {
      if (en)
        _filter_ioctl_desc(en);
      _filter_all_nvrm_ioctls(en);
      _filter_all_nvrm_mthds(en);
      _filter_nvrm_describe_handles(en);
      _filter_nvrm_describe_classes(en);
      _filter_dump_object_tree_on_create_destroy(en);
    } else if (strcmp(token, "info") == 0)
      _filter_info(en);
    else if (strcmp(token, "all") == 0) {
      _filter_info(en);
      _filter_write(en);
      _filter_read(en);
      _filter_gpu_addr(en);
      _filter_ioctl_raw(en);
      _filter_ioctl_desc(en);
      _filter_tsc(en);
      _filter_tic(en);
      _filter_vp(en);
      _filter_fp(en);
      _filter_gp(en);
      _filter_cp(en);
      _filter_tep(en);
      _filter_tcp(en);
      _filter_macro_rt_verbose(en);
      _filter_macro_rt(en);
      _filter_macro_dis_enabled(en);
      _filter_buffer_usage(en);
      _filter_all_classes(en);
      _filter_decode_pb(en);
      _filter_sys_mmap(en);
      _filter_sys_mmap_details(en);
      _filter_sys_munmap(en);
      _filter_sys_mremap(en);
      _filter_sys_open(en);
      _filter_msg(en);
      _filter_sys_write(en);
      _filter_nvrm_describe_handles(en);
      _filter_nvrm_describe_classes(en);
      _filter_all_nvrm_mthds(en);
      _filter_nvrm_show_unk_zero_fields(en);
      _filter_all_nvrm_ioctls(en);
      _filter_dump_object_tree_on_create_destroy(en);
    } else {
      fprintf(stderr, "unknown token: %s\n", token);
      fflush(stderr);
      exit(1);
    }
  }
  free(arg);
}


x86 assembly (clang, -O0):
<handle_filter_opt>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
call   22d0 <strdup@plt>
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x20(%rbp)
cmpq   $0x0,-0x20(%rbp)
je     2dd1 <handle_filter_opt+0xa11>
lea    -0x20(%rbp),%rdi
lea    0xc06(%rip),%rsi
call   2210 <strsep@plt>
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xcc3(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    242a <handle_filter_opt+0x6a>
mov    -0xc(%rbp),%edi
call   2050 <_filter_write@plt>
jmp    2dcc <handle_filter_opt+0xa0c>
mov    -0x28(%rbp),%rdi
lea    0xbcd(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2451 <handle_filter_opt+0x91>
mov    -0xc(%rbp),%edi
call   2280 <_filter_read@plt>
jmp    2dc7 <handle_filter_opt+0xa07>
mov    -0x28(%rbp),%rdi
lea    0xbab(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2478 <handle_filter_opt+0xb8>
mov    -0xc(%rbp),%edi
call   20f0 <_filter_gpu_addr@plt>
jmp    2dc2 <handle_filter_opt+0xa02>
mov    -0x28(%rbp),%rdi
lea    0xb8d(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    24a7 <handle_filter_opt+0xe7>
mov    -0xc(%rbp),%edi
call   2050 <_filter_write@plt>
mov    -0xc(%rbp),%edi
call   2280 <_filter_read@plt>
jmp    2dbd <handle_filter_opt+0x9fd>
mov    -0x28(%rbp),%rdi
lea    0xb62(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    24ce <handle_filter_opt+0x10e>
mov    -0xc(%rbp),%edi
call   2200 <_filter_ioctl_raw@plt>
jmp    2db8 <handle_filter_opt+0x9f8>
mov    -0x28(%rbp),%rdi
lea    0xb45(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    24f5 <handle_filter_opt+0x135>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
jmp    2db3 <handle_filter_opt+0x9f3>
mov    -0x28(%rbp),%rdi
lea    0xb29(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2536 <handle_filter_opt+0x176>
cmpl   $0x0,-0xc(%rbp)
jne    2521 <handle_filter_opt+0x161>
mov    -0xc(%rbp),%edi
call   2200 <_filter_ioctl_raw@plt>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
mov    -0xc(%rbp),%edi
call   22e0 <_filter_dump_object_tree_on_create_destroy@plt>
jmp    2dae <handle_filter_opt+0x9ee>
mov    -0x28(%rbp),%rdi
lea    0xaee(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    255d <handle_filter_opt+0x19d>
mov    -0xc(%rbp),%edi
call   21c0 <_filter_tsc@plt>
jmp    2da9 <handle_filter_opt+0x9e9>
mov    -0x28(%rbp),%rdi
lea    0xacb(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2584 <handle_filter_opt+0x1c4>
mov    -0xc(%rbp),%edi
call   2290 <_filter_tic@plt>
jmp    2da4 <handle_filter_opt+0x9e4>
mov    -0x28(%rbp),%rdi
lea    0xaa8(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    25ab <handle_filter_opt+0x1eb>
mov    -0xc(%rbp),%edi
call   2130 <_filter_vp@plt>
jmp    2d9f <handle_filter_opt+0x9df>
mov    -0x28(%rbp),%rdi
lea    0xa84(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    25d2 <handle_filter_opt+0x212>
mov    -0xc(%rbp),%edi
call   2170 <_filter_fp@plt>
jmp    2d9a <handle_filter_opt+0x9da>
mov    -0x28(%rbp),%rdi
lea    0xa60(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    25f9 <handle_filter_opt+0x239>
mov    -0xc(%rbp),%edi
call   2090 <_filter_gp@plt>
jmp    2d95 <handle_filter_opt+0x9d5>
mov    -0x28(%rbp),%rdi
lea    0xa41(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2620 <handle_filter_opt+0x260>
mov    -0xc(%rbp),%edi
call   21d0 <_filter_cp@plt>
jmp    2d90 <handle_filter_opt+0x9d0>
mov    -0x28(%rbp),%rdi
lea    0xa15(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2647 <handle_filter_opt+0x287>
mov    -0xc(%rbp),%edi
call   2060 <_filter_tep@plt>
jmp    2d8b <handle_filter_opt+0x9cb>
mov    -0x28(%rbp),%rdi
lea    0x9f2(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    266e <handle_filter_opt+0x2ae>
mov    -0xc(%rbp),%edi
call   2080 <_filter_tcp@plt>
jmp    2d86 <handle_filter_opt+0x9c6>
mov    -0x28(%rbp),%rdi
lea    0x9cf(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    26b5 <handle_filter_opt+0x2f5>
mov    -0xc(%rbp),%edi
call   2130 <_filter_vp@plt>
mov    -0xc(%rbp),%edi
call   2170 <_filter_fp@plt>
mov    -0xc(%rbp),%edi
call   2090 <_filter_gp@plt>
mov    -0xc(%rbp),%edi
call   2080 <_filter_tcp@plt>
mov    -0xc(%rbp),%edi
call   2060 <_filter_tep@plt>
jmp    2d81 <handle_filter_opt+0x9c1>
mov    -0x28(%rbp),%rdi
lea    0x98f(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    26dc <handle_filter_opt+0x31c>
mov    -0xc(%rbp),%edi
call   2160 <_filter_macro_rt_verbose@plt>
jmp    2d7c <handle_filter_opt+0x9bc>
mov    -0x28(%rbp),%rdi
lea    0x979(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2703 <handle_filter_opt+0x343>
mov    -0xc(%rbp),%edi
call   2030 <_filter_macro_rt@plt>
jmp    2d77 <handle_filter_opt+0x9b7>
mov    -0x28(%rbp),%rdi
lea    0x95b(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    272a <handle_filter_opt+0x36a>
mov    -0xc(%rbp),%edi
call   2070 <_filter_macro_dis_enabled@plt>
jmp    2d72 <handle_filter_opt+0x9b2>
mov    -0x28(%rbp),%rdi
lea    0x93e(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    276b <handle_filter_opt+0x3ab>
cmpl   $0x0,-0xc(%rbp)
jne    2756 <handle_filter_opt+0x396>
mov    -0xc(%rbp),%edi
call   2160 <_filter_macro_rt_verbose@plt>
mov    -0xc(%rbp),%edi
call   2030 <_filter_macro_rt@plt>
mov    -0xc(%rbp),%edi
call   2070 <_filter_macro_dis_enabled@plt>
jmp    2d6d <handle_filter_opt+0x9ad>
mov    -0x28(%rbp),%rdi
lea    0x903(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2792 <handle_filter_opt+0x3d2>
mov    -0xc(%rbp),%edi
call   20b0 <_filter_buffer_usage@plt>
jmp    2d68 <handle_filter_opt+0x9a8>
mov    -0x28(%rbp),%rdi
lea    0x8e9(%rip),%rsi
mov    $0x6,%edx
call   20a0 <strncmp@plt>
cmp    $0x0,%rax
jne    27f1 <handle_filter_opt+0x431>
mov    -0x28(%rbp),%rdi
add    $0x6,%rdi
lea    0x948(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    27dc <handle_filter_opt+0x41c>
mov    -0xc(%rbp),%edi
call   21a0 <_filter_all_classes@plt>
jmp    27ec <handle_filter_opt+0x42c>
mov    -0x28(%rbp),%rdi
add    $0x6,%rdi
mov    -0xc(%rbp),%esi
call   2120 <_filter_class@plt>
jmp    2d63 <handle_filter_opt+0x9a3>
mov    -0x28(%rbp),%rdi
lea    0x891(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2818 <handle_filter_opt+0x458>
mov    -0xc(%rbp),%edi
call   20d0 <_filter_decode_pb@plt>
jmp    2d5e <handle_filter_opt+0x99e>
mov    -0x28(%rbp),%rdi
lea    0x86d(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    283f <handle_filter_opt+0x47f>
mov    -0xc(%rbp),%edi
call   2100 <_filter_sys_mmap@plt>
jmp    2d59 <handle_filter_opt+0x999>
mov    -0x28(%rbp),%rdi
lea    0x84f(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2866 <handle_filter_opt+0x4a6>
mov    -0xc(%rbp),%edi
call   2220 <_filter_sys_mmap_details@plt>
jmp    2d54 <handle_filter_opt+0x994>
mov    -0x28(%rbp),%rdi
lea    0x839(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    288d <handle_filter_opt+0x4cd>
mov    -0xc(%rbp),%edi
call   20c0 <_filter_sys_munmap@plt>
jmp    2d4f <handle_filter_opt+0x98f>
mov    -0x28(%rbp),%rdi
lea    0x81d(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    28b4 <handle_filter_opt+0x4f4>
mov    -0xc(%rbp),%edi
call   2110 <_filter_sys_mremap@plt>
jmp    2d4a <handle_filter_opt+0x98a>
mov    -0x28(%rbp),%rdi
lea    0x801(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    28db <handle_filter_opt+0x51b>
mov    -0xc(%rbp),%edi
call   21b0 <_filter_sys_open@plt>
jmp    2d45 <handle_filter_opt+0x985>
mov    -0x28(%rbp),%rdi
lea    0x7e3(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2902 <handle_filter_opt+0x542>
mov    -0xc(%rbp),%edi
call   2270 <_filter_msg@plt>
jmp    2d40 <handle_filter_opt+0x980>
mov    -0x28(%rbp),%rdi
lea    0x7c0(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2929 <handle_filter_opt+0x569>
mov    -0xc(%rbp),%edi
call   2260 <_filter_sys_write@plt>
jmp    2d3b <handle_filter_opt+0x97b>
mov    -0x28(%rbp),%rdi
lea    0x7a3(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    29a4 <handle_filter_opt+0x5e4>
mov    -0xc(%rbp),%edi
call   2100 <_filter_sys_mmap@plt>
cmpl   $0x0,-0xc(%rbp)
jne    295d <handle_filter_opt+0x59d>
mov    -0xc(%rbp),%edi
call   2220 <_filter_sys_mmap_details@plt>
mov    -0xc(%rbp),%edi
call   20c0 <_filter_sys_munmap@plt>
mov    -0xc(%rbp),%edi
call   2110 <_filter_sys_mremap@plt>
mov    -0xc(%rbp),%edi
call   21b0 <_filter_sys_open@plt>
mov    -0xc(%rbp),%edi
call   2260 <_filter_sys_write@plt>
cmpl   $0x0,-0xc(%rbp)
jne    298f <handle_filter_opt+0x5cf>
mov    -0xc(%rbp),%edi
call   2200 <_filter_ioctl_raw@plt>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
mov    -0xc(%rbp),%edi
call   22e0 <_filter_dump_object_tree_on_create_destroy@plt>
jmp    2d36 <handle_filter_opt+0x976>
mov    -0x28(%rbp),%rdi
lea    0x72c(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    29cb <handle_filter_opt+0x60b>
mov    -0xc(%rbp),%edi
call   22c0 <_filter_nvrm_describe_handles@plt>
jmp    2d31 <handle_filter_opt+0x971>
mov    -0x28(%rbp),%rdi
lea    0x716(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    29f2 <handle_filter_opt+0x632>
mov    -0xc(%rbp),%edi
call   2140 <_filter_nvrm_describe_classes@plt>
jmp    2d2c <handle_filter_opt+0x96c>
mov    -0x28(%rbp),%rdi
lea    0x6ff(%rip),%rsi
mov    $0xa,%edx
call   20a0 <strncmp@plt>
cmp    $0x0,%rax
jne    2a72 <handle_filter_opt+0x6b2>
mov    -0x28(%rbp),%rdi
add    $0xa,%rdi
lea    0x6e8(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2a3c <handle_filter_opt+0x67c>
mov    -0xc(%rbp),%edi
call   2230 <_filter_all_nvrm_mthds@plt>
jmp    2a4c <handle_filter_opt+0x68c>
mov    -0x28(%rbp),%rdi
add    $0xa,%rdi
mov    -0xc(%rbp),%esi
call   2250 <_filter_nvrm_mthd@plt>
cmpl   $0x0,-0xc(%rbp)
je     2a6d <handle_filter_opt+0x6ad>
mov    -0xc(%rbp),%esi
lea    0x6a7(%rip),%rdi
call   2240 <_filter_nvrm_ioctl@plt>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
jmp    2d27 <handle_filter_opt+0x967>
mov    -0x28(%rbp),%rdi
lea    0x68f(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2a99 <handle_filter_opt+0x6d9>
mov    -0xc(%rbp),%edi
call   21e0 <_filter_nvrm_show_unk_zero_fields@plt>
jmp    2d22 <handle_filter_opt+0x962>
mov    -0x28(%rbp),%rdi
lea    0x67a(%rip),%rsi
mov    $0xb,%edx
call   20a0 <strncmp@plt>
cmp    $0x0,%rax
jne    2b0a <handle_filter_opt+0x74a>
mov    -0x28(%rbp),%rdi
add    $0xb,%rdi
lea    0x641(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2ae3 <handle_filter_opt+0x723>
mov    -0xc(%rbp),%edi
call   20e0 <_filter_all_nvrm_ioctls@plt>
jmp    2af3 <handle_filter_opt+0x733>
mov    -0x28(%rbp),%rdi
add    $0xb,%rdi
mov    -0xc(%rbp),%esi
call   2240 <_filter_nvrm_ioctl@plt>
cmpl   $0x0,-0xc(%rbp)
je     2b05 <handle_filter_opt+0x745>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
jmp    2d1d <handle_filter_opt+0x95d>
mov    -0x28(%rbp),%rdi
lea    0x615(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2b31 <handle_filter_opt+0x771>
mov    -0xc(%rbp),%edi
call   22e0 <_filter_dump_object_tree_on_create_destroy@plt>
jmp    2d18 <handle_filter_opt+0x958>
mov    -0x28(%rbp),%rdi
lea    0x5fc(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2b8a <handle_filter_opt+0x7ca>
cmpl   $0x0,-0xc(%rbp)
je     2b5d <handle_filter_opt+0x79d>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
mov    -0xc(%rbp),%edi
call   20e0 <_filter_all_nvrm_ioctls@plt>
mov    -0xc(%rbp),%edi
call   2230 <_filter_all_nvrm_mthds@plt>
mov    -0xc(%rbp),%edi
call   22c0 <_filter_nvrm_describe_handles@plt>
mov    -0xc(%rbp),%edi
call   2140 <_filter_nvrm_describe_classes@plt>
mov    -0xc(%rbp),%edi
call   22e0 <_filter_dump_object_tree_on_create_destroy@plt>
jmp    2d13 <handle_filter_opt+0x953>
mov    -0x28(%rbp),%rdi
lea    0x5a8(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2bb1 <handle_filter_opt+0x7f1>
mov    -0xc(%rbp),%edi
call   22b0 <_filter_info@plt>
jmp    2d0e <handle_filter_opt+0x94e>
mov    -0x28(%rbp),%rdi
lea    0x54c(%rip),%rsi
call   2150 <strcmp@plt>
cmp    $0x0,%rax
jne    2cd8 <handle_filter_opt+0x918>
mov    -0xc(%rbp),%edi
call   22b0 <_filter_info@plt>
mov    -0xc(%rbp),%edi
call   2050 <_filter_write@plt>
mov    -0xc(%rbp),%edi
call   2280 <_filter_read@plt>
mov    -0xc(%rbp),%edi
call   20f0 <_filter_gpu_addr@plt>
mov    -0xc(%rbp),%edi
call   2200 <_filter_ioctl_raw@plt>
mov    -0xc(%rbp),%edi
call   2180 <_filter_ioctl_desc@plt>
mov    -0xc(%rbp),%edi
call   21c0 <_filter_tsc@plt>
mov    -0xc(%rbp),%edi
call   2290 <_filter_tic@plt>
mov    -0xc(%rbp),%edi
call   2130 <_filter_vp@plt>
mov    -0xc(%rbp),%edi
call   2170 <_filter_fp@plt>
mov    -0xc(%rbp),%edi
call   2090 <_filter_gp@plt>
mov    -0xc(%rbp),%edi
call   21d0 <_filter_cp@plt>
mov    -0xc(%rbp),%edi
call   2060 <_filter_tep@plt>
mov    -0xc(%rbp),%edi
call   2080 <_filter_tcp@plt>
mov    -0xc(%rbp),%edi
call   2160 <_filter_macro_rt_verbose@plt>
mov    -0xc(%rbp),%edi
call   2030 <_filter_macro_rt@plt>
mov    -0xc(%rbp),%edi
call   2070 <_filter_macro_dis_enabled@plt>
mov    -0xc(%rbp),%edi
call   20b0 <_filter_buffer_usage@plt>
mov    -0xc(%rbp),%edi
call   21a0 <_filter_all_classes@plt>
mov    -0xc(%rbp),%edi
call   20d0 <_filter_decode_pb@plt>
mov    -0xc(%rbp),%edi
call   2100 <_filter_sys_mmap@plt>
mov    -0xc(%rbp),%edi
call   2220 <_filter_sys_mmap_details@plt>
mov    -0xc(%rbp),%edi
call   20c0 <_filter_sys_munmap@plt>
mov    -0xc(%rbp),%edi
call   2110 <_filter_sys_mremap@plt>
mov    -0xc(%rbp),%edi
call   21b0 <_filter_sys_open@plt>
mov    -0xc(%rbp),%edi
call   2270 <_filter_msg@plt>
mov    -0xc(%rbp),%edi
call   2260 <_filter_sys_write@plt>
mov    -0xc(%rbp),%edi
call   22c0 <_filter_nvrm_describe_handles@plt>
mov    -0xc(%rbp),%edi
call   2140 <_filter_nvrm_describe_classes@plt>
mov    -0xc(%rbp),%edi
call   2230 <_filter_all_nvrm_mthds@plt>
mov    -0xc(%rbp),%edi
call   21e0 <_filter_nvrm_show_unk_zero_fields@plt>
mov    -0xc(%rbp),%edi
call   20e0 <_filter_all_nvrm_ioctls@plt>
mov    -0xc(%rbp),%edi
call   22e0 <_filter_dump_object_tree_on_create_destroy@plt>
jmp    2d09 <handle_filter_opt+0x949>
mov    0x2301(%rip),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rdx
lea    0x456(%rip),%rsi
call   2190 <fprintf@plt>
mov    0x22e8(%rip),%rax
mov    (%rax),%edi
call   21f0 <fflush@plt>
mov    $0x1,%edi
call   22a0 <exit@plt>
jmp    2d0e <handle_filter_opt+0x94e>
jmp    2d13 <handle_filter_opt+0x953>
jmp    2d18 <handle_filter_opt+0x958>
jmp    2d1d <handle_filter_opt+0x95d>
jmp    2d22 <handle_filter_opt+0x962>
jmp    2d27 <handle_filter_opt+0x967>
jmp    2d2c <handle_filter_opt+0x96c>
jmp    2d31 <handle_filter_opt+0x971>
jmp    2d36 <handle_filter_opt+0x976>
jmp    2d3b <handle_filter_opt+0x97b>
jmp    2d40 <handle_filter_opt+0x980>
jmp    2d45 <handle_filter_opt+0x985>
jmp    2d4a <handle_filter_opt+0x98a>
jmp    2d4f <handle_filter_opt+0x98f>
jmp    2d54 <handle_filter_opt+0x994>
jmp    2d59 <handle_filter_opt+0x999>
jmp    2d5e <handle_filter_opt+0x99e>
jmp    2d63 <handle_filter_opt+0x9a3>
jmp    2d68 <handle_filter_opt+0x9a8>
jmp    2d6d <handle_filter_opt+0x9ad>
jmp    2d72 <handle_filter_opt+0x9b2>
jmp    2d77 <handle_filter_opt+0x9b7>
jmp    2d7c <handle_filter_opt+0x9bc>
jmp    2d81 <handle_filter_opt+0x9c1>
jmp    2d86 <handle_filter_opt+0x9c6>
jmp    2d8b <handle_filter_opt+0x9cb>
jmp    2d90 <handle_filter_opt+0x9d0>
jmp    2d95 <handle_filter_opt+0x9d5>
jmp    2d9a <handle_filter_opt+0x9da>
jmp    2d9f <handle_filter_opt+0x9df>
jmp    2da4 <handle_filter_opt+0x9e4>
jmp    2da9 <handle_filter_opt+0x9e9>
jmp    2dae <handle_filter_opt+0x9ee>
jmp    2db3 <handle_filter_opt+0x9f3>
jmp    2db8 <handle_filter_opt+0x9f8>
jmp    2dbd <handle_filter_opt+0x9fd>
jmp    2dc2 <handle_filter_opt+0xa02>
jmp    2dc7 <handle_filter_opt+0xa07>
jmp    2dcc <handle_filter_opt+0xa0c>
jmp    23e4 <handle_filter_opt+0x24>
mov    -0x18(%rbp),%rdi
call   2040 <free@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<handle_filter_opt>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %esi,%ebx
call   22d0 <strdup@plt>
mov    %rax,0x8(%rsp)
mov    %rax,0x10(%rsp)
test   %rax,%rax
je     2ba2 <handle_filter_opt+0x7e2>
lea    0xc11(%rip),%r15
lea    0x8(%rsp),%r12
lea    0xcd6(%rip),%r13
lea    0xc00(%rip),%rbp
jmp    2423 <handle_filter_opt+0x63>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %ebx,%edi
call   2050 <_filter_write@plt>
cmpq   $0x0,0x8(%rsp)
je     2ba2 <handle_filter_opt+0x7e2>
mov    %r12,%rdi
mov    %r15,%rsi
call   2210 <strsep@plt>
mov    %rax,%r14
mov    %rax,%rdi
mov    %r13,%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2410 <handle_filter_opt+0x50>
mov    %r14,%rdi
mov    %rbp,%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     28e9 <handle_filter_opt+0x529>
mov    %r14,%rdi
lea    0xba8(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     28d6 <handle_filter_opt+0x516>
mov    %r14,%rdi
lea    0xb99(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     28e2 <handle_filter_opt+0x522>
mov    %r14,%rdi
lea    0xb85(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     28f5 <handle_filter_opt+0x535>
mov    %r14,%rdi
lea    0xb77(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2b8a <handle_filter_opt+0x7ca>
mov    %r14,%rdi
lea    0xb6a(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2901 <handle_filter_opt+0x541>
mov    %r14,%rdi
lea    0xb58(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     291f <handle_filter_opt+0x55f>
mov    %r14,%rdi
lea    0xb44(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     292b <handle_filter_opt+0x56b>
mov    %r14,%rdi
lea    0xb30(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2937 <handle_filter_opt+0x577>
mov    %r14,%rdi
lea    0xb1b(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2943 <handle_filter_opt+0x583>
mov    %r14,%rdi
lea    0xb06(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     294f <handle_filter_opt+0x58f>
mov    %r14,%rdi
lea    0xaf6(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     295b <handle_filter_opt+0x59b>
mov    %r14,%rdi
lea    0xad9(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     298f <handle_filter_opt+0x5cf>
mov    %r14,%rdi
lea    0xac5(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2967 <handle_filter_opt+0x5a7>
mov    %r14,%rdi
lea    0xab1(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2973 <handle_filter_opt+0x5b3>
mov    %r14,%rdi
lea    0xaa0(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     299b <handle_filter_opt+0x5db>
mov    %r14,%rdi
lea    0xa99(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     29a7 <handle_filter_opt+0x5e7>
mov    %r14,%rdi
lea    0xa8a(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     29c5 <handle_filter_opt+0x605>
mov    %r14,%rdi
lea    0xa7c(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     29b3 <handle_filter_opt+0x5f3>
mov    %r14,%rdi
lea    0xa6a(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     29d1 <handle_filter_opt+0x611>
mov    %r14,%rdi
lea    0xa5f(%rip),%rsi
mov    $0x6,%edx
call   20a0 <strncmp@plt>
test   %rax,%rax
je     29dd <handle_filter_opt+0x61d>
mov    %r14,%rdi
lea    0xa49(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a04 <handle_filter_opt+0x644>
mov    %r14,%rdi
lea    0xa34(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a10 <handle_filter_opt+0x650>
mov    %r14,%rdi
lea    0xa25(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a28 <handle_filter_opt+0x668>
mov    %r14,%rdi
lea    0xa1e(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a34 <handle_filter_opt+0x674>
mov    %r14,%rdi
lea    0xa11(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a40 <handle_filter_opt+0x680>
mov    %r14,%rdi
lea    0xa04(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a4c <handle_filter_opt+0x68c>
mov    %r14,%rdi
lea    0x9f5(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a58 <handle_filter_opt+0x698>
mov    %r14,%rdi
lea    0x9e1(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a64 <handle_filter_opt+0x6a4>
mov    %r14,%rdi
lea    0x9d3(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a70 <handle_filter_opt+0x6b0>
mov    %r14,%rdi
lea    0x9bf(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a9c <handle_filter_opt+0x6dc>
mov    %r14,%rdi
lea    0x9b8(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2aa8 <handle_filter_opt+0x6e8>
mov    %r14,%rdi
lea    0x9b0(%rip),%rsi
mov    $0xa,%edx
call   20a0 <strncmp@plt>
test   %rax,%rax
je     2adc <handle_filter_opt+0x71c>
mov    %r14,%rdi
lea    0x9a3(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2b00 <handle_filter_opt+0x740>
mov    %r14,%rdi
lea    0x99d(%rip),%rsi
mov    $0xb,%edx
call   20a0 <strncmp@plt>
test   %rax,%rax
je     2b0c <handle_filter_opt+0x74c>
mov    %r14,%rdi
lea    0x98c(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2913 <handle_filter_opt+0x553>
mov    %r14,%rdi
lea    0x982(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2b4f <handle_filter_opt+0x78f>
mov    %r14,%rdi
lea    0x96f(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2b96 <handle_filter_opt+0x7d6>
mov    %r14,%rdi
lea    0x922(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
jne    2bbb <handle_filter_opt+0x7fb>
mov    %ebx,%edi
call   22b0 <_filter_info@plt>
mov    %ebx,%edi
call   2050 <_filter_write@plt>
mov    %ebx,%edi
call   2280 <_filter_read@plt>
mov    %ebx,%edi
call   20f0 <_filter_gpu_addr@plt>
mov    %ebx,%edi
call   2200 <_filter_ioctl_raw@plt>
mov    %ebx,%edi
call   2180 <_filter_ioctl_desc@plt>
mov    %ebx,%edi
call   21c0 <_filter_tsc@plt>
mov    %ebx,%edi
call   2290 <_filter_tic@plt>
mov    %ebx,%edi
call   2130 <_filter_vp@plt>
mov    %ebx,%edi
call   2170 <_filter_fp@plt>
mov    %ebx,%edi
call   2090 <_filter_gp@plt>
mov    %ebx,%edi
call   21d0 <_filter_cp@plt>
mov    %ebx,%edi
call   2060 <_filter_tep@plt>
mov    %ebx,%edi
call   2080 <_filter_tcp@plt>
mov    %ebx,%edi
call   2160 <_filter_macro_rt_verbose@plt>
mov    %ebx,%edi
call   2030 <_filter_macro_rt@plt>
mov    %ebx,%edi
call   2070 <_filter_macro_dis_enabled@plt>
mov    %ebx,%edi
call   20b0 <_filter_buffer_usage@plt>
mov    %ebx,%edi
call   21a0 <_filter_all_classes@plt>
mov    %ebx,%edi
call   20d0 <_filter_decode_pb@plt>
mov    %ebx,%edi
call   2100 <_filter_sys_mmap@plt>
mov    %ebx,%edi
call   2220 <_filter_sys_mmap_details@plt>
mov    %ebx,%edi
call   20c0 <_filter_sys_munmap@plt>
mov    %ebx,%edi
call   2110 <_filter_sys_mremap@plt>
mov    %ebx,%edi
call   21b0 <_filter_sys_open@plt>
mov    %ebx,%edi
call   2270 <_filter_msg@plt>
mov    %ebx,%edi
call   2260 <_filter_sys_write@plt>
mov    %ebx,%edi
call   22c0 <_filter_nvrm_describe_handles@plt>
mov    %ebx,%edi
call   2140 <_filter_nvrm_describe_classes@plt>
mov    %ebx,%edi
call   2230 <_filter_all_nvrm_mthds@plt>
mov    %ebx,%edi
call   21e0 <_filter_nvrm_show_unk_zero_fields@plt>
mov    %ebx,%edi
call   20e0 <_filter_all_nvrm_ioctls@plt>
jmp    2913 <handle_filter_opt+0x553>
mov    %ebx,%edi
call   20f0 <_filter_gpu_addr@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2050 <_filter_write@plt>
mov    %ebx,%edi
call   2280 <_filter_read@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2200 <_filter_ioctl_raw@plt>
jmp    2417 <handle_filter_opt+0x57>
test   %ebx,%ebx
jne    290c <handle_filter_opt+0x54c>
xor    %edi,%edi
call   2200 <_filter_ioctl_raw@plt>
mov    %ebx,%edi
call   2180 <_filter_ioctl_desc@plt>
mov    %ebx,%edi
call   22e0 <_filter_dump_object_tree_on_create_destroy@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   21c0 <_filter_tsc@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2290 <_filter_tic@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2130 <_filter_vp@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2170 <_filter_fp@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2090 <_filter_gp@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   21d0 <_filter_cp@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2080 <_filter_tcp@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2130 <_filter_vp@plt>
mov    %ebx,%edi
call   2170 <_filter_fp@plt>
mov    %ebx,%edi
call   2090 <_filter_gp@plt>
mov    %ebx,%edi
call   2080 <_filter_tcp@plt>
mov    %ebx,%edi
call   2060 <_filter_tep@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2160 <_filter_macro_rt_verbose@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2030 <_filter_macro_rt@plt>
jmp    2417 <handle_filter_opt+0x57>
test   %ebx,%ebx
jne    29be <handle_filter_opt+0x5fe>
xor    %edi,%edi
call   2160 <_filter_macro_rt_verbose@plt>
mov    %ebx,%edi
call   2030 <_filter_macro_rt@plt>
mov    %ebx,%edi
call   2070 <_filter_macro_dis_enabled@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   20b0 <_filter_buffer_usage@plt>
jmp    2417 <handle_filter_opt+0x57>
add    $0x6,%r14
mov    %r14,%rdi
lea    0x71d(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2a1c <handle_filter_opt+0x65c>
mov    %r14,%rdi
mov    %ebx,%esi
call   2120 <_filter_class@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   20d0 <_filter_decode_pb@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2100 <_filter_sys_mmap@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   21a0 <_filter_all_classes@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2220 <_filter_sys_mmap_details@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   20c0 <_filter_sys_munmap@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2110 <_filter_sys_mremap@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   21b0 <_filter_sys_open@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2270 <_filter_msg@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2260 <_filter_sys_write@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2100 <_filter_sys_mmap@plt>
test   %ebx,%ebx
je     2ab4 <handle_filter_opt+0x6f4>
mov    %ebx,%edi
call   20c0 <_filter_sys_munmap@plt>
mov    %ebx,%edi
call   2110 <_filter_sys_mremap@plt>
mov    %ebx,%edi
call   21b0 <_filter_sys_open@plt>
mov    %ebx,%edi
call   2260 <_filter_sys_write@plt>
jmp    290c <handle_filter_opt+0x54c>
mov    %ebx,%edi
call   22c0 <_filter_nvrm_describe_handles@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2140 <_filter_nvrm_describe_classes@plt>
jmp    2417 <handle_filter_opt+0x57>
xor    %edi,%edi
call   2220 <_filter_sys_mmap_details@plt>
xor    %edi,%edi
call   20c0 <_filter_sys_munmap@plt>
xor    %edi,%edi
call   2110 <_filter_sys_mremap@plt>
xor    %edi,%edi
call   21b0 <_filter_sys_open@plt>
xor    %edi,%edi
call   2260 <_filter_sys_write@plt>
jmp    2905 <handle_filter_opt+0x545>
add    $0xa,%r14
mov    %r14,%rdi
lea    0x61e(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2b30 <handle_filter_opt+0x770>
mov    %r14,%rdi
mov    %ebx,%esi
call   2250 <_filter_nvrm_mthd@plt>
jmp    2b37 <handle_filter_opt+0x777>
mov    %ebx,%edi
call   21e0 <_filter_nvrm_show_unk_zero_fields@plt>
jmp    2417 <handle_filter_opt+0x57>
add    $0xb,%r14
mov    %r14,%rdi
lea    0x5ee(%rip),%rsi
call   2150 <strcmp@plt>
test   %rax,%rax
je     2b7b <handle_filter_opt+0x7bb>
mov    %r14,%rdi
mov    %ebx,%esi
call   2240 <_filter_nvrm_ioctl@plt>
jmp    2b82 <handle_filter_opt+0x7c2>
mov    %ebx,%edi
call   2230 <_filter_all_nvrm_mthds@plt>
test   %ebx,%ebx
je     2417 <handle_filter_opt+0x57>
lea    0x5c1(%rip),%rdi
mov    %ebx,%esi
call   2240 <_filter_nvrm_ioctl@plt>
jmp    2b8a <handle_filter_opt+0x7ca>
test   %ebx,%ebx
je     2b5a <handle_filter_opt+0x79a>
mov    %ebx,%edi
call   2180 <_filter_ioctl_desc@plt>
mov    %ebx,%edi
call   20e0 <_filter_all_nvrm_ioctls@plt>
mov    %ebx,%edi
call   2230 <_filter_all_nvrm_mthds@plt>
mov    %ebx,%edi
call   22c0 <_filter_nvrm_describe_handles@plt>
mov    %ebx,%edi
call   2140 <_filter_nvrm_describe_classes@plt>
jmp    2913 <handle_filter_opt+0x553>
mov    %ebx,%edi
call   20e0 <_filter_all_nvrm_ioctls@plt>
test   %ebx,%ebx
je     2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   2180 <_filter_ioctl_desc@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    %ebx,%edi
call   22b0 <_filter_info@plt>
jmp    2417 <handle_filter_opt+0x57>
mov    0x10(%rsp),%rdi
call   2040 <free@plt>
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x241e(%rip),%rbx
mov    (%rbx),%edi
lea    0x577(%rip),%rsi
mov    %r14,%rdx
call   2190 <fprintf@plt>
mov    (%rbx),%edi
call   21f0 <fflush@plt>
mov    $0x1,%edi
call   22a0 <exit@plt>

LLVM IR (-O0):
@.str = [2 x i8] c",\00"
@.str.1 = [6 x i8] c"write\00"
@.str.2 = [5 x i8] c"read\00"
@.str.3 = [9 x i8] c"gpu-addr\00"
@.str.4 = [4 x i8] c"mem\00"
@.str.5 = [10 x i8] c"ioctl-raw\00"
@.str.6 = [11 x i8] c"ioctl-desc\00"
@.str.7 = [6 x i8] c"ioctl\00"
@.str.8 = [4 x i8] c"tsc\00"
@.str.9 = [4 x i8] c"tic\00"
@.str.10 = [3 x i8] c"vp\00"
@.str.11 = [3 x i8] c"fp\00"
@.str.12 = [3 x i8] c"gp\00"
@.str.13 = [3 x i8] c"cp\00"
@.str.14 = [4 x i8] c"tep\00"
@.str.15 = [4 x i8] c"tcp\00"
@.str.16 = [7 x i8] c"shader\00"
@.str.17 = [17 x i8] c"macro-rt-verbose\00"
@.str.18 = [9 x i8] c"macro-rt\00"
@.str.19 = [10 x i8] c"macro-dis\00"
@.str.20 = [6 x i8] c"macro\00"
@.str.21 = [13 x i8] c"buffer-usage\00"
@.str.22 = [7 x i8] c"class=\00"
@.str.23 = [4 x i8] c"all\00"
@.str.24 = [3 x i8] c"pb\00"
@.str.25 = [9 x i8] c"sys_mmap\00"
@.str.26 = [17 x i8] c"sys_mmap_details\00"
@.str.27 = [11 x i8] c"sys_munmap\00"
@.str.28 = [11 x i8] c"sys_mremap\00"
@.str.29 = [9 x i8] c"sys_open\00"
@.str.30 = [4 x i8] c"msg\00"
@.str.31 = [10 x i8] c"sys_write\00"
@.str.32 = [4 x i8] c"sys\00"
@.str.33 = [17 x i8] c"nvrm-handle-desc\00"
@.str.34 = [16 x i8] c"nvrm-class-desc\00"
@.str.35 = [11 x i8] c"nvrm-mthd=\00"
@.str.36 = [5 x i8] c"call\00"
@.str.37 = [18 x i8] c"nvrm-unk-0-fields\00"
@.str.38 = [12 x i8] c"nvrm-ioctl=\00"
@.str.39 = [14 x i8] c"nvrm-obj-tree\00"
@.str.40 = [5 x i8] c"nvrm\00"
@.str.41 = [5 x i8] c"info\00"
@stderr = global i32 0
@.str.42 = [19 x i8] c"unknown token: %s\0A\00"
define void @handle_filter_opt(i8* %0, i32 %1) {
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i8*
store i8* %0, i8** %3
store i32 %1, i32* %4
%8 = load i8*, i8** %3
%9 = call i8* @strdup(i8* %8)
store i8* %9, i8** %5
%10 = load i8*, i8** %5
store i8* %10, i8** %6
br label %11
11: ; preds = %516, %2
%12 = load i8*, i8** %6
%13 = icmp ne i8* %12, null
br i1 %13, label %14, label %517
14: ; preds = %11
%15 = call i8* @strsep(i8** %6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i8* %15, i8** %7
%16 = load i8*, i8** %7
%17 = call i64 @strcmp(i8* %16, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
%18 = icmp eq i64 %17, 0
br i1 %18, label %19, label %22
19: ; preds = %14
%20 = load i32, i32* %4
%21 = call i32 @_filter_write(i32 %20)
br label %516
22: ; preds = %14
%23 = load i8*, i8** %7
%24 = call i64 @strcmp(i8* %23, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%25 = icmp eq i64 %24, 0
br i1 %25, label %26, label %29
26: ; preds = %22
%27 = load i32, i32* %4
%28 = call i32 @_filter_read(i32 %27)
br label %515
29: ; preds = %22
%30 = load i8*, i8** %7
%31 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%32 = icmp eq i64 %31, 0
br i1 %32, label %33, label %36
33: ; preds = %29
%34 = load i32, i32* %4
%35 = call i32 @_filter_gpu_addr(i32 %34)
br label %514
36: ; preds = %29
%37 = load i8*, i8** %7
%38 = call i64 @strcmp(i8* %37, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%39 = icmp eq i64 %38, 0
br i1 %39, label %40, label %45
40: ; preds = %36
%41 = load i32, i32* %4
%42 = call i32 @_filter_write(i32 %41)
%43 = load i32, i32* %4
%44 = call i32 @_filter_read(i32 %43)
br label %513
45: ; preds = %36
%46 = load i8*, i8** %7
%47 = call i64 @strcmp(i8* %46, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0))
%48 = icmp eq i64 %47, 0
br i1 %48, label %49, label %52
49: ; preds = %45
%50 = load i32, i32* %4
%51 = call i32 @_filter_ioctl_raw(i32 %50)
br label %512
52: ; preds = %45
%53 = load i8*, i8** %7
%54 = call i64 @strcmp(i8* %53, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
%55 = icmp eq i64 %54, 0
br i1 %55, label %56, label %59
56: ; preds = %52
%57 = load i32, i32* %4
%58 = call i32 @_filter_ioctl_desc(i32 %57)
br label %511
59: ; preds = %52
%60 = load i8*, i8** %7
%61 = call i64 @strcmp(i8* %60, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%62 = icmp eq i64 %61, 0
br i1 %62, label %63, label %74
63: ; preds = %59
%64 = load i32, i32* %4
%65 = icmp ne i32 %64, 0
br i1 %65, label %69, label %66
66: ; preds = %63
%67 = load i32, i32* %4
%68 = call i32 @_filter_ioctl_raw(i32 %67)
br label %69
69: ; preds = %66, %63
%70 = load i32, i32* %4
%71 = call i32 @_filter_ioctl_desc(i32 %70)
%72 = load i32, i32* %4
%73 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %72)
br label %510
74: ; preds = %59
%75 = load i8*, i8** %7
%76 = call i64 @strcmp(i8* %75, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%77 = icmp eq i64 %76, 0
br i1 %77, label %78, label %81
78: ; preds = %74
%79 = load i32, i32* %4
%80 = call i32 @_filter_tsc(i32 %79)
br label %509
81: ; preds = %74
%82 = load i8*, i8** %7
%83 = call i64 @strcmp(i8* %82, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
%84 = icmp eq i64 %83, 0
br i1 %84, label %85, label %88
85: ; preds = %81
%86 = load i32, i32* %4
%87 = call i32 @_filter_tic(i32 %86)
br label %508
88: ; preds = %81
%89 = load i8*, i8** %7
%90 = call i64 @strcmp(i8* %89, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%91 = icmp eq i64 %90, 0
br i1 %91, label %92, label %95
92: ; preds = %88
%93 = load i32, i32* %4
%94 = call i32 @_filter_vp(i32 %93)
br label %507
95: ; preds = %88
%96 = load i8*, i8** %7
%97 = call i64 @strcmp(i8* %96, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %102
99: ; preds = %95
%100 = load i32, i32* %4
%101 = call i32 @_filter_fp(i32 %100)
br label %506
102: ; preds = %95
%103 = load i8*, i8** %7
%104 = call i64 @strcmp(i8* %103, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
%105 = icmp eq i64 %104, 0
br i1 %105, label %106, label %109
106: ; preds = %102
%107 = load i32, i32* %4
%108 = call i32 @_filter_gp(i32 %107)
br label %505
109: ; preds = %102
%110 = load i8*, i8** %7
%111 = call i64 @strcmp(i8* %110, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0))
%112 = icmp eq i64 %111, 0
br i1 %112, label %113, label %116
113: ; preds = %109
%114 = load i32, i32* %4
%115 = call i32 @_filter_cp(i32 %114)
br label %504
116: ; preds = %109
%117 = load i8*, i8** %7
%118 = call i64 @strcmp(i8* %117, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%119 = icmp eq i64 %118, 0
br i1 %119, label %120, label %123
120: ; preds = %116
%121 = load i32, i32* %4
%122 = call i32 @_filter_tep(i32 %121)
br label %503
123: ; preds = %116
%124 = load i8*, i8** %7
%125 = call i64 @strcmp(i8* %124, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%126 = icmp eq i64 %125, 0
br i1 %126, label %127, label %130
127: ; preds = %123
%128 = load i32, i32* %4
%129 = call i32 @_filter_tcp(i32 %128)
br label %502
130: ; preds = %123
%131 = load i8*, i8** %7
%132 = call i64 @strcmp(i8* %131, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0))
%133 = icmp eq i64 %132, 0
br i1 %133, label %134, label %145
134: ; preds = %130
%135 = load i32, i32* %4
%136 = call i32 @_filter_vp(i32 %135)
%137 = load i32, i32* %4
%138 = call i32 @_filter_fp(i32 %137)
%139 = load i32, i32* %4
%140 = call i32 @_filter_gp(i32 %139)
%141 = load i32, i32* %4
%142 = call i32 @_filter_tcp(i32 %141)
%143 = load i32, i32* %4
%144 = call i32 @_filter_tep(i32 %143)
br label %501
145: ; preds = %130
%146 = load i8*, i8** %7
%147 = call i64 @strcmp(i8* %146, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%148 = icmp eq i64 %147, 0
br i1 %148, label %149, label %152
149: ; preds = %145
%150 = load i32, i32* %4
%151 = call i32 @_filter_macro_rt_verbose(i32 %150)
br label %500
152: ; preds = %145
%153 = load i8*, i8** %7
%154 = call i64 @strcmp(i8* %153, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
%155 = icmp eq i64 %154, 0
br i1 %155, label %156, label %159
156: ; preds = %152
%157 = load i32, i32* %4
%158 = call i32 @_filter_macro_rt(i32 %157)
br label %499
159: ; preds = %152
%160 = load i8*, i8** %7
%161 = call i64 @strcmp(i8* %160, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.19, i64 0, i64 0))
%162 = icmp eq i64 %161, 0
br i1 %162, label %163, label %166
163: ; preds = %159
%164 = load i32, i32* %4
%165 = call i32 @_filter_macro_dis_enabled(i32 %164)
br label %498
166: ; preds = %159
%167 = load i8*, i8** %7
%168 = call i64 @strcmp(i8* %167, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0))
%169 = icmp eq i64 %168, 0
br i1 %169, label %170, label %181
170: ; preds = %166
%171 = load i32, i32* %4
%172 = icmp ne i32 %171, 0
br i1 %172, label %176, label %173
173: ; preds = %170
%174 = load i32, i32* %4
%175 = call i32 @_filter_macro_rt_verbose(i32 %174)
br label %176
176: ; preds = %173, %170
%177 = load i32, i32* %4
%178 = call i32 @_filter_macro_rt(i32 %177)
%179 = load i32, i32* %4
%180 = call i32 @_filter_macro_dis_enabled(i32 %179)
br label %497
181: ; preds = %166
%182 = load i8*, i8** %7
%183 = call i64 @strcmp(i8* %182, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
%184 = icmp eq i64 %183, 0
br i1 %184, label %185, label %188
185: ; preds = %181
%186 = load i32, i32* %4
%187 = call i32 @_filter_buffer_usage(i32 %186)
br label %496
188: ; preds = %181
%189 = load i8*, i8** %7
%190 = call i64 @strncmp(i8* %189, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.22, i64 0, i64 0), i32 6)
%191 = icmp eq i64 %190, 0
br i1 %191, label %192, label %206
192: ; preds = %188
%193 = load i8*, i8** %7
%194 = getelementptr inbounds i8, i8* %193, i64 6
%195 = call i64 @strcmp(i8* %194, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%196 = icmp eq i64 %195, 0
br i1 %196, label %197, label %200
197: ; preds = %192
%198 = load i32, i32* %4
%199 = call i32 @_filter_all_classes(i32 %198)
br label %205
200: ; preds = %192
%201 = load i8*, i8** %7
%202 = getelementptr inbounds i8, i8* %201, i64 6
%203 = load i32, i32* %4
%204 = call i32 @_filter_class(i8* %202, i32 %203)
br label %205
205: ; preds = %200, %197
br label %495
206: ; preds = %188
%207 = load i8*, i8** %7
%208 = call i64 @strcmp(i8* %207, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
%209 = icmp eq i64 %208, 0
br i1 %209, label %210, label %213
210: ; preds = %206
%211 = load i32, i32* %4
%212 = call i32 @_filter_decode_pb(i32 %211)
br label %494
213: ; preds = %206
%214 = load i8*, i8** %7
%215 = call i64 @strcmp(i8* %214, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.25, i64 0, i64 0))
%216 = icmp eq i64 %215, 0
br i1 %216, label %217, label %220
217: ; preds = %213
%218 = load i32, i32* %4
%219 = call i32 @_filter_sys_mmap(i32 %218)
br label %493
220: ; preds = %213
%221 = load i8*, i8** %7
%222 = call i64 @strcmp(i8* %221, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.26, i64 0, i64 0))
%223 = icmp eq i64 %222, 0
br i1 %223, label %224, label %227
224: ; preds = %220
%225 = load i32, i32* %4
%226 = call i32 @_filter_sys_mmap_details(i32 %225)
br label %492
227: ; preds = %220
%228 = load i8*, i8** %7
%229 = call i64 @strcmp(i8* %228, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.27, i64 0, i64 0))
%230 = icmp eq i64 %229, 0
br i1 %230, label %231, label %234
231: ; preds = %227
%232 = load i32, i32* %4
%233 = call i32 @_filter_sys_munmap(i32 %232)
br label %491
234: ; preds = %227
%235 = load i8*, i8** %7
%236 = call i64 @strcmp(i8* %235, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0))
%237 = icmp eq i64 %236, 0
br i1 %237, label %238, label %241
238: ; preds = %234
%239 = load i32, i32* %4
%240 = call i32 @_filter_sys_mremap(i32 %239)
br label %490
241: ; preds = %234
%242 = load i8*, i8** %7
%243 = call i64 @strcmp(i8* %242, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.29, i64 0, i64 0))
%244 = icmp eq i64 %243, 0
br i1 %244, label %245, label %248
245: ; preds = %241
%246 = load i32, i32* %4
%247 = call i32 @_filter_sys_open(i32 %246)
br label %489
248: ; preds = %241
%249 = load i8*, i8** %7
%250 = call i64 @strcmp(i8* %249, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0))
%251 = icmp eq i64 %250, 0
br i1 %251, label %252, label %255
252: ; preds = %248
%253 = load i32, i32* %4
%254 = call i32 @_filter_msg(i32 %253)
br label %488
255: ; preds = %248
%256 = load i8*, i8** %7
%257 = call i64 @strcmp(i8* %256, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.31, i64 0, i64 0))
%258 = icmp eq i64 %257, 0
br i1 %258, label %259, label %262
259: ; preds = %255
%260 = load i32, i32* %4
%261 = call i32 @_filter_sys_write(i32 %260)
br label %487
262: ; preds = %255
%263 = load i8*, i8** %7
%264 = call i64 @strcmp(i8* %263, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.32, i64 0, i64 0))
%265 = icmp eq i64 %264, 0
br i1 %265, label %266, label %293
266: ; preds = %262
%267 = load i32, i32* %4
%268 = call i32 @_filter_sys_mmap(i32 %267)
%269 = load i32, i32* %4
%270 = icmp ne i32 %269, 0
br i1 %270, label %274, label %271
271: ; preds = %266
%272 = load i32, i32* %4
%273 = call i32 @_filter_sys_mmap_details(i32 %272)
br label %274
274: ; preds = %271, %266
%275 = load i32, i32* %4
%276 = call i32 @_filter_sys_munmap(i32 %275)
%277 = load i32, i32* %4
%278 = call i32 @_filter_sys_mremap(i32 %277)
%279 = load i32, i32* %4
%280 = call i32 @_filter_sys_open(i32 %279)
%281 = load i32, i32* %4
%282 = call i32 @_filter_sys_write(i32 %281)
%283 = load i32, i32* %4
%284 = icmp ne i32 %283, 0
br i1 %284, label %288, label %285
285: ; preds = %274
%286 = load i32, i32* %4
%287 = call i32 @_filter_ioctl_raw(i32 %286)
br label %288
288: ; preds = %285, %274
%289 = load i32, i32* %4
%290 = call i32 @_filter_ioctl_desc(i32 %289)
%291 = load i32, i32* %4
%292 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %291)
br label %486
293: ; preds = %262
%294 = load i8*, i8** %7
%295 = call i64 @strcmp(i8* %294, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.33, i64 0, i64 0))
%296 = icmp eq i64 %295, 0
br i1 %296, label %297, label %300
297: ; preds = %293
%298 = load i32, i32* %4
%299 = call i32 @_filter_nvrm_describe_handles(i32 %298)
br label %485
300: ; preds = %293
%301 = load i8*, i8** %7
%302 = call i64 @strcmp(i8* %301, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0))
%303 = icmp eq i64 %302, 0
br i1 %303, label %304, label %307
304: ; preds = %300
%305 = load i32, i32* %4
%306 = call i32 @_filter_nvrm_describe_classes(i32 %305)
br label %484
307: ; preds = %300
%308 = load i8*, i8** %7
%309 = call i64 @strncmp(i8* %308, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.35, i64 0, i64 0), i32 10)
%310 = icmp eq i64 %309, 0
br i1 %310, label %311, label %333
311: ; preds = %307
%312 = load i8*, i8** %7
%313 = getelementptr inbounds i8, i8* %312, i64 10
%314 = call i64 @strcmp(i8* %313, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%315 = icmp eq i64 %314, 0
br i1 %315, label %316, label %319
316: ; preds = %311
%317 = load i32, i32* %4
%318 = call i32 @_filter_all_nvrm_mthds(i32 %317)
br label %324
319: ; preds = %311
%320 = load i8*, i8** %7
%321 = getelementptr inbounds i8, i8* %320, i64 10
%322 = load i32, i32* %4
%323 = call i32 @_filter_nvrm_mthd(i8* %321, i32 %322)
br label %324
324: ; preds = %319, %316
%325 = load i32, i32* %4
%326 = icmp ne i32 %325, 0
br i1 %326, label %327, label %332
327: ; preds = %324
%328 = load i32, i32* %4
%329 = call i32 @_filter_nvrm_ioctl(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i32 %328)
%330 = load i32, i32* %4
%331 = call i32 @_filter_ioctl_desc(i32 %330)
br label %332
332: ; preds = %327, %324
br label %483
333: ; preds = %307
%334 = load i8*, i8** %7
%335 = call i64 @strcmp(i8* %334, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.37, i64 0, i64 0))
%336 = icmp eq i64 %335, 0
br i1 %336, label %337, label %340
337: ; preds = %333
%338 = load i32, i32* %4
%339 = call i32 @_filter_nvrm_show_unk_zero_fields(i32 %338)
br label %482
340: ; preds = %333
%341 = load i8*, i8** %7
%342 = call i64 @strncmp(i8* %341, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.38, i64 0, i64 0), i32 11)
%343 = icmp eq i64 %342, 0
br i1 %343, label %344, label %364
344: ; preds = %340
%345 = load i8*, i8** %7
%346 = getelementptr inbounds i8, i8* %345, i64 11
%347 = call i64 @strcmp(i8* %346, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%348 = icmp eq i64 %347, 0
br i1 %348, label %349, label %352
349: ; preds = %344
%350 = load i32, i32* %4
%351 = call i32 @_filter_all_nvrm_ioctls(i32 %350)
br label %357
352: ; preds = %344
%353 = load i8*, i8** %7
%354 = getelementptr inbounds i8, i8* %353, i64 11
%355 = load i32, i32* %4
%356 = call i32 @_filter_nvrm_ioctl(i8* %354, i32 %355)
br label %357
357: ; preds = %352, %349
%358 = load i32, i32* %4
%359 = icmp ne i32 %358, 0
br i1 %359, label %360, label %363
360: ; preds = %357
%361 = load i32, i32* %4
%362 = call i32 @_filter_ioctl_desc(i32 %361)
br label %363
363: ; preds = %360, %357
br label %481
364: ; preds = %340
%365 = load i8*, i8** %7
%366 = call i64 @strcmp(i8* %365, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.39, i64 0, i64 0))
%367 = icmp eq i64 %366, 0
br i1 %367, label %368, label %371
368: ; preds = %364
%369 = load i32, i32* %4
%370 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %369)
br label %480
371: ; preds = %364
%372 = load i8*, i8** %7
%373 = call i64 @strcmp(i8* %372, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.40, i64 0, i64 0))
%374 = icmp eq i64 %373, 0
br i1 %374, label %375, label %392
375: ; preds = %371
%376 = load i32, i32* %4
%377 = icmp ne i32 %376, 0
br i1 %377, label %378, label %381
378: ; preds = %375
%379 = load i32, i32* %4
%380 = call i32 @_filter_ioctl_desc(i32 %379)
br label %381
381: ; preds = %378, %375
%382 = load i32, i32* %4
%383 = call i32 @_filter_all_nvrm_ioctls(i32 %382)
%384 = load i32, i32* %4
%385 = call i32 @_filter_all_nvrm_mthds(i32 %384)
%386 = load i32, i32* %4
%387 = call i32 @_filter_nvrm_describe_handles(i32 %386)
%388 = load i32, i32* %4
%389 = call i32 @_filter_nvrm_describe_classes(i32 %388)
%390 = load i32, i32* %4
%391 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %390)
br label %479
392: ; preds = %371
%393 = load i8*, i8** %7
%394 = call i64 @strcmp(i8* %393, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.41, i64 0, i64 0))
%395 = icmp eq i64 %394, 0
br i1 %395, label %396, label %399
396: ; preds = %392
%397 = load i32, i32* %4
%398 = call i32 @_filter_info(i32 %397)
br label %478
399: ; preds = %392
%400 = load i8*, i8** %7
%401 = call i64 @strcmp(i8* %400, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%402 = icmp eq i64 %401, 0
br i1 %402, label %403, label %470
403: ; preds = %399
%404 = load i32, i32* %4
%405 = call i32 @_filter_info(i32 %404)
%406 = load i32, i32* %4
%407 = call i32 @_filter_write(i32 %406)
%408 = load i32, i32* %4
%409 = call i32 @_filter_read(i32 %408)
%410 = load i32, i32* %4
%411 = call i32 @_filter_gpu_addr(i32 %410)
%412 = load i32, i32* %4
%413 = call i32 @_filter_ioctl_raw(i32 %412)
%414 = load i32, i32* %4
%415 = call i32 @_filter_ioctl_desc(i32 %414)
%416 = load i32, i32* %4
%417 = call i32 @_filter_tsc(i32 %416)
%418 = load i32, i32* %4
%419 = call i32 @_filter_tic(i32 %418)
%420 = load i32, i32* %4
%421 = call i32 @_filter_vp(i32 %420)
%422 = load i32, i32* %4
%423 = call i32 @_filter_fp(i32 %422)
%424 = load i32, i32* %4
%425 = call i32 @_filter_gp(i32 %424)
%426 = load i32, i32* %4
%427 = call i32 @_filter_cp(i32 %426)
%428 = load i32, i32* %4
%429 = call i32 @_filter_tep(i32 %428)
%430 = load i32, i32* %4
%431 = call i32 @_filter_tcp(i32 %430)
%432 = load i32, i32* %4
%433 = call i32 @_filter_macro_rt_verbose(i32 %432)
%434 = load i32, i32* %4
%435 = call i32 @_filter_macro_rt(i32 %434)
%436 = load i32, i32* %4
%437 = call i32 @_filter_macro_dis_enabled(i32 %436)
%438 = load i32, i32* %4
%439 = call i32 @_filter_buffer_usage(i32 %438)
%440 = load i32, i32* %4
%441 = call i32 @_filter_all_classes(i32 %440)
%442 = load i32, i32* %4
%443 = call i32 @_filter_decode_pb(i32 %442)
%444 = load i32, i32* %4
%445 = call i32 @_filter_sys_mmap(i32 %444)
%446 = load i32, i32* %4
%447 = call i32 @_filter_sys_mmap_details(i32 %446)
%448 = load i32, i32* %4
%449 = call i32 @_filter_sys_munmap(i32 %448)
%450 = load i32, i32* %4
%451 = call i32 @_filter_sys_mremap(i32 %450)
%452 = load i32, i32* %4
%453 = call i32 @_filter_sys_open(i32 %452)
%454 = load i32, i32* %4
%455 = call i32 @_filter_msg(i32 %454)
%456 = load i32, i32* %4
%457 = call i32 @_filter_sys_write(i32 %456)
%458 = load i32, i32* %4
%459 = call i32 @_filter_nvrm_describe_handles(i32 %458)
%460 = load i32, i32* %4
%461 = call i32 @_filter_nvrm_describe_classes(i32 %460)
%462 = load i32, i32* %4
%463 = call i32 @_filter_all_nvrm_mthds(i32 %462)
%464 = load i32, i32* %4
%465 = call i32 @_filter_nvrm_show_unk_zero_fields(i32 %464)
%466 = load i32, i32* %4
%467 = call i32 @_filter_all_nvrm_ioctls(i32 %466)
%468 = load i32, i32* %4
%469 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %468)
br label %477
470: ; preds = %399
%471 = load i32, i32* @stderr
%472 = load i8*, i8** %7
%473 = call i32 @fprintf(i32 %471, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.42, i64 0, i64 0), i8* %472)
%474 = load i32, i32* @stderr
%475 = call i32 @fflush(i32 %474)
%476 = call i32 @exit(i32 1)
unreachable
477: ; preds = %403
br label %478
478: ; preds = %477, %396
br label %479
479: ; preds = %478, %381
br label %480
480: ; preds = %479, %368
br label %481
481: ; preds = %480, %363
br label %482
482: ; preds = %481, %337
br label %483
483: ; preds = %482, %332
br label %484
484: ; preds = %483, %304
br label %485
485: ; preds = %484, %297
br label %486
486: ; preds = %485, %288
br label %487
487: ; preds = %486, %259
br label %488
488: ; preds = %487, %252
br label %489
489: ; preds = %488, %245
br label %490
490: ; preds = %489, %238
br label %491
491: ; preds = %490, %231
br label %492
492: ; preds = %491, %224
br label %493
493: ; preds = %492, %217
br label %494
494: ; preds = %493, %210
br label %495
495: ; preds = %494, %205
br label %496
496: ; preds = %495, %185
br label %497
497: ; preds = %496, %176
br label %498
498: ; preds = %497, %163
br label %499
499: ; preds = %498, %156
br label %500
500: ; preds = %499, %149
br label %501
501: ; preds = %500, %134
br label %502
502: ; preds = %501, %127
br label %503
503: ; preds = %502, %120
br label %504
504: ; preds = %503, %113
br label %505
505: ; preds = %504, %106
br label %506
506: ; preds = %505, %99
br label %507
507: ; preds = %506, %92
br label %508
508: ; preds = %507, %85
br label %509
509: ; preds = %508, %78
br label %510
510: ; preds = %509, %69
br label %511
511: ; preds = %510, %56
br label %512
512: ; preds = %511, %49
br label %513
513: ; preds = %512, %40
br label %514
514: ; preds = %513, %33
br label %515
515: ; preds = %514, %26
br label %516
516: ; preds = %515, %19
br label %11
517: ; preds = %11
%518 = load i8*, i8** %5
%519 = call i32 @free(i8* %518)
ret void
}

LLVM IR (-O2):
@.str = [2 x i8] c",\00"
@.str.1 = [6 x i8] c"write\00"
@.str.2 = [5 x i8] c"read\00"
@.str.3 = [9 x i8] c"gpu-addr\00"
@.str.4 = [4 x i8] c"mem\00"
@.str.5 = [10 x i8] c"ioctl-raw\00"
@.str.6 = [11 x i8] c"ioctl-desc\00"
@.str.7 = [6 x i8] c"ioctl\00"
@.str.8 = [4 x i8] c"tsc\00"
@.str.9 = [4 x i8] c"tic\00"
@.str.10 = [3 x i8] c"vp\00"
@.str.11 = [3 x i8] c"fp\00"
@.str.12 = [3 x i8] c"gp\00"
@.str.13 = [3 x i8] c"cp\00"
@.str.14 = [4 x i8] c"tep\00"
@.str.15 = [4 x i8] c"tcp\00"
@.str.16 = [7 x i8] c"shader\00"
@.str.17 = [17 x i8] c"macro-rt-verbose\00"
@.str.18 = [9 x i8] c"macro-rt\00"
@.str.19 = [10 x i8] c"macro-dis\00"
@.str.20 = [6 x i8] c"macro\00"
@.str.21 = [13 x i8] c"buffer-usage\00"
@.str.22 = [7 x i8] c"class=\00"
@.str.23 = [4 x i8] c"all\00"
@.str.24 = [3 x i8] c"pb\00"
@.str.25 = [9 x i8] c"sys_mmap\00"
@.str.26 = [17 x i8] c"sys_mmap_details\00"
@.str.27 = [11 x i8] c"sys_munmap\00"
@.str.28 = [11 x i8] c"sys_mremap\00"
@.str.29 = [9 x i8] c"sys_open\00"
@.str.30 = [4 x i8] c"msg\00"
@.str.31 = [10 x i8] c"sys_write\00"
@.str.32 = [4 x i8] c"sys\00"
@.str.33 = [17 x i8] c"nvrm-handle-desc\00"
@.str.34 = [16 x i8] c"nvrm-class-desc\00"
@.str.35 = [11 x i8] c"nvrm-mthd=\00"
@.str.36 = [5 x i8] c"call\00"
@.str.37 = [18 x i8] c"nvrm-unk-0-fields\00"
@.str.38 = [12 x i8] c"nvrm-ioctl=\00"
@.str.39 = [14 x i8] c"nvrm-obj-tree\00"
@.str.40 = [5 x i8] c"nvrm\00"
@.str.41 = [5 x i8] c"info\00"
@stderr = global i32 0
@.str.42 = [19 x i8] c"unknown token: %s\0A\00"
define void @handle_filter_opt(i8* nocapture %0, i32 %1) {
%3 = alloca i8*
%4 = tail call i8* @strdup(i8* %0)
%5 = bitcast i8** %3 to i8*
store i8* %4, i8** %3
%6 = icmp eq i8* %4, null
br i1 %6, label %311, label %7
7: ; preds = %2
%8 = icmp eq i32 %1, 0
br label %9
9: ; preds = %7, %308
%10 = call i8* @strsep(i8** %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%11 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
%12 = icmp eq i64 %11, 0
br i1 %12, label %13, label %15
13: ; preds = %9
%14 = call i32 @_filter_write(i32 %1)
br label %308
15: ; preds = %9
%16 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%17 = icmp eq i64 %16, 0
br i1 %17, label %18, label %20
18: ; preds = %15
%19 = call i32 @_filter_read(i32 %1)
br label %308
20: ; preds = %15
%21 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%22 = icmp eq i64 %21, 0
br i1 %22, label %23, label %25
23: ; preds = %20
%24 = call i32 @_filter_gpu_addr(i32 %1)
br label %308
25: ; preds = %20
%26 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%27 = icmp eq i64 %26, 0
br i1 %27, label %28, label %31
28: ; preds = %25
%29 = call i32 @_filter_write(i32 %1)
%30 = call i32 @_filter_read(i32 %1)
br label %308
31: ; preds = %25
%32 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0))
%33 = icmp eq i64 %32, 0
br i1 %33, label %34, label %36
34: ; preds = %31
%35 = call i32 @_filter_ioctl_raw(i32 %1)
br label %308
36: ; preds = %31
%37 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
%38 = icmp eq i64 %37, 0
br i1 %38, label %39, label %41
39: ; preds = %36
%40 = call i32 @_filter_ioctl_desc(i32 %1)
br label %308
41: ; preds = %36
%42 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%43 = icmp eq i64 %42, 0
br i1 %43, label %44, label %50
44: ; preds = %41
br i1 %8, label %45, label %47
45: ; preds = %44
%46 = call i32 @_filter_ioctl_raw(i32 0)
br label %47
47: ; preds = %45, %44
%48 = call i32 @_filter_ioctl_desc(i32 %1)
%49 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %1)
br label %308
50: ; preds = %41
%51 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%52 = icmp eq i64 %51, 0
br i1 %52, label %53, label %55
53: ; preds = %50
%54 = call i32 @_filter_tsc(i32 %1)
br label %308
55: ; preds = %50
%56 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
%57 = icmp eq i64 %56, 0
br i1 %57, label %58, label %60
58: ; preds = %55
%59 = call i32 @_filter_tic(i32 %1)
br label %308
60: ; preds = %55
%61 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%62 = icmp eq i64 %61, 0
br i1 %62, label %63, label %65
63: ; preds = %60
%64 = call i32 @_filter_vp(i32 %1)
br label %308
65: ; preds = %60
%66 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%67 = icmp eq i64 %66, 0
br i1 %67, label %68, label %70
68: ; preds = %65
%69 = call i32 @_filter_fp(i32 %1)
br label %308
70: ; preds = %65
%71 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
%72 = icmp eq i64 %71, 0
br i1 %72, label %73, label %75
73: ; preds = %70
%74 = call i32 @_filter_gp(i32 %1)
br label %308
75: ; preds = %70
%76 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0))
%77 = icmp eq i64 %76, 0
br i1 %77, label %78, label %80
78: ; preds = %75
%79 = call i32 @_filter_cp(i32 %1)
br label %308
80: ; preds = %75
%81 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%82 = icmp eq i64 %81, 0
br i1 %82, label %83, label %85
83: ; preds = %80
%84 = call i32 @_filter_tep(i32 %1)
br label %308
85: ; preds = %80
%86 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%87 = icmp eq i64 %86, 0
br i1 %87, label %88, label %90
88: ; preds = %85
%89 = call i32 @_filter_tcp(i32 %1)
br label %308
90: ; preds = %85
%91 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0))
%92 = icmp eq i64 %91, 0
br i1 %92, label %93, label %99
93: ; preds = %90
%94 = call i32 @_filter_vp(i32 %1)
%95 = call i32 @_filter_fp(i32 %1)
%96 = call i32 @_filter_gp(i32 %1)
%97 = call i32 @_filter_tcp(i32 %1)
%98 = call i32 @_filter_tep(i32 %1)
br label %308
99: ; preds = %90
%100 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%101 = icmp eq i64 %100, 0
br i1 %101, label %102, label %104
102: ; preds = %99
%103 = call i32 @_filter_macro_rt_verbose(i32 %1)
br label %308
104: ; preds = %99
%105 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
%106 = icmp eq i64 %105, 0
br i1 %106, label %107, label %109
107: ; preds = %104
%108 = call i32 @_filter_macro_rt(i32 %1)
br label %308
109: ; preds = %104
%110 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.19, i64 0, i64 0))
%111 = icmp eq i64 %110, 0
br i1 %111, label %112, label %114
112: ; preds = %109
%113 = call i32 @_filter_macro_dis_enabled(i32 %1)
br label %308
114: ; preds = %109
%115 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0))
%116 = icmp eq i64 %115, 0
br i1 %116, label %117, label %123
117: ; preds = %114
br i1 %8, label %118, label %120
118: ; preds = %117
%119 = call i32 @_filter_macro_rt_verbose(i32 0)
br label %120
120: ; preds = %118, %117
%121 = call i32 @_filter_macro_rt(i32 %1)
%122 = call i32 @_filter_macro_dis_enabled(i32 %1)
br label %308
123: ; preds = %114
%124 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
%125 = icmp eq i64 %124, 0
br i1 %125, label %126, label %128
126: ; preds = %123
%127 = call i32 @_filter_buffer_usage(i32 %1)
br label %308
128: ; preds = %123
%129 = call i64 @strncmp(i8* %10, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.22, i64 0, i64 0), i32 6)
%130 = icmp eq i64 %129, 0
br i1 %130, label %131, label %139
131: ; preds = %128
%132 = getelementptr inbounds i8, i8* %10, i64 6
%133 = call i64 @strcmp(i8* %132, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%134 = icmp eq i64 %133, 0
br i1 %134, label %135, label %137
135: ; preds = %131
%136 = call i32 @_filter_all_classes(i32 %1)
br label %308
137: ; preds = %131
%138 = call i32 @_filter_class(i8* %132, i32 %1)
br label %308
139: ; preds = %128
%140 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
%141 = icmp eq i64 %140, 0
br i1 %141, label %142, label %144
142: ; preds = %139
%143 = call i32 @_filter_decode_pb(i32 %1)
br label %308
144: ; preds = %139
%145 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.25, i64 0, i64 0))
%146 = icmp eq i64 %145, 0
br i1 %146, label %147, label %149
147: ; preds = %144
%148 = call i32 @_filter_sys_mmap(i32 %1)
br label %308
149: ; preds = %144
%150 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.26, i64 0, i64 0))
%151 = icmp eq i64 %150, 0
br i1 %151, label %152, label %154
152: ; preds = %149
%153 = call i32 @_filter_sys_mmap_details(i32 %1)
br label %308
154: ; preds = %149
%155 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.27, i64 0, i64 0))
%156 = icmp eq i64 %155, 0
br i1 %156, label %157, label %159
157: ; preds = %154
%158 = call i32 @_filter_sys_munmap(i32 %1)
br label %308
159: ; preds = %154
%160 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0))
%161 = icmp eq i64 %160, 0
br i1 %161, label %162, label %164
162: ; preds = %159
%163 = call i32 @_filter_sys_mremap(i32 %1)
br label %308
164: ; preds = %159
%165 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.29, i64 0, i64 0))
%166 = icmp eq i64 %165, 0
br i1 %166, label %167, label %169
167: ; preds = %164
%168 = call i32 @_filter_sys_open(i32 %1)
br label %308
169: ; preds = %164
%170 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0))
%171 = icmp eq i64 %170, 0
br i1 %171, label %172, label %174
172: ; preds = %169
%173 = call i32 @_filter_msg(i32 %1)
br label %308
174: ; preds = %169
%175 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.31, i64 0, i64 0))
%176 = icmp eq i64 %175, 0
br i1 %176, label %177, label %179
177: ; preds = %174
%178 = call i32 @_filter_sys_write(i32 %1)
br label %308
179: ; preds = %174
%180 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.32, i64 0, i64 0))
%181 = icmp eq i64 %180, 0
br i1 %181, label %182, label %199
182: ; preds = %179
%183 = call i32 @_filter_sys_mmap(i32 %1)
br i1 %8, label %184, label %191
184: ; preds = %182
%185 = call i32 @_filter_sys_mmap_details(i32 0)
%186 = call i32 @_filter_sys_munmap(i32 0)
%187 = call i32 @_filter_sys_mremap(i32 0)
%188 = call i32 @_filter_sys_open(i32 0)
%189 = call i32 @_filter_sys_write(i32 0)
%190 = call i32 @_filter_ioctl_raw(i32 0)
br label %196
191: ; preds = %182
%192 = call i32 @_filter_sys_munmap(i32 %1)
%193 = call i32 @_filter_sys_mremap(i32 %1)
%194 = call i32 @_filter_sys_open(i32 %1)
%195 = call i32 @_filter_sys_write(i32 %1)
br label %196
196: ; preds = %191, %184
%197 = call i32 @_filter_ioctl_desc(i32 %1)
%198 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %1)
br label %308
199: ; preds = %179
%200 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.33, i64 0, i64 0))
%201 = icmp eq i64 %200, 0
br i1 %201, label %202, label %204
202: ; preds = %199
%203 = call i32 @_filter_nvrm_describe_handles(i32 %1)
br label %308
204: ; preds = %199
%205 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0))
%206 = icmp eq i64 %205, 0
br i1 %206, label %207, label %209
207: ; preds = %204
%208 = call i32 @_filter_nvrm_describe_classes(i32 %1)
br label %308
209: ; preds = %204
%210 = call i64 @strncmp(i8* %10, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.35, i64 0, i64 0), i32 10)
%211 = icmp eq i64 %210, 0
br i1 %211, label %212, label %224
212: ; preds = %209
%213 = getelementptr inbounds i8, i8* %10, i64 10
%214 = call i64 @strcmp(i8* %213, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%215 = icmp eq i64 %214, 0
br i1 %215, label %216, label %218
216: ; preds = %212
%217 = call i32 @_filter_all_nvrm_mthds(i32 %1)
br label %220
218: ; preds = %212
%219 = call i32 @_filter_nvrm_mthd(i8* %213, i32 %1)
br label %220
220: ; preds = %218, %216
br i1 %8, label %308, label %221
221: ; preds = %220
%222 = call i32 @_filter_nvrm_ioctl(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i32 %1)
%223 = call i32 @_filter_ioctl_desc(i32 %1)
br label %308
224: ; preds = %209
%225 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.37, i64 0, i64 0))
%226 = icmp eq i64 %225, 0
br i1 %226, label %227, label %229
227: ; preds = %224
%228 = call i32 @_filter_nvrm_show_unk_zero_fields(i32 %1)
br label %308
229: ; preds = %224
%230 = call i64 @strncmp(i8* %10, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.38, i64 0, i64 0), i32 11)
%231 = icmp eq i64 %230, 0
br i1 %231, label %232, label %243
232: ; preds = %229
%233 = getelementptr inbounds i8, i8* %10, i64 11
%234 = call i64 @strcmp(i8* %233, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%235 = icmp eq i64 %234, 0
br i1 %235, label %236, label %238
236: ; preds = %232
%237 = call i32 @_filter_all_nvrm_ioctls(i32 %1)
br label %240
238: ; preds = %232
%239 = call i32 @_filter_nvrm_ioctl(i8* %233, i32 %1)
br label %240
240: ; preds = %238, %236
br i1 %8, label %308, label %241
241: ; preds = %240
%242 = call i32 @_filter_ioctl_desc(i32 %1)
br label %308
243: ; preds = %229
%244 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.39, i64 0, i64 0))
%245 = icmp eq i64 %244, 0
br i1 %245, label %246, label %248
246: ; preds = %243
%247 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %1)
br label %308
248: ; preds = %243
%249 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.40, i64 0, i64 0))
%250 = icmp eq i64 %249, 0
br i1 %250, label %251, label %260
251: ; preds = %248
br i1 %8, label %254, label %252
252: ; preds = %251
%253 = call i32 @_filter_ioctl_desc(i32 %1)
br label %254
254: ; preds = %252, %251
%255 = call i32 @_filter_all_nvrm_ioctls(i32 %1)
%256 = call i32 @_filter_all_nvrm_mthds(i32 %1)
%257 = call i32 @_filter_nvrm_describe_handles(i32 %1)
%258 = call i32 @_filter_nvrm_describe_classes(i32 %1)
%259 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %1)
br label %308
260: ; preds = %248
%261 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.41, i64 0, i64 0))
%262 = icmp eq i64 %261, 0
br i1 %262, label %263, label %265
263: ; preds = %260
%264 = call i32 @_filter_info(i32 %1)
br label %308
265: ; preds = %260
%266 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%267 = icmp eq i64 %266, 0
br i1 %267, label %268, label %302
268: ; preds = %265
%269 = call i32 @_filter_info(i32 %1)
%270 = call i32 @_filter_write(i32 %1)
%271 = call i32 @_filter_read(i32 %1)
%272 = call i32 @_filter_gpu_addr(i32 %1)
%273 = call i32 @_filter_ioctl_raw(i32 %1)
%274 = call i32 @_filter_ioctl_desc(i32 %1)
%275 = call i32 @_filter_tsc(i32 %1)
%276 = call i32 @_filter_tic(i32 %1)
%277 = call i32 @_filter_vp(i32 %1)
%278 = call i32 @_filter_fp(i32 %1)
%279 = call i32 @_filter_gp(i32 %1)
%280 = call i32 @_filter_cp(i32 %1)
%281 = call i32 @_filter_tep(i32 %1)
%282 = call i32 @_filter_tcp(i32 %1)
%283 = call i32 @_filter_macro_rt_verbose(i32 %1)
%284 = call i32 @_filter_macro_rt(i32 %1)
%285 = call i32 @_filter_macro_dis_enabled(i32 %1)
%286 = call i32 @_filter_buffer_usage(i32 %1)
%287 = call i32 @_filter_all_classes(i32 %1)
%288 = call i32 @_filter_decode_pb(i32 %1)
%289 = call i32 @_filter_sys_mmap(i32 %1)
%290 = call i32 @_filter_sys_mmap_details(i32 %1)
%291 = call i32 @_filter_sys_munmap(i32 %1)
%292 = call i32 @_filter_sys_mremap(i32 %1)
%293 = call i32 @_filter_sys_open(i32 %1)
%294 = call i32 @_filter_msg(i32 %1)
%295 = call i32 @_filter_sys_write(i32 %1)
%296 = call i32 @_filter_nvrm_describe_handles(i32 %1)
%297 = call i32 @_filter_nvrm_describe_classes(i32 %1)
%298 = call i32 @_filter_all_nvrm_mthds(i32 %1)
%299 = call i32 @_filter_nvrm_show_unk_zero_fields(i32 %1)
%300 = call i32 @_filter_all_nvrm_ioctls(i32 %1)
%301 = call i32 @_filter_dump_object_tree_on_create_destroy(i32 %1)
br label %308
302: ; preds = %265
%303 = load i32, i32* @stderr
%304 = call i32 @fprintf(i32 %303, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.42, i64 0, i64 0), i8* %10)
%305 = load i32, i32* @stderr
%306 = call i32 @fflush(i32 %305)
%307 = call i32 @exit(i32 1)
unreachable
308: ; preds = %18, %28, %39, %53, %63, %73, %83, %93, %107, %120, %137, %135, %147, %157, %167, %177, %202, %221, %220, %241, %240, %254, %268, %263, %246, %227, %207, %196, %172, %162, %152, %142, %126, %112, %102, %88, %78, %68, %58, %47, %34, %23, %13
%309 = load i8*, i8** %3
%310 = icmp eq i8* %309, null
br i1 %310, label %311, label %9
311: ; preds = %308, %2
%312 = call i32 @free(i8* %4)
ret void
}