// File: ys1998[P]spsim/src/queues.cpp
// Function: IntegerQueue::issue(int)
Instruction IntegerQueue::issue(int idx){
	switch(idx){
		case 0:
		// prefer branch
		for(size_t i=0; i < _q.size(); ++i){
			Instruction temp = _q[i];
			auto type = temp.type();
			if(temp.is_valid() && (std::get<0>(type) == OPCODE["beq"] || std::get<0>(type) == OPCODE["bne"])){
				auto regs = temp.physical_regs();
				if(!*(b + std::get<0>(regs)) && !*(b + std::get<1>(regs))){
					_q.erase(_q.begin() + i);
					return temp;
				}
			}
		}

		// send only an addition or subtraction operation
		for(size_t i=0; i < _q.size(); ++i){
			Instruction temp = _q[i];
			auto type = temp.type();
			if(temp.is_valid() && (std::get<1>(type) == FUNCT["add"] || std::get<1>(type) == FUNCT["sub"])){
				auto regs = temp.physical_regs();
				if(!*(b + std::get<0>(regs)) && !*(b + std::get<1>(regs))){
					_q.erase(_q.begin() + i);
					return temp;
				}
			}
		}
		break;

		case 1:
		// first preference to division and multiplication
		for(size_t i=0; i < _q.size(); ++i){
			Instruction temp = _q[i];
			auto type = temp.type();
			if(temp.is_valid() && (std::get<1>(type) == FUNCT["div"] || std::get<1>(type) == FUNCT["mult"])){
				auto regs = temp.physical_regs();
				if(!*(b + std::get<0>(regs)) && !*(b + std::get<1>(regs))){
					_q.erase(_q.begin() + i);
					return temp;
				}
			}
		}
		// but if neither operation is present, send addition or subtraction
		for(size_t i=0; i < _q.size(); ++i){
			Instruction temp = _q[i];
			auto type = temp.type();
			if(temp.is_valid() && (std::get<1>(type) == FUNCT["add"] || std::get<1>(type) == FUNCT["sub"])){
				auto regs = temp.physical_regs();
				if(!*(b + std::get<0>(regs)) && !*(b + std::get<1>(regs))){
					_q.erase(_q.begin() + i);
					return temp;
				}
			}
		}
		break;

		default:
		break;
	}
	// send an invalid operation/instruction if no match is found
	return Instruction();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x610, %rsp            # imm = 0x610
movq %rdi, -0x430(%rbp)
movq %rdi, %rax
movq %rax, -0x428(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x420(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x414(%rbp)
testl %eax, %eax
je 0x1b445
jmp 0x1b431
movl -0x414(%rbp), %eax
subl $0x1, %eax
je 0x1bcb3
jmp 0x1c569
movq $0x0, -0x20(%rbp)
movq -0x420(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x438(%rbp)
callq 0xac70
movq %rax, %rcx
movq -0x438(%rbp), %rax
cmpq %rcx, %rax
jae 0x1b851
movq -0x420(%rbp), %rdi
movb $0x0, -0x21(%rbp)
movq -0x20(%rbp), %rsi
callq 0xaca0
movq -0x430(%rbp), %rdi
movq %rax, %rsi
callq 0x6c70
movq -0x430(%rbp), %rsi
leaq -0x2c(%rbp), %rdi
callq 0x105b0
jmp 0x1b4ac
movq -0x430(%rbp), %rdi
movb $0x0, -0x62(%rbp)
movb $0x0, -0x63(%rbp)
movb $0x0, -0x8a(%rbp)
movb $0x0, -0x8b(%rbp)
callq 0x6280
movb %al, -0x439(%rbp)
jmp 0x1b4d6
movb -0x439(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x43a(%rbp)
jne 0x1b4ee
jmp 0x1b5f4
leaq -0x2c(%rbp), %rdi
callq 0xa9d0
movl (%rax), %eax
movl %eax, -0x44c(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x3490
movq -0x448(%rbp), %rdx
movb $0x1, -0x62(%rbp)
leaq 0x6aeb(%rip), %rsi      # 0x2200c
leaq -0x60(%rbp), %rdi
callq 0x6020
jmp 0x1b52c
movb $0x1, -0x63(%rbp)
leaq 0x13d91(%rip), %rdi     # 0x2f2c8
leaq -0x60(%rbp), %rsi
callq 0x5f40
movq %rax, -0x458(%rbp)
jmp 0x1b549
movl -0x44c(%rbp), %ecx
movq -0x458(%rbp), %rdx
movb $0x1, %al
cmpl (%rdx), %ecx
movb %al, -0x459(%rbp)
je 0x1b5e8
leaq -0x2c(%rbp), %rdi
callq 0xa9d0
movl (%rax), %eax
movl %eax, -0x46c(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x3490
movq -0x468(%rbp), %rdx
movb $0x1, -0x8a(%rbp)
leaq 0x6a71(%rip), %rsi      # 0x22010
leaq -0x88(%rbp), %rdi
callq 0x6020
jmp 0x1b5ad
movb $0x1, -0x8b(%rbp)
leaq 0x13d0d(%rip), %rdi     # 0x2f2c8
leaq -0x88(%rbp), %rsi
callq 0x5f40
movq %rax, -0x478(%rbp)
jmp 0x1b5d0
movl -0x46c(%rbp), %eax
movq -0x478(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0x459(%rbp)
movb -0x459(%rbp), %al
movb %al, -0x43a(%rbp)
movb -0x43a(%rbp), %al
movb %al, -0x479(%rbp)
testb $0x1, -0x8b(%rbp)
jne 0x1b60b
jmp 0x1b617
leaq -0x88(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x8a(%rbp)
jne 0x1b622
jmp 0x1b62e
leaq -0x89(%rbp), %rdi
callq 0x3300
testb $0x1, -0x63(%rbp)
jne 0x1b636
jmp 0x1b63f
leaq -0x60(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x62(%rbp)
jne 0x1b647
jmp 0x1b650
leaq -0x61(%rbp), %rdi
callq 0x3300
movb -0x479(%rbp), %al
testb $0x1, %al
jne 0x1b65f
jmp 0x1b800
movq -0x430(%rbp), %rsi
leaq -0x9c(%rbp), %rdi
callq 0x10520
jmp 0x1b674
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x488(%rbp)
leaq -0x9c(%rbp), %rdi
callq 0x10b30
movq %rax, %rcx
movq -0x488(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1b7fe
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x490(%rbp)
leaq -0x9c(%rbp), %rdi
callq 0x10ad0
movq %rax, %rcx
movq -0x490(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1b7fe
movq -0x420(%rbp), %rsi
leaq -0x100(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0xad70
movq -0x4a8(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0xad30
movq -0x4a0(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0xada0
movq -0x420(%rbp), %rsi
movq -0x498(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0xacd0
jmp 0x1b74c
movb $0x1, -0x21(%rbp)
movl $0x1, -0x124(%rbp)
jmp 0x1b80a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1b840
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1b7eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1b7d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1b7bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
testb $0x1, -0x8b(%rbp)
jne 0x1b7b1
jmp 0x1b7bd
leaq -0x88(%rbp), %rdi
callq 0x31e0
jmp 0x1b7bf
testb $0x1, -0x8a(%rbp)
jne 0x1b7ca
jmp 0x1b7d6
leaq -0x89(%rbp), %rdi
callq 0x3300
jmp 0x1b7d8
testb $0x1, -0x63(%rbp)
jne 0x1b7e0
jmp 0x1b7e9
leaq -0x60(%rbp), %rdi
callq 0x31e0
jmp 0x1b7eb
testb $0x1, -0x62(%rbp)
jne 0x1b7f3
jmp 0x1b7fc
leaq -0x61(%rbp), %rdi
callq 0x3300
jmp 0x1b840
jmp 0x1b800
movl $0x0, -0x124(%rbp)
testb $0x1, -0x21(%rbp)
jne 0x1b81c
movq -0x430(%rbp), %rdi
callq 0x61d0
movl -0x124(%rbp), %eax
testl %eax, %eax
je 0x1b82d
jmp 0x1b828
jmp 0x1c577
jmp 0x1b82f
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x1b44d
movq -0x430(%rbp), %rdi
callq 0x61d0
jmp 0x1c587
movq $0x0, -0x130(%rbp)
movq -0x420(%rbp), %rdi
movq -0x130(%rbp), %rax
movq %rax, -0x4b0(%rbp)
callq 0xac70
movq %rax, %rcx
movq -0x4b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1bcae
movq -0x420(%rbp), %rdi
movb $0x0, -0x131(%rbp)
movq -0x130(%rbp), %rsi
callq 0xaca0
movq -0x430(%rbp), %rdi
movq %rax, %rsi
callq 0x6c70
movq -0x430(%rbp), %rsi
leaq -0x13c(%rbp), %rdi
callq 0x105b0
jmp 0x1b8c7
movq -0x430(%rbp), %rdi
movb $0x0, -0x162(%rbp)
movb $0x0, -0x163(%rbp)
movb $0x0, -0x18a(%rbp)
movb $0x0, -0x18b(%rbp)
callq 0x6280
movb %al, -0x4b1(%rbp)
jmp 0x1b8f7
movb -0x4b1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4b2(%rbp)
jne 0x1b90f
jmp 0x1ba2a
leaq -0x13c(%rbp), %rdi
callq 0xaaf0
movl (%rax), %eax
movl %eax, -0x4c4(%rbp)
leaq -0x161(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x3490
movq -0x4c0(%rbp), %rdx
movb $0x1, -0x162(%rbp)
leaq 0x66b9(%rip), %rsi      # 0x22004
leaq -0x160(%rbp), %rdi
callq 0x6020
jmp 0x1b959
movb $0x1, -0x163(%rbp)
leaq 0x13991(%rip), %rdi     # 0x2f2f8
leaq -0x160(%rbp), %rsi
callq 0x5f40
movq %rax, -0x4d0(%rbp)
jmp 0x1b97c
movl -0x4c4(%rbp), %ecx
movq -0x4d0(%rbp), %rdx
movb $0x1, %al
cmpl (%rdx), %ecx
movb %al, -0x4d1(%rbp)
je 0x1ba1e
leaq -0x13c(%rbp), %rdi
callq 0xaaf0
movl (%rax), %eax
movl %eax, -0x4e4(%rbp)
leaq -0x189(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x3490
movq -0x4e0(%rbp), %rdx
movb $0x1, -0x18a(%rbp)
leaq 0x6633(%rip), %rsi      # 0x22008
leaq -0x188(%rbp), %rdi
callq 0x6020
jmp 0x1b9e3
movb $0x1, -0x18b(%rbp)
leaq 0x13907(%rip), %rdi     # 0x2f2f8
leaq -0x188(%rbp), %rsi
callq 0x5f40
movq %rax, -0x4f0(%rbp)
jmp 0x1ba06
movl -0x4e4(%rbp), %eax
movq -0x4f0(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0x4d1(%rbp)
movb -0x4d1(%rbp), %al
movb %al, -0x4b2(%rbp)
movb -0x4b2(%rbp), %al
movb %al, -0x4f1(%rbp)
testb $0x1, -0x18b(%rbp)
jne 0x1ba41
jmp 0x1ba4d
leaq -0x188(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x18a(%rbp)
jne 0x1ba58
jmp 0x1ba64
leaq -0x189(%rbp), %rdi
callq 0x3300
testb $0x1, -0x163(%rbp)
jne 0x1ba6f
jmp 0x1ba7b
leaq -0x160(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x162(%rbp)
jne 0x1ba86
jmp 0x1ba92
leaq -0x161(%rbp), %rdi
callq 0x3300
movb -0x4f1(%rbp), %al
testb $0x1, %al
jne 0x1baa1
jmp 0x1bc54
movq -0x430(%rbp), %rsi
leaq -0x19c(%rbp), %rdi
callq 0x10520
jmp 0x1bab6
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x500(%rbp)
leaq -0x19c(%rbp), %rdi
callq 0x10b30
movq %rax, %rcx
movq -0x500(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1bc52
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x508(%rbp)
leaq -0x19c(%rbp), %rdi
callq 0x10ad0
movq %rax, %rcx
movq -0x508(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1bc52
movq -0x420(%rbp), %rsi
leaq -0x200(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0xad70
movq -0x520(%rbp), %rsi
movq -0x130(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0xad30
movq -0x518(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0xada0
movq -0x420(%rbp), %rsi
movq -0x510(%rbp), %rdx
leaq -0x220(%rbp), %rdi
callq 0xacd0
jmp 0x1bb91
movb $0x1, -0x131(%rbp)
movl $0x1, -0x124(%rbp)
jmp 0x1bc5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1bc9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1bc39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1bc20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1bc07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
testb $0x1, -0x18b(%rbp)
jne 0x1bbf9
jmp 0x1bc05
leaq -0x188(%rbp), %rdi
callq 0x31e0
jmp 0x1bc07
testb $0x1, -0x18a(%rbp)
jne 0x1bc12
jmp 0x1bc1e
leaq -0x189(%rbp), %rdi
callq 0x3300
jmp 0x1bc20
testb $0x1, -0x163(%rbp)
jne 0x1bc2b
jmp 0x1bc37
leaq -0x160(%rbp), %rdi
callq 0x31e0
jmp 0x1bc39
testb $0x1, -0x162(%rbp)
jne 0x1bc44
jmp 0x1bc50
leaq -0x161(%rbp), %rdi
callq 0x3300
jmp 0x1bc9d
jmp 0x1bc54
movl $0x0, -0x124(%rbp)
testb $0x1, -0x131(%rbp)
jne 0x1bc73
movq -0x430(%rbp), %rdi
callq 0x61d0
movl -0x124(%rbp), %eax
testl %eax, %eax
je 0x1bc84
jmp 0x1bc7f
jmp 0x1c577
jmp 0x1bc86
movq -0x130(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x130(%rbp)
jmp 0x1b85c
movq -0x430(%rbp), %rdi
callq 0x61d0
jmp 0x1c587
jmp 0x1c56b
movq $0x0, -0x228(%rbp)
movq -0x420(%rbp), %rdi
movq -0x228(%rbp), %rax
movq %rax, -0x528(%rbp)
callq 0xac70
movq %rax, %rcx
movq -0x528(%rbp), %rax
cmpq %rcx, %rax
jae 0x1c110
movq -0x420(%rbp), %rdi
movb $0x0, -0x229(%rbp)
movq -0x228(%rbp), %rsi
callq 0xaca0
movq -0x430(%rbp), %rdi
movq %rax, %rsi
callq 0x6c70
movq -0x430(%rbp), %rsi
leaq -0x234(%rbp), %rdi
callq 0x105b0
jmp 0x1bd29
movq -0x430(%rbp), %rdi
movb $0x0, -0x25a(%rbp)
movb $0x0, -0x25b(%rbp)
movb $0x0, -0x282(%rbp)
movb $0x0, -0x283(%rbp)
callq 0x6280
movb %al, -0x529(%rbp)
jmp 0x1bd59
movb -0x529(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x52a(%rbp)
jne 0x1bd71
jmp 0x1be8c
leaq -0x234(%rbp), %rdi
callq 0xaaf0
movl (%rax), %eax
movl %eax, -0x53c(%rbp)
leaq -0x259(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x3490
movq -0x538(%rbp), %rdx
movb $0x1, -0x25a(%rbp)
leaq 0x626c(%rip), %rsi      # 0x22019
leaq -0x258(%rbp), %rdi
callq 0x6020
jmp 0x1bdbb
movb $0x1, -0x25b(%rbp)
leaq 0x1352f(%rip), %rdi     # 0x2f2f8
leaq -0x258(%rbp), %rsi
callq 0x5f40
movq %rax, -0x548(%rbp)
jmp 0x1bdde
movl -0x53c(%rbp), %ecx
movq -0x548(%rbp), %rdx
movb $0x1, %al
cmpl (%rdx), %ecx
movb %al, -0x549(%rbp)
je 0x1be80
leaq -0x234(%rbp), %rdi
callq 0xaaf0
movl (%rax), %eax
movl %eax, -0x55c(%rbp)
leaq -0x281(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x3490
movq -0x558(%rbp), %rdx
movb $0x1, -0x282(%rbp)
leaq 0x61dd(%rip), %rsi      # 0x22014
leaq -0x280(%rbp), %rdi
callq 0x6020
jmp 0x1be45
movb $0x1, -0x283(%rbp)
leaq 0x134a5(%rip), %rdi     # 0x2f2f8
leaq -0x280(%rbp), %rsi
callq 0x5f40
movq %rax, -0x568(%rbp)
jmp 0x1be68
movl -0x55c(%rbp), %eax
movq -0x568(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0x549(%rbp)
movb -0x549(%rbp), %al
movb %al, -0x52a(%rbp)
movb -0x52a(%rbp), %al
movb %al, -0x569(%rbp)
testb $0x1, -0x283(%rbp)
jne 0x1bea3
jmp 0x1beaf
leaq -0x280(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x282(%rbp)
jne 0x1beba
jmp 0x1bec6
leaq -0x281(%rbp), %rdi
callq 0x3300
testb $0x1, -0x25b(%rbp)
jne 0x1bed1
jmp 0x1bedd
leaq -0x258(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x25a(%rbp)
jne 0x1bee8
jmp 0x1bef4
leaq -0x259(%rbp), %rdi
callq 0x3300
movb -0x569(%rbp), %al
testb $0x1, %al
jne 0x1bf03
jmp 0x1c0b6
movq -0x430(%rbp), %rsi
leaq -0x294(%rbp), %rdi
callq 0x10520
jmp 0x1bf18
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x578(%rbp)
leaq -0x294(%rbp), %rdi
callq 0x10b30
movq %rax, %rcx
movq -0x578(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1c0b4
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x580(%rbp)
leaq -0x294(%rbp), %rdi
callq 0x10ad0
movq %rax, %rcx
movq -0x580(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1c0b4
movq -0x420(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0xad70
movq -0x598(%rbp), %rsi
movq -0x228(%rbp), %rdx
leaq -0x2d8(%rbp), %rdi
movq %rdi, -0x590(%rbp)
callq 0xad30
movq -0x590(%rbp), %rsi
leaq -0x2b8(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0xada0
movq -0x420(%rbp), %rsi
movq -0x588(%rbp), %rdx
leaq -0x318(%rbp), %rdi
callq 0xacd0
jmp 0x1bff3
movb $0x1, -0x229(%rbp)
movl $0x1, -0x124(%rbp)
jmp 0x1c0c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c0ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c09b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c069
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
testb $0x1, -0x283(%rbp)
jne 0x1c05b
jmp 0x1c067
leaq -0x280(%rbp), %rdi
callq 0x31e0
jmp 0x1c069
testb $0x1, -0x282(%rbp)
jne 0x1c074
jmp 0x1c080
leaq -0x281(%rbp), %rdi
callq 0x3300
jmp 0x1c082
testb $0x1, -0x25b(%rbp)
jne 0x1c08d
jmp 0x1c099
leaq -0x258(%rbp), %rdi
callq 0x31e0
jmp 0x1c09b
testb $0x1, -0x25a(%rbp)
jne 0x1c0a6
jmp 0x1c0b2
leaq -0x259(%rbp), %rdi
callq 0x3300
jmp 0x1c0ff
jmp 0x1c0b6
movl $0x0, -0x124(%rbp)
testb $0x1, -0x229(%rbp)
jne 0x1c0d5
movq -0x430(%rbp), %rdi
callq 0x61d0
movl -0x124(%rbp), %eax
testl %eax, %eax
je 0x1c0e6
jmp 0x1c0e1
jmp 0x1c577
jmp 0x1c0e8
movq -0x228(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x228(%rbp)
jmp 0x1bcbe
movq -0x430(%rbp), %rdi
callq 0x61d0
jmp 0x1c587
movq $0x0, -0x320(%rbp)
movq -0x420(%rbp), %rdi
movq -0x320(%rbp), %rax
movq %rax, -0x5a0(%rbp)
callq 0xac70
movq %rax, %rcx
movq -0x5a0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1c567
movq -0x420(%rbp), %rdi
movb $0x0, -0x321(%rbp)
movq -0x320(%rbp), %rsi
callq 0xaca0
movq -0x430(%rbp), %rdi
movq %rax, %rsi
callq 0x6c70
movq -0x430(%rbp), %rsi
leaq -0x32c(%rbp), %rdi
callq 0x105b0
jmp 0x1c186
movq -0x430(%rbp), %rdi
movb $0x0, -0x352(%rbp)
movb $0x0, -0x353(%rbp)
movb $0x0, -0x37a(%rbp)
movb $0x0, -0x37b(%rbp)
callq 0x6280
movb %al, -0x5a1(%rbp)
jmp 0x1c1b6
movb -0x5a1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x5a2(%rbp)
jne 0x1c1ce
jmp 0x1c2e9
leaq -0x32c(%rbp), %rdi
callq 0xaaf0
movl (%rax), %eax
movl %eax, -0x5b4(%rbp)
leaq -0x351(%rbp), %rdi
movq %rdi, -0x5b0(%rbp)
callq 0x3490
movq -0x5b0(%rbp), %rdx
movb $0x1, -0x352(%rbp)
leaq 0x5dfa(%rip), %rsi      # 0x22004
leaq -0x350(%rbp), %rdi
callq 0x6020
jmp 0x1c218
movb $0x1, -0x353(%rbp)
leaq 0x130d2(%rip), %rdi     # 0x2f2f8
leaq -0x350(%rbp), %rsi
callq 0x5f40
movq %rax, -0x5c0(%rbp)
jmp 0x1c23b
movl -0x5b4(%rbp), %ecx
movq -0x5c0(%rbp), %rdx
movb $0x1, %al
cmpl (%rdx), %ecx
movb %al, -0x5c1(%rbp)
je 0x1c2dd
leaq -0x32c(%rbp), %rdi
callq 0xaaf0
movl (%rax), %eax
movl %eax, -0x5d4(%rbp)
leaq -0x379(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x3490
movq -0x5d0(%rbp), %rdx
movb $0x1, -0x37a(%rbp)
leaq 0x5d74(%rip), %rsi      # 0x22008
leaq -0x378(%rbp), %rdi
callq 0x6020
jmp 0x1c2a2
movb $0x1, -0x37b(%rbp)
leaq 0x13048(%rip), %rdi     # 0x2f2f8
leaq -0x378(%rbp), %rsi
callq 0x5f40
movq %rax, -0x5e0(%rbp)
jmp 0x1c2c5
movl -0x5d4(%rbp), %eax
movq -0x5e0(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0x5c1(%rbp)
movb -0x5c1(%rbp), %al
movb %al, -0x5a2(%rbp)
movb -0x5a2(%rbp), %al
movb %al, -0x5e1(%rbp)
testb $0x1, -0x37b(%rbp)
jne 0x1c300
jmp 0x1c30c
leaq -0x378(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x37a(%rbp)
jne 0x1c317
jmp 0x1c323
leaq -0x379(%rbp), %rdi
callq 0x3300
testb $0x1, -0x353(%rbp)
jne 0x1c32e
jmp 0x1c33a
leaq -0x350(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x352(%rbp)
jne 0x1c345
jmp 0x1c351
leaq -0x351(%rbp), %rdi
callq 0x3300
movb -0x5e1(%rbp), %al
testb $0x1, %al
jne 0x1c360
jmp 0x1c513
movq -0x430(%rbp), %rsi
leaq -0x38c(%rbp), %rdi
callq 0x10520
jmp 0x1c375
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x5f0(%rbp)
leaq -0x38c(%rbp), %rdi
callq 0x10b30
movq %rax, %rcx
movq -0x5f0(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1c511
movq -0x420(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x5f8(%rbp)
leaq -0x38c(%rbp), %rdi
callq 0x10ad0
movq %rax, %rcx
movq -0x5f8(%rbp), %rax
movslq (%rcx), %rcx
testb $0x1, (%rax,%rcx)
jne 0x1c511
movq -0x420(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
movq %rdi, -0x610(%rbp)
callq 0xad70
movq -0x610(%rbp), %rsi
movq -0x320(%rbp), %rdx
leaq -0x3d0(%rbp), %rdi
movq %rdi, -0x608(%rbp)
callq 0xad30
movq -0x608(%rbp), %rsi
leaq -0x3b0(%rbp), %rdi
movq %rdi, -0x600(%rbp)
callq 0xada0
movq -0x420(%rbp), %rsi
movq -0x600(%rbp), %rdx
leaq -0x410(%rbp), %rdi
callq 0xacd0
jmp 0x1c450
movb $0x1, -0x321(%rbp)
movl $0x1, -0x124(%rbp)
jmp 0x1c51d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c559
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c4f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c4df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1c4c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
testb $0x1, -0x37b(%rbp)
jne 0x1c4b8
jmp 0x1c4c4
leaq -0x378(%rbp), %rdi
callq 0x31e0
jmp 0x1c4c6
testb $0x1, -0x37a(%rbp)
jne 0x1c4d1
jmp 0x1c4dd
leaq -0x379(%rbp), %rdi
callq 0x3300
jmp 0x1c4df
testb $0x1, -0x353(%rbp)
jne 0x1c4ea
jmp 0x1c4f6
leaq -0x350(%rbp), %rdi
callq 0x31e0
jmp 0x1c4f8
testb $0x1, -0x352(%rbp)
jne 0x1c503
jmp 0x1c50f
leaq -0x351(%rbp), %rdi
callq 0x3300
jmp 0x1c559
jmp 0x1c513
movl $0x0, -0x124(%rbp)
testb $0x1, -0x321(%rbp)
jne 0x1c532
movq -0x430(%rbp), %rdi
callq 0x61d0
movl -0x124(%rbp), %eax
testl %eax, %eax
je 0x1c540
jmp 0x1c53e
jmp 0x1c577
jmp 0x1c542
movq -0x320(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x320(%rbp)
jmp 0x1c11b
movq -0x430(%rbp), %rdi
callq 0x61d0
jmp 0x1c587
jmp 0x1c56b
jmp 0x1c56b
movq -0x430(%rbp), %rdi
callq 0xe8a0
movq -0x428(%rbp), %rax
addq $0x610, %rsp            # imm = 0x610
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x3480