// File: /workspace/github_c_makefile_star2_O1/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 %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1008, %rsp           # imm = 0x1008
cmpb $0x0, 0x8cec(%rip)      # 0xc571
jne 0x38d0
cmpb $0x3d, (%rdi)
je 0x3a29
movb $0x1, %al
movb %al, 0x8cd9(%rip)       # 0xc571
movb %al, 0x8cd5(%rip)       # 0xc573
xorl %ecx, %ecx
movq %rcx, 0x8ce1(%rip)      # 0xc588
movb %al, 0x8cc5(%rip)       # 0xc572
movq %rcx, 0x8cdc(%rip)      # 0xc590
movl $0x0, 0x8cc2(%rip)      # 0xc580
movb %cl, 0x8cb0(%rip)       # 0xc574
movb %cl, 0x8cce(%rip)       # 0xc598
movb %cl, 0x8ca5(%rip)       # 0xc575
cmpb $0x1, 0x8c9b(%rip)      # 0xc572
jne 0x3a19
testq %rsi, %rsi
je 0x392f
movb 0x8c89(%rip), %r8b      # 0xc572
leaq -0x1(%rsi), %rcx
xorl %eax, %eax
xorl %r9d, %r9d
movzbl (%rdi,%r9), %r10d
leal -0x9(%r10), %r11d
cmpl $0x2, %r11d
jb 0x390d
cmpl $0x20, %r10d
je 0x391b
cmpl $0xd, %r10d
jne 0x3911
movb $0x1, %al
jmp 0x391b
movb $0x0, 0x8c5a(%rip)      # 0xc572
xorl %r8d, %r8d
testb $0x1, %r8b
je 0x3931
leaq 0x1(%r9), %r10
cmpq %r9, %rcx
movq %r10, %r9
jne 0x38f2
jmp 0x3931
xorl %eax, %eax
movb 0x8c3a(%rip), %bpl      # 0xc572
cmpb $0x1, %bpl
jne 0x394e
testb %dl, %dl
je 0x39ae
movb $0x0, 0x8c28(%rip)      # 0xc571
jmp 0x3a12
testb $0x1, %al
jne 0x3a46
movq 0x8c33(%rip), %rax      # 0xc590
movq 0x8c3c(%rip), %rcx      # 0xc5a0
addq %rcx, %rax
addq $0x4, %rax
movq %rax, 0x8c2e(%rip)      # 0xc5a0
cmpq $0x2800001, %rax        # imm = 0x2800001
jb 0x397f
callq 0x71aa
movq 0x8c0a(%rip), %rdx      # 0xc590
movl %edx, 0x8bf4(%rip)      # 0xc580
movl %edx, %eax
movq %rax, 0x8bf3(%rip)      # 0xc588
cmpq $0x16, %rdx
ja 0x39b7
leaq 0x8c0e(%rip), %rdi      # 0xc5b0
movl $0x20, %esi
callq 0x2190
jmp 0x3a12
addq %rsi, 0x8bdb(%rip)      # 0xc590
jmp 0x3a12
movq %rsp, %rdi
movl $0x1000, %r15d          # imm = 0x1000
movl $0x1000, %edx           # imm = 0x1000
movl $0x20, %esi
callq 0x2190
movq 0x8bba(%rip), %rbx      # 0xc590
testq %rbx, %rbx
je 0x3a12
movq %rsp, %r14
cmpq %r15, %rbx
cmovaeq %r15, %rbx
movq 0x8b54(%rip), %rcx      # 0xc540
movl $0x1, %esi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x2460
movq 0x8b8d(%rip), %rax      # 0xc590
subq %rbx, %rax
movq %rax, 0x8b83(%rip)      # 0xc590
movq %rax, %rbx
jne 0x39de
movb $0x1, %al
testb %bpl, %bpl
jne 0x3a1b
xorl %eax, %eax
addq $0x1008, %rsp           # imm = 0x1008
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18c50(%rip), %rax     # 0x1c680
movq (%rax), %rdi
leaq 0x465f(%rip), %rcx      # 0x8099
movl $0x5, %esi
movl $0x3, %edx
jmp 0x3a61
leaq 0x18c33(%rip), %rax     # 0x1c680
movq (%rax), %rdi
leaq 0x4653(%rip), %rcx      # 0x80aa
movl $0x5, %esi
movl $0x2, %edx
callq 0x2440
movq %rax, %rdi
callq 0x3e34