// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/ansiart.c
// Function: do_2char_code
static void do_2char_code(deark *c, lctx *d, u8 ch1, u8 ch2, i64 pos)
{
	int ok = 0;

	if(!d->vt100_mode) {
		de_dbg(c, "switching to vt100 mode");
		d->vt100_mode = 1;
	}

	if(ch1=='(') {
		if(ch2=='A') { d->curr_g0_charset = CHARSET_UK; ok=1; }
		else if(ch2=='B') { d->curr_g0_charset = CHARSET_US; ok=1; }
		else if(ch2=='0') { d->curr_g0_charset = CHARSET_LINEDRAWING; ok=1; }
	}
	else if(ch1==')') {
		if(ch2=='A') { d->curr_g1_charset = CHARSET_UK; ok=1; }
		else if(ch2=='B') { d->curr_g1_charset = CHARSET_US; ok=1; }
		else if(ch2=='0') { d->curr_g1_charset = CHARSET_LINEDRAWING; ok=1; }
	}
	else if(ch1=='#') {
		if(ch2=='3') {
			if(d->ypos>=0 && d->ypos<MAX_ROWS) {
				d->row_data[d->ypos].size_mode = SIZEMODE_DBLH_TOP;
			}
			ok=1;
		}
		else if(ch2=='4') {
			if(d->ypos>=0 && d->ypos<MAX_ROWS) {
				d->row_data[d->ypos].size_mode = SIZEMODE_DBLH_BOTTOM;
			}
			ok=1;
		}
		else if(ch2=='5') {
			if(d->ypos>=0 && d->ypos<MAX_ROWS) {
				d->row_data[d->ypos].size_mode = SIZEMODE_DEFAULT;
			}
			ok=1;
		}
		else if(ch2=='6') {
			if(d->ypos>=0 && d->ypos<MAX_ROWS) {
				d->row_data[d->ypos].size_mode = SIZEMODE_DBLW;
			}
			ok=1;
		}
	}

	if(!ok && d->num_warnings<ANSIART_MAX_WARNINGS) {
		de_warn(c, "Unsupported escape code '%c%c' at %"I64_FMT,
			make_printable_char(ch1),
			make_printable_char(ch2), pos);
		d->num_warnings++;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %cl, -0x11(%rbp)
movb %al, -0x12(%rbp)
movq %r8, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x10(%rbp), %rax
cmpb $0x0, 0x72(%rax)
jne 0x20c89
movq -0x8(%rbp), %rdi
leaq 0x17d259(%rip), %rsi    # 0x19ded3
movb $0x0, %al
callq 0x15b0d0
movq -0x10(%rbp), %rax
movb $0x1, 0x72(%rax)
movzbl -0x11(%rbp), %eax
cmpl $0x28, %eax
jne 0x20cf0
movzbl -0x12(%rbp), %eax
cmpl $0x41, %eax
jne 0x20caf
movq -0x10(%rbp), %rax
movl $0x2, 0x58(%rax)
movl $0x1, -0x24(%rbp)
jmp 0x20ceb
movzbl -0x12(%rbp), %eax
cmpl $0x42, %eax
jne 0x20ccc
movq -0x10(%rbp), %rax
movl $0x1, 0x58(%rax)
movl $0x1, -0x24(%rbp)
jmp 0x20ce9
movzbl -0x12(%rbp), %eax
cmpl $0x30, %eax
jne 0x20ce7
movq -0x10(%rbp), %rax
movl $0x3, 0x58(%rax)
movl $0x1, -0x24(%rbp)
jmp 0x20ce9
jmp 0x20ceb
jmp 0x20e70
movzbl -0x11(%rbp), %eax
cmpl $0x29, %eax
jne 0x20d57
movzbl -0x12(%rbp), %eax
cmpl $0x41, %eax
jne 0x20d16
movq -0x10(%rbp), %rax
movl $0x2, 0x5c(%rax)
movl $0x1, -0x24(%rbp)
jmp 0x20d52
movzbl -0x12(%rbp), %eax
cmpl $0x42, %eax
jne 0x20d33
movq -0x10(%rbp), %rax
movl $0x1, 0x5c(%rax)
movl $0x1, -0x24(%rbp)
jmp 0x20d50
movzbl -0x12(%rbp), %eax
cmpl $0x30, %eax
jne 0x20d4e
movq -0x10(%rbp), %rax
movl $0x3, 0x5c(%rax)
movl $0x1, -0x24(%rbp)
jmp 0x20d50
jmp 0x20d52
jmp 0x20e6e
movzbl -0x11(%rbp), %eax
cmpl $0x23, %eax
jne 0x20e6c
movzbl -0x12(%rbp), %eax
cmpl $0x33, %eax
jne 0x20da6
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jl 0x20d9a
movq -0x10(%rbp), %rax
cmpq $0x1388, 0x30(%rax)     # imm = 0x1388
jge 0x20d9a
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movb $0x1, (%rax,%rcx)
movl $0x1, -0x24(%rbp)
jmp 0x20e6a
movzbl -0x12(%rbp), %eax
cmpl $0x34, %eax
jne 0x20de8
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jl 0x20ddc
movq -0x10(%rbp), %rax
cmpq $0x1388, 0x30(%rax)     # imm = 0x1388
jge 0x20ddc
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movb $0x2, (%rax,%rcx)
movl $0x1, -0x24(%rbp)
jmp 0x20e68
movzbl -0x12(%rbp), %eax
cmpl $0x35, %eax
jne 0x20e27
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jl 0x20e1e
movq -0x10(%rbp), %rax
cmpq $0x1388, 0x30(%rax)     # imm = 0x1388
jge 0x20e1e
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movb $0x0, (%rax,%rcx)
movl $0x1, -0x24(%rbp)
jmp 0x20e66
movzbl -0x12(%rbp), %eax
cmpl $0x36, %eax
jne 0x20e64
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jl 0x20e5d
movq -0x10(%rbp), %rax
cmpq $0x1388, 0x30(%rax)     # imm = 0x1388
jge 0x20e5d
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movb $0x3, (%rax,%rcx)
movl $0x1, -0x24(%rbp)
jmp 0x20e66
jmp 0x20e68
jmp 0x20e6a
jmp 0x20e6c
jmp 0x20e6e
jmp 0x20e70
cmpl $0x0, -0x24(%rbp)
jne 0x20ecd
movq -0x10(%rbp), %rax
cmpq $0xa, 0x68(%rax)
jge 0x20ecd
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movzbl -0x11(%rbp), %edi
callq 0x22080
movzbl %al, %eax
movl %eax, -0x28(%rbp)
movzbl -0x12(%rbp), %edi
callq 0x22080
movq -0x30(%rbp), %rdi
movl -0x28(%rbp), %edx
movzbl %al, %ecx
movq -0x20(%rbp), %r8
leaq 0x17d035(%rip), %rsi    # 0x19deeb
movb $0x0, %al
callq 0x15bc10
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x68(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)