// File: aleden[P]ptrace-multi-threaded-demo/ptrace_multi_threaded_demo.cpp
// Function: name_of_signal_number(int)
const char *name_of_signal_number(int num) {
  switch (num) {
#define _CHECK_SIGNAL(NM)                                                      \
  case NM:                                                                     \
    return #NM;

#ifdef SIGHUP
  _CHECK_SIGNAL(SIGHUP)
#endif
#ifdef SIGINT
  _CHECK_SIGNAL(SIGINT)
#endif
#ifdef SIGQUIT
  _CHECK_SIGNAL(SIGQUIT)
#endif
#ifdef SIGILL
  _CHECK_SIGNAL(SIGILL)
#endif
#ifdef SIGTRAP
  _CHECK_SIGNAL(SIGTRAP)
#endif
#ifdef SIGABRT
  _CHECK_SIGNAL(SIGABRT)
#endif
#ifdef SIGBUS
  _CHECK_SIGNAL(SIGBUS)
#endif
#ifdef SIGFPE
  _CHECK_SIGNAL(SIGFPE)
#endif
#ifdef SIGKILL
  _CHECK_SIGNAL(SIGKILL)
#endif
#ifdef SIGUSR1
  _CHECK_SIGNAL(SIGUSR1)
#endif
#ifdef SIGSEGV
  _CHECK_SIGNAL(SIGSEGV)
#endif
#ifdef SIGUSR2
  _CHECK_SIGNAL(SIGUSR2)
#endif
#ifdef SIGPIPE
  _CHECK_SIGNAL(SIGPIPE)
#endif
#ifdef SIGALRM
  _CHECK_SIGNAL(SIGALRM)
#endif
#ifdef SIGTERM
  _CHECK_SIGNAL(SIGTERM)
#endif
#ifdef SIGSTKFLT
  _CHECK_SIGNAL(SIGSTKFLT)
#endif
#ifdef SIGCHLD
  _CHECK_SIGNAL(SIGCHLD)
#endif
#ifdef SIGCONT
  _CHECK_SIGNAL(SIGCONT)
#endif
#ifdef SIGSTOP
  _CHECK_SIGNAL(SIGSTOP)
#endif
#ifdef SIGTSTP
  _CHECK_SIGNAL(SIGTSTP)
#endif
#ifdef SIGTTIN
  _CHECK_SIGNAL(SIGTTIN)
#endif
#ifdef SIGTTOU
  _CHECK_SIGNAL(SIGTTOU)
#endif
#ifdef SIGURG
  _CHECK_SIGNAL(SIGURG)
#endif
#ifdef SIGXCPU
  _CHECK_SIGNAL(SIGXCPU)
#endif
#ifdef SIGXFSZ
  _CHECK_SIGNAL(SIGXFSZ)
#endif
#ifdef SIGVTALRM
  _CHECK_SIGNAL(SIGVTALRM)
#endif
#ifdef SIGPROF
  _CHECK_SIGNAL(SIGPROF)
#endif
#ifdef SIGWINCH
  _CHECK_SIGNAL(SIGWINCH)
#endif
#ifdef SIGPOLL
  _CHECK_SIGNAL(SIGPOLL)
#endif
#ifdef SIGSYS
  _CHECK_SIGNAL(SIGSYS)
#endif
  }

  return "UNKNOWN";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0xc(%rbp)
movl -0xc(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x1e, %eax
ja 0x3f84
movq -0x18(%rbp), %rax
leaq 0x377e(%rip), %rcx      # 0x7534
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x3acf(%rip), %rax      # 0x7895
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3ac6(%rip), %rax      # 0x789c
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3abd(%rip), %rax      # 0x78a3
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3ab5(%rip), %rax      # 0x78ab
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3aac(%rip), %rax      # 0x78b2
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3aa4(%rip), %rax      # 0x78ba
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a9c(%rip), %rax      # 0x78c2
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a93(%rip), %rax      # 0x78c9
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a8a(%rip), %rax      # 0x78d0
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a82(%rip), %rax      # 0x78d8
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a7a(%rip), %rax      # 0x78e0
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a72(%rip), %rax      # 0x78e8
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a6a(%rip), %rax      # 0x78f0
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a62(%rip), %rax      # 0x78f8
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a5a(%rip), %rax      # 0x7900
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a52(%rip), %rax      # 0x7908
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a4c(%rip), %rax      # 0x7912
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a44(%rip), %rax      # 0x791a
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a3c(%rip), %rax      # 0x7922
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a34(%rip), %rax      # 0x792a
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a2c(%rip), %rax      # 0x7932
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a24(%rip), %rax      # 0x793a
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a1f(%rip), %rax      # 0x7942
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a19(%rip), %rax      # 0x7949
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a14(%rip), %rax      # 0x7951
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a0f(%rip), %rax      # 0x7959
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a0c(%rip), %rax      # 0x7963
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a07(%rip), %rax      # 0x796b
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x3a03(%rip), %rax      # 0x7974
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x39fe(%rip), %rax      # 0x797c
movq %rax, -0x8(%rbp)
jmp 0x3f8f
leaq 0x39f8(%rip), %rax      # 0x7983
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)