// File: /workspace/github_c_makefile_star2_O2/hcmiya[P]opuscomment/src/read.c
// Function: parse_info_border
bool parse_info_border(ogg_page *og) {
	// ここにはページ番号1で来ているはず
	if (ogg_page_continued(og)) {
		opuserror(err_opus_border);
	}
	leave_header_packets = true;
	
	if (/*O.gain_fix && */O.edit == EDIT_NONE) {
		// 出力ゲイン編集のみの場合
		if (input_is_regular_file) {
			if (O.out) {
				// 出力指定が別にある場合残りをコピー
				put_left(og->header_len + og->body_len);
			}
			else {
				// 上書きするなら最初のページのみを直接書き換えようとする
				uint8_t b[header_packet_len];
				FILE *stream_overwrite = freopen(NULL, "r+", stream_input);
				if (!stream_overwrite
					|| fseek(built_stream, built_header_pos, SEEK_SET)
					|| fseek(stream_overwrite, header_packet_pos, SEEK_SET)
					|| header_packet_len != fread(b, 1, header_packet_len, built_stream)
					|| header_packet_len != fwrite(b, 1, header_packet_len, stream_overwrite)
				) {
					oserror();
				}
				exit(0);
			}
		}
		else {
			// 入力がパイプの時
			put_non_opus_stream();
			opst = PAGE_SOUND;
			return parse_page_sound(og);
		}
		/* NOTREACHED */
	}
	
	// OpusTagsパケットパースを別スレッド化 retrieve_tags.c へ
	int pfd[2];
	pipe(pfd);
	retriever_fd = pfd[1];
	FILE *retriever = fdopen(pfd[0], "r");
	pthread_create(&retriever_thread, NULL, retrieve_tags, retriever);
	
	// 本スレッドはOpusTagsのパケットを構築する
	opst = PAGE_COMMENT;
	return parse_comment(og);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
callq 0x2470
testl %eax, %eax
je 0x45da
pushq $0x3
popq %rdi
xorl %eax, %eax
callq 0x6639
leaq 0x180fb(%rip), %rax     # 0x1c6dc
movb $0x1, (%rax)
leaq 0x1809d(%rip), %rax     # 0x1c688
cmpl $0x0, (%rax)
je 0x4644
leaq -0x28(%rbp), %r14
movq %r14, %rdi
callq 0x21e0
movl (%r14), %edi
movl 0x4(%r14), %eax
movl %eax, 0x8007(%rip)      # 0xc610
leaq 0x3a6d(%rip), %rsi      # 0x807d
callq 0x2340
leaq 0x7ffc(%rip), %rdi      # 0xc618
leaq 0xff9(%rip), %rdx       # 0x561c
xorl %esi, %esi
movq %rax, %rcx
callq 0x2390
leaq 0x18098(%rip), %rax     # 0x1c6cc
movl $0x2, (%rax)
movq %rbx, %rdi
callq 0x47a9
jmp 0x466a
leaq 0x1807d(%rip), %rcx     # 0x1c6c8
cmpb $0x1, (%rcx)
je 0x4679
callq 0x4a95
leaq 0x18070(%rip), %rax     # 0x1c6cc
movl $0x4, (%rax)
movq %rbx, %rdi
callq 0x4742
movb $0x1, %al
leaq -0x20(%rbp), %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x30(%rax)
jne 0x4735
movq 0x7f65(%rip), %rax      # 0xc5f0
movq %rsp, %rbx
addq $0xf, %rax
andq $-0x10, %rax
subq %rax, %rbx
movq %rbx, %rsp
leaq 0x1801d(%rip), %rax     # 0x1c6c0
movq (%rax), %rdx
leaq 0x3a43(%rip), %rsi      # 0x80f0
xorl %edi, %edi
callq 0x21a0
testq %rax, %rax
je 0x4729
movq %rax, %r14
leaq 0x1801d(%rip), %r12     # 0x1c6e0
movq (%r12), %rdi
movq 0x7f3a(%rip), %rsi      # 0xc608
xorl %edx, %edx
callq 0x2320
testl %eax, %eax
jne 0x4729
movq 0x7f20(%rip), %rsi      # 0xc600
movq %r14, %rdi
xorl %edx, %edx
callq 0x2320
testl %eax, %eax
jne 0x4729
movq 0x7efb(%rip), %r15      # 0xc5f0
movq (%r12), %rcx
pushq $0x1
popq %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x20e0
cmpq %rax, %r15
jne 0x4729
movq 0x7edd(%rip), %r15      # 0xc5f0
pushq $0x1
popq %rsi
movq %rbx, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x2460
cmpq %rax, %r15
je 0x472e
callq 0x67b6
xorl %edi, %edi
callq 0x2450
movq 0x18(%rbx), %rdi
addq 0x8(%rbx), %rdi
callq 0x40e0