// File: /workspace/github_c_makefile_star2_O0/mrkite[P]regs/docmaker/parser.cc
// Function: Parser::parseStruct(Struct*, File*)
bool Parser::parseStruct(Struct *s, File *f) {
  if (!f->token().expect('{')) {
    return false;
  }
  Token token;
  while ((token = f->token()).type == VAR || token.type == STRUCT ||
         token.type == UNION) {
    Field field;
    if (!parseField(&field, token, f)) {
      return false;
    }
    s->fields.push_back(field);
    token = f->token();
    if (!token.expect(";}")) {
      return false;
    }
    if (token.asSym == '}') {
      break;
    }
  }
  return token.expect('}');
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x78(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0xc500
movq -0x1d8(%rbp), %rdi
movl $0x7b, %esi
callq 0xc990
movb %al, -0x1c9(%rbp)
jmp 0x5f8f
movb -0x1c9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1e1(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x68a0
movb -0x1e1(%rbp), %al
testb $0x1, %al
jne 0x5fb2
jmp 0x5fd8
movb $0x0, -0x1(%rbp)
jmp 0x6211
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x68a0
jmp 0x621f
leaq -0xe0(%rbp), %rdi
callq 0x6860
movq -0x20(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0xc500
jmp 0x5ff6
leaq -0xe0(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x6c90
movq %rax, %rcx
movb $0x1, %al
cmpl $0x7, (%rcx)
movb %al, -0x1e2(%rbp)
je 0x603a
movb $0x1, %al
cmpl $0x5, -0xe0(%rbp)
movb %al, -0x1e2(%rbp)
je 0x603a
cmpl $0x6, -0xe0(%rbp)
sete %al
movb %al, -0x1e2(%rbp)
movb -0x1e2(%rbp), %al
movb %al, -0x1e3(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x68a0
movb -0x1e3(%rbp), %al
testb $0x1, %al
jne 0x6061
jmp 0x61c7
leaq -0x168(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x6f60
movq -0x1e0(%rbp), %rdi
movq -0x1f0(%rbp), %rsi
movq -0x20(%rbp), %rcx
leaq -0xe0(%rbp), %rdx
callq 0x6650
movb %al, -0x1e4(%rbp)
jmp 0x609a
movb -0x1e4(%rbp), %al
testb $0x1, %al
jne 0x60ed
jmp 0x60a6
movb $0x0, -0x1(%rbp)
movl $0x1, -0x16c(%rbp)
jmp 0x6197
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x6203
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x7000
jmp 0x6203
movq -0x18(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x6f90
jmp 0x60ff
movq -0x20(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0xc500
jmp 0x6111
leaq -0xe0(%rbp), %rdi
movq %rdi, -0x200(%rbp)
leaq -0x1c8(%rbp), %rsi
movq %rsi, -0x208(%rbp)
callq 0x6c90
movq -0x208(%rbp), %rdi
callq 0x68a0
movq -0x200(%rbp), %rdi
leaq 0xafee(%rip), %rsi      # 0x1113a
callq 0xca90
movb %al, -0x1f1(%rbp)
jmp 0x6159
movb -0x1f1(%rbp), %al
testb $0x1, %al
jne 0x6175
jmp 0x6165
movb $0x0, -0x1(%rbp)
movl $0x1, -0x16c(%rbp)
jmp 0x6197
movsbl -0xb8(%rbp), %eax
cmpl $0x7d, %eax
jne 0x618d
movl $0x3, -0x16c(%rbp)
jmp 0x6197
movl $0x0, -0x16c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x7000
movl -0x16c(%rbp), %eax
movl %eax, -0x20c(%rbp)
testl %eax, %eax
je 0x61c2
jmp 0x61b5
movl -0x20c(%rbp), %eax
subl $0x3, %eax
je 0x61c7
jmp 0x61f5
jmp 0x5fe4
leaq -0xe0(%rbp), %rdi
movl $0x7d, %esi
callq 0xc990
movb %al, -0x20d(%rbp)
jmp 0x61e0
movb -0x20d(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x16c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x68a0
jmp 0x6211
leaq -0xe0(%rbp), %rdi
callq 0x68a0
jmp 0x621f
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
movq -0x80(%rbp), %rdi
callq 0x3490
nopl (%rax,%rax)