// File: /workspace/github_c_makefile_star2_O0/mattn[P]orelang/ore.c
// Function: ore_parse_str
static ore_value
ore_parse_str(ore_context* ore, const char* s) {
  ore_value v = { ORE_TYPE_STRING };
  char* t = strdup(s);
  if (!t) {
    fprintf(stderr, "failed to allocate memory\n");
    ore->err = ORE_ERROR_EXCEPTION;
    return ore_value_nil();
  }
  char* p = t + 1;
  char* ps = p;
  int n = 0;
  while (*p) {
    if (*p == '\\' && *(p+1)) {
      p++;
      switch (*p) {
        case 'b': *ps = '\b'; break;
        case 'f': *ps = '\f'; break;
        case 'r': *ps = '\r'; break;
        case 'n': *ps = '\n'; break;
        case 't': *ps = '\t'; break;
        default:
         *ps = *p;
      }
    } else
      *ps = *p;
    p++; ps++; n++;
  }
  *p = 0x00;
  size_t l = n - 1;
  v.v.s = (ore_string*) malloc(sizeof(ore_string));
  if (!v.v.s) {
    fprintf(stderr, "failed to allocate memory\n");
    ore->err = ORE_ERROR_EXCEPTION;
    return ore_value_nil();
  }
  v.v.s->ref = 0;
  v.v.s->l = l;
  v.v.s->p = calloc(1, l + 1);
  strncpy(v.v.s->p, t + 1, l);
  free(t);
  return v;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x70(%rbp)
movq %rdi, -0x68(%rbp)
movq %rsi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
movl $0x28, %edx
callq 0x20e0
movl $0x4, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2240
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
jne 0x15ca7
movq 0xb37b(%rip), %rax      # 0x20ff8
movq (%rax), %rdi
leaq 0x4f37(%rip), %rsi      # 0x1abbe
movb $0x0, %al
callq 0x2140
movq -0x70(%rbp), %rdi
movq -0x8(%rbp), %rax
movl $0x1, 0x20(%rax)
callq 0x10670
jmp 0x15e46
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
movl $0x0, -0x54(%rbp)
movq -0x48(%rbp), %rax
cmpb $0x0, (%rax)
je 0x15d89
movq -0x48(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0x15d57
movq -0x48(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x15d57
movq -0x48(%rbp), %rax
incq %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movsbl (%rax), %eax
addl $-0x62, %eax
movl %eax, %ecx
movq %rcx, -0x78(%rbp)
subl $0x12, %eax
ja 0x15d49
movq -0x78(%rbp), %rax
leaq 0x4cfd(%rip), %rcx      # 0x1aa10
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x50(%rbp), %rax
movb $0x8, (%rax)
jmp 0x15d55
movq -0x50(%rbp), %rax
movb $0xc, (%rax)
jmp 0x15d55
movq -0x50(%rbp), %rax
movb $0xd, (%rax)
jmp 0x15d55
movq -0x50(%rbp), %rax
movb $0xa, (%rax)
jmp 0x15d55
movq -0x50(%rbp), %rax
movb $0x9, (%rax)
jmp 0x15d55
movq -0x48(%rbp), %rax
movb (%rax), %cl
movq -0x50(%rbp), %rax
movb %cl, (%rax)
jmp 0x15d63
movq -0x48(%rbp), %rax
movb (%rax), %cl
movq -0x50(%rbp), %rax
movb %cl, (%rax)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x15cc2
movq -0x48(%rbp), %rax
movb $0x0, (%rax)
movl -0x54(%rbp), %eax
subl $0x1, %eax
cltq
movq %rax, -0x60(%rbp)
movl $0x10, %edi
callq 0x2190
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x15ddf
movq 0xb240(%rip), %rax      # 0x20ff8
movq (%rax), %rdi
leaq 0x4dfc(%rip), %rsi      # 0x1abbe
movb $0x0, %al
callq 0x2140
movq -0x70(%rbp), %rdi
movq -0x8(%rbp), %rax
movl $0x1, 0x20(%rax)
callq 0x10670
jmp 0x15e46
movq -0x30(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x60(%rbp), %rsi
addq $0x1, %rsi
movl $0x1, %edi
callq 0x2120
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq -0x40(%rbp), %rsi
addq $0x1, %rsi
movq -0x60(%rbp), %rdx
callq 0x2040
movq -0x40(%rbp), %rdi
callq 0x2280
movq -0x70(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movl $0x28, %edx
callq 0x2170
movq -0x68(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)