// File: /workspace/github_c_makefile_star2_O2/jaimecgomezz[P]st/x.c
// Function: selrequest
void selrequest(XEvent *e) {
  XSelectionRequestEvent *xsre;
  XSelectionEvent xev;
  Atom xa_targets, string, clipboard;
  char *seltext;

  xsre = (XSelectionRequestEvent *)e;
  xev.type = SelectionNotify;
  xev.requestor = xsre->requestor;
  xev.selection = xsre->selection;
  xev.target = xsre->target;
  xev.time = xsre->time;
  if (xsre->property == None)
    xsre->property = xsre->target;

  /* reject */
  xev.property = None;

  xa_targets = XInternAtom(xw.dpy, "TARGETS", 0);
  if (xsre->target == xa_targets) {
    /* respond with the supported type */
    string = xsel.xtarget;
    XChangeProperty(xsre->display, xsre->requestor, xsre->property, XA_ATOM, 32,
                    PropModeReplace, (uchar *)&string, 1);
    xev.property = xsre->property;
  } else if (xsre->target == xsel.xtarget || xsre->target == XA_STRING) {
    /*
     * xith XA_STRING non ascii characters may be incorrect in the
     * requestor. It is not our problem, use utf8.
     */
    clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0);
    if (xsre->selection == XA_PRIMARY) {
      seltext = xsel.primary;
    } else if (xsre->selection == clipboard) {
      seltext = xsel.clipboard;
    } else {
      fprintf(stderr, "Unhandled clipboard selection 0x%lx\n", xsre->selection);
      return;
    }
    if (seltext != NULL) {
      XChangeProperty(xsre->display, xsre->requestor, xsre->property,
                      xsre->target, 8, PropModeReplace, (uchar *)seltext,
                      strlen(seltext));
      xev.property = xsre->property;
    }
  }

  /* all done, send a notification to the listener */
  if (!XSendEvent(xsre->display, xsre->requestor, 1, 0, (XEvent *)&xev))
    fprintf(stderr, "Error sending SelectionNotify event\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, %rbx
movl $0x1f, 0x10(%rsp)
movups 0x28(%rdi), %xmm0
movups %xmm0, 0x30(%rsp)
movq 0x38(%rdi), %rax
movq %rax, 0x40(%rsp)
movq 0x48(%rdi), %rcx
movq %rcx, 0x50(%rsp)
cmpq $0x0, 0x40(%rdi)
jne 0xc316
movq %rax, 0x40(%rbx)
andq $0x0, 0x48(%rsp)
movq 0xa96d(%rip), %rdi      # 0x16c90
leaq 0x1fb7(%rip), %rsi      # 0xe2e1
xorl %edx, %edx
callq 0x5720
movq 0x38(%rbx), %rcx
movq 0xaabc(%rip), %rdx      # 0x16df8
cmpq %rax, %rcx
jne 0xc367
leaq 0x8(%rsp), %rax
movq %rdx, (%rax)
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rsi
movq 0x40(%rbx), %rdx
pushq $0x4
popq %rcx
pushq $0x20
popq %r8
xorl %r9d, %r9d
pushq $0x1
pushq %rax
jmp 0xc3ea
cmpq %rdx, %rcx
setne %al
cmpq $0x1f, %rcx
setne %cl
testb %al, %cl
jne 0xc3fc
movq 0xa90d(%rip), %rdi      # 0x16c90
leaq 0x181d(%rip), %rsi      # 0xdba7
xorl %edx, %edx
callq 0x5720
movq 0x30(%rbx), %rdx
cmpq $0x1, %rdx
jne 0xc3a4
leaq 0xaa5e(%rip), %rax      # 0x16e00
jmp 0xc3b4
cmpq %rax, %rdx
jne 0xc444
leaq 0xaa54(%rip), %rax      # 0x16e08
movq (%rax), %r14
testq %r14, %r14
je 0xc3fc
movq 0x18(%rbx), %r15
movq 0x28(%rbx), %r12
movq 0x40(%rbx), %r13
movq 0x38(%rbx), %rbp
movq %r14, %rdi
callq 0x5350
pushq $0x8
popq %r8
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
movq %rbp, %rcx
xorl %r9d, %r9d
pushq %rax
pushq %r14
callq 0x5780
addq $0x10, %rsp
movq 0x40(%rbx), %rax
movq %rax, 0x48(%rsp)
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rsi
pushq $0x1
popq %rdx
leaq 0x10(%rsp), %r8
xorl %ecx, %ecx
callq 0x5610
testl %eax, %eax
je 0xc426
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x7bc3(%rip), %rax      # 0x13ff0
movq (%rax), %rcx
leaq 0x1ed7(%rip), %rdi      # 0xe30e
pushq $0x24
popq %rsi
pushq $0x1
popq %rdx
callq 0x57d0
jmp 0xc417
movq 0x7ba5(%rip), %rax      # 0x13ff0
movq (%rax), %rdi
leaq 0x1e94(%rip), %rsi      # 0xe2e9
xorl %eax, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5830