// File: /workspace/github_c_makefile_star2_O3/heltilda[P]cicada/intrpt.c
// Function: readDataString
void readDataString(view *theView, void *sourceString, void *overflowMarker)
{
    ccInt oneLetterType, counter, rtrn, charType = lettertype(*(char **) sourceString);
    
    
        // white space in the source string is skipped over
        // (lettertype[], a_space, etc. are defined in cmpile.c(pp)/h)
    
    while ((charType == a_space) || (charType == a_eol) || (charType == unprintable))
        {  (*(char **) sourceString)++;  charType = lettertype(*(char **) sourceString);  }
    
    
        // numeric types in the destination window are parsed using readNum() (defined in cmpile.c(pp))
    
    for (counter = 1; counter <= theView->width; counter++)  {
        rtrn = readNum((char **) sourceString, &doubleRegister, NULL);
        if (rtrn != passed)  {
            if ((rtrn != underflow_err) && (rtrn != overflow_err))  rtrn = read_number_err;
            if (warningCode == passed)  ((char **) overflowMarker)[1] = *(char **) sourceString;
            setWarning(rtrn, pcCodePtr-1);
            if (rtrn == read_number_err)  return;       }
        
        oneLetterType = lettertype(*(char **) sourceString);
        while ((oneLetterType != a_symbol) && (oneLetterType != a_number) && (oneLetterType != a_letter) &&
                                                    (*(char **) sourceString < *(char **) overflowMarker))
            {  (*(char **) sourceString)++; oneLetterType = lettertype(*(char **) sourceString);  }
        saveDoubleRegister(theView->windowPtr->variable_ptr, theView->offset+counter-1);      }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq (%rsi), %rax
movzbl (%rax), %ecx
leaq 0x1422a(%rip), %r13     # 0x22180
cmpl $0x2, (%r13,%rcx,4)
ja 0xdf72
incq %rax
movq %rax, (%r14)
movzbl (%rax), %ecx
incq %rax
cmpl $0x3, (%r13,%rcx,4)
jb 0xdf61
cmpl $0x0, 0xc(%r15)
jle 0xe068
movl $0x1, %r12d
leaq 0x177d6(%rip), %rax     # 0x25760
leaq 0x70(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0x20(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x24(%rax), %rcx
movq %rcx, 0x10(%rsp)
addq $0x48, %rax
movq %rax, 0x8(%rsp)
movq %r14, %rdi
movq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0xa75c
testl %eax, %eax
je 0xe00b
movl %eax, %ebp
leal -0x9(%rbp), %eax
cmpl $-0x2, %eax
movl $0x6, %eax
cmovbl %eax, %ebp
leaq 0x17788(%rip), %rcx     # 0x25760
cmpl $0x0, 0x20(%rcx)
jne 0xdfe5
movq (%r14), %rax
movq %rax, 0x8(%rbx)
movq 0xb8(%rcx), %rdi
addq $-0x4, %rdi
movl %ebp, %esi
movq 0x18(%rsp), %rdx
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
callq 0xef9a
cmpl $0x6, %ebp
je 0xe068
movq (%r14), %rax
movzbl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
addl $-0x6, %ecx
cmpl $-0x4, %ecx
ja 0xe040
incq %rax
leaq -0x1(%rax), %rcx
cmpq (%rbx), %rcx
jae 0xe040
movq %rax, (%r14)
movzbl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
addl $-0x6, %ecx
incq %rax
cmpl $-0x3, %ecx
jb 0xe021
movq (%r15), %rax
movq 0x10(%rax), %rdi
movl 0x8(%r15), %eax
leal (%r12,%rax), %esi
decl %esi
callq 0x16242
leal 0x1(%r12), %eax
cmpl 0xc(%r15), %r12d
movl %eax, %r12d
jl 0xdfae
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq