// File: /workspace/github_c_makefile_star2_O3/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 %rbx
subq $0x80, %rsp
xorps %xmm0, %xmm0
movq %rsp, %rcx
movaps %xmm0, (%rcx)
movaps %xmm0, 0x10(%rcx)
movaps %xmm0, 0x20(%rcx)
movq $0x0, 0x30(%rcx)
movl $0x7, 0xc(%rcx)
movabsq $0x7700000008, %rax     # imm = 0x7700000008
movq %rax, 0x10(%rcx)
leaq 0x1196(%rip), %rdx      # 0x869d
leaq 0x40(%rsp), %rbx
movl $0x40, %esi
movq %rbx, %rdi
callq 0x23a0
movq 0x4ad8(%rip), %r15      # 0xbff8
movq (%r15), %r14
movq 0x15156(%rip), %rdi     # 0x1c680
leaq 0x116f(%rip), %rcx      # 0x86a0
movl $0x6, %esi
movl $0x3, %edx
callq 0x2440
leaq 0x1170(%rip), %rdx      # 0x86b7
movq %r14, %rdi
movq %rax, %rsi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2260
movq (%r15), %rsi
movl $0xa, %edi
callq 0x21f0
movq (%r15), %rbx
movq 0x15112(%rip), %rdi     # 0x1c680
leaq 0x1149(%rip), %rcx      # 0x86be
movl $0x6, %esi
movl $0x4, %edx
callq 0x2440
movq 0x150dd(%rip), %rdx     # 0x1c668
movq 0x150e6(%rip), %rcx     # 0x1c678
movq 0x10(%rcx), %rcx
movq %rbx, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x2260
movq 0x150ce(%rip), %rax     # 0x1c678
cmpq $0x0, 0x8(%rax)
jne 0x75de
movq (%r15), %rbx
movq 0x150c5(%rip), %rdi     # 0x1c680
leaq 0x1688(%rip), %rcx      # 0x8c4a
movl $0x6, %esi
movl $0x5, %edx
callq 0x2440
movq %rbx, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x2260
movl $0x1, %edi
callq 0x2450