// File: /workspace/github_c_makefile_star2_O0/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
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x24a0
cmpl $0x0, %eax
je 0x55c6
movl $0x3, %edi
movb $0x0, %al
callq 0x8690
leaq 0x1814f(%rip), %rax     # 0x1d71c
movb $0x1, (%rax)
leaq 0x180f1(%rip), %rax     # 0x1d6c8
cmpl $0x0, (%rax)
jne 0x5737
leaq 0x18121(%rip), %rax     # 0x1d708
testb $0x1, (%rax)
je 0x5713
leaq 0x180d1(%rip), %rax     # 0x1d6c8
cmpq $0x0, 0x30(%rax)
je 0x5618
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rax
addq 0x18(%rax), %rdi
callq 0x4eb0
jmp 0x5711
movq 0x8011(%rip), %rax      # 0xd630
movq %rsp, %rcx
movq %rcx, -0x18(%rbp)
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x40(%rbp)
movq %rcx, %rsp
movq %rax, -0x20(%rbp)
leaq 0x180b7(%rip), %rax     # 0x1d700
movq (%rax), %rdx
xorl %eax, %eax
movl %eax, %edi
leaq 0x4a9b(%rip), %rsi      # 0xa0f2
callq 0x21c0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5705
leaq 0x180ae(%rip), %rax     # 0x1d720
movq (%rax), %rdi
movq 0x7fcc(%rip), %rsi      # 0xd648
xorl %edx, %edx
callq 0x2340
cmpl $0x0, %eax
jne 0x5705
movq -0x28(%rbp), %rdi
movq 0x7fad(%rip), %rsi      # 0xd640
xorl %edx, %edx
callq 0x2340
cmpl $0x0, %eax
jne 0x5705
movq -0x40(%rbp), %rdi
movq 0x7f86(%rip), %rax      # 0xd630
movq %rax, -0x48(%rbp)
movq 0x7f7b(%rip), %rdx      # 0xd630
leaq 0x18064(%rip), %rax     # 0x1d720
movq (%rax), %rcx
movl $0x1, %esi
callq 0x20e0
movq %rax, %rcx
movq -0x48(%rbp), %rax
cmpq %rcx, %rax
jne 0x5705
movq -0x40(%rbp), %rdi
movq 0x7f50(%rip), %rax      # 0xd630
movq %rax, -0x50(%rbp)
movq 0x7f45(%rip), %rdx      # 0xd630
movq -0x28(%rbp), %rcx
movl $0x1, %esi
callq 0x2490
movq %rax, %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
je 0x570a
callq 0x8880
xorl %edi, %edi
callq 0x2480
jmp 0x5735
callq 0x5cc0
leaq 0x17fed(%rip), %rax     # 0x1d70c
movl $0x4, (%rax)
movq -0x10(%rbp), %rdi
callq 0x57a0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x5792
jmp 0x5737
leaq -0x30(%rbp), %rdi
callq 0x2200
movl -0x2c(%rbp), %eax
movl %eax, 0x7f07(%rip)      # 0xd650
movl -0x30(%rbp), %edi
leaq 0x492c(%rip), %rsi      # 0xa07f
callq 0x2360
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rcx
leaq 0x7ef1(%rip), %rdi      # 0xd658
xorl %eax, %eax
movl %eax, %esi
leaq 0x15be(%rip), %rdx      # 0x6d30
callq 0x23b0
leaq 0x17f8e(%rip), %rax     # 0x1d70c
movl $0x2, (%rax)
movq -0x10(%rbp), %rdi
callq 0x5830
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
movq %rbp, %rsp
popq %rbp
retq
nopl (%rax)