// File: /workspace/github_c_makefile_star2_O0/hcmiya[P]opuscomment/src/parse-tags.c
// Function: decode_base64
static void decode_base64(uint8_t *line, size_t n) {
	uint8_t const *end = line + n;
	while (line < end) {
		uint8_t const *b64char = strchr(b64tab_ascii, *line++);
		if (!b64char) err_base64();
		uint_fast8_t b64idx = b64char - b64tab_ascii;
		if (b64term && b64pos == 0) err_base64();
		if (b64idx == 64 && b64pos < 2) err_base64();
		if (b64pos == 2 && b64idx == 64) {
			b64term = true;
			b64idx = 0;
			b64rawlen = 1;
		}
		if (b64pos == 3) {
			if (b64term) {
				if (b64idx != 64) err_base64();
				else b64idx = 0;
			}
			else if (b64idx == 64) {
				b64idx = 0;
				b64term = true;
				b64rawlen = 2;
			}
			else b64rawlen = 3;
		}
		b64[b64pos++] = b64idx;
		if (b64pos == 4) {
			uint8_t raw[3];
			// 000000 11|1111 2222|22 333333
			raw[0] = b64[0] << 2 | b64[1] >> 4;
			raw[1] = b64[1] << 4 | b64[2] >> 2;
			raw[2] = b64[2] << 6 | b64[3];
			fwrite(raw, 1, b64rawlen, flacpict);
			b64pos = 0;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
addq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpq -0x18(%rbp), %rax
jae 0x470c
leaq 0x881f(%rip), %rax      # 0xcda0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movzbl (%rax), %esi
callq 0x2150
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x45ab
callq 0x4420
movq -0x20(%rbp), %rax
leaq 0x87ea(%rip), %rcx      # 0xcda0
movq (%rcx), %rcx
subq %rcx, %rax
movb %al, -0x21(%rbp)
testb $0x1, 0x9012(%rip)      # 0xd5d8
je 0x45d9
movsbl 0x8fe5(%rip), %eax      # 0xd5b4
cmpl $0x0, %eax
jne 0x45d9
callq 0x4420
movzbl -0x21(%rbp), %eax
cmpl $0x40, %eax
jne 0x45f3
movsbl 0x8fcb(%rip), %eax      # 0xd5b4
cmpl $0x2, %eax
jge 0x45f3
callq 0x4420
movsbl 0x8fba(%rip), %eax      # 0xd5b4
cmpl $0x2, %eax
jne 0x461a
movzbl -0x21(%rbp), %eax
cmpl $0x40, %eax
jne 0x461a
movb $0x1, 0x8fc9(%rip)      # 0xd5d8
movb $0x0, -0x21(%rbp)
movb $0x1, 0x8fec(%rip)      # 0xd606
movsbl 0x8f93(%rip), %eax      # 0xd5b4
cmpl $0x3, %eax
jne 0x466d
testb $0x1, 0x8fab(%rip)      # 0xd5d8
je 0x4645
movzbl -0x21(%rbp), %eax
cmpl $0x40, %eax
je 0x463f
callq 0x4420
jmp 0x4643
movb $0x0, -0x21(%rbp)
jmp 0x466b
movzbl -0x21(%rbp), %eax
cmpl $0x40, %eax
jne 0x4662
movb $0x0, -0x21(%rbp)
movb $0x1, 0x8f7f(%rip)      # 0xd5d8
movb $0x2, 0x8fa6(%rip)      # 0xd606
jmp 0x4669
movb $0x3, 0x8f9d(%rip)      # 0xd606
jmp 0x466b
jmp 0x466d
movb -0x21(%rbp), %dl
movb 0x8f3e(%rip), %al       # 0xd5b4
movb %al, %cl
addb $0x1, %cl
movb %cl, 0x8f33(%rip)       # 0xd5b4
movsbq %al, %rcx
leaq 0x8f7b(%rip), %rax      # 0xd607
movb %dl, (%rax,%rcx)
movsbl 0x8f1e(%rip), %eax      # 0xd5b4
cmpl $0x4, %eax
jne 0x4707
movzbl 0x8f65(%rip), %eax      # 0xd607
shll $0x2, %eax
movzbl 0x8f5c(%rip), %ecx      # 0xd608
sarl $0x4, %ecx
orl %ecx, %eax
movb %al, -0x24(%rbp)
movzbl 0x8f4d(%rip), %eax      # 0xd608
shll $0x4, %eax
movzbl 0x8f44(%rip), %ecx      # 0xd609
sarl $0x2, %ecx
orl %ecx, %eax
movb %al, -0x23(%rbp)
movzbl 0x8f35(%rip), %eax      # 0xd609
shll $0x6, %eax
movzbl 0x8f2c(%rip), %ecx      # 0xd60a
orl %ecx, %eax
movb %al, -0x22(%rbp)
leaq -0x24(%rbp), %rdi
movsbq 0x8f17(%rip), %rdx      # 0xd606
movq 0x8e9a(%rip), %rcx      # 0xd590
movl $0x1, %esi
callq 0x2490
movb $0x0, 0x8ead(%rip)      # 0xd5b4
jmp 0x456c
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)