// File: /workspace/github_c_makefile_star2_O1/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
leaq 0x27b1(%rip), %rsi      # 0xe096
movq %r14, %rdi
callq 0x41a0
testl %eax, %eax
je 0xb92f
leaq 0x27a1(%rip), %rsi      # 0xe099
movq %r14, %rdi
callq 0x41a0
testl %eax, %eax
je 0xb938
movzbl (%r14), %eax
cmpl $0x63, %eax
jle 0xb941
cmpl $0x64, %eax
je 0xb95e
cmpl $0x6f, %eax
je 0xb96d
cmpl $0x78, %eax
jne 0xba58
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x10, %edx
jmp 0xb97a
movq 0xb0(%rbx), %rax
jmp 0xb9a2
movq 0xd0(%rbx), %rax
jmp 0xb9a2
cmpl $0x5c, %eax
je 0xb9ad
cmpl $0x62, %eax
jne 0xba58
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x2, %edx
jmp 0xb97a
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0xa, %edx
jmp 0xb97a
incq %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x8, %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
leaq 0x1(%r14), %r15
leaq 0x270c(%rip), %rsi      # 0xe0c4
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xba3c
leaq 0x2701(%rip), %rsi      # 0xe0cc
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xba43
leaq 0x26f8(%rip), %rsi      # 0xe0d6
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xba4a
leaq 0x26ee(%rip), %rsi      # 0xe0df
movq %r15, %rdi
callq 0x41a0
testl %eax, %eax
je 0xba64
movsbl (%r15), %ebp
cmpl $0x78, %ebp
jne 0xba51
cmpb $0x0, 0x2(%r14)
je 0xba51
addq $0x2, %r14
leaq 0x4(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x26c3(%rip), %rsi      # 0xe0e6
xorl %ebp, %ebp
movq %r14, %rdi
xorl %eax, %eax
callq 0x4200
movl %eax, %ecx
cmpl $0x1, %eax
jne 0xba6b
movl 0x4(%rsp), %ebp
jmp 0xba72
movl $0x20, %ebp
jmp 0xba7b
movl $0xa, %ebp
jmp 0xba7b
movl $0xd, %ebp
jmp 0xba7b
cmpb $0x0, 0x2(%r14)
je 0xba7b
movq 0x90(%rbx), %rax
jmp 0xb9a2
movl $0x9, %ebp
jmp 0xba7b
movq 0x90(%rbx), %rax
cmpl $0x1, %ecx
jne 0xb9a2
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 0xb99e