// File: /workspace/github_c_makefile_star2_O3/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 %rbx
subq $0x1000, %rsp           # imm = 0x1000
cmpb $0x0, 0x8cf9(%rip)      # 0xc571
je 0x388a
cmpb $0x1, 0x8cf1(%rip)      # 0xc572
je 0x38d3
xorl %eax, %eax
jmp 0x3917
cmpb $0x3d, (%rdi)
je 0x39e5
movb $0x1, %al
movb %al, 0x8cd6(%rip)       # 0xc571
movb %al, 0x8cd2(%rip)       # 0xc573
xorl %ecx, %ecx
movq %rcx, 0x8cde(%rip)      # 0xc588
movb %al, 0x8cc2(%rip)       # 0xc572
movq %rcx, 0x8cd9(%rip)      # 0xc590
movl $0x0, 0x8cbf(%rip)      # 0xc580
movb %cl, 0x8cad(%rip)       # 0xc574
movb %cl, 0x8ccb(%rip)       # 0xc598
movb %cl, 0x8ca2(%rip)       # 0xc575
testq %rsi, %rsi
je 0x3901
xorl %eax, %eax
xorl %ecx, %ecx
movzbl (%rdi,%rcx), %r8d
leal -0x9(%r8), %r9d
cmpl $0x2, %r9d
jb 0x38f7
cmpl $0x20, %r8d
je 0x38f9
cmpl $0xd, %r8d
jne 0x3924
movb $0x1, %al
incq %rcx
cmpq %rcx, %rsi
jne 0x38dc
testb %dl, %dl
je 0x390e
movb $0x0, 0x8c65(%rip)      # 0xc571
jmp 0x3915
addq %rsi, 0x8c7b(%rip)      # 0xc590
movb $0x1, %al
addq $0x1000, %rsp           # imm = 0x1000
popq %rbx
popq %r14
popq %r15
retq
movb $0x0, 0x8c47(%rip)      # 0xc572
testb $0x1, %al
jne 0x3a0d
movq 0x8c56(%rip), %rbx      # 0xc590
movq 0x8c5f(%rip), %rax      # 0xc5a0
addq %rbx, %rax
addq $0x4, %rax
movq %rax, 0x8c51(%rip)      # 0xc5a0
cmpq $0x2800001, %rax        # imm = 0x2800001
jb 0x3963
callq 0x7166
movq 0x8c2d(%rip), %rbx      # 0xc590
movl %ebx, 0x8c17(%rip)      # 0xc580
movl %ebx, %eax
movq %rax, 0x8c16(%rip)      # 0xc588
cmpq $0x16, %rbx
ja 0x3991
leaq 0x8c31(%rip), %rdi      # 0xc5b0
movl $0x20, %esi
movq %rbx, %rdx
callq 0x2190
jmp 0x3883
movq %rsp, %r14
movl $0x1000, %r15d          # imm = 0x1000
movl $0x1000, %edx           # imm = 0x1000
movq %r14, %rdi
movl $0x20, %esi
callq 0x2190
cmpq %r15, %rbx
cmovaeq %r15, %rbx
movq 0x8b86(%rip), %rcx      # 0xc540
movl $0x1, %esi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x2460
movq 0x8bbf(%rip), %rax      # 0xc590
subq %rbx, %rax
movq %rax, 0x8bb5(%rip)      # 0xc590
movq %rax, %rbx
jne 0x39ac
jmp 0x3883
leaq 0x18c94(%rip), %rax     # 0x1c680
movq (%rax), %rdi
leaq 0x46a1(%rip), %rcx      # 0x8097
movl $0x5, %esi
movl $0x3, %edx
callq 0x2440
movq %rax, %rdi
callq 0x3e30
leaq 0x18c6c(%rip), %rax     # 0x1c680
movq (%rax), %rdi
leaq 0x468a(%rip), %rcx      # 0x80a8
movl $0x5, %esi
movl $0x2, %edx
jmp 0x3a00