// File: /workspace/github_c_makefile_star2_O3/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 0x499d
movl $0x3, %edi
xorl %eax, %eax
callq 0x6dcc
leaq 0x17d38(%rip), %rax     # 0x1c6dc
movb $0x1, (%rax)
leaq 0x17cda(%rip), %rax     # 0x1c688
cmpl $0x0, (%rax)
je 0x4a07
leaq -0x28(%rbp), %r14
movq %r14, %rdi
callq 0x21e0
movl (%r14), %edi
movl 0x4(%r14), %eax
movl %eax, 0x7c44(%rip)      # 0xc610
leaq 0x36aa(%rip), %rsi      # 0x807d
callq 0x2340
leaq 0x7c39(%rip), %rdi      # 0xc618
leaq 0x11e2(%rip), %rdx      # 0x5bc8
xorl %esi, %esi
movq %rax, %rcx
callq 0x2390
leaq 0x17cd5(%rip), %rax     # 0x1c6cc
movl $0x2, (%rax)
movq %rbx, %rdi
callq 0x4b73
jmp 0x4a2d
leaq 0x17cba(%rip), %rcx     # 0x1c6c8
cmpb $0x1, (%rcx)
je 0x4a3c
callq 0x4ea8
leaq 0x17cad(%rip), %rax     # 0x1c6cc
movl $0x4, (%rax)
movq %rbx, %rdi
callq 0x4b09
movb $0x1, %al
leaq -0x20(%rbp), %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x30(%rax)
jne 0x4afc
movq 0x7ba2(%rip), %rax      # 0xc5f0
movq %rsp, %rbx
addq $0xf, %rax
andq $-0x10, %rax
subq %rax, %rbx
movq %rbx, %rsp
leaq 0x17c5a(%rip), %rax     # 0x1c6c0
movq (%rax), %rdx
leaq 0x3680(%rip), %rsi      # 0x80f0
xorl %edi, %edi
callq 0x21a0
testq %rax, %rax
je 0x4af0
movq %rax, %r14
leaq 0x17c5a(%rip), %r12     # 0x1c6e0
movq (%r12), %rdi
movq 0x7b77(%rip), %rsi      # 0xc608
xorl %edx, %edx
callq 0x2320
testl %eax, %eax
jne 0x4af0
movq 0x7b5d(%rip), %rsi      # 0xc600
movq %r14, %rdi
xorl %edx, %edx
callq 0x2320
testl %eax, %eax
jne 0x4af0
movq 0x7b38(%rip), %r15      # 0xc5f0
movq (%r12), %rcx
movl $0x1, %esi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x20e0
cmpq %rax, %r15
jne 0x4af0
movq 0x7b18(%rip), %r15      # 0xc5f0
movl $0x1, %esi
movq %rbx, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x2460
cmpq %rax, %r15
je 0x4af5
callq 0x6f57
xorl %edi, %edi
callq 0x2450
movq 0x18(%rbx), %rdi
addq 0x8(%rbx), %rdi
callq 0x4476