// File: /workspace/github_c_makefile_star2_O2/hcmiya[P]opuscomment/src/main.c
// Function: usage
static void usage(void) {
	char revision[64];
	strftime(revision, 64, "%x", &(struct tm){
		.tm_year = OPUSCOMMENT_REVISION_YEAR,
		.tm_mon = OPUSCOMMENT_REVISION_MONTH,
		.tm_mday = OPUSCOMMENT_REVISION_DAY,
	});
	fprintf(stderr, catgets(catd, 6, 3, "Version: %s (rev. %s)\n"), OPUSCOMMENT_VERSION, revision);
	fputc('\n', stderr);
	
	fprintf(stderr, catgets(catd, 6, 4,
"Synopsys:\n"
"    %1$s [-l] [-C codec] [-i idx] [-0DepQRUvV~] srcfile\n"
"    %1$s {-a|-w} [-C codec] [-i idx] [-g gain|-s scale] [-0e] [-c tagfile] [-t NAME=VALUE ...] [-d NAME[=VALUE] ...] [-1DQprRUv] srcfile [output]\n"
"    %1$s [-h]\n"
"\n"
"Options:\n"
"    -l    List mode\n"
"    -a    Append mode\n"
"    -w    Write mode\n"
"    -h    Print this message and exit\n"
"    -C codec\n"
"          Select codec\n"
"    -i idx\n"
"          Specify %2$s index for editing in multiplexed Ogg stream\n"
"          (1-origin, without non-%2$s stream)\n"
"    -R    Assume tag IO to be encoded in UTF-8\n"
"    -~    Use '~', not <tab> for escaping line feed\n"
"    -e    Use escape sequence; \\\\, \\n, \\r and \\0\n"
"    -0    Use '\\0' separation for tag IO\n"
"    -t NAME=VALUE\n"
"          Add the argument as a tag\n"
"    -c tagfile\n"
"          In list mode, write tags to tagfile.\n"
"          In append/write mode, read tags from tagfile.\n"
"    -d NAME[=VALUE]\n"
"          Delete tags matched with the argument from srcfile.\n"
"          When VALUE is omitted, All of NAME is removed. Implies -a, -U\n"
"    -p    Supress editing for METADATA_BLOCK_PICTURE\n"
"    -U    Convert field name stored in srcfile to uppercase\n"
"    -V    Verify tags stored in srcfile\n"
"    -T    Return error when tag input is not terminated by line feed\n"
"    -D    In list mode, defer tag output until comment packet is built.\n"
"          Implies -V.\n"
"          In append/write mode, return error when tag input is empty.\n"
"          Implies -T\n"
	), program_name, default_codec->name);
	if (!default_codec->prog) {
		fprintf(stderr, catgets(catd, 6, 5,
"    -g gain\n"
"          Specify output gain in dB\n"
"    -s scale\n"
"          Specify output gain in scale for PCM samples.\n"
"          1 for same scale. 0.5 for half.\n"
"    -r    Specify that the gain is relative to internal value\n"
"    -1    When output gain becomes 0 by converting to internal representation,\n"
"          set [+-]1/256 dB instead\n"
"    -Q    Use Q7.8 format for editing output gain\n"
"    -v    Put output gain to stderr\n"
		));
	}
	exit(1);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x88, %rsp
xorps %xmm0, %xmm0
movq %rsp, %rcx
movaps %xmm0, (%rcx)
movaps %xmm0, 0x10(%rcx)
andq $0x0, 0x30(%rcx)
movaps %xmm0, 0x20(%rcx)
movl $0x7, 0xc(%rcx)
movabsq $0x7700000008, %rax     # imm = 0x7700000008
movq %rax, 0x10(%rcx)
leaq 0x154c(%rip), %rdx      # 0x869d
leaq 0x40(%rsp), %r14
pushq $0x40
popq %rsi
movq %r14, %rdi
callq 0x23a0
movq 0x4e90(%rip), %r12      # 0xbff8
movq (%r12), %r15
movq 0x1550d(%rip), %rdi     # 0x1c680
leaq 0x1526(%rip), %rcx      # 0x86a0
pushq $0x6
popq %rbx
pushq $0x3
popq %rdx
movl %ebx, %esi
callq 0x2440
leaq 0x1529(%rip), %rdx      # 0x86b7
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2260
movq (%r12), %rsi
pushq $0xa
popq %rdi
callq 0x21f0
movq (%r12), %r14
movq 0x154cb(%rip), %rdi     # 0x1c680
leaq 0x1502(%rip), %rcx      # 0x86be
pushq $0x4
popq %rdx
movl %ebx, %esi
callq 0x2440
movq 0x1549b(%rip), %rdx     # 0x1c668
movq 0x154a4(%rip), %rcx     # 0x1c678
movq 0x10(%rcx), %rcx
movq %r14, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x2260
movq 0x1548c(%rip), %rax     # 0x1c678
cmpq $0x0, 0x8(%rax)
jne 0x721d
movq (%r12), %rbx
movq 0x15482(%rip), %rdi     # 0x1c680
leaq 0x1a45(%rip), %rcx      # 0x8c4a
pushq $0x6
popq %rsi
pushq $0x5
popq %rdx
callq 0x2440
movq %rbx, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x2260
pushq $0x1
popq %rdi
callq 0x2450