// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/sljit_src/sljitNativeX86_64.c
// Function: emit_x86_instruction
static u_char* emit_x86_instruction(struct sljit_compiler *compiler, int size,
	/* The reg or immediate operand. */
	int a, long imma,
	/* The general operand (not immediate). */
	int b, long immb)
{
	u_char *inst;
	u_char *buf_ptr;
	u_char rex = 0;
	int flags = size & ~0xf;
	int inst_size;

	/* The immediate operand must be 32 bit. */
	SLJIT_ASSERT(!(a & SLJIT_IMM) || compiler->mode32 || IS_HALFWORD(imma));
	/* Both cannot be switched on. */
	SLJIT_ASSERT((flags & (EX86_BIN_INS | EX86_SHIFT_INS)) != (EX86_BIN_INS | EX86_SHIFT_INS));
	/* Size flags not allowed for typed instructions. */
	SLJIT_ASSERT(!(flags & (EX86_BIN_INS | EX86_SHIFT_INS)) || (flags & (EX86_BYTE_ARG | EX86_HALF_ARG)) == 0);
	/* Both size flags cannot be switched on. */
	SLJIT_ASSERT((flags & (EX86_BYTE_ARG | EX86_HALF_ARG)) != (EX86_BYTE_ARG | EX86_HALF_ARG));
	/* SSE2 and immediate is not possible. */
	SLJIT_ASSERT(!(a & SLJIT_IMM) || !(flags & EX86_SSE2));
	SLJIT_ASSERT((flags & (EX86_PREF_F2 | EX86_PREF_F3)) != (EX86_PREF_F2 | EX86_PREF_F3)
		&& (flags & (EX86_PREF_F2 | EX86_PREF_66)) != (EX86_PREF_F2 | EX86_PREF_66)
		&& (flags & (EX86_PREF_F3 | EX86_PREF_66)) != (EX86_PREF_F3 | EX86_PREF_66));

	size &= 0xf;
	inst_size = size;

	if (!compiler->mode32 && !(flags & EX86_NO_REXW))
		rex |= REX_W;
	else if (flags & EX86_REX)
		rex |= REX;

	if (flags & (EX86_PREF_F2 | EX86_PREF_F3))
		inst_size++;
	if (flags & EX86_PREF_66)
		inst_size++;

	/* Calculate size of b. */
	inst_size += 1; /* mod r/m byte. */
	if (b & SLJIT_MEM) {
		if (!(b & OFFS_REG_MASK)) {
			if (NOT_HALFWORD(immb)) {
				if (emit_load_imm64(compiler, TMP_REG3, immb))
					return NULL;
				immb = 0;
				if (b & REG_MASK)
					b |= TO_OFFS_REG(TMP_REG3);
				else
					b |= TMP_REG3;
			}
			else if (reg_lmap[b & REG_MASK] == 4)
				b |= TO_OFFS_REG(SLJIT_SP);
		}

		if ((b & REG_MASK) == SLJIT_UNUSED)
			inst_size += 1 + sizeof(int); /* SIB byte required to avoid RIP based addressing. */
		else {
			if (reg_map[b & REG_MASK] >= 8)
				rex |= REX_B;

			if (immb != 0 && (!(b & OFFS_REG_MASK) || (b & OFFS_REG_MASK) == TO_OFFS_REG(SLJIT_SP))) {
				/* Immediate operand. */
				if (immb <= 127 && immb >= -128)
					inst_size += sizeof(s_char);
				else
					inst_size += sizeof(int);
			}
			else if (reg_lmap[b & REG_MASK] == 5)
				inst_size += sizeof(s_char);

			if ((b & OFFS_REG_MASK) != SLJIT_UNUSED) {
				inst_size += 1; /* SIB byte. */
				if (reg_map[OFFS_REG(b)] >= 8)
					rex |= REX_X;
			}
		}
	}
	else if (!(flags & EX86_SSE2_OP2) && reg_map[b] >= 8)
		rex |= REX_B;

	if (a & SLJIT_IMM) {
		if (flags & EX86_BIN_INS) {
			if (imma <= 127 && imma >= -128) {
				inst_size += 1;
				flags |= EX86_BYTE_ARG;
			} else
				inst_size += 4;
		}
		else if (flags & EX86_SHIFT_INS) {
			imma &= compiler->mode32 ? 0x1f : 0x3f;
			if (imma != 1) {
				inst_size ++;
				flags |= EX86_BYTE_ARG;
			}
		} else if (flags & EX86_BYTE_ARG)
			inst_size++;
		else if (flags & EX86_HALF_ARG)
			inst_size += sizeof(short);
		else
			inst_size += sizeof(int);
	}
	else {
		SLJIT_ASSERT(!(flags & EX86_SHIFT_INS) || a == SLJIT_PREF_SHIFT_REG);
		/* reg_map[SLJIT_PREF_SHIFT_REG] is less than 8. */
		if (!(flags & EX86_SSE2_OP1) && reg_map[a] >= 8)
			rex |= REX_R;
	}

	if (rex)
		inst_size++;

	inst = ensure_buf(compiler, 1 + inst_size);
	if (!inst)
		return NULL;

	/* Encoding the byte. */
	INC_SIZE(inst_size);
	if (flags & EX86_PREF_F2)
		*inst++ = 0xf2;
	if (flags & EX86_PREF_F3)
		*inst++ = 0xf3;
	if (flags & EX86_PREF_66)
		*inst++ = 0x66;
	if (rex)
		*inst++ = rex;
	buf_ptr = inst + size;

	/* Encode mod/rm byte. */
	if (!(flags & EX86_SHIFT_INS)) {
		if ((flags & EX86_BIN_INS) && (a & SLJIT_IMM))
			*inst = (flags & EX86_BYTE_ARG) ? GROUP_BINARY_83 : GROUP_BINARY_81;

		if ((a & SLJIT_IMM) || (a == 0))
			*buf_ptr = 0;
		else if (!(flags & EX86_SSE2_OP1))
			*buf_ptr = reg_lmap[a] << 3;
		else
			*buf_ptr = a << 3;
	}
	else {
		if (a & SLJIT_IMM) {
			if (imma == 1)
				*inst = GROUP_SHIFT_1;
			else
				*inst = GROUP_SHIFT_N;
		} else
			*inst = GROUP_SHIFT_CL;
		*buf_ptr = 0;
	}

	if (!(b & SLJIT_MEM))
		*buf_ptr++ |= MOD_REG + ((!(flags & EX86_SSE2_OP2)) ? reg_lmap[b] : b);
	else if ((b & REG_MASK) != SLJIT_UNUSED) {
		if ((b & OFFS_REG_MASK) == SLJIT_UNUSED || (b & OFFS_REG_MASK) == TO_OFFS_REG(SLJIT_SP)) {
			if (immb != 0 || reg_lmap[b & REG_MASK] == 5) {
				if (immb <= 127 && immb >= -128)
					*buf_ptr |= 0x40;
				else
					*buf_ptr |= 0x80;
			}

			if ((b & OFFS_REG_MASK) == SLJIT_UNUSED)
				*buf_ptr++ |= reg_lmap[b & REG_MASK];
			else {
				*buf_ptr++ |= 0x04;
				*buf_ptr++ = reg_lmap[b & REG_MASK] | (reg_lmap[OFFS_REG(b)] << 3);
			}

			if (immb != 0 || reg_lmap[b & REG_MASK] == 5) {
				if (immb <= 127 && immb >= -128)
					*buf_ptr++ = immb; /* 8 bit displacement. */
				else {
					*(int*)buf_ptr = immb; /* 32 bit displacement. */
					buf_ptr += sizeof(int);
				}
			}
		}
		else {
			if (reg_lmap[b & REG_MASK] == 5)
				*buf_ptr |= 0x40;
			*buf_ptr++ |= 0x04;
			*buf_ptr++ = reg_lmap[b & REG_MASK] | (reg_lmap[OFFS_REG(b)] << 3) | (immb << 6);
			if (reg_lmap[b & REG_MASK] == 5)
				*buf_ptr++ = 0;
		}
	}
	else {
		*buf_ptr++ |= 0x04;
		*buf_ptr++ = 0x25;
		*(int*)buf_ptr = immb; /* 32 bit displacement. */
		buf_ptr += sizeof(int);
	}

	if (a & SLJIT_IMM) {
		if (flags & EX86_BYTE_ARG)
			*buf_ptr = imma;
		else if (flags & EX86_HALF_ARG)
			*(short*)buf_ptr = imma;
		else if (!(flags & EX86_SHIFT_INS))
			*(int*)buf_ptr = imma;
	}

	return !(flags & EX86_SHIFT_INS) ? inst : (inst + 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq %r9, -0x30(%rbp)
movb $0x0, -0x41(%rbp)
movl -0x14(%rbp), %eax
andl $-0x10, %eax
movl %eax, -0x48(%rbp)
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1b95c
movq -0x10(%rbp), %rax
cmpl $0x0, 0x70(%rax)
jne 0x1b95c
cmpq $0x7fffffff, -0x20(%rbp) # imm = 0x7FFFFFFF
jg 0x1b944
cmpq $-0x80000000, -0x20(%rbp) # imm = 0x80000000
jge 0x1b95c
leaq 0x14edd(%rip), %rdi     # 0x30828
movl $0x167, %esi            # imm = 0x167
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1b95e
jmp 0x1b960
movl -0x48(%rbp), %eax
andl $0x30, %eax
cmpl $0x30, %eax
jne 0x1b983
leaq 0x14eb6(%rip), %rdi     # 0x30828
movl $0x169, %esi            # imm = 0x169
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1b985
jmp 0x1b987
movl -0x48(%rbp), %eax
andl $0x30, %eax
cmpl $0x0, %eax
je 0x1b9b7
movl -0x48(%rbp), %eax
andl $0x300, %eax            # imm = 0x300
cmpl $0x0, %eax
je 0x1b9b7
leaq 0x14e82(%rip), %rdi     # 0x30828
movl $0x16b, %esi            # imm = 0x16B
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1b9b9
jmp 0x1b9bb
movl -0x48(%rbp), %eax
andl $0x300, %eax            # imm = 0x300
cmpl $0x300, %eax            # imm = 0x300
jne 0x1b9e2
leaq 0x14e57(%rip), %rdi     # 0x30828
movl $0x16d, %esi            # imm = 0x16D
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1b9e4
jmp 0x1b9e6
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1ba16
movl -0x48(%rbp), %eax
andl $0x6000, %eax           # imm = 0x6000
cmpl $0x0, %eax
je 0x1ba16
leaq 0x14e23(%rip), %rdi     # 0x30828
movl $0x16f, %esi            # imm = 0x16F
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1ba18
jmp 0x1ba1a
movl -0x48(%rbp), %eax
andl $0x1800, %eax           # imm = 0x1800
cmpl $0x1800, %eax           # imm = 0x1800
je 0x1ba47
movl -0x48(%rbp), %eax
andl $0xc00, %eax            # imm = 0xC00
cmpl $0xc00, %eax            # imm = 0xC00
je 0x1ba47
movl -0x48(%rbp), %eax
andl $0x1400, %eax           # imm = 0x1400
cmpl $0x1400, %eax           # imm = 0x1400
jne 0x1ba5f
leaq 0x14dda(%rip), %rdi     # 0x30828
movl $0x172, %esi            # imm = 0x172
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1ba61
movl -0x14(%rbp), %eax
andl $0xf, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x4c(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x70(%rax)
jne 0x1ba93
movl -0x48(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
jne 0x1ba93
movzbl -0x41(%rbp), %eax
orl $0x48, %eax
movb %al, -0x41(%rbp)
jmp 0x1baaa
movl -0x48(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1baa8
movzbl -0x41(%rbp), %eax
orl $0x40, %eax
movb %al, -0x41(%rbp)
jmp 0x1baaa
movl -0x48(%rbp), %eax
andl $0x1800, %eax           # imm = 0x1800
cmpl $0x0, %eax
je 0x1bac0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x48(%rbp), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x1bad6
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x24(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x1bc7d
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0x0, %eax
jne 0x1bb8c
cmpq $0x7fffffff, -0x30(%rbp) # imm = 0x7FFFFFFF
jg 0x1bb15
cmpq $-0x80000000, -0x30(%rbp) # imm = 0x80000000
jge 0x1bb64
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rdx
movl $0x10, %esi
callq 0x1cb30
cmpl $0x0, %eax
je 0x1bb39
movq $0x0, -0x8(%rbp)
jmp 0x1c2e4
movq $0x0, -0x30(%rbp)
movl -0x24(%rbp), %eax
andl $0x3f, %eax
cmpl $0x0, %eax
je 0x1bb59
movl -0x24(%rbp), %eax
orl $0x1000, %eax           # imm = 0x1000
movl %eax, -0x24(%rbp)
jmp 0x1bb62
movl -0x24(%rbp), %eax
orl $0x10, %eax
movl %eax, -0x24(%rbp)
jmp 0x1bb8a
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14c0c(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
cmpl $0x4, %eax
jne 0x1bb88
movl -0x24(%rbp), %eax
orl $0xd00, %eax            # imm = 0xD00
movl %eax, -0x24(%rbp)
jmp 0x1bb8a
jmp 0x1bb8c
movl -0x24(%rbp), %eax
andl $0x3f, %eax
cmpl $0x0, %eax
jne 0x1bba7
movslq -0x4c(%rbp), %rax
addq $0x5, %rax
movl %eax, -0x4c(%rbp)
jmp 0x1bc7b
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14ba9(%rip), %rax     # 0x30760
movzbl (%rax,%rcx), %eax
cmpl $0x8, %eax
jl 0x1bbca
movzbl -0x41(%rbp), %eax
orl $0x41, %eax
movb %al, -0x41(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x1bc15
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0x0, %eax
je 0x1bbed
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0xd00, %eax            # imm = 0xD00
jne 0x1bc15
cmpq $0x7f, -0x30(%rbp)
jg 0x1bc08
cmpq $-0x80, -0x30(%rbp)
jl 0x1bc08
movslq -0x4c(%rbp), %rax
addq $0x1, %rax
movl %eax, -0x4c(%rbp)
jmp 0x1bc13
movslq -0x4c(%rbp), %rax
addq $0x4, %rax
movl %eax, -0x4c(%rbp)
jmp 0x1bc3b
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14b5b(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
cmpl $0x5, %eax
jne 0x1bc39
movslq -0x4c(%rbp), %rax
addq $0x1, %rax
movl %eax, -0x4c(%rbp)
jmp 0x1bc3b
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0x0, %eax
je 0x1bc79
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x24(%rbp), %eax
sarl $0x8, %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14afc(%rip), %rax     # 0x30760
movzbl (%rax,%rcx), %eax
cmpl $0x8, %eax
jl 0x1bc77
movzbl -0x41(%rbp), %eax
orl $0x42, %eax
movb %al, -0x41(%rbp)
jmp 0x1bc79
jmp 0x1bc7b
jmp 0x1bcaa
movl -0x48(%rbp), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
jne 0x1bca8
movslq -0x24(%rbp), %rcx
leaq 0x14acb(%rip), %rax     # 0x30760
movzbl (%rax,%rcx), %eax
cmpl $0x8, %eax
jl 0x1bca8
movzbl -0x41(%rbp), %eax
orl $0x41, %eax
movb %al, -0x41(%rbp)
jmp 0x1bcaa
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1bd84
movl -0x48(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x1bcf6
cmpq $0x7f, -0x20(%rbp)
jg 0x1bce8
cmpq $-0x80, -0x20(%rbp)
jl 0x1bce8
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x48(%rbp), %eax
orl $0x100, %eax            # imm = 0x100
movl %eax, -0x48(%rbp)
jmp 0x1bcf1
movl -0x4c(%rbp), %eax
addl $0x4, %eax
movl %eax, -0x4c(%rbp)
jmp 0x1bd82
movl -0x48(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x1bd3f
movq -0x10(%rbp), %rax
movl 0x70(%rax), %edx
movl $0x3f, %eax
movl $0x1f, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
cltq
andq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x1, -0x20(%rbp)
je 0x1bd3d
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x48(%rbp), %eax
orl $0x100, %eax            # imm = 0x100
movl %eax, -0x48(%rbp)
jmp 0x1bd80
movl -0x48(%rbp), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x1bd57
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x1bd7e
movl -0x48(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0x1bd71
movslq -0x4c(%rbp), %rax
addq $0x2, %rax
movl %eax, -0x4c(%rbp)
jmp 0x1bd7c
movslq -0x4c(%rbp), %rax
addq $0x4, %rax
movl %eax, -0x4c(%rbp)
jmp 0x1bd7e
jmp 0x1bd80
jmp 0x1bd82
jmp 0x1bdde
jmp 0x1bd86
movl -0x48(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x1bdaf
cmpl $0x3, -0x18(%rbp)
je 0x1bdaf
leaq 0x14a8a(%rip), %rdi     # 0x30828
movl $0x1c2, %esi            # imm = 0x1C2
movb $0x0, %al
callq 0x2070
callq 0x2040
jmp 0x1bdb1
movl -0x48(%rbp), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
jne 0x1bddc
movslq -0x18(%rbp), %rcx
leaq 0x14997(%rip), %rax     # 0x30760
movzbl (%rax,%rcx), %eax
cmpl $0x8, %eax
jl 0x1bddc
movzbl -0x41(%rbp), %eax
orl $0x44, %eax
movb %al, -0x41(%rbp)
jmp 0x1bdde
cmpb $0x0, -0x41(%rbp)
je 0x1bded
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x1a330
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x1be17
movq $0x0, -0x8(%rbp)
jmp 0x1c2e4
movl -0x4c(%rbp), %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
movslq -0x4c(%rbp), %rcx
movq -0x10(%rbp), %rax
addq 0x60(%rax), %rcx
movq %rcx, 0x60(%rax)
movl -0x48(%rbp), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x1be5c
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb $-0xe, (%rax)
movl -0x48(%rbp), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x1be7b
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb $-0xd, (%rax)
movl -0x48(%rbp), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x1be9a
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb $0x66, (%rax)
cmpb $0x0, -0x41(%rbp)
je 0x1beb4
movb -0x41(%rbp), %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
movq -0x38(%rbp), %rax
movslq -0x14(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl -0x48(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0x1bf5e
movl -0x48(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x1bf09
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1bf09
movl -0x48(%rbp), %edx
andl $0x100, %edx            # imm = 0x100
movl $0x81, %eax
movl $0x83, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movb %cl, (%rax)
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x1bf1a
cmpl $0x0, -0x18(%rbp)
jne 0x1bf23
movq -0x40(%rbp), %rax
movb $0x0, (%rax)
jmp 0x1bf5c
movl -0x48(%rbp), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
jne 0x1bf4c
movslq -0x18(%rbp), %rcx
leaq 0x14845(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
shll $0x3, %eax
movb %al, %cl
movq -0x40(%rbp), %rax
movb %cl, (%rax)
jmp 0x1bf5a
movl -0x18(%rbp), %eax
shll $0x3, %eax
movb %al, %cl
movq -0x40(%rbp), %rax
movb %cl, (%rax)
jmp 0x1bf5c
jmp 0x1bf90
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1bf82
cmpq $0x1, -0x20(%rbp)
jne 0x1bf79
movq -0x38(%rbp), %rax
movb $-0x2f, (%rax)
jmp 0x1bf80
movq -0x38(%rbp), %rax
movb $-0x3f, (%rax)
jmp 0x1bf89
movq -0x38(%rbp), %rax
movb $-0x2d, (%rax)
movq -0x40(%rbp), %rax
movb $0x0, (%rax)
movl -0x24(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
jne 0x1bfe8
movl -0x48(%rbp), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
jne 0x1bfbe
movslq -0x24(%rbp), %rcx
leaq 0x147cb(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
movl %eax, -0x50(%rbp)
jmp 0x1bfc4
movl -0x24(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %edx
addl $0xc0, %edx
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movzbl (%rax), %ecx
orl %edx, %ecx
movb %cl, (%rax)
jmp 0x1c25b
movl -0x24(%rbp), %eax
andl $0x3f, %eax
cmpl $0x0, %eax
je 0x1c218
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0x0, %eax
je 0x1c017
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0xd00, %eax            # imm = 0xD00
jne 0x1c15d
cmpq $0x0, -0x30(%rbp)
jne 0x1c037
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14752(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
cmpl $0x5, %eax
jne 0x1c064
cmpq $0x7f, -0x30(%rbp)
jg 0x1c053
cmpq $-0x80, -0x30(%rbp)
jl 0x1c053
movq -0x40(%rbp), %rax
movzbl (%rax), %ecx
orl $0x40, %ecx
movb %cl, (%rax)
jmp 0x1c062
movq -0x40(%rbp), %rax
movzbl (%rax), %ecx
orl $0x80, %ecx
movb %cl, (%rax)
jmp 0x1c064
movl -0x24(%rbp), %eax
andl $0x3f00, %eax           # imm = 0x3F00
cmpl $0x0, %eax
jne 0x1c09d
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x146ff(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %edx
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movzbl (%rax), %ecx
orl %edx, %ecx
movb %cl, (%rax)
jmp 0x1c0f7
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x146bc(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
movl -0x24(%rbp), %ecx
sarl $0x8, %ecx
andl $0x3f, %ecx
movslq %ecx, %rdx
leaq 0x146a5(%rip), %rcx     # 0x30780
movzbl (%rcx,%rdx), %ecx
shll $0x3, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
cmpq $0x0, -0x30(%rbp)
jne 0x1c117
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14672(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
cmpl $0x5, %eax
jne 0x1c158
cmpq $0x7f, -0x30(%rbp)
jg 0x1c13e
cmpq $-0x80, -0x30(%rbp)
jl 0x1c13e
movq -0x30(%rbp), %rax
movb %al, %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
jmp 0x1c156
movq -0x30(%rbp), %rax
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movq -0x40(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x40(%rbp)
jmp 0x1c158
jmp 0x1c216
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14613(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
cmpl $0x5, %eax
jne 0x1c182
movq -0x40(%rbp), %rax
movzbl (%rax), %ecx
orl $0x40, %ecx
movb %cl, (%rax)
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x145d7(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
movl -0x24(%rbp), %ecx
sarl $0x8, %ecx
andl $0x3f, %ecx
movslq %ecx, %rdx
leaq 0x145c0(%rip), %rcx     # 0x30780
movzbl (%rcx,%rdx), %ecx
shll $0x3, %ecx
orl %ecx, %eax
cltq
movq -0x30(%rbp), %rcx
shlq $0x6, %rcx
orq %rcx, %rax
movb %al, %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
movl -0x24(%rbp), %eax
andl $0x3f, %eax
movslq %eax, %rcx
leaq 0x14587(%rip), %rax     # 0x30780
movzbl (%rax,%rcx), %eax
cmpl $0x5, %eax
jne 0x1c214
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movb $0x0, (%rax)
jmp 0x1c216
jmp 0x1c259
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movb $0x25, (%rax)
movq -0x30(%rbp), %rax
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movq -0x40(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x40(%rbp)
jmp 0x1c25b
movl -0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x1c2bb
movl -0x48(%rbp), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x1c281
movq -0x20(%rbp), %rax
movb %al, %cl
movq -0x40(%rbp), %rax
movb %cl, (%rax)
jmp 0x1c2b9
movl -0x48(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0x1c29e
movq -0x20(%rbp), %rax
movw %ax, %cx
movq -0x40(%rbp), %rax
movw %cx, (%rax)
jmp 0x1c2b7
movl -0x48(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0x1c2b5
movq -0x20(%rbp), %rax
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
jmp 0x1c2b7
jmp 0x1c2b9
jmp 0x1c2bb
movl -0x48(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0x1c2d0
movq -0x38(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0x1c2dc
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nop