// File: /workspace/github_c_makefile_star2_O0/RodionGork[P]tinyscheme/scheme.c
// Function: printslashstring
static void printslashstring(scheme * sc, char *p, int len) {
  int i, c, d, charsize;
  char buf[5];
  unsigned char *s = (unsigned char *) p;
  putcharacter(sc, '"');
  if (IS_ASCII(*p)) {
    charsize = 1;
  } else {
    charsize = 4;
    s += 4;
  }
  for (i = 0; i < len; i++) {
    if (charsize == 1) {
      c = *s++;
    } else {
      c = *((int*) s);
      s += 4;
    }
    if (c == '"' || c < ' ' || c == '\\') {
      putcharacter(sc, '\\');
      switch (c) {
      case '"':
        putcharacter(sc, '"');
        break;
      case '\n':
        putcharacter(sc, 'n');
        break;
      case '\t':
        putcharacter(sc, 't');
        break;
      case '\r':
        putcharacter(sc, 'r');
        break;
      case '\\':
        putcharacter(sc, '\\');
        break;
      default:{
          d = c / 16;
          putcharacter(sc, 'x');
          if (d < 10) {
            putcharacter(sc, d + '0');
          } else {
            putcharacter(sc, d - 10 + 'A');
          }
          d = c % 16;
          if (d < 10) {
            putcharacter(sc, d + '0');
          } else {
            putcharacter(sc, d - 10 + 'A');
          }
        }
      }
    } else {
      char_to_utf8(c, buf, &d);
      for (c = 0; c < d; c++) {
        putcharacter(sc, buf[c]);
      }
    }
  }
  putcharacter(sc, '"');
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movl %edx, 0x34(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movl $0x22, %esi
callq 0x5350
movq 0x38(%rsp), %rax
movsbl (%rax), %eax
andl $-0x80, %eax
cmpl $0x0, %eax
jne 0x15605
movl $0x1, 0x24(%rsp)
jmp 0x1561b
movl $0x4, 0x24(%rsp)
movq 0x10(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x10(%rsp)
movl $0x0, 0x30(%rsp)
movl 0x30(%rsp), %eax
cmpl 0x34(%rsp), %eax
jge 0x1581b
cmpl $0x1, 0x24(%rsp)
jne 0x15652
movq 0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rsp)
movzbl (%rax), %eax
movl %eax, 0x2c(%rsp)
jmp 0x1566b
movq 0x10(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x2c(%rsp)
movq 0x10(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x10(%rsp)
cmpl $0x22, 0x2c(%rsp)
je 0x15684
cmpl $0x20, 0x2c(%rsp)
jl 0x15684
cmpl $0x5c, 0x2c(%rsp)
jne 0x157c1
movq 0x40(%rsp), %rdi
movl $0x5c, %esi
callq 0x5350
movl 0x2c(%rsp), %eax
movl %eax, 0xc(%rsp)
subl $0x9, %eax
je 0x156f6
jmp 0x156a2
movl 0xc(%rsp), %eax
subl $0xa, %eax
je 0x156e2
jmp 0x156ad
movl 0xc(%rsp), %eax
subl $0xd, %eax
je 0x1570a
jmp 0x156b8
movl 0xc(%rsp), %eax
subl $0x22, %eax
je 0x156ce
jmp 0x156c3
movl 0xc(%rsp), %eax
subl $0x5c, %eax
je 0x1571e
jmp 0x15732
movq 0x40(%rsp), %rdi
movl $0x22, %esi
callq 0x5350
jmp 0x157bf
movq 0x40(%rsp), %rdi
movl $0x6e, %esi
callq 0x5350
jmp 0x157bf
movq 0x40(%rsp), %rdi
movl $0x74, %esi
callq 0x5350
jmp 0x157bf
movq 0x40(%rsp), %rdi
movl $0x72, %esi
callq 0x5350
jmp 0x157bf
movq 0x40(%rsp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x157bf
movl 0x2c(%rsp), %eax
movl $0x10, %ecx
cltd
idivl %ecx
movl %eax, 0x28(%rsp)
movq 0x40(%rsp), %rdi
movl $0x78, %esi
callq 0x5350
cmpl $0xa, 0x28(%rsp)
jge 0x1576b
movq 0x40(%rsp), %rdi
movl 0x28(%rsp), %esi
addl $0x30, %esi
callq 0x5350
jmp 0x1577f
movq 0x40(%rsp), %rdi
movl 0x28(%rsp), %esi
subl $0xa, %esi
addl $0x41, %esi
callq 0x5350
movl 0x2c(%rsp), %eax
movl $0x10, %ecx
cltd
idivl %ecx
movl %edx, 0x28(%rsp)
cmpl $0xa, 0x28(%rsp)
jge 0x157a9
movq 0x40(%rsp), %rdi
movl 0x28(%rsp), %esi
addl $0x30, %esi
callq 0x5350
jmp 0x157bd
movq 0x40(%rsp), %rdi
movl 0x28(%rsp), %esi
subl $0xa, %esi
addl $0x41, %esi
callq 0x5350
jmp 0x157bf
jmp 0x15809
movl 0x2c(%rsp), %edi
leaq 0x1f(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0x15830
movl $0x0, 0x2c(%rsp)
movl 0x2c(%rsp), %eax
cmpl 0x28(%rsp), %eax
jge 0x15807
movq 0x40(%rsp), %rdi
movslq 0x2c(%rsp), %rax
movsbl 0x1f(%rsp,%rax), %esi
callq 0x5350
movl 0x2c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2c(%rsp)
jmp 0x157dc
jmp 0x15809
jmp 0x1580b
movl 0x30(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x30(%rsp)
jmp 0x15623
movq 0x40(%rsp), %rdi
movl $0x22, %esi
callq 0x5350
addq $0x48, %rsp
retq
nop