// File: /workspace/github_c_makefile_star2_O3/markdryan[P]subtilis/arch/arm32/assembler.c
// Function: prv_parse_identifier
static void prv_parse_identifier(subtilis_arm_ass_context_t *c,
				 subtilis_error_t *err)
{
	const char *tbuf;
	size_t index;
	size_t i;
	size_t base_len;
	size_t token_end;
	bool status_valid;
	bool byte_valid;
	bool hword_valid;
	bool dword_valid;
	size_t ptr;
	size_t search_len;
	subtilis_arm_instr_type_t itype;
	subtilis_arm_iclass_t iclass;
	subtilis_arm_ass_modifiers_t modifiers = {false};
	subtilis_arm_mtran_type_t mtran_type = SUBTILIS_ARM_MTRAN_IA;
	subtilis_arm_ccode_type_t ccode = SUBTILIS_ARM_CCODE_AL;
	size_t max_length = 0;
	size_t max_index = SIZE_MAX;

	tbuf = subtilis_token_get_text(c->t);
	if (tbuf[0] < 'A' || tbuf[0] > 'Z') {
		prv_parse_label(c, tbuf, err);
		return;
	}

	index = tbuf[0] - 'A';
	if (!keyword_map[index].mnems) {
		prv_parse_label(c, tbuf, err);
		return;
	}

	for (i = 0; i < keyword_map[index].count; i++) {
		search_len = strlen(keyword_map[index].mnems[i].name);
		if (search_len > keyword_map[index].max_length)
			search_len = keyword_map[index].max_length;
		if (!strncmp(keyword_map[index].mnems[i].name, tbuf,
			     search_len)) {
			base_len = strlen(keyword_map[index].mnems[i].name);
			if (base_len > max_length) {
				max_length = base_len;
				max_index = i;
			}
		}
	}

	if (max_index == SIZE_MAX) {
		prv_parse_label(c, tbuf, err);
		return;
	}

	/*
	 * It might still be an identifier
	 */

	token_end = strlen(tbuf);
	itype = keyword_map[index].mnems[max_index].type;
	iclass = subtilis_arm_get_iclass(itype, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	if (iclass == SUBTILIS_ARM_ICLASS_FPA) {
		prv_parse_possible_fpa(c, itype, tbuf, &tbuf[max_length],
				       token_end - max_length, err);
		return;
	}

	if (iclass == SUBTILIS_ARM_ICLASS_VFP) {
		prv_parse_possible_vfp(c, itype, tbuf, &tbuf[max_length],
				       token_end - max_length, err);
		return;
	}

	/* Special case for BL */

	if ((itype == SUBTILIS_ARM_INSTR_B) && (token_end > 1) &&
	    (token_end != 3) && (tbuf[1] == 'L'))
		max_length++;

	status_valid = itype != SUBTILIS_ARM_INSTR_LDR &&
		       itype != SUBTILIS_ARM_INSTR_STR &&
		       itype != SUBTILIS_ARM_INSTR_CMP &&
		       itype != SUBTILIS_ARM_INSTR_CMN &&
		       itype != SUBTILIS_ARM_INSTR_LDM &&
		       itype != SUBTILIS_ARM_INSTR_LDM &&
		       itype != SUBTILIS_ARM_INSTR_TST &&
		       itype != SUBTILIS_ARM_INSTR_TEQ &&
		       itype != SUBTILIS_ARM_INSTR_B;
	byte_valid =
	    itype == SUBTILIS_ARM_INSTR_LDR || itype == SUBTILIS_ARM_INSTR_STR;
	hword_valid = byte_valid;
	dword_valid = hword_valid;

	ptr = max_length;
	if (ptr == token_end) {
		if ((itype == SUBTILIS_ARM_INSTR_LDM) ||
		    (itype == SUBTILIS_ARM_INSTR_STM))
			prv_parse_label(c, tbuf, err);
		else
			prv_parse_instruction(c, tbuf, itype, ccode, &modifiers,
					      mtran_type, err);
		return;
	}

	if (ptr + 2 <= token_end) {
		for (i = 0; i < sizeof(condition_codes) / sizeof(const char *);
		     i++)
			if ((tbuf[ptr] == condition_codes[i][0]) &&
			    (tbuf[ptr + 1] == condition_codes[i][1]))
				break;

		if (i < sizeof(condition_codes) / sizeof(const char *)) {
			ptr += 2;
			ccode = (subtilis_arm_ccode_type_t)i;
		}
	}

	if ((ptr + 2 == token_end) && ((itype == SUBTILIS_ARM_INSTR_LDM) ||
				       (itype == SUBTILIS_ARM_INSTR_STM))) {
		for (i = 0; i < sizeof(mtran_types) / sizeof(mtran_types[0]);
		     i++)
			if (!strcmp(&tbuf[ptr], mtran_types[i]))
				break;

		if (i < sizeof(mtran_types) / sizeof(mtran_types[0])) {
			mtran_type = (subtilis_arm_mtran_type_t)i;
			ptr += 2;
		}
	}

	if (ptr + 1 == token_end) {
		modifiers.status = tbuf[ptr] == 'S' && status_valid;
		modifiers.byte = tbuf[ptr] == 'B' && byte_valid;
		modifiers.hword = tbuf[ptr] == 'H' && hword_valid;
		modifiers.dword = tbuf[ptr] == 'D' && dword_valid;
		modifiers.teqp =
		    tbuf[ptr] == 'P' && itype == SUBTILIS_ARM_INSTR_TEQ;
		if (!modifiers.status && !modifiers.byte && !modifiers.teqp &&
		    !modifiers.hword && !modifiers.dword) {
			prv_parse_label(c, tbuf, err);
			return;
		}
	} else if ((ptr + 2 == token_end) &&
		   (status_valid || itype == SUBTILIS_ARM_INSTR_LDR) &&
		   (byte_valid || hword_valid)) {
		if (tbuf[ptr] != 'S') {
			prv_parse_label(c, tbuf, err);
			return;
		}
		modifiers.status = true;
		modifiers.byte = tbuf[ptr + 1] == 'B';
		modifiers.hword = tbuf[ptr + 1] == 'H';
		if (!modifiers.byte && !modifiers.hword) {
			prv_parse_label(c, tbuf, err);
			return;
		}
	} else if (ptr != token_end) {
		prv_parse_label(c, tbuf, err);
		return;
	}

	prv_parse_instruction(c, tbuf, itype, ccode, &modifiers, mtran_type,
			      err);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %r15
movb $0x0, 0x14(%rsp)
movl $0x0, 0x10(%rsp)
movq 0x10(%rdi), %rdi
callq 0x12ad0
movq %rax, %r12
movb (%rax), %dl
leal -0x5b(%rdx), %ecx
cmpb $-0x1b, %cl
jbe 0x63b2c
addb $-0x41, %dl
movzbl %dl, %ecx
leaq (%rcx,%rcx,2), %rdx
leaq 0x3ea09(%rip), %rcx     # 0xa2440
movq (%rcx,%rdx,8), %rsi
testq %rsi, %rsi
je 0x63b2c
movq %rax, 0x30(%rsp)
leaq (%rcx,%rdx,8), %rax
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
testq %rcx, %rcx
je 0x63b2c
movq %r12, 0x38(%rsp)
movq %r15, 0x8(%rsp)
movq %r14, (%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq $-0x1, %rbp
xorl %ebx, %ebx
movq %rsi, 0x28(%rsp)
movq %rsi, %r12
xorl %r14d, %r14d
movq (%r12), %r13
movq %r13, %rdi
callq 0x120f0
movq %rax, %r15
movq %rax, %rdx
cmpq 0x18(%rsp), %rax
jb 0x63aa8
movq 0x18(%rsp), %rdx
movq %r13, %rdi
movq 0x38(%rsp), %rsi
callq 0x12060
movq %r14, %rcx
cmpq %rbx, %r15
ja 0x63ac3
movq %rbx, %r15
movq %rbp, %rcx
testl %eax, %eax
cmoveq %r15, %rbx
cmoveq %rcx, %rbp
incq %r14
addq $0x20, %r12
cmpq %r14, 0x20(%rsp)
jne 0x63a8a
cmpq $-0x1, %rbp
movq (%rsp), %r14
movq 0x8(%rsp), %r15
movq 0x38(%rsp), %r12
movq 0x28(%rsp), %r13
je 0x63b2c
movq %r12, %rdi
callq 0x120f0
movq %rax, %r14
shlq $0x5, %rbp
movl 0x8(%r13,%rbp), %ebp
movq (%rsp), %r13
movl %ebp, %edi
movq %r13, %rsi
callq 0x4f50c
cmpl $0x0, (%r13)
je 0x63b48
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x6541e
cmpl $0x2, %eax
je 0x63bb6
cmpl $0x1, %eax
movq %r14, %r13
jne 0x63c0d
movq 0x30(%rsp), %r10
addq %rbx, %r10
subq %rbx, %r13
cmpq $0x2, %r13
jb 0x63c4b
movb (%r10), %sil
movb $0x1, %cl
leaq 0x3eb36(%rip), %rdi     # 0xa26b0
xorl %eax, %eax
xorl %edx, %edx
movq (%rdi), %r8
cmpb (%r8), %sil
jne 0x63b94
movb 0x1(%r10), %r9b
cmpb 0x1(%r8), %r9b
je 0x63d54
cmpq $0xf, %rdx
leaq 0x1(%rdx), %r8
setb %cl
addq $0x8, %rdi
movq %r8, %rdx
cmpq $0x10, %r8
jne 0x63b7e
movl $0x10, %edx
jmp 0x63d59
subq %rbx, %r14
cmpq $0x2, %r14
jb 0x63c57
movb (%r12,%rbx), %sil
movb $0x1, %cl
leaq 0x3eae0(%rip), %rdi     # 0xa26b0
xorl %eax, %eax
xorl %edx, %edx
movq (%rdi), %r8
cmpb (%r8), %sil
jne 0x63beb
movb 0x1(%r12,%rbx), %r9b
cmpb 0x1(%r8), %r9b
je 0x63e0b
cmpq $0xf, %rdx
leaq 0x1(%rdx), %r8
setb %cl
addq $0x8, %rdi
movq %r8, %rdx
cmpq $0x10, %r8
jne 0x63bd4
movl $0x10, %edx
jmp 0x63e10
cmpl $0x16, %ebp
movq 0x30(%rsp), %rdi
ja 0x63ee2
movl $0x1c0f00, %eax         # imm = 0x1C0F00
btl %ebp, %eax
jae 0x63eba
xorl %eax, %eax
movl %ebp, %r15d
andl $-0x2, %r15d
cmpq %r13, %rbx
jne 0x63c63
cmpl $0x14, %r15d
jne 0x63d30
movq 0x8(%rsp), %rdi
jmp 0x640df
movl $0xe, %ecx
xorl %eax, %eax
jmp 0x63d64
movl $0xe, %ebx
xorl %eax, %eax
jmp 0x63e1b
movl %eax, 0x18(%rsp)
leaq 0x2(%rbx), %r10
movl $0xe, 0x20(%rsp)
cmpq %r13, %r10
ja 0x63cb6
movb (%r12,%rbx), %al
movb $0x1, %cl
leaq 0x3ea2b(%rip), %rdx     # 0xa26b0
xorl %esi, %esi
movq (%rdx), %r9
cmpb (%r9), %al
jne 0x63c9e
movb 0x1(%r12,%rbx), %r8b
cmpb 0x1(%r9), %r8b
je 0x63ef5
cmpq $0xf, %rsi
leaq 0x1(%rsi), %r8
setb %cl
addq $0x8, %rdx
movq %r8, %rsi
cmpq $0x10, %r8
jne 0x63c87
movq %r10, %rax
movq %rbx, %r10
xorl %r9d, %r9d
cmpl $0x14, %r15d
jne 0x63f97
cmpq %r13, %rax
jne 0x63f97
movq %rbp, 0x28(%rsp)
movq %r10, 0x40(%rsp)
addq %r10, %rdi
leaq 0x12994(%rip), %rsi     # 0x7667a
movq %rdi, %rbp
callq 0x12160
testl %eax, %eax
je 0x63ee9
xorl %ebx, %ebx
leaq 0x1301d(%rip), %r14     # 0x76d1c
cmpq $0x7, %rbx
je 0x63f79
movslq 0x4(%r14,%rbx,4), %rsi
addq %r14, %rsi
movq %rbp, %rdi
callq 0x12160
incq %rbx
testl %eax, %eax
jne 0x63cff
leaq -0x1(%rbx), %rax
cmpq $0x7, %rax
setb %al
jmp 0x63eed
subq $0x8, %rsp
leaq 0x18(%rsp), %r8
movq 0x10(%rsp), %rdi
movq %r12, %rsi
movl %ebp, %edx
movl $0xe, %ecx
xorl %r9d, %r9d
pushq 0x8(%rsp)
jmp 0x640b8
movl $0x2, %eax
testb $0x1, %cl
movl $0xe, %ecx
cmovnel %edx, %ecx
leal -0x46(%rbp), %edx
cmpl $-0x8, %edx
ja 0x63da0
cmpq %r13, %rax
je 0x640dc
movzbl (%r10,%rax), %edx
cmpl $0x44, %edx
je 0x640ce
cmpl $0x53, %edx
je 0x640c6
cmpl $0x45, %edx
jne 0x640dc
movl $0xc, %r9d
jmp 0x640d4
xorl %r9d, %r9d
cmpq %r13, %rax
jne 0x63dc5
subq $0x8, %rsp
movq %r15, %rdi
movq %r12, %rsi
movl %ebp, %edx
xorl %r8d, %r8d
pushq 0x8(%rsp)
callq 0x66474
jmp 0x64868
movl %ebp, %edx
andl $-0x2, %edx
cmpl $0x1e, %edx
je 0x640dc
cmpq %r13, %rax
jae 0x640dc
movzbl (%r10,%rax), %eax
cmpl $0x5a, %eax
movq (%rsp), %r10
je 0x64172
cmpl $0x50, %eax
je 0x6416a
cmpl $0x4d, %eax
jne 0x6418b
movl $0x2, %r8d
jmp 0x64178
movl $0x2, %eax
testb $0x1, %cl
movl $0xe, %ebx
cmovnel %edx, %ebx
cmpq %r14, %rax
jne 0x63eac
leal -0x46(%rbp), %eax
cmpl $0x3c, %eax
ja 0x6471c
leaq 0x12cd9(%rip), %rcx     # 0x76b10
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r15, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x67144
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x63e7d
cmpb $0x2c, (%rax)
jne 0x63e7d
cmpb $0x0, 0x1(%rax)
je 0x64786
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12ee0(%rip), %r10     # 0x76d70
leaq 0xf6fb(%rip), %rdx      # 0x73592
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xb06                  # imm = 0xB06
jmp 0x64861
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
jmp 0x63b35
cmpl $0x16, %ebp
jne 0x63ee2
cmpq $0x3, %r13
ja 0x63ecf
cmpq $0x2, %r13
jne 0x63c29
xorl %eax, %eax
cmpb $0x4c, 0x1(%r12)
sete %al
addq %rax, %rbx
jmp 0x63c29
movb $0x1, %al
jmp 0x63c2b
movb $0x1, %al
xorl %ebx, %ebx
movq %r13, %r10
jmp 0x63f86
addq $0x4, %rbx
testb $0x1, %cl
movl $0xe, %eax
cmovnel %esi, %eax
movl %eax, 0x20(%rsp)
movq %rbx, %rax
jmp 0x63cbc
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
movq %rax, %r12
cmpl $0x0, (%r13)
jne 0x63b1d
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x63f4a
cmpb $0x2c, (%rax)
jne 0x63f4a
cmpb $0x0, 0x1(%rax)
je 0x64871
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12e13(%rip), %r10     # 0x76d70
leaq 0xf62e(%rip), %rdx      # 0x73592
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xacc                  # imm = 0xACC
jmp 0x64861
setb %al
movl $0x8, %ebx
movq 0x40(%rsp), %r10
testb %al, %al
movl $0x0, %r9d
cmovnel %ebx, %r9d
movq 0x28(%rsp), %rbp
leaq 0x1(%r10), %rax
cmpq %r13, %rax
jne 0x64041
xorl %eax, %eax
cmpl $0x12, %r15d
sete %al
movzbl (%r12,%r10), %ecx
cmpb $0x53, %cl
sete %dl
movl 0x18(%rsp), %esi
andb %dl, %sil
movb %sil, 0x10(%rsp)
xorl %edx, %edx
cmpl $0x9, %ebp
sete %dl
movd %ecx, %xmm0
punpcklbw %xmm0, %xmm0    # xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
punpcklbw %xmm0, %xmm0    # xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
punpcklwd %xmm0, %xmm0    # xmm0 = xmm0[0,0,1,1,2,2,3,3]
movd 0x12d67(%rip), %xmm1    # 0x76d50
punpcklbw %xmm1, %xmm1    # xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
punpcklwd %xmm1, %xmm1    # xmm1 = xmm1[0,0,1,1,2,2,3,3]
pcmpeqb %xmm0, %xmm1
movd %eax, %xmm0
pinsrw $0x2, %edx, %xmm0
pshufd $0x4, %xmm0, %xmm0      # xmm0 = xmm0[0,1,0,0]
pand %xmm1, %xmm0
movdqa 0x12d51(%rip), %xmm1    # 0x76d60
pand %xmm0, %xmm1
packuswb %xmm1, %xmm1
packuswb %xmm1, %xmm1
movd %xmm1, 0x11(%rsp)
pslld $0x1f, %xmm0
movmskps %xmm0, %eax
testl %eax, %eax
movq 0x8(%rsp), %rdi
movq (%rsp), %r10
jne 0x640a4
testb %sil, %sil
je 0x6418e
jmp 0x640a4
cmpl $0x12, %ebp
sete %cl
cmpl $0x12, %r15d
jne 0x64092
orb 0x18(%rsp), %cl
je 0x64092
leaq 0x2(%r10), %rcx
cmpq %r13, %rcx
jne 0x64092
cmpb $0x53, (%r12,%r10)
movq 0x8(%rsp), %rdi
jne 0x640df
movb $0x1, 0x10(%rsp)
movzbl (%r12,%rax), %eax
cmpl $0x48, %eax
sete 0x13(%rsp)
cmpl $0x42, %eax
sete 0x11(%rsp)
movq (%rsp), %r10
je 0x640a4
cmpl $0x48, %eax
je 0x640a4
jmp 0x6418e
cmpq %r13, %r10
movq 0x8(%rsp), %rdi
movq (%rsp), %r10
jne 0x6418e
subq $0x8, %rsp
leaq 0x18(%rsp), %r8
movq %r12, %rsi
movl %ebp, %edx
movl 0x28(%rsp), %ecx
pushq %r10
callq 0x655ad
addq $0x10, %rsp
jmp 0x63b1d
movl $0x4, %r9d
jmp 0x640eb
movl $0x8, %r9d
leal -0x2c(%rbp), %edx
cmpl $0x2, %edx
ja 0x640eb
movq %r15, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
jmp 0x63b35
orq $0x1, %rax
jmp 0x63da3
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
jmp 0x6410c
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
movq %rax, %r12
cmpl $0x0, (%r13)
jne 0x63b1d
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x6413b
cmpb $0x2c, (%rax)
jne 0x6413b
cmpb $0x0, 0x1(%rax)
je 0x648c0
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12c22(%rip), %r10     # 0x76d70
leaq 0xf43d(%rip), %rdx      # 0x73592
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xaa1                  # imm = 0xAA1
jmp 0x64861
movl $0x1, %r8d
jmp 0x64178
movl $0x3, %r8d
subq $0x8, %rsp
movq %r15, %rdi
movq %r12, %rsi
movl %ebp, %edx
pushq %r10
jmp 0x63dbb
movq %r15, %rdi
movq %r12, %rsi
movq %r10, %rdx
jmp 0x63b35
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
jmp 0x64343
movq %r15, %rdi
movq %r13, %rsi
cmpl $0x79, %ebp
jne 0x646b9
callq 0x670bb
jmp 0x646be
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
jmp 0x63f1b
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
jmp 0x642bf
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x6421c
cmpb $0x2c, (%rax)
jne 0x6421c
cmpb $0x0, 0x1(%rax)
je 0x64919
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12b41(%rip), %r10     # 0x76d70
leaq 0xf35c(%rip), %rdx      # 0x73592
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xb5a                  # imm = 0xB5A
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64285
cmpb $0x2c, (%rax)
jne 0x64285
cmpb $0x0, 0x1(%rax)
je 0x64926
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12ad8(%rip), %r10     # 0x76d70
leaq 0xf2f3(%rip), %rdx      # 0x73592
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xb49                  # imm = 0xB49
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
movq %rax, %r12
cmpl $0x0, (%r13)
jne 0x63b1d
movq 0x8(%r15), %rdi
movq 0x10(%r15), %rsi
movq %r13, %rdx
callq 0x12edc
cmpl $0x0, (%r13)
jne 0x63b1d
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64309
cmpb $0x5b, (%rax)
jne 0x64309
cmpb $0x0, 0x1(%rax)
je 0x649a0
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12a54(%rip), %r10     # 0x76d70
leaq 0x12ad6(%rip), %rdx     # 0x76df9
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xd0b                  # imm = 0xD0B
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
cmpl $0x0, (%r13)
jne 0x63b1d
movq (%r15), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %rax, %rcx
movq %r13, %r8
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5da28
leaq 0x124d1(%rip), %rsi     # 0x76846
movq %r12, %rdi
callq 0x12160
testl %eax, %eax
je 0x64743
movq %r15, %rdi
movq %r13, %rsi
cmpl $0x7b, %ebp
jne 0x647f5
callq 0x67166
movq %r13, %rcx
movq %rax, %r13
movq $-0x1, %r12
jmp 0x64807
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x643e5
cmpb $0x2c, (%rax)
jne 0x643e5
cmpb $0x0, 0x1(%rax)
je 0x64a33
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12973(%rip), %r10     # 0x76d70
leaq 0xf18e(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xb88                  # imm = 0xB88
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64454
cmpb $0x2c, (%rax)
jne 0x64454
cmpb $0x0, 0x1(%rax)
je 0x64a49
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12904(%rip), %r10     # 0x76d70
leaq 0xf11f(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc06                  # imm = 0xC06
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x66be3
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x644c3
cmpb $0x2c, (%rax)
jne 0x644c3
cmpb $0x0, 0x1(%rax)
je 0x64ac2
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12895(%rip), %r10     # 0x76d70
leaq 0xf0b0(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc5b                  # imm = 0xC5B
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x66be3
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64532
cmpb $0x2c, (%rax)
jne 0x64532
cmpb $0x0, 0x1(%rax)
je 0x64b39
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12826(%rip), %r10     # 0x76d70
leaq 0xf041(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc1f                  # imm = 0xC1F
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x645a1
cmpb $0x2c, (%rax)
jne 0x645a1
cmpb $0x0, 0x1(%rax)
je 0x64bb0
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x127b7(%rip), %r10     # 0x76d70
leaq 0xefd2(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xb98                  # imm = 0xB98
jmp 0x64861
movq %r15, %rdi
movq %r13, %rsi
callq 0x66be3
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
jmp 0x64620
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x66be3
cmpl $0x0, (%r13)
jne 0x63b1d
movq (%r15), %rdi
subq $0x8, %rsp
movl %ebp, %esi
movl %ebx, %edx
xorl %ecx, %ecx
movq %r12, %r8
movq %rax, %r9
pushq %r13
callq 0x5d973
jmp 0x64868
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64684
cmpb $0x2c, (%rax)
jne 0x64684
cmpb $0x0, 0x1(%rax)
je 0x64bf4
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x126d4(%rip), %r10     # 0x76d70
leaq 0xeeef(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc38                  # imm = 0xC38
jmp 0x64861
callq 0x67032
movq %rax, %r12
cmpl $0x0, (%r13)
jne 0x63b1d
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x646ed
cmpb $0x2c, (%rax)
jne 0x646ed
cmpb $0x0, 0x1(%rax)
je 0x648fd
movq 0x8(%r15), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12670(%rip), %r10     # 0x76d70
leaq 0xee8b(%rip), %rdx      # 0x73592
movq %r13, %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xbb7                  # imm = 0xBB7
jmp 0x64861
leaq 0x1264d(%rip), %rdx     # 0x76d70
movq %r13, %rdi
movl $0xf, %esi
movl $0xd7e, %ecx            # imm = 0xD7E
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x145a4
movq (%r15), %rdi
movl $0xf, %r8d
movl %ebp, %esi
movl %ebx, %edx
movl $0x1, %ecx
movq %r13, %r9
callq 0x5da84
cmpl $0x0, (%r13)
jne 0x63b1d
movq 0x8(%r15), %rdi
movq 0x10(%r15), %rsi
movq %r13, %rdx
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x12edc
movq %r15, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x67144
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r13
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x647c3
cmpb $0x2c, (%rax)
jne 0x647c3
cmpb $0x0, 0x1(%rax)
je 0x64cac
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12595(%rip), %r10     # 0x76d70
leaq 0xedb0(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xb11                  # imm = 0xB11
jmp 0x64861
callq 0x66be3
movq %rax, %r12
movq %r13, %rcx
movq $-0x1, %r13
cmpl $0x0, (%rcx)
jne 0x63b1d
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64831
cmpb $0x2c, (%rax)
jne 0x64831
cmpb $0x0, 0x1(%rax)
je 0x64a14
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12527(%rip), %r10     # 0x76d70
leaq 0xed42(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xbe3                  # imm = 0xBE3
pushq %r10
callq 0x143da
addq $0x58, %rsp
jmp 0x63b21
leal -0x54(%rbp), %eax
cmpl $0x6, %eax
ja 0x648ed
movl $0x55, %ecx
btl %eax, %ecx
jae 0x648ed
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x670bb
movq (%rsp), %r10
cmpl $0x0, (%r10)
movq 0x8(%rsp), %rcx
jne 0x63b1d
movq (%rcx), %rdi
subq $0x8, %rsp
movl %ebp, %esi
movl %ebx, %edx
xorl %ecx, %ecx
movq %r12, %r8
movq %rax, %r9
pushq %r10
callq 0x5d933
jmp 0x64868
leal -0x4a(%rbp), %eax
cmpl $0x4, %eax
ja 0x6495f
movl $0x15, %ecx
btl %eax, %ecx
jae 0x6495f
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x67032
jmp 0x6496d
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x67032
jmp 0x64891
cmpl $0x79, %ebp
jne 0x64c6b
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x670bb
jmp 0x64c79
movq %r15, %rdi
movq %r13, %rsi
callq 0x67032
jmp 0x64931
movq %r15, %rdi
movq %r13, %rsi
callq 0x670bb
cmpl $0x0, (%r13)
jne 0x63b1d
movq (%r15), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %rax, %r8
movq %r13, %r9
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5d9f2
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x670bb
movq (%rsp), %r9
cmpl $0x0, (%r9)
movq 0x8(%rsp), %rcx
jne 0x63b1d
movq (%rcx), %rdi
movl %ebx, %esi
movl %ebp, %edx
movq %r12, %rcx
movq %rax, %r8
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5d690
movq %r15, %rdi
movq %r13, %rsi
callq 0x66be3
cmpl $0x0, (%r13)
jne 0x63b1d
movq %rax, %r13
movq 0x10(%r15), %rdi
callq 0x12ad0
movq 0x10(%r15), %rcx
cmpl $0x2, (%rcx)
jne 0x64d3a
movzbl (%rax), %ecx
cmpl $0x5d, %ecx
je 0x64d30
cmpl $0x2c, %ecx
jne 0x64d3a
cmpb $0x0, 0x1(%rax)
jne 0x64d3a
movq 0x8(%rsp), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %r13, %r8
movq (%rsp), %r9
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x671ef
cmpl $0x7b, %ebp
jne 0x64cec
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x66be3
movq %rax, %r12
jmp 0x64cfd
movq 0x8(%rsp), %rdi
movq (%rsp), %r14
movq %r14, %rsi
callq 0x67032
jmp 0x64bc1
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x66be3
movq %rax, 0x18(%rsp)
cmpl $0x0, (%r15)
jne 0x63b1d
movq 0x10(%r14), %rdi
callq 0x12ad0
movq 0x10(%r14), %rcx
cmpl $0x2, (%rcx)
jne 0x64a8d
cmpb $0x2c, (%rax)
jne 0x64a8d
cmpb $0x0, 0x1(%rax)
je 0x64d6f
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x122cb(%rip), %r10     # 0x76d70
leaq 0xeae6(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc11                  # imm = 0xC11
jmp 0x64861
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x66be3
cmpl $0x0, (%r15)
jne 0x63b1d
movq %rax, %r13
movq 0x10(%r14), %rdi
callq 0x12ad0
movq 0x10(%r14), %rcx
cmpl $0x2, (%rcx)
jne 0x64b04
cmpb $0x2c, (%rax)
jne 0x64b04
cmpb $0x0, 0x1(%rax)
je 0x64d85
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12254(%rip), %r10     # 0x76d70
leaq 0xea6f(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc66                  # imm = 0xC66
jmp 0x64861
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x66be3
cmpl $0x0, (%r15)
jne 0x63b1d
movq %rax, %r13
movq 0x10(%r14), %rdi
callq 0x12ad0
movq 0x10(%r14), %rcx
cmpl $0x2, (%rcx)
jne 0x64b7b
cmpb $0x2c, (%rax)
jne 0x64b7b
cmpb $0x0, 0x1(%rax)
je 0x64dfe
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x121dd(%rip), %r10     # 0x76d70
leaq 0xe9f8(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc2a                  # imm = 0xC2A
jmp 0x64861
movq 0x8(%rsp), %rdi
movq (%rsp), %r14
movq %r14, %rsi
callq 0x670bb
cmpl $0x0, (%r14)
jne 0x63b1d
movq 0x8(%rsp), %rcx
movq (%rcx), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %rax, %r8
movq (%rsp), %r9
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5db02
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x67032
cmpl $0x0, (%r15)
jne 0x63b1d
movq %rax, %r13
movq 0x10(%r14), %rdi
callq 0x12ad0
movq 0x10(%r14), %rcx
cmpl $0x2, (%rcx)
jne 0x64c36
cmpb $0x2c, (%rax)
jne 0x64c36
cmpb $0x0, 0x1(%rax)
je 0x64e45
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x12122(%rip), %r10     # 0x76d70
leaq 0xe93d(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc43                  # imm = 0xC43
jmp 0x64861
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x67032
movq (%rsp), %r9
cmpl $0x0, (%r9)
movq 0x8(%rsp), %rcx
jne 0x63b1d
movq (%rcx), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %rax, %r8
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5da4e
movq 0x8(%rsp), %r14
movq %r14, %rdi
movl %ebp, %esi
movq (%rsp), %r15
movq %r15, %rdx
callq 0x67144
cmpl $0x0, (%r15)
jne 0x63b1d
movq (%r14), %rdi
subq $0x8, %rsp
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %r13, %r8
movq %rax, %r9
pushq %r15
callq 0x5d9b3
jmp 0x64868
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x67166
movq %rax, %r13
movq (%rsp), %r9
cmpl $0x0, (%r9)
movq 0x8(%rsp), %rax
jne 0x63b1d
movq (%rax), %rdi
movl %ebp, %esi
movl %ebx, %edx
movl %r13d, %ecx
movq %r12, %r8
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5da84
cmpb $0x0, 0x1(%rax)
je 0x64eba
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x1201e(%rip), %r10     # 0x76d70
leaq 0x120a2(%rip), %rdx     # 0x76dfb
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xd23                  # imm = 0xD23
jmp 0x64861
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x66be3
xorl %r13d, %r13d
jmp 0x64e13
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x67032
movq %rax, 0x18(%rsp)
cmpl $0x0, (%r15)
jne 0x63b1d
movq 0x10(%r14), %rdi
callq 0x12ad0
movq 0x10(%r14), %rcx
cmpl $0x2, (%rcx)
jne 0x64dc9
cmpb $0x2c, (%rax)
jne 0x64dc9
cmpb $0x0, 0x1(%rax)
je 0x64ee0
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x11f8f(%rip), %r10     # 0x76d70
leaq 0xe7aa(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc71                  # imm = 0xC71
jmp 0x64861
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x670bb
movq %rax, 0x18(%rsp)
xorl %eax, %eax
movq (%rsp), %r10
cmpl $0x0, (%r10)
movq 0x8(%rsp), %rcx
jne 0x63b1d
movq (%rcx), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %r13, %r8
movq 0x18(%rsp), %r9
pushq %r10
pushq %rax
callq 0x5daba
jmp 0x64868
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x66be3
movq %rax, 0x18(%rsp)
cmpl $0x0, (%r15)
jne 0x63b1d
movq 0x10(%r14), %rdi
callq 0x12ad0
movq 0x10(%r14), %rcx
cmpl $0x2, (%rcx)
jne 0x64e85
cmpb $0x2c, (%rax)
jne 0x64e85
cmpb $0x0, 0x1(%rax)
je 0x64ef3
movq 0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rcx), %r8
movl 0x38(%rcx), %r9d
leaq 0x11ed3(%rip), %r10     # 0x76d70
leaq 0xe6ee(%rip), %rdx      # 0x73592
movq (%rsp), %rdi
movl $0x1d, %esi
movq %rax, %rcx
pushq $0xc4e                  # imm = 0xC4E
jmp 0x64861
movq 0x8(%rsp), %rdi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movq %r13, %r8
movq (%rsp), %r9
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x67355
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x67032
jmp 0x64e13
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x66be3
jmp 0x64e13