// File: /workspace/github_c_makefile_star2_O3/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 %r12
pushq %rbx
subq $0x70, %rsp
movl 0x3870d(%rip), %ebp     # 0x3b538
callq 0x2ae9
movb $0x0, (%rsp)
movq 0x6315(%rip), %rax      # 0x9150
movb (%rax), %al
andb $-0x21, %al
addb $-0x5b, %al
cmpb $-0x1a, %al
jb 0x2ee5
callq 0x169e
testl %eax, %eax
je 0x2ee5
movabsq $0x3a65757254656c, %rax # imm = 0x3A65757254656C
movq 0x2d409(%rip), %rcx     # 0x30270
leaq 0xfd(%rax), %rdx
cmpq %rdx, %rcx
jne 0x2e81
leaq 0x245d(%rip), %rsi      # 0x52d7
movl $0x8, %edi
jmp 0x2edb
movabsq $0x3a65736c61466669, %rdx # imm = 0x3A65736C61466669
xorq 0x2d3de(%rip), %rdx     # 0x30270
movzbl 0x2d3df(%rip), %esi     # 0x30278
orq %rdx, %rsi
je 0x2ecf
movl $0x3a646e61, %edx       # imm = 0x3A646E61
xorl 0x2d3c7(%rip), %edx     # 0x30270
movzbl 0x2d3c4(%rip), %esi     # 0x30274
orl %edx, %esi
je 0x2ef7
cmpl $0x3a726f, %ecx         # imm = 0x3A726F
jne 0x2f0a
leaq 0x26af(%rip), %rsi      # 0x5572
movl $0x7, %edi
movl $0xb, %edx
jmp 0x2ee0
leaq 0x23f9(%rip), %rsi      # 0x52cf
movl $0x7, %edi
movl $0xa, %edx
callq 0x2caf
movl $0x1, %eax
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2674(%rip), %rsi      # 0x5572
movl $0x8, %edi
movl $0xc, %edx
jmp 0x2ee0
movabsq $0x757254656c696877, %rcx # imm = 0x757254656C696877
xorq 0x2d355(%rip), %rcx     # 0x30270
xorq 0x2d351(%rip), %rax     # 0x30273
orq %rcx, %rax
sete %cl
movq 0x38621(%rip), %rax     # 0x3b550
testq %rax, %rax
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2f43
movl $0x8, %edi
jmp 0x2f76
testq %rax, %rax
setne %al
movabsq $0x6c6146656c696877, %rcx # imm = 0x6C6146656C696877
xorq 0x2d316(%rip), %rcx     # 0x30270
movl 0x2d318(%rip), %edx     # 0x30278
xorq $0x3a6573, %rdx         # imm = 0x3A6573
orq %rcx, %rdx
sete %cl
testb %al, %cl
je 0x2f80
movl $0x7, %edi
callq 0x2d72
jmp 0x2ee5
movl $0x2, %ecx
leaq 0x2d2e4(%rip), %r14     # 0x30270
movq %rsp, %r15
movl %ecx, %ebx
movq %r15, %rdi
movq %r14, %rsi
callq 0x1120
callq 0x223e
callq 0x2ae9
movq 0x61a3(%rip), %rax      # 0x9150
movb (%rax), %al
andb $-0x21, %al
addb $-0x5b, %al
cmpb $-0x1a, %al
jb 0x2fc3
callq 0x169e
leal 0x1(%rbx), %ecx
testl %eax, %eax
jne 0x2f8f
testl %ebp, %ebp
je 0x3003
movl $0x8, %edi
movl %ebx, %esi
callq 0x1bb6
movl $0xfb, %edi
callq 0x1aea
movq %rsp, %rdi
callq 0x180c
movq %rax, %rdi
callq 0x1c35
movl %eax, %edi
callq 0x1aea
movl $0x0, 0x3853a(%rip)     # 0x3b538
jmp 0x2ee5
movq 0x5106(%rip), %rsi      # 0x8110
testq %rsi, %rsi
je 0x3064
movb $0x1, %bpl
xorl %r15d, %r15d
movq %rsp, %r14
leaq 0x50f1(%rip), %r12      # 0x8110
incq %r15
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0x303c
movq (%r12,%r15,8), %rsi
incq %r15
testq %rsi, %rsi
jne 0x3022
jmp 0x305a
leal -0x1(%r15), %esi
movl $0xb, %edi
callq 0x1bb6
movq (%r12,%r15,8), %rsi
xorl %ebp, %ebp
testq %rsi, %rsi
jne 0x301f
jmp 0x2ee5
testb $0x1, %bpl
je 0x2ee5
movl $0x8, %edi
movl %ebx, %esi
callq 0x1bb6
movq %rsp, %rdi
callq 0x180c
movq %rax, %rdi
callq 0x1c35
movl $0x9, %edi
movl %eax, %esi
callq 0x1bb6
jmp 0x2ee5