// File: /workspace/github_c_makefile_star2_O0/ShinyaKato[P]skcc/file.c
// Function: splice_line
struct utf8c splice_line(struct source *src) {
  for(; src->splice_queue_size < 3; src->splice_queue_size++) {
    src->splice_queue[src->splice_queue_size] = replace_trigraph(src);
    if(src->splice_queue[src->splice_queue_size].bytes == 0) {
      break;
    }
  }

  if(src->splice_queue_size == 0) {
    return ueof;
  }

  if(src->splice_queue_size >= 2) {
    if(src->splice_queue[0].sequence[0] == '\\') {
      if(src->splice_queue[1].sequence[0] == '\n') {
        if(src->splice_queue_size == 2) {
          error("end of the source file requires new line indicator.\n");
        }
        src->splice_queue_size = 0;
        return src->splice_queue[2];
      }
    }
  }

  struct utf8c uc = src->splice_queue[0];
  src->splice_queue_size--;
  for(int i = 0; i < src->splice_queue_size; i++) {
    src->splice_queue[i] = src->splice_queue[i + 1];
  }
  return uc;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x3, 0x40(%rax)
jge 0x1ee8
movq -0x18(%rbp), %rdi
movslq 0x40(%rdi), %rax
leaq (%rax,%rax,2), %rax
leaq 0x44(%rdi,%rax,4), %rax
movq %rax, -0x58(%rbp)
callq 0x1c60
movq %rax, %rcx
movq -0x58(%rbp), %rax
movb %dl, -0x30(%rbp)
movq %rcx, -0x38(%rbp)
movq -0x38(%rbp), %rcx
movq %rcx, -0x24(%rbp)
movl -0x30(%rbp), %ecx
movl %ecx, -0x1c(%rbp)
movq -0x24(%rbp), %rcx
movq %rcx, (%rax)
movl -0x1c(%rbp), %ecx
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
addq $0x44, %rax
movq -0x18(%rbp), %rcx
movslq 0x40(%rcx), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, (%rax)
jne 0x1ed7
jmp 0x1ee8
jmp 0x1ed9
movq -0x18(%rbp), %rax
movl 0x40(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x40(%rax)
jmp 0x1e6c
movq -0x18(%rbp), %rax
cmpl $0x0, 0x40(%rax)
jne 0x1f0b
leaq 0xc18f(%rip), %rax      # 0xe088
movq (%rax), %rcx
movq %rcx, -0xc(%rbp)
movl 0x8(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x1fec
movq -0x18(%rbp), %rax
cmpl $0x2, 0x40(%rax)
jl 0x1f76
movq -0x18(%rbp), %rax
movzbl 0x48(%rax), %eax
cmpl $0x5c, %eax
jne 0x1f74
movq -0x18(%rbp), %rax
movzbl 0x54(%rax), %eax
cmpl $0xa, %eax
jne 0x1f72
movq -0x18(%rbp), %rax
cmpl $0x2, 0x40(%rax)
jne 0x1f53
leaq 0x80f1(%rip), %rdi      # 0xa031
movl $0x6b, %esi
leaq 0x8119(%rip), %rdx      # 0xa065
movb $0x0, %al
callq 0x1280
movq -0x18(%rbp), %rax
movl $0x0, 0x40(%rax)
movq -0x18(%rbp), %rax
movq 0x5c(%rax), %rcx
movq %rcx, -0xc(%rbp)
movl 0x64(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x1fec
jmp 0x1f74
jmp 0x1f76
movq -0x18(%rbp), %rax
movq 0x44(%rax), %rcx
movq %rcx, -0xc(%rbp)
movl 0x4c(%rax), %eax
movl %eax, -0x4(%rbp)
movq -0x18(%rbp), %rax
movl 0x40(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x40(%rax)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jge 0x1fea
movq -0x18(%rbp), %rax
addq $0x44, %rax
movslq -0x3c(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
addq $0x44, %rcx
movl -0x3c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movl 0x8(%rcx), %ecx
movl %ecx, 0x8(%rax)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x1f9c
jmp 0x1fec
movl -0x4(%rbp), %eax
movl %eax, -0x48(%rbp)
movq -0xc(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movb -0x48(%rbp), %dl
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)