// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/linearize.c
// Function: show_instruction
const char *show_instruction(struct instruction *insn)
{
	int opcode = insn->opcode;
	static char buffer[4096];
	char *buf;

	buf = buffer;
	if (!insn->bb)
		buf += sprintf(buf, "# ");

	if (opcode < ARRAY_SIZE(opcodes)) {
		const char *op = opcodes[opcode];
		if (!op)
			buf += sprintf(buf, "opcode:%d", opcode);
		else
			buf += sprintf(buf, "%s", op);
		if (insn->size)
			buf += sprintf(buf, ".%d", insn->size);
		memset(buf, ' ', 20);
		buf++;
	}

	if (buf < buffer + 12)
		buf = buffer + 12;
	switch (opcode) {
	case OP_RET:
		if (insn->src && insn->src != VOID)
			buf += sprintf(buf, "%s", show_pseudo(insn->src));
		break;

	case OP_CBR:
		buf += sprintf(buf, "%s, %s, %s", show_pseudo(insn->cond), show_label(insn->bb_true), show_label(insn->bb_false));
		break;

	case OP_BR:
		buf += sprintf(buf, "%s", show_label(insn->bb_true));
		break;

	case OP_LABEL:
		buf += sprintf(buf, "%s <- ", show_pseudo(insn->target));
		buf += sprintf(buf, "%s", show_label(insn->bb_true));
		break;

	case OP_SETVAL: {
		struct expression *expr = insn->val;
		buf += sprintf(buf, "%s <- ", show_pseudo(insn->target));

		if (!expr) {
			buf += sprintf(buf, "%s", "<none>");
			break;
		}
			
		switch (expr->type) {
		case EXPR_VALUE:
			buf += sprintf(buf, "%lld", expr->value);
			break;
		case EXPR_FVALUE:
			buf += sprintf(buf, "%Le", expr->fvalue);
			break;
		case EXPR_STRING:
			buf += sprintf(buf, "%.40s", show_string(expr->string));
			break;
		case EXPR_SYMBOL:
			buf += sprintf(buf, "%s", show_ident(expr->symbol->ident));
			break;
		case EXPR_LABEL:
			buf += sprintf(buf, "%s", show_label(expr->symbol->bb_target));
			break;
		default:
			buf += sprintf(buf, "SETVAL EXPR TYPE %d", expr->type);
		}
		break;
	}
	case OP_SETFVAL:
		buf += sprintf(buf, "%s <- ", show_pseudo(insn->target));
		buf += sprintf(buf, "%Le", insn->fvalue);
		break;

	case OP_SWITCH: {
		struct multijmp *jmp;
		buf += sprintf(buf, "%s", show_pseudo(insn->cond));
		FOR_EACH_PTR(insn->multijmp_list, jmp) {
			if (jmp->begin == jmp->end)
				buf += sprintf(buf, ", %lld -> %s", jmp->begin, show_label(jmp->target));
			else if (jmp->begin < jmp->end)
				buf += sprintf(buf, ", %lld ... %lld -> %s", jmp->begin, jmp->end, show_label(jmp->target));
			else
				buf += sprintf(buf, ", default -> %s", show_label(jmp->target));
		} END_FOR_EACH_PTR(jmp);
		break;
	}
	case OP_COMPUTEDGOTO: {
		struct multijmp *jmp;
		buf += sprintf(buf, "%s", show_pseudo(insn->src));
		FOR_EACH_PTR(insn->multijmp_list, jmp) {
			buf += sprintf(buf, ", %s", show_label(jmp->target));
		} END_FOR_EACH_PTR(jmp);
		break;
	}
	case OP_UNREACH:
		break;

	case OP_PHISOURCE: {
		buf += sprintf(buf, "%s <- %s    ", show_pseudo(insn->target), show_pseudo(insn->phi_src));
		break;
	}

	case OP_PHI: {
		pseudo_t phi;
		const char *s = " <-";
		buf += sprintf(buf, "%s", show_pseudo(insn->target));
		FOR_EACH_PTR(insn->phi_list, phi) {
			if (phi == VOID && !verbose)
				continue;
			buf += sprintf(buf, "%s %s", s, show_pseudo(phi));
			s = ",";
		} END_FOR_EACH_PTR(phi);
		break;
	}	
	case OP_LOAD:
		buf += sprintf(buf, "%s <- %lld[%s]", show_pseudo(insn->target), insn->offset, show_pseudo(insn->src));
		break;
	case OP_STORE:
		buf += sprintf(buf, "%s -> %lld[%s]", show_pseudo(insn->target), insn->offset, show_pseudo(insn->src));
		break;
	case OP_INLINED_CALL:
	case OP_CALL: {
		struct pseudo *arg;
		if (insn->target && insn->target != VOID)
			buf += sprintf(buf, "%s <- ", show_pseudo(insn->target));
		buf += sprintf(buf, "%s", show_pseudo(insn->func));
		FOR_EACH_PTR(insn->arguments, arg) {
			buf += sprintf(buf, ", %s", show_pseudo(arg));
		} END_FOR_EACH_PTR(arg);
		break;
	}
	case OP_SEXT: case OP_ZEXT:
	case OP_TRUNC:
	case OP_FCVTU: case OP_FCVTS:
	case OP_UCVTF: case OP_SCVTF:
	case OP_FCVTF:
	case OP_UTPTR:
	case OP_PTRTU:
	case OP_PTRCAST:
		buf += sprintf(buf, "%s <- (%d) %s",
			show_pseudo(insn->target),
			type_size(insn->orig_type),
			show_pseudo(insn->src));
		break;
	case OP_BINARY ... OP_BINARY_END:
	case OP_FPCMP ... OP_FPCMP_END:
	case OP_BINCMP ... OP_BINCMP_END:
		buf += sprintf(buf, "%s <- %s, %s", show_pseudo(insn->target), show_pseudo(insn->src1), show_pseudo(insn->src2));
		break;

	case OP_SEL:
	case OP_FMADD:
		buf += sprintf(buf, "%s <- %s, %s, %s", show_pseudo(insn->target),
			show_pseudo(insn->src1), show_pseudo(insn->src2), show_pseudo(insn->src3));
		break;

	case OP_SLICE:
		buf += sprintf(buf, "%s <- (%d) %s, %d", show_pseudo(insn->target), type_size(insn->orig_type), show_pseudo(insn->src), insn->from);
		break;

	case OP_NOT: case OP_NEG:
	case OP_FNEG:
	case OP_SYMADDR:
		buf += sprintf(buf, "%s <- %s", show_pseudo(insn->target), show_pseudo(insn->src1));
		break;

	case OP_CONTEXT:
		buf += sprintf(buf, "%s%d", insn->check ? "check: " : "", insn->increment);
		break;
	case OP_RANGE:
		buf += sprintf(buf, "%s between %s..%s", show_pseudo(insn->src1), show_pseudo(insn->src2), show_pseudo(insn->src3));
		break;
	case OP_NOP:
		buf += sprintf(buf, "%s <- %s", show_pseudo(insn->target), show_pseudo(insn->src1));
		break;
	case OP_DEATHNOTE:
		buf += sprintf(buf, "%s", show_pseudo(insn->target));
		break;
	case OP_ASM:
		buf = show_asm(buf, insn);
		break;
	case OP_COPY:
		buf += sprintf(buf, "%s <- %s", show_pseudo(insn->target), show_pseudo(insn->src));
		break;
	default:
		break;
	}

	if (buf >= buffer + sizeof(buffer))
		die("instruction buffer overflowed %td\n", buf - buffer);
	do { --buf; } while (*buf == ' ');
	*++buf = 0;
	return buffer;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
andl $0x7f, %eax
movl %eax, -0xc(%rbp)
leaq 0x73d0e(%rip), %rax     # 0x8bf30
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x18253
movq -0x18(%rbp), %rdi
leaq 0x4b317(%rip), %rsi     # 0x63553
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movslq -0xc(%rbp), %rax
cmpq $0x52, %rax
jae 0x18320
movslq -0xc(%rbp), %rcx
leaq 0x6bf74(%rip), %rax     # 0x841e0
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x182a2
movq -0x18(%rbp), %rdi
movl -0xc(%rbp), %edx
leaq 0x4b2cd(%rip), %rsi     # 0x63556
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x182c8
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0x54ee4(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
shrl $0x8, %eax
cmpl $0x0, %eax
je 0x18301
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movl (%rax), %edx
shrl $0x8, %edx
leaq 0x501b4(%rip), %rsi     # 0x6849e
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movl $0x20, %esi
movl $0x14, %edx
callq 0x11130
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
leaq 0x73c09(%rip), %rax     # 0x8bf30
addq $0xc, %rax
cmpq %rax, -0x18(%rbp)
jae 0x18340
leaq 0x73bf8(%rip), %rax     # 0x8bf30
addq $0xc, %rax
movq %rax, -0x18(%rbp)
movl -0xc(%rbp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0xd8(%rbp)
subl $0x4f, %eax
ja 0x193c6
movq -0xd8(%rbp), %rax
leaq 0x4a502(%rip), %rcx     # 0x62868
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x183cb
movq -0x8(%rbp), %rax
leaq 0x73a2b(%rip), %rcx     # 0x8bdb0
cmpq %rcx, 0x30(%rax)
je 0x183cb
movq -0x18(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0xe0(%rbp), %rdi
movq %rax, %rdx
leaq 0x54de1(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq %rax, -0xf0(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x17e00
movq %rax, -0xe8(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x17e00
movq -0xf8(%rbp), %rdi
movq -0xf0(%rbp), %rdx
movq -0xe8(%rbp), %rcx
movq %rax, %r8
leaq 0x4b1e2(%rip), %rsi     # 0x63611
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x17e00
movq -0x100(%rbp), %rdi
movq %rax, %rdx
leaq 0x54d21(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq -0x110(%rbp), %rdi
movq %rax, %rdx
leaq 0x4b0a7(%rip), %rsi     # 0x63560
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x17e00
movq -0x108(%rbp), %rdi
movq %rax, %rdx
leaq 0x54c9c(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq -0x118(%rbp), %rdi
movq %rax, %rdx
leaq 0x4b016(%rip), %rsi     # 0x63560
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x18596
movq -0x18(%rbp), %rdi
leaq 0x54c22(%rip), %rsi     # 0x6d195
leaq 0x4afed(%rip), %rdx     # 0x63567
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x120(%rbp)
subl $0x1b, %eax
ja 0x186fe
movq -0x120(%rbp), %rax
leaq 0x4a3e9(%rip), %rcx     # 0x629a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rdx
leaq 0x4ff14(%rip), %rsi     # 0x684ef
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1872c
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rax
fldt 0x20(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq 0x4af60(%rip), %rsi     # 0x6356e
xorl %eax, %eax
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1872c
movq -0x18(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x441d0
movq -0x128(%rbp), %rdi
movq %rax, %rdx
leaq 0x4af1f(%rip), %rsi     # 0x63572
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1872c
movq -0x18(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x44150
movq -0x130(%rbp), %rdi
movq %rax, %rdx
leaq 0x54af9(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1872c
movq -0x18(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq 0xd0(%rax), %rdi
callq 0x17e00
movq -0x138(%rbp), %rdi
movq %rax, %rdx
leaq 0x54ab0(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1872c
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rax
movl (%rax), %edx
andl $0xff, %edx
leaq 0x4ae63(%rip), %rsi     # 0x63578
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq -0x140(%rbp), %rdi
movq %rax, %rdx
leaq 0x4ae06(%rip), %rsi     # 0x63560
xorl %eax, %eax
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
fldt 0x30(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq 0x4ade6(%rip), %rsi     # 0x6356e
xorl %eax, %eax
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x148(%rbp), %rdi
movq %rax, %rdx
leaq 0x549c8(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x1880c
jmp 0x189b4
jmp 0x1880e
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movq -0x40(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x1899c
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq -0x40(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x18860
cmpq $0x0, -0x30(%rbp)
jne 0x18860
jmp 0x1898e
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x30(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jne 0x188cc
movq -0x18(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x150(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x17e00
movq -0x158(%rbp), %rdi
movq -0x150(%rbp), %rdx
movq %rax, %rcx
leaq 0x4acdc(%rip), %rsi     # 0x6358c
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1898c
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x30(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jge 0x1894b
movq -0x18(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x168(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x160(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x17e00
movq -0x170(%rbp), %rdi
movq -0x168(%rbp), %rdx
movq -0x160(%rbp), %rcx
movq %rax, %r8
leaq 0x4ac67(%rip), %rsi     # 0x63599
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1898a
movq -0x18(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x17e00
movq -0x178(%rbp), %rdi
movq %rax, %rdx
leaq 0x4ac3c(%rip), %rsi     # 0x635af
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x1898c
jmp 0x1898e
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x18815
jmp 0x1899e
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq -0x38(%rbp), %rax
jne 0x1880e
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x180(%rbp), %rdi
movq %rax, %rdx
leaq 0x547b3(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x60(%rbp)
jne 0x18a21
jmp 0x18ad3
jmp 0x18a23
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
movq -0x68(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x18abb
movq -0x68(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x58(%rbp)
movq -0x68(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x18a6e
cmpq $0x0, -0x58(%rbp)
jne 0x18a6e
jmp 0x18aad
movq -0x18(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rdi
callq 0x17e00
movq -0x188(%rbp), %rdi
movq %rax, %rdx
leaq 0x4ab81(%rip), %rsi     # 0x63617
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x18a2a
jmp 0x18abd
movq -0x68(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x68(%rbp)
cmpq -0x60(%rbp), %rax
jne 0x18a23
jmp 0x193c8
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x190(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x198(%rbp), %rdi
movq -0x190(%rbp), %rdx
movq %rax, %rcx
leaq 0x4aa9e(%rip), %rsi     # 0x635bf
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
leaq 0x4aa88(%rip), %rax     # 0x635cc
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq -0x1a0(%rbp), %rdi
movq %rax, %rdx
leaq 0x54621(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0x90(%rbp)
jne 0x18bc5
jmp 0x18cd7
jmp 0x18bc7
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x98(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x18cb6
movq -0x98(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x80(%rbp)
movq -0x98(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x18c28
cmpq $0x0, -0x80(%rbp)
jne 0x18c28
jmp 0x18ca2
leaq 0x73181(%rip), %rax     # 0x8bdb0
cmpq %rax, -0x80(%rbp)
jne 0x18c43
leaq 0x74608(%rip), %rax     # 0x8d244
cmpl $0x0, (%rax)
jne 0x18c43
jmp 0x18ca2
movq -0x18(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x80(%rbp), %rdi
callq 0x17e80
movq -0x1b0(%rbp), %rdi
movq -0x1a8(%rbp), %rdx
movq %rax, %rcx
leaq 0x4df89(%rip), %rsi     # 0x66c06
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
leaq 0x4a935(%rip), %rax     # 0x635d0
movq %rax, -0x88(%rbp)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x18bd1
jmp 0x18cb8
movq -0x98(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x98(%rbp)
cmpq -0x90(%rbp), %rax
jne 0x18bc7
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x1c0(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x1b8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x1c8(%rbp), %rdi
movq -0x1c0(%rbp), %rdx
movq -0x1b8(%rbp), %rcx
movq %rax, %r8
leaq 0x4a89c(%rip), %rsi     # 0x635d2
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x1d8(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x1d0(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x1e0(%rbp), %rdi
movq -0x1d8(%rbp), %rdx
movq -0x1d0(%rbp), %rcx
movq %rax, %r8
leaq 0x4a835(%rip), %rsi     # 0x635e1
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x18e24
movq -0x8(%rbp), %rax
leaq 0x72fd2(%rip), %rcx     # 0x8bdb0
cmpq %rcx, 0x20(%rax)
je 0x18e24
movq -0x18(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq -0x1e8(%rbp), %rdi
movq %rax, %rdx
leaq 0x4a753(%rip), %rsi     # 0x63560
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x1f0(%rbp), %rdi
movq %rax, %rdx
leaq 0x54348(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
cmpq $0x0, -0xb8(%rbp)
jne 0x18e9e
jmp 0x18f7b
jmp 0x18ea0
movl $0x0, -0xcc(%rbp)
movl -0xcc(%rbp), %eax
movq -0xc0(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x18f5a
movq -0xc0(%rbp), %rax
movslq -0xcc(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0xb0(%rbp)
movq -0xc0(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x18f07
cmpq $0x0, -0xb0(%rbp)
jne 0x18f07
jmp 0x18f46
movq -0x18(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x17e80
movq -0x1f8(%rbp), %rdi
movq %rax, %rdx
leaq 0x4a6e8(%rip), %rsi     # 0x63617
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0xcc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xcc(%rbp)
jmp 0x18eaa
jmp 0x18f5c
movq -0xc0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xc0(%rbp)
cmpq -0xb8(%rbp), %rax
jne 0x18ea0
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x208(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x19440
movl %eax, -0x1fc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x210(%rbp), %rdi
movq -0x208(%rbp), %rdx
movl -0x1fc(%rbp), %ecx
movq %rax, %r8
leaq 0x4a613(%rip), %rsi     # 0x635f0
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
jmp 0x18ffb
jmp 0x18ffd
movq -0x18(%rbp), %rax
movq %rax, -0x228(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x220(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq %rax, -0x218(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x17e80
movq -0x228(%rbp), %rdi
movq -0x220(%rbp), %rdx
movq -0x218(%rbp), %rcx
movq %rax, %r8
leaq 0x4a5a2(%rip), %rsi     # 0x635fe
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x248(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x240(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq %rax, -0x238(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x17e80
movq %rax, -0x230(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x17e80
movq -0x248(%rbp), %rdi
movq -0x240(%rbp), %rdx
movq -0x238(%rbp), %rcx
movq -0x230(%rbp), %r8
movq %rax, %r9
leaq 0x4a519(%rip), %rsi     # 0x6360b
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x258(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x19440
movl %eax, -0x24c(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x260(%rbp), %rdi
movq -0x258(%rbp), %rdx
movl -0x24c(%rbp), %ecx
movq %rax, %r8
movq -0x8(%rbp), %rax
movl 0x38(%rax), %r9d
leaq 0x4a4a9(%rip), %rsi     # 0x6361c
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x268(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x270(%rbp), %rdi
movq -0x268(%rbp), %rdx
movq %rax, %rcx
leaq 0x4a45b(%rip), %rsi     # 0x6362e
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x34(%rax), %ecx
leaq 0x49628(%rip), %rdx     # 0x62829
leaq 0x4a434(%rip), %rax     # 0x6363c
cmpl $0x0, %ecx
cmovneq %rax, %rdx
movq -0x8(%rbp), %rax
movl 0x30(%rax), %ecx
leaq 0x4a41a(%rip), %rsi     # 0x63637
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq %rax, -0x280(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x17e80
movq %rax, -0x278(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x17e80
movq -0x288(%rbp), %rdi
movq -0x280(%rbp), %rdx
movq -0x278(%rbp), %rcx
movq %rax, %r8
leaq 0x4a3ac(%rip), %rsi     # 0x63644
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x290(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x298(%rbp), %rdi
movq -0x290(%rbp), %rdx
movq %rax, %rcx
leaq 0x4a336(%rip), %rsi     # 0x6362e
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq -0x2a0(%rbp), %rdi
movq %rax, %rdx
leaq 0x53e58(%rip), %rsi     # 0x6d195
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x19480
movq %rax, -0x18(%rbp)
jmp 0x193c8
movq -0x18(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x17e80
movq %rax, -0x2a8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x17e80
movq -0x2b0(%rbp), %rdi
movq -0x2a8(%rbp), %rdx
movq %rax, %rcx
leaq 0x4a281(%rip), %rsi     # 0x6362e
movb $0x0, %al
callq 0x112c0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x193c8
jmp 0x193c8
leaq 0x72b61(%rip), %rax     # 0x8bf30
addq $0x1000, %rax           # imm = 0x1000
cmpq %rax, -0x18(%rbp)
jb 0x193f7
movq -0x18(%rbp), %rsi
leaq 0x72b4a(%rip), %rax     # 0x8bf30
subq %rax, %rsi
leaq 0x4a266(%rip), %rdi     # 0x63656
movb $0x0, %al
callq 0x17190
jmp 0x193f9
movq -0x18(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
je 0x193f9
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x18(%rbp)
movb $0x0, 0x1(%rax)
leaq 0x72b05(%rip), %rax     # 0x8bf30
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
nopw %cs:(%rax,%rax)