// File: /workspace/github_c_makefile_star2_O3/RodionGork[P]tinyscheme/scheme.c
// Function: mk_sharp_const
static pointer mk_sharp_const(scheme * sc, char *name) {
  if (str_eq_to_lower(name, "t")) {
    return (sc->T);
  } else if (str_eq_to_lower(name, "f")) {
    return (sc->F);
  } else if (*name == '\\') {   /* #\w (character) */
    int c = 0;
    if (str_eq_to_lower(name + 1, "space")) {
      c = ' ';
    } else if (str_eq_to_lower(name + 1, "newline")) {
      c = '\n';
    } else if (str_eq_to_lower(name + 1, "return")) {
      c = '\r';
    } else if (str_eq_to_lower(name + 1, "tab")) {
      c = '\t';
    } else if (name[1] == 'x' && name[2] != 0) {
      int c1 = 0;
      if (sscanf(name + 2, "%x", (unsigned int *) &c1) == 1) {
        c = c1;
      } else {
        return sc->NIL;
      }
    } else if (name[2] == 0) {
      c = name[1];
    } else {
      return sc->NIL;
    }
    return mk_character(sc, c);
  } else if (*name == 'x') {    /* #x (hex) */
    return (mk_integer(sc, strtol(name + 1, 0, 16)));
  } else if (*name == 'b') {    /* #b (bin) */
    return (mk_integer(sc, strtol(name + 1, 0, 2)));
  } else if (*name == 'o') {    /* #o (oct) */
    return (mk_integer(sc, strtol(name + 1, 0, 8)));
  } else if (*name == 'd') {    /* #d (dec) */
    return (mk_integer(sc, strtol(name + 1, 0, 10)));
  } else {
    return (sc->NIL);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movzbl (%rsi), %eax
cmpl $0x65, %eax
jle 0xb76b
cmpl $0x73, %eax
jg 0xb794
cmpl $0x66, %eax
je 0xb865
cmpl $0x6f, %eax
jne 0xb86c
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x8, %edx
jmp 0xb891
cmpl $0x5c, %eax
je 0xb7bd
cmpl $0x62, %eax
je 0xb884
cmpl $0x64, %eax
jne 0xb86c
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0xa, %edx
jmp 0xb891
cmpl $0x78, %eax
je 0xb875
cmpl $0x74, %eax
jne 0xb86c
cmpb $0x0, 0x1(%r14)
jne 0xb86c
movq 0xb0(%rbx), %rax
jmp 0xb8b9
leaq 0x1(%r14), %r15
leaq 0x28f5(%rip), %rsi      # 0xe0bd
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xb8c4
leaq 0x28e6(%rip), %rsi      # 0xe0c5
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xb8d4
leaq 0x28d9(%rip), %rsi      # 0xe0cf
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xb8db
leaq 0x28cb(%rip), %rsi      # 0xe0d8
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xb8e2
movsbl 0x1(%r14), %ebp
movb 0x2(%r14), %al
cmpl $0x78, %ebp
jne 0xb8e9
testb %al, %al
je 0xb8f1
addq $0x2, %r14
leaq 0x4(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x2892(%rip), %rsi      # 0xe0df
movq %r14, %rdi
xorl %eax, %eax
callq 0x4200
cmpl $0x1, %eax
jne 0xb86c
movl 0x4(%rsp), %ebp
jmp 0xb8f1
cmpb $0x0, 0x1(%r14)
je 0xb8cb
movq 0x90(%rbx), %rax
jmp 0xb8b9
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x10, %edx
jmp 0xb891
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x41c0
movq %rax, %r14
movq 0x90(%rbx), %rdx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x4689
movl $0x4002, (%rax)         # imm = 0x4002
movq %r14, 0x10(%rax)
movb $0x1, 0x8(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0x20, %ebp
jmp 0xb8f1
movq 0xd0(%rbx), %rax
jmp 0xb8b9
movl $0xa, %ebp
jmp 0xb8f1
movl $0xd, %ebp
jmp 0xb8f1
movl $0x9, %ebp
jmp 0xb8f1
testb %al, %al
jne 0xb86c
movq 0x90(%rbx), %rdx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x4689
movl $0x4009, (%rax)         # imm = 0x4009
movslq %ebp, %rcx
movq %rcx, 0x10(%rax)
jmp 0xb8b5