// File: /workspace/github_c_makefile_star2_O2/ShinyaKato[P]skcc/preprocess.c
// Function: group
void group(struct preprocessor *pp) {
  while(!check_pp_token(pp, PP_NONE)) {
    if(check_pp_token(pp, PP_SHARP)) {
      skip_pp_token_with_space(pp);

      if(check_if_section(pp)) {
        if_section(pp);
      } else if(check_group_end(pp)) {
        break;
      } else if(check_keyword(pp, "include")) {
        skip_pp_token_with_space(pp);
        include_directive(pp);
      } else if(check_keyword(pp, "define")) {
        skip_pp_token_with_space(pp);
        define_directive(pp);
      } else if(check_keyword(pp, "undef")) {
        skip_pp_token_with_space(pp);
        undef_directive(pp);
      } else if(check_keyword(pp, "line")) {
        warning("#line directive is not implemented yet.\n");
        skip_line(pp);
      } else if(check_keyword(pp, "error")) {
        warning("#error directive is not implemented yet.\n");
        skip_line(pp);
      } else if(check_keyword(pp, "pragma")) {
        warning("#pragma directive is not implemented yet.\n");
        skip_line(pp);
      } else if(check_pp_token(pp, PP_SPACE)) {
        skip_line(pp);
      } else {
        struct pp_token *directive = read_pp_token(pp);
        error("unknown directive: \"#%s\".\n", directive->text->head);
      }
    } else {
      parse_text_line(pp);
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x3e
popq %rbp
pushq $0x39
popq %r14
leaq 0x24e5(%rip), %r15      # 0x6dce
leaq 0x2825(%rip), %r12      # 0x7115
leaq 0x2825(%rip), %r13      # 0x711c
movq %rbx, %rdi
movl %ebp, %esi
callq 0x3ffb
testl %eax, %eax
jne 0x4a71
movq %rbx, %rdi
movl %r14d, %esi
callq 0x3ffb
movq %rbx, %rdi
testl %eax, %eax
je 0x4936
callq 0x40db
movq %rbx, %rdi
callq 0x54d6
movq %rbx, %rdi
testl %eax, %eax
je 0x493d
callq 0x4c7b
jmp 0x48f7
callq 0x546a
jmp 0x48f7
callq 0x5512
testl %eax, %eax
jne 0x4a71
movq %rbx, %rdi
movq %r15, %rsi
callq 0x400e
movq %rbx, %rdi
testl %eax, %eax
je 0x496b
callq 0x40db
movq %rbx, %rdi
callq 0x4efa
jmp 0x48f7
movq %r12, %rsi
callq 0x400e
movq %rbx, %rdi
testl %eax, %eax
je 0x498c
callq 0x40db
movq %rbx, %rdi
callq 0x516b
jmp 0x48f7
movq %r13, %rsi
callq 0x400e
movq %rbx, %rdi
testl %eax, %eax
je 0x49ad
callq 0x40db
movq %rbx, %rdi
callq 0x543d
jmp 0x48f7
leaq 0x276e(%rip), %rsi      # 0x7122
callq 0x400e
testl %eax, %eax
je 0x49d2
leaq 0x254c(%rip), %rdi      # 0x6f10
movl $0x4c1, %esi            # imm = 0x4C1
leaq 0x2757(%rip), %rdx      # 0x7127
jmp 0x4a20
movq %rbx, %rdi
leaq 0x1634(%rip), %rsi      # 0x6010
callq 0x400e
testl %eax, %eax
je 0x49fa
leaq 0x2524(%rip), %rdi      # 0x6f10
movl $0x4c4, %esi            # imm = 0x4C4
leaq 0x2758(%rip), %rdx      # 0x7150
jmp 0x4a20
movq %rbx, %rdi
leaq 0x2776(%rip), %rsi      # 0x717a
callq 0x400e
testl %eax, %eax
je 0x4a34
leaq 0x24fc(%rip), %rdi      # 0x6f10
movl $0x4c7, %esi            # imm = 0x4C7
leaq 0x2761(%rip), %rdx      # 0x7181
xorl %eax, %eax
callq 0x12e4
movq %rbx, %rdi
callq 0x554e
jmp 0x48f7
movq %rbx, %rdi
pushq $0x3c
popq %rsi
callq 0x3ffb
testl %eax, %eax
jne 0x4a27
movq %rbx, %rdi
callq 0x3fcd
movq 0x10(%rax), %rax
movq (%rax), %rcx
leaq 0x24b7(%rip), %rdi      # 0x6f10
movl $0x4cd, %esi            # imm = 0x4CD
leaq 0x2747(%rip), %rdx      # 0x71ac
xorl %eax, %eax
callq 0x1252
jmp 0x48f7
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq