// File: /workspace/github_c_makefile_star2_O2/hcmiya[P]opuscomment/src/parse-tags.c
// Function: test_blank
static bool test_blank(uint8_t *line, size_t n, bool lf) {
	if (first_call) {
		// = で始まってたらすぐエラー(575)
		if (*line == 0x3d) err_empty();
		first_call = false;
		on_field = true;
		fieldlen = 0;
		keep_blank = true;
		wsplen = 0;
		recordlen = 0;
		store_picture = false;
		b64term = false;
		b64pos = 0;
	}
	if (keep_blank) {
		size_t i;
		bool blank_with_ctrl = false;
		for (i = 0; i < n; i++) {
			switch (line[i]) {
			case 0x9:
			case 0xa:
			case 0xd:
				blank_with_ctrl = true;
			case 0x20:
				break;
			default:
				keep_blank = false;
			}
			if (!keep_blank) break;
		}
		if (keep_blank) {
			// まだ先頭から空白が続いている時
			if (lf) {
				// 行が終わったが全て空白だったので飛ばして次の行へ
				first_call = true;
			}
			else {
				// 行が続いている
				wsplen += n;
			}
			return true;
		}
		// 空白状態を抜けてフィールド判別状態にある
		if (blank_with_ctrl) {
			//空白がwsp以外を含んでいたらエラー
			err_name();
		}
		editlen += 4 + wsplen;
		if (editlen > TAG_LENGTH_LIMIT__OUTPUT) {
			exceed_output_limit();
		}
		fieldlen = recordlen = wsplen;
		if (wsplen <= 22) {
			memset(field_pending, 0x20, wsplen);
		}
		else {
			// 空白と見做していた分を書き込み
			uint8_t buf[STACK_BUF_LEN];
			memset(buf, 0x20, STACK_BUF_LEN);
			while (wsplen) {
				size_t wlen = wsplen > STACK_BUF_LEN ? STACK_BUF_LEN : wsplen;
				fwrite(buf, 1, wlen, strstore);
				wsplen -= wlen;
			}
		}
	}
	return false;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1008, %rsp           # imm = 0x1008
cmpb $0x0, 0x8f6b(%rip)      # 0xc571
je 0x3616
cmpb $0x1, 0x8f63(%rip)      # 0xc572
je 0x365e
jmp 0x3708
cmpb $0x3d, (%rdi)
je 0x376d
movb $0x1, %al
movb %al, 0x8f4a(%rip)       # 0xc571
andq $0x0, 0x8f59(%rip)      # 0xc588
movb %al, 0x8f3e(%rip)       # 0xc573
andq $0x0, 0x8f53(%rip)      # 0xc590
movb %al, 0x8f2f(%rip)       # 0xc572
andl $0x0, 0x8f36(%rip)      # 0xc580
xorl %eax, %eax
movb %al, 0x8f22(%rip)       # 0xc574
movb %al, 0x8f40(%rip)       # 0xc598
movb %al, 0x8f17(%rip)       # 0xc575
xorl %eax, %eax
xorl %ecx, %ecx
cmpq %rax, %rsi
je 0x3689
movzbl (%rdi,%rax), %r8d
leal -0x9(%r8), %r9d
cmpl $0x2, %r9d
jb 0x3682
cmpl $0x20, %r8d
je 0x3684
cmpl $0xd, %r8d
jne 0x36a1
movb $0x1, %cl
incq %rax
jmp 0x3662
testb %dl, %dl
je 0x3696
movb $0x0, 0x8edd(%rip)      # 0xc571
jmp 0x369d
addq %rsi, 0x8ef3(%rip)      # 0xc590
movb $0x1, %al
jmp 0x370a
movb $0x0, 0x8eca(%rip)      # 0xc572
testb $0x1, %cl
jne 0x3791
movq 0x8ed8(%rip), %rbx      # 0xc590
movq 0x8ee1(%rip), %rax      # 0xc5a0
addq %rbx, %rax
addq $0x4, %rax
movq %rax, 0x8ed3(%rip)      # 0xc5a0
cmpq $0x2800001, %rax        # imm = 0x2800001
jb 0x36e1
callq 0x69b7
movq 0x8eaf(%rip), %rbx      # 0xc590
movl %ebx, 0x8e99(%rip)      # 0xc580
movl %ebx, %eax
movq %rax, 0x8e98(%rip)      # 0xc588
cmpq $0x16, %rbx
ja 0x3719
leaq 0x8eb3(%rip), %rdi      # 0xc5b0
pushq $0x20
popq %rsi
movq %rbx, %rdx
callq 0x2190
xorl %eax, %eax
addq $0x1008, %rsp           # imm = 0x1008
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rsp, %r14
pushq $0x20
popq %rsi
movl $0x1000, %r12d          # imm = 0x1000
movl $0x1000, %edx           # imm = 0x1000
movq %r14, %rdi
callq 0x2190
pushq $0x1
popq %r15
testq %rbx, %rbx
je 0x3708
cmpq %r12, %rbx
cmovaeq %r12, %rbx
movq 0x8df7(%rip), %rcx      # 0xc540
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x2460
movq 0x8e32(%rip), %rax      # 0xc590
subq %rbx, %rax
movq %rax, 0x8e28(%rip)      # 0xc590
movq %rax, %rbx
jmp 0x3736
leaq 0x18f0c(%rip), %rax     # 0x1c680
movq (%rax), %rdi
leaq 0x4919(%rip), %rcx      # 0x8097
pushq $0x5
popq %rsi
pushq $0x3
popq %rdx
callq 0x2440
movq %rax, %rdi
callq 0x3b0e
callq 0x37bf