// File: IHorvalds[P]RomAna/./processing/parserOltean.hpp
// Function: text::serveWord[abi:cxx11]()
std::string serveWord() {
#if 0
    // It's not possible that we receive a white-space
    if ((currSize == fileSize) && (index + 1 >= input.gcount())) {
      return " <EOF> ";
    }
    if (index == input.gcount()) {
      input.read(buffer, BUFF_SIZE);
      index = 0;
      currSize += input.gcount();
    }
    std::string word = "";
    while ((index < BUFF_SIZE) && !isSeparator(buffer[index])) {
      word.append(1, buffer[index]);
      index++;
    }
    if ((index == BUFF_SIZE) && (currSize != fileSize)) {
      input.seekg(-word.length(), input.cur);
      fileSize += word.length();
      currSize += word.length();
      return serveWord();
    }
    while ((index < BUFF_SIZE) && isSeparator(buffer[index])) {
      index++;
    }
    specialChars::cleanUpWord(word);
    if (word.empty())
      word = serveWord();
    return word;
  }
#else
    char c;
    do {
      c = getByte();
    } while ((c != 0) && isSeparator(c));
    
    if (!c)
      return " <EOF> ";
    
    std::string word = "";
    do {
      word.append(1, c);
      c = getByte();
    } while (!isSeparator(c));
    specialChars::cleanUpWord(word);
    return word;
  }

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0x28(%rsp)
movq %rdi, %rax
movq %rax, 0x30(%rsp)
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0xdb40
movb %al, 0x97(%rsp)
movsbl 0x97(%rsp), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0x27(%rsp)
je 0xb4c6
movsbl 0x97(%rsp), %edi
callq 0xdbf0
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0xb491
cmpb $0x0, 0x97(%rsp)
jne 0xb53a
leaq 0x96(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4630
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0x9d21(%rip), %rsi      # 0x1521c
callq 0xacb0
jmp 0xb502
leaq 0x96(%rsp), %rdi
callq 0x43b0
jmp 0xb685
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x96(%rsp), %rdi
callq 0x43b0
jmp 0xb692
movb $0x0, 0x83(%rsp)
leaq 0x82(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x4630
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rdx
leaq 0xa0b8(%rip), %rsi      # 0x1561d
callq 0xacb0
jmp 0xb56c
leaq 0x82(%rsp), %rdi
callq 0x43b0
movq 0x28(%rsp), %rdi
movsbl 0x97(%rsp), %edx
movl $0x1, %esi
callq 0x43a0
jmp 0xb592
movq 0x38(%rsp), %rdi
callq 0xdb40
movb %al, 0xf(%rsp)
jmp 0xb5a2
movb 0xf(%rsp), %al
movb %al, 0x97(%rsp)
movsbl 0x97(%rsp), %edi
callq 0xdbf0
movb %al, 0xe(%rsp)
jmp 0xb5c0
movb 0xe(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xb579
movq 0x28(%rsp), %rsi
leaq 0x40(%rsp), %rdi
callq 0x4170
jmp 0xb5db
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x7570
jmp 0xb5ec
leaq 0x60(%rsp), %rdi
callq 0x4200
leaq 0x40(%rsp), %rdi
callq 0x4200
movb $0x1, 0x83(%rsp)
testb $0x1, 0x83(%rsp)
jne 0xb677
jmp 0xb66d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x82(%rsp), %rdi
callq 0x43b0
jmp 0xb692
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0xb679
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x4200
jmp 0xb679
movq 0x28(%rsp), %rdi
callq 0x4200
jmp 0xb685
movq 0x28(%rsp), %rdi
callq 0x4200
jmp 0xb692
movq 0x30(%rsp), %rax
addq $0xa8, %rsp
retq
movq 0x88(%rsp), %rdi
callq 0x4620
nop