// File: /workspace/github_c_makefile_star2_O1/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 0x3871d(%rip), %ebp     # 0x3b538
callq 0x2aec
movb $0x0, (%rsp)
movq 0x6325(%rip), %rax      # 0x9150
movb (%rax), %al
andb $-0x21, %al
addb $-0x5b, %al
xorl %ebx, %ebx
cmpb $-0x1a, %al
jb 0x2fa9
callq 0x16b9
testl %eax, %eax
je 0x2fa9
movabsq $0x3a65757254656c, %rax # imm = 0x3A65757254656C
leaq 0xfd(%rax), %rcx
cmpq %rcx, 0x2d410(%rip)     # 0x30270
jne 0x2e70
leaq 0x246e(%rip), %rsi      # 0x52d7
movl $0x8, %edi
jmp 0x2ece
movabsq $0x3a65736c61466669, %rcx # imm = 0x3A65736C61466669
xorq 0x2d3ef(%rip), %rcx     # 0x30270
movzbl 0x2d3f0(%rip), %edx     # 0x30278
orq %rcx, %rdx
je 0x2ec2
movl $0x3a646e61, %ecx       # imm = 0x3A646E61
xorl 0x2d3d8(%rip), %ecx     # 0x30270
movzbl 0x2d3d5(%rip), %edx     # 0x30274
orl %ecx, %edx
je 0x2edd
cmpl $0x3a726f, 0x2d3c3(%rip) # imm = 0x3A726F
jne 0x2ef0
leaq 0x26bc(%rip), %rsi      # 0x5572
movl $0x7, %edi
movl $0xb, %edx
jmp 0x2ed3
leaq 0x2406(%rip), %rsi      # 0x52cf
movl $0x7, %edi
movl $0xa, %edx
callq 0x2c9d
jmp 0x3063
leaq 0x268e(%rip), %rsi      # 0x5572
movl $0x8, %edi
movl $0xc, %edx
jmp 0x2ed3
movabsq $0x757254656c696877, %rcx # imm = 0x757254656C696877
xorq 0x2d36f(%rip), %rcx     # 0x30270
xorq 0x2d36b(%rip), %rax     # 0x30273
orq %rcx, %rax
sete %cl
movq 0x3863b(%rip), %rax     # 0x3b550
testq %rax, %rax
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2f29
movl $0x8, %edi
jmp 0x2f5c
testq %rax, %rax
setne %al
movabsq $0x6c6146656c696877, %rcx # imm = 0x6C6146656C696877
xorq 0x2d330(%rip), %rcx     # 0x30270
movl 0x2d332(%rip), %edx     # 0x30278
xorq $0x3a6573, %rdx         # imm = 0x3A6573
orq %rcx, %rdx
sete %cl
testb %al, %cl
je 0x2f66
movl $0x7, %edi
callq 0x2d60
jmp 0x3063
movl $0x1, %ecx
leaq 0x2d2fe(%rip), %r14     # 0x30270
movq %rsp, %r15
movl %ecx, %ebx
movq %r15, %rdi
movq %r14, %rsi
callq 0x1120
callq 0x2261
callq 0x2aec
movq 0x61bd(%rip), %rax      # 0x9150
movb (%rax), %al
andb $-0x21, %al
addb $-0x5b, %al
cmpb $-0x1a, %al
jb 0x2fa9
callq 0x16b9
leal 0x1(%rbx), %ecx
testl %eax, %eax
jne 0x2f75
testl %ebx, %ebx
jle 0x3063
testl %ebp, %ebp
setne %al
movq 0x5153(%rip), %rsi      # 0x8110
testq %rsi, %rsi
sete %cl
orb %al, %cl
jne 0x3008
xorl %r14d, %r14d
movq %rsp, %r15
leaq 0x513c(%rip), %r12      # 0x8110
xorl %r13d, %r13d
movq %r15, %rdi
callq 0x10e0
testl %eax, %eax
jne 0x2ff6
movl $0xb, %edi
movl %r14d, %esi
callq 0x1bd9
movl $0x1, %r13d
movq 0x8(%r12,%r14,8), %rsi
incq %r14
testq %rsi, %rsi
jne 0x2fd7
testl %r13d, %r13d
jne 0x3063
incl %ebx
movl $0x8, %edi
movl %ebx, %esi
callq 0x1bd9
testl %ebp, %ebp
je 0x3047
movl $0xfb, %edi
callq 0x1b0d
movq %rsp, %rdi
callq 0x182f
movq %rax, %rdi
callq 0x1c58
movl %eax, %edi
callq 0x1b0d
movl $0x0, 0x384f3(%rip)     # 0x3b538
jmp 0x3063
movq %rsp, %rdi
callq 0x182f
movq %rax, %rdi
callq 0x1c58
movl $0x9, %edi
movl %eax, %esi
callq 0x1bd9
movl $0x1, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq