// File: /workspace/github_c_makefile_star2_O2/GregorR[P]lstg/ImageBuilder/imageBuilder.c
// Function: parseKeywordContinuation
int parseKeywordContinuation(void)
{
  int             argCount,
                  i,
                  done,
                  saveSuper;
  char            messageBuffer[100];

  saveSuper = superMessage;
  if(!parseBinaryContinuation())
    return 0;
  strcpy(messageBuffer, "");
  argCount = 0;
  if(isIdentifierChar(*p) && readIdentifier())
  {
    if(strcmp(tokenBuffer, "ifTrue:") == 0)
      return controlFlow(BranchIfFalse, "ifFalse:", nilConst);
    else if(strcmp(tokenBuffer, "ifFalse:") == 0)
      return controlFlow(BranchIfTrue, "ifTrue:", nilConst);
    else if(strcmp(tokenBuffer, "and:") == 0)
      return controlFlow(BranchIfFalse, "", falseConst);
    else if(strcmp(tokenBuffer, "or:") == 0)
      return controlFlow(BranchIfTrue, "", trueConst);
    else if((strcmp(tokenBuffer, "whileTrue:") == 0) && blockbackup)
      return optimizeLoop(BranchIfFalse);
    else if((strcmp(tokenBuffer, "whileFalse:") == 0) && blockbackup)
      return optimizeLoop(BranchIfTrue);
    else
      do
      {
        strcat(messageBuffer, tokenBuffer);
        argCount++;
        if(!parseTerm())
          return 0;
        if(!parseBinaryContinuation())
          return 0;
      }
      while(isIdentifierChar(*p) && readIdentifier());
  }
  if(argCount > 0)
  {

/*printf("keywork message %s\n", messageBuffer);*/
    done = 0;
    if(!saveSuper)
      for(i = 0; binaryBuiltIns[i]; i++)
        if(strcmp(messageBuffer, binaryBuiltIns[i]) == 0)
        {
          genInstruction(SendBinary, i);
          done = 1;
        }
    if(!done)
    {
      genInstruction(MarkArguments, argCount + 1);
      if(saveSuper)
      {
        genInstruction(DoSpecial, SendToSuper);
        genByte(addLiteral(newSymbol(messageBuffer)));
        superMessage = 0;
      }
      else
        genInstruction(SendMessage, addLiteral(newSymbol(messageBuffer)));
    }
  }
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl 0x37bcf(%rip), %ebp     # 0x3a538
callq 0x2667
movb $0x0, (%rsp)
movq 0x57d7(%rip), %rax      # 0x8150
movb (%rax), %al
andb $-0x21, %al
addb $-0x5b, %al
cmpb $-0x1a, %al
jb 0x2a0d
callq 0x1582
testl %eax, %eax
je 0x2a0d
movq 0x2c8d9(%rip), %rbx     # 0x2f270
movabsq $0x3a657572546669, %rax # imm = 0x3A657572546669
cmpq %rax, %rbx
jne 0x29b1
leaq 0x18ee(%rip), %rsi      # 0x429b
pushq $0x8
jmp 0x2a04
leaq 0x2c8b8(%rip), %rdi     # 0x2f270
leaq 0x18dc(%rip), %rsi      # 0x429b
pushq $0x9
popq %rdx
callq 0x1100
testl %eax, %eax
je 0x29fb
leaq 0x2c89e(%rip), %rdi     # 0x2f270
leaq 0x1b45(%rip), %rsi      # 0x451e
pushq $0x5
popq %rdx
callq 0x1100
testl %eax, %eax
je 0x2a1f
cmpl $0x3a726f, %ebx         # imm = 0x3A726F
jne 0x2a2d
leaq 0x1b42(%rip), %rsi      # 0x4536
pushq $0x7
popq %rdi
pushq $0xb
jmp 0x2a07
leaq 0x1891(%rip), %rsi      # 0x4293
pushq $0x7
popq %rdi
pushq $0xa
popq %rdx
callq 0x280c
pushq $0x1
popq %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1b10(%rip), %rsi      # 0x4536
pushq $0x8
popq %rdi
pushq $0xc
jmp 0x2a07
leaq 0x2c83c(%rip), %rdi     # 0x2f270
leaq 0x1869(%rip), %rsi      # 0x42a4
pushq $0xb
popq %rdx
callq 0x1100
testl %eax, %eax
sete %cl
movq 0x37b01(%rip), %rax     # 0x3a550
testq %rax, %rax
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2a60
pushq $0x8
jmp 0x2a87
testq %rax, %rax
setne %bl
leaq 0x2c803(%rip), %rdi     # 0x2f270
leaq 0x183b(%rip), %rsi      # 0x42af
pushq $0xc
popq %rdx
callq 0x1100
testl %eax, %eax
sete %al
testb %bl, %al
je 0x2a92
pushq $0x7
popq %rdi
callq 0x28bb
jmp 0x2a0d
pushq $0x2
popq %rcx
leaq 0x2c7d4(%rip), %r14     # 0x2f270
movq %rsp, %r15
movl %ecx, %ebx
movq %r15, %rdi
movq %r14, %rsi
callq 0x1120
callq 0x1e5f
callq 0x2667
movq 0x5693(%rip), %rax      # 0x8150
movb (%rax), %al
andb $-0x21, %al
addb $-0x5b, %al
cmpb $-0x1a, %al
jb 0x2ad3
callq 0x1582
leal 0x1(%rbx), %ecx
testl %eax, %eax
jne 0x2a9f
testl %ebp, %ebp
je 0x2b0e
pushq $0x8
popq %rdi
movl %ebx, %esi
callq 0x191c
movl $0xfb, %edi
callq 0x1889
movq %rsp, %rdi
callq 0x1696
movq %rax, %rdi
callq 0x1984
movl %eax, %edi
callq 0x1889
andl $0x0, 0x37a2f(%rip)     # 0x3a538
jmp 0x2a0d
leaq 0x45fb(%rip), %r12      # 0x7110
xorl %ebp, %ebp
movq %rsp, %r14
pushq $0x1
popq %r15
xorl %r13d, %r13d
movq (%r12), %rsi
testq %rsi, %rsi
je 0x2b4b
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
jne 0x2b43
pushq $0xb
popq %rdi
movl %ebp, %esi
callq 0x191c
movl %r15d, %r13d
addq $0x8, %r12
incl %ebp
jmp 0x2b21
testl %r13d, %r13d
jne 0x2a0d
pushq $0x8
popq %rdi
movl %ebx, %esi
callq 0x191c
movq %rsp, %rdi
callq 0x1696
movq %rax, %rdi
callq 0x1984
pushq $0x9
popq %rdi
movl %eax, %esi
callq 0x191c
jmp 0x2a0d