// File: sundale[P]gcode/rs274ngc/interp_read.cc
// Function: Interp::read_items(block_struct*, char*, double*)
int Interp::read_items(block_pointer block,      //!< pointer to a block being filled from the line 
                      char *line,       //!< string: line of RS274/NGC code being processed
                      double *parameters)   //!< array of system parameters 
{
  int counter;
  int length;

  length = strlen(line);
  counter = 0;

  if (line[counter] == '/')     /* skip the slash character if first */
    counter++;

  if (line[counter] == 'n') {
    CHP(read_n_number(line, &counter, block));
  }

  if (line[counter] == 'o')
 /* Handle 'o' explicitly here. Default is
    to read letters via pointer calls to related
    reader functions. 'o' control lines have their
    own commands and command handlers. */
    {
      CHP(read_o(line, &counter, block, parameters));
      return INTERP_OK;
    }
  else if(_setup.skipping_o != 0)
  {
      // if we are skipping, do NOT evaluate non-olines
      return INTERP_OK;
  }

  for (; counter < length;) {
    CHP(read_one_item(line, &counter, block, parameters));
  }
  return INTERP_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rdi
callq 0x10740
movl %eax, -0x30(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x5fffd
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x6e, %eax
jne 0x600f7
jmp 0x60014
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rcx
leaq -0x2c(%rbp), %rdx
callq 0x118c0
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
je 0x600f3
jmp 0x60038
movq 0x26f21(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x600e8
movq 0x26f0d(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x26eff(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x1d77e(%rip), %rsi     # 0x7d7f4
movl $0x50, %edx
callq 0x10840
movq 0x26ed9(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x26ecb(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x26eb3(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x26ea3(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x26e96(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x26e88(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x34(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x6031c
jmp 0x600f5
jmp 0x600f7
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x6f, %eax
jne 0x601ff
jmp 0x6010e
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %r8
leaq -0x2c(%rbp), %rdx
callq 0x102d0
movl %eax, -0x38(%rbp)
cmpl $0x0, -0x38(%rbp)
je 0x601f1
jmp 0x60136
movq 0x26e23(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x601e6
movq 0x26e0f(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x26e01(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x1d680(%rip), %rsi     # 0x7d7f4
movl $0x50, %edx
callq 0x10840
movq 0x26ddb(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x26dcd(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x26db5(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x26da5(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x26d98(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x26d8a(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x38(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x6031c
jmp 0x601f3
movl $0x0, -0x4(%rbp)
jmp 0x6031c
movq 0x26d5a(%rip), %rax     # 0x86f60
cmpq $0x0, 0xef70(%rax)
je 0x6021c
movl $0x0, -0x4(%rbp)
jmp 0x6031c
jmp 0x6021e
jmp 0x60220
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x60315
jmp 0x6022e
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %r8
leaq -0x2c(%rbp), %rdx
callq 0x10a70
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
je 0x6030e
jmp 0x60256
movq 0x26d03(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x60306
movq 0x26cef(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x26ce1(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x1d560(%rip), %rsi     # 0x7d7f4
movl $0x50, %edx
callq 0x10840
movq 0x26cbb(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x26cad(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x26c95(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x26c85(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x26c78(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x26c6a(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x3c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x6031c
jmp 0x60310
jmp 0x60220
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)