// File: /workspace/github_cpp_makefile_star2_O3/JohnCGriffin[P]BrainForked/bf_optimizations.cpp
// Function: bf::optimizations(std::vector<bf::Instruction, std::allocator<bf::Instruction>> const&, bool)
Instructions optimizations(const Instructions& instrs, bool take_second_pass)
    {
	Instructions result;
	const int sz = instrs.size();

	for(int i=0; i<sz; i++){

#define AT(x) instrs.at(i+x)
#define VAL(x) instrs.at(i+x).val


	    auto pattern  = [&](Actions actions){ return matches(instrs, i, actions); };


	    //////////////////////////////////////////////
	    // The following block contains optimizations
	    // for non-terminals, available in pass two.
	    //////////////////////////////////////////////

	    {
		if(pattern({ZERO, MOVE}) && VAL(1) == 1){
		    result.push_back({ ZEROM1 });
		    i++;
		    continue;
		}

		if(pattern({MOVE, ZERO}) && VAL(0) == 1){
		    result.push_back({ M1ZERO });
		    i++;
		    continue;
		}

		if(pattern({FALSEJUMP, MOVE, ZERO, MXDECR1, TRUEJUMP }) &&
		   VAL(1) == 1 && VAL(3) == -1){
		    result.push_back({ZERO2IF});
		    i+=4;
		    continue;
		}

		if(pattern({ MOVE, GIVE, MOVE}) &&
		   VAL(2) == VAL(1) &&
		   VAL(0) == -VAL(2)){
		    result.push_back({ TAKE, VAL(0) });
		    i+=2;
		    continue;
		}

		if(pattern({FALSEJUMP, MOVE, GIVE, MOVE, TRUEJUMP})){
		    result.push_back({VALUE, VAL(1) });
		    result.push_back({VALUE, VAL(2) });
		    result.push_back({WHILEMGM, VAL(3) });
		    i += 4;
		    continue;
		}

		if(pattern({DECR1MX, GIVE, MOVE}) &&
		   VAL(0) == -VAL(1) && VAL(0) == -VAL(2)){
		    result.push_back({INCR, -1});
		    result.push_back({TAKE, VAL(0)});
		    i += 2;
		    continue;
		}

		if(pattern({ADVANCE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, WHILEIM3}) &&
		   VAL(1) == -1 && VAL(3) ==1 && VAL(5) == 1 && (VAL(2) + VAL(4) + VAL(6) == 0)){
		    result.push_back({VALUE, VAL(2)});
		    result.push_back({VALUE, (short) (VAL(4)+VAL(2))});
		    result.push_back({WHILEDECROI2});
		    i += 7;
		    continue;
		}
	    }


	    ///////////////////////////////////////////////////
	    //	All that follow are primitives for first pass.
	    //////////////////////////////////////////////////
	    {
		// subtract value from current cell and add it to another cell
		if(pattern({ FALSEJUMP, INCR, MOVE, INCR, MOVE, TRUEJUMP }) &&
		   VAL(1) == -1 && VAL(3) == 1 && VAL(2) == -VAL(4)){
		    result.push_back( { GIVE, VAL(2) } );
		    i += 5;
		    continue;
		}

		// alternate version decrements last
		// subtract value from current cell and add it to another cell
		if(pattern({ FALSEJUMP, MOVE, INCR, MOVE, INCR, TRUEJUMP }) &&
		   VAL(2) == 1 && VAL(4) == -1 && VAL(1) == -VAL(3)){
		    result.push_back( { GIVE, VAL(1) });
		    i += 5;
		    continue;
		}

		// [+>-<<<---->>>>>]
		if(pattern({ FALSEJUMP, INCR, MOVE, INCR, MOVE, INCR, MOVE, TRUEJUMP})){
		    result.push_back({ ADVANCE, 6 });
		    for(int j=0; j<6; j++){
			result.push_back({ VALUE, VAL(j+1) });
		    }
		    result.push_back({ WHILEIM3 });
		    i += 7;
		    continue;
		}

		// [+>-<]
		if(pattern({ FALSEJUMP, INCR, MOVE, INCR, MOVE, TRUEJUMP})){
		    result.push_back({ ADVANCE, 4 });
		    for(int j=0; j<4; j++){
			result.push_back({ VALUE, VAL(j+1) });
		    }
		    result.push_back({ WHILEIM2 });
		    i += 5;
		    continue;
		}

		// >>+++<<
		if(pattern({ MOVE, INCR, MOVE}) && AT(0).val == -AT(2).val){
		    result.push_back({VALUE, VAL(0)});
		    result.push_back({OFFINCR, VAL(1)});
		    i+=2;
		    continue;
		}

		if(pattern({ INCR, MOVE}) && VAL(0) == -1){
		    result.push_back({ DECR1MX, VAL(1) });
		    i++;
		    continue;
		}

		if(pattern({ INCR, MOVE}) && VAL(0) == 1){
		    result.push_back({ INCR1MX, VAL(1) });
		    i++;
		    continue;
		}

		if(pattern({ MOVE, INCR }) && VAL(1) == 1){
		    result.push_back({ MXINCR1, VAL(0) });
		    i++;
		    continue;
		}

		if(pattern({ MOVE, INCR }) && VAL(1) == -1){
		    result.push_back({ MXDECR1, VAL(0) });
		    i++;
		    continue;
		}

		// [-]
		if(pattern({ FALSEJUMP, INCR, TRUEJUMP })){
		    while(result.back().action == ZERO || result.back().action == INCR){
			result.pop_back();
		    }
		    result.push_back({ ZERO });
		    i+=2;
		    continue;
		}

		// move while, e.g. [<<<]
		if(pattern({ FALSEJUMP, MOVE, TRUEJUMP })){
		    result.push_back({ MOVEWHILE, VAL(1) });
		    i += 2;
		    continue;
		}
	    }

	    result.push_back(instrs.at(i));
	}

	if(take_second_pass){
	    result = optimizations(result,false);
	}

	return result;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %edx, 0x24(%rsp)
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x8(%rsi), %rax
subq (%rsi), %rax
shrq $0x4, %rax
movq %rax, 0x40(%rsp)
testl %eax, %eax
jle 0x54d1
movq %rsi, %r14
xorl %r13d, %r13d
leaq 0x209c(%rip), %r12      # 0x62e4
movabsq $0x700000016, %rax      # imm = 0x700000016
movq %rax, (%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdi
subq %rax, %rdi
movq %rdi, %rdx
sarq $0x4, %rdx
cmpl %edx, %r13d
jge 0x430c
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %rcx
movq %rsi, %r8
shlq $0x4, %r8
addq %rax, %r8
movq %rsi, %r9
xorl %r11d, %r11d
cmpq %r9, %rdx
jbe 0x5541
movq %r11, %r10
movl (%rsp,%r11), %r11d
cmpl (%r8,%r10,4), %r11d
jne 0x430c
cmpq $0x4, %r10
je 0x42b5
incq %r9
leaq 0x4(%r10), %r11
cmpq %rcx, %r9
jl 0x428d
cmpq $0x4, %r10
jne 0x430c
leal 0x1(%r13), %r15d
movslq %r15d, %rsi
cmpq %rsi, %rdx
jbe 0x5548
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x430c
movl $0x18, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x5354
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52e1
movabsq $0x1600000007, %rcx     # imm = 0x1600000007
movq %rcx, (%rsp)
cmpl %edx, %r13d
jge 0x43b6
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %r8
movq %rsi, %rcx
shlq $0x4, %rcx
leaq (%rax,%rcx), %r9
movq %rsi, %r10
xorl %r15d, %r15d
cmpq %r10, %rdx
jbe 0x5556
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r9,%r15,4), %ebp
jne 0x43b6
cmpq $0x4, %r11
je 0x4369
incq %r10
leaq 0x4(%r11), %r15
cmpq %r8, %r10
jl 0x4341
cmpq $0x4, %r11
jne 0x43b6
cmpq %rsi, %rdx
jbe 0x555d
cmpw $0x1, 0x4(%rax,%rcx)
jne 0x43b6
movl $0x6, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5248
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5253
cmpl %edx, %r13d
jge 0x4510
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %r9
movq %rsi, %r8
shlq $0x4, %r8
leaq (%rax,%r8), %r10
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x556b
movq %r15, %r11
movl (%r15,%r12), %ebp
cmpl (%r10,%r15,4), %ebp
jne 0x4447
cmpq $0x10, %r11
je 0x4405
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x43dd
cmpq $0x10, %r11
jne 0x4447
leal 0x1(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x5575
shlq $0x4, %rcx
cmpw $0x1, 0x4(%rax,%rcx)
jne 0x4447
leal 0x3(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x5575
shlq $0x4, %rcx
cmpw $-0x1, 0x4(%rax,%rcx)
je 0x525b
movabsq $0x300000007, %rcx      # imm = 0x300000007
movq %rcx, (%rsp)
movl $0x7, 0x8(%rsp)
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x5586
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r10,%r15,4), %ebp
jne 0x4510
cmpq $0x8, %r11
je 0x448f
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x4463
cmpq $0x8, %r11
jne 0x4510
leal 0x2(%r13), %r15d
movslq %r15d, %rcx
cmpq %rcx, %rdx
jbe 0x5717
leal 0x1(%r13), %r9d
movslq %r9d, %r9
cmpq %r9, %rdx
jbe 0x571f
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
shlq $0x4, %r9
cmpw 0x4(%rax,%r9), %cx
jne 0x4510
cmpq %rsi, %rdx
jbe 0x558d
movswl 0x4(%rax,%r8), %esi
addl %esi, %ecx
jne 0x4510
movl $0xe, (%rsp)
movw %si, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x5354
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52e1
cmpl %edx, %r13d
jge 0x468d
movslq %r13d, %rbp
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %rcx
movq %rbp, %r12
shlq $0x4, %r12
leaq (%rax,%r12), %rsi
movq %rbp, %r8
xorl %r10d, %r10d
leaq 0x1dba(%rip), %r11      # 0x62f8
cmpq %r8, %rdx
jbe 0x559b
movq %r10, %r9
movl (%r10,%r11), %r10d
cmpl (%rsi,%r9,4), %r10d
jne 0x45c0
cmpq $0x10, %r9
je 0x4566
incq %r8
leaq 0x4(%r9), %r10
cmpq %rcx, %r8
jl 0x453e
cmpq $0x10, %r9
jne 0x45c0
movl $0x11, (%rsp)
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x5727
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
leaq 0x1d3b(%rip), %r12      # 0x62e4
je 0x4f9c
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4fa7
movabsq $0x300000001, %r8       # imm = 0x300000001
movq %r8, (%rsp)
movl $0x7, 0x8(%rsp)
movq %rbp, %r8
xorl %r10d, %r10d
cmpq %r8, %rdx
jbe 0x5619
movq %r10, %r9
movl (%rsp,%r10), %r10d
cmpl (%rsi,%r9,4), %r10d
jne 0x468d
cmpq $0x8, %r9
je 0x4608
incq %r8
leaq 0x4(%r9), %r10
cmpq %rcx, %r8
jl 0x45dc
cmpq $0x8, %r9
jne 0x468d
cmpq %rbp, %rdx
jbe 0x5620
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x570f
movswl 0x4(%rax,%r12), %ecx
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %esi
addl %ecx, %esi
jne 0x468d
leal 0x2(%r13), %r15d
movslq %r15d, %rsi
cmpq %rsi, %rdx
jbe 0x570f
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %esi
addl %esi, %ecx
jne 0x468d
movl $0x4, (%rsp)
movw $0xffff, 0x4(%rsp)      # imm = 0xFFFF
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5375
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5380
cmpl %edx, %r13d
jge 0x47fb
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %r9
movq %rsi, %r8
shlq $0x4, %r8
leaq (%rax,%r8), %r10
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x55b3
movq %r15, %r11
leaq 0x1c75(%rip), %r15      # 0x633c
movl (%r11,%r15), %ebp
cmpl (%r10,%r11,4), %ebp
jne 0x4bb5
cmpq $0x1c, %r11
je 0x46e7
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x46b4
cmpq $0x1c, %r11
jne 0x4bb5
leal 0x1(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x55bd
shlq $0x4, %r12
cmpw $-0x1, 0x4(%rax,%r12)
jne 0x4bb5
leal 0x3(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x55bd
shlq $0x4, %r12
cmpw $0x1, 0x4(%rax,%r12)
jne 0x4bb5
leal 0x5(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x55bd
shlq $0x4, %r12
cmpw $0x1, 0x4(%rax,%r12)
jne 0x4bb5
leal 0x2(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x55bd
leal 0x4(%r13), %ecx
movslq %ecx, %rbp
cmpq %rbp, %rdx
jbe 0x57d4
leal 0x6(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x57dc
movq %r12, %r11
shlq $0x4, %r11
movq %r11, 0x38(%rsp)
movzwl 0x4(%rax,%r11), %r11d
movswl %r11w, %r15d
movq %rbp, 0x28(%rsp)
shlq $0x4, %rbp
movq %rbp, 0x30(%rsp)
movswl 0x4(%rax,%rbp), %ebp
addl %r15d, %ebp
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
addl %ebp, %ecx
jne 0x4bb5
movl $0x11, (%rsp)
movw %r11w, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x53fb
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
movq 0x28(%rsp), %rsi
jmp 0x540b
leaq 0x1ae2(%rip), %r12      # 0x62e4
movabsq $0x700000004, %rcx      # imm = 0x700000004
movq %rcx, (%rsp)
cmpl %edx, %r13d
jge 0x4876
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %r8
movq %rsi, %rcx
shlq $0x4, %rcx
leaq (%rax,%rcx), %r9
movq %rsi, %r10
xorl %r15d, %r15d
cmpq %r10, %rdx
jbe 0x5631
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r9,%r15,4), %ebp
jne 0x4876
cmpq $0x4, %r11
je 0x485b
incq %r10
leaq 0x4(%r11), %r15
cmpq %r8, %r10
jl 0x4833
cmpq $0x4, %r11
jne 0x4876
cmpq %rsi, %rdx
jbe 0x5638
cmpw $-0x1, 0x4(%rax,%rcx)
je 0x5139
movabsq $0x700000004, %rcx      # imm = 0x700000004
movq %rcx, (%rsp)
cmpl %edx, %r13d
jge 0x4935
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %r8
movq %rsi, %rcx
shlq $0x4, %rcx
leaq (%rax,%rcx), %r9
movq %rsi, %r10
xorl %r15d, %r15d
cmpq %r10, %rdx
jbe 0x565b
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r9,%r15,4), %ebp
jne 0x4935
cmpq $0x4, %r11
je 0x48d3
incq %r10
leaq 0x4(%r11), %r15
cmpq %r8, %r10
jl 0x48ab
cmpq $0x4, %r11
jne 0x4935
cmpq %rsi, %rdx
jbe 0x5662
cmpw $0x1, 0x4(%rax,%rcx)
jne 0x4935
movl $0x5, (%rsp)
incl %r13d
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x575f
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x5174
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52de
movabsq $0x400000007, %rcx      # imm = 0x400000007
movq %rcx, (%rsp)
cmpl %edx, %r13d
jge 0x49f6
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %rcx
movq %rsi, %r8
shlq $0x4, %r8
leaq (%rax,%r8), %r9
movq %rsi, %r10
xorl %r15d, %r15d
cmpq %r10, %rdx
jbe 0x5670
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r9,%r15,4), %ebp
jne 0x49f6
cmpq $0x4, %r11
je 0x4992
incq %r10
leaq 0x4(%r11), %r15
cmpq %rcx, %r10
jl 0x496a
cmpq $0x4, %r11
jne 0x49f6
leal 0x1(%r13), %r15d
movslq %r15d, %rcx
cmpq %rcx, %rdx
jbe 0x567a
shlq $0x4, %rcx
cmpw $0x1, 0x4(%rax,%rcx)
jne 0x49f6
movl $0xa, (%rsp)
cmpq %rsi, %rdx
jbe 0x576d
movzwl 0x4(%rax,%r8), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x5354
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52e1
movabsq $0x400000007, %rcx      # imm = 0x400000007
movq %rcx, (%rsp)
cmpl %edx, %r13d
jge 0x4a75
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %rcx
movq %rsi, %r8
shlq $0x4, %r8
leaq (%rax,%r8), %r9
movq %rsi, %r10
xorl %r15d, %r15d
cmpq %r10, %rdx
jbe 0x568b
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r9,%r15,4), %ebp
jne 0x4a75
cmpq $0x4, %r11
je 0x4a4f
incq %r10
leaq 0x4(%r11), %r15
cmpq %rcx, %r10
jl 0x4a27
cmpq $0x4, %r11
jne 0x4a75
leal 0x1(%r13), %r15d
movslq %r15d, %rcx
cmpq %rcx, %rdx
jbe 0x5695
shlq $0x4, %rcx
cmpw $-0x1, 0x4(%rax,%rcx)
je 0x5290
movabsq $0x400000002, %rcx      # imm = 0x400000002
movq %rcx, (%rsp)
movl $0x10, 0x8(%rsp)
cmpl %edx, %r13d
jge 0x4afa
movslq %r13d, %rsi
movq %rdi, %rcx
shrq $0x4, %rcx
movslq %ecx, %rcx
movq %rsi, %r8
shlq $0x4, %r8
addq %rax, %r8
movq %rsi, %r9
xorl %r11d, %r11d
cmpq %r9, %rdx
jbe 0x56a6
movq %r11, %r10
movl (%rsp,%r11), %r11d
cmpl (%r8,%r10,4), %r11d
jne 0x4afa
cmpq $0x8, %r10
je 0x4ad5
incq %r9
leaq 0x4(%r10), %r11
cmpq %rcx, %r9
jl 0x4aad
cmpq $0x8, %r10
jne 0x4afa
movq 0x8(%rbx), %rsi
movl -0x10(%rsi), %eax
cmpl $0x16, %eax
je 0x4af0
cmpl $0x4, %eax
jne 0x4f6a
addq $-0x10, %rsi
movq %rsi, 0x8(%rbx)
jmp 0x4adf
movslq %r13d, %rsi
movabsq $0x700000002, %rcx      # imm = 0x700000002
movq %rcx, (%rsp)
movl $0x10, 0x8(%rsp)
cmpl %edx, %r13d
jge 0x4e02
shrq $0x4, %rdi
movslq %edi, %rcx
movq %rsi, %rdi
shlq $0x4, %rdi
addq %rax, %rdi
movq %rsi, %r8
xorl %r10d, %r10d
cmpq %r8, %rdx
jbe 0x56d0
movq %r10, %r9
movl (%rsp,%r10), %r10d
cmpl (%rdi,%r9,4), %r10d
jne 0x4e02
cmpq $0x8, %r9
je 0x4b5f
incq %r8
leaq 0x4(%r9), %r10
cmpq %rcx, %r8
jl 0x4b33
cmpq $0x8, %r9
jne 0x4e02
movl $0x8, (%rsp)
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x5751
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x4f8b
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52da
movq %rsi, %rcx
xorl %r15d, %r15d
leaq 0x1722(%rip), %r12      # 0x62e4
cmpq %rcx, %rdx
jbe 0x55ce
movq %r15, %r11
leaq 0x174f(%rip), %r15      # 0x6324
movl (%r11,%r15), %ebp
cmpl (%r10,%r11,4), %ebp
jne 0x4ca6
cmpq $0x14, %r11
je 0x4bf5
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x4bc2
cmpq $0x14, %r11
jne 0x4ca6
leal 0x1(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x55d8
shlq $0x4, %rcx
cmpw $-0x1, 0x4(%rax,%rcx)
jne 0x4ca6
leal 0x3(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x55d8
shlq $0x4, %rcx
cmpw $0x1, 0x4(%rax,%rcx)
jne 0x4ca6
leal 0x2(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x55d8
leal 0x4(%r13), %r11d
movslq %r11d, %r11
cmpq %r11, %rdx
jbe 0x57b6
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
shlq $0x4, %r11
movswl 0x4(%rax,%r11), %r11d
addl %ecx, %r11d
jne 0x4ca6
movl $0x3, (%rsp)
movw %cx, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x4d80
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x523f
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x55e9
movq %r15, %r11
leaq 0x164d(%rip), %r15      # 0x630c
movl (%r11,%r15), %ebp
cmpl (%r10,%r11,4), %ebp
jne 0x4d91
cmpq $0x14, %r11
je 0x4cdf
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x4cac
cmpq $0x14, %r11
jne 0x4d91
leal 0x2(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x55f3
shlq $0x4, %rcx
cmpw $0x1, 0x4(%rax,%rcx)
jne 0x4d91
leal 0x4(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x55f3
shlq $0x4, %rcx
cmpw $-0x1, 0x4(%rax,%rcx)
jne 0x4d91
leal 0x1(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x55f3
leal 0x3(%r13), %r11d
movslq %r11d, %r11
cmpq %r11, %rdx
jbe 0x57be
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
shlq $0x4, %r11
movswl 0x4(%rax,%r11), %r11d
addl %ecx, %r11d
jne 0x4d91
movl $0x3, (%rsp)
movw %cx, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x53eb
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x523f
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x5604
movq %r15, %r11
leaq 0x15b2(%rip), %r15      # 0x635c
movl (%r11,%r15), %ebp
cmpl (%r10,%r11,4), %ebp
jne 0x4e30
cmpq $0x1c, %r11
je 0x4dc6
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x4d97
cmpq $0x1c, %r11
jne 0x4e30
movl $0x0, (%rsp)
movw $0x6, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x506e
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5079
cmpq %rsi, %rdx
jbe 0x5701
shlq $0x4, %rsi
addq %rsi, %rax
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4f57
movups (%rax), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x52de
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x5646
movq %r15, %r11
leaq 0x14db(%rip), %r15      # 0x6324
movl (%r11,%r15), %ebp
cmpl (%r10,%r11,4), %ebp
jne 0x4ea1
cmpq $0x14, %r11
je 0x4e65
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x4e36
cmpq $0x14, %r11
jne 0x4ea1
movl $0x0, (%rsp)
movw $0x4, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x517d
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5188
movabsq $0x400000007, %rcx      # imm = 0x400000007
movq %rcx, (%rsp)
movl $0x7, 0x8(%rsp)
movq %rsi, %rcx
xorl %r15d, %r15d
cmpq %rcx, %rdx
jbe 0x56bb
movq %r15, %r11
movl (%rsp,%r15), %ebp
cmpl (%r10,%r15,4), %ebp
jne 0x4802
cmpq $0x8, %r11
je 0x4ee9
incq %rcx
leaq 0x4(%r11), %r15
cmpq %r9, %rcx
jl 0x4ebd
cmpq $0x8, %r11
jne 0x4802
cmpq %rsi, %rdx
jbe 0x56c2
leal 0x2(%r13), %r15d
movslq %r15d, %rsi
cmpq %rsi, %rdx
jbe 0x56c2
movswl 0x4(%rax,%r8), %ecx
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %esi
addl %ecx, %esi
jne 0x4802
movl $0x11, (%rsp)
movw %cx, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5304
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x530f
movq %rbx, %rdi
movq %rax, %rdx
callq 0x587e
movl %r13d, %r15d
jmp 0x52e1
movl $0x16, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
cmpq 0x10(%rbx), %rsi
je 0x52cf
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x52da
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
movl $0x11, (%rsp)
leal 0x2(%r13), %eax
movslq %eax, %rsi
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x5735
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4ffb
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5006
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
movl $0x15, (%rsp)
leal 0x3(%r13), %eax
movslq %eax, %rsi
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x5743
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x505a
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5065
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
addl $0x4, %r13d
jmp 0x52de
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
leal 0x1(%r13), %r15d
xorl %r12d, %r12d
movl $0x11, (%rsp)
leal (%r15,%r12), %eax
movslq %eax, %rsi
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x56e5
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x50d4
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x50df
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
incq %r12
cmpq $0x6, %r12
jne 0x5080
movl $0x14, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x511e
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
leaq 0x11c8(%rip), %r12      # 0x62e4
jmp 0x5130
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
leaq 0x11b4(%rip), %r12      # 0x62e4
addl $0x7, %r13d
jmp 0x52de
movl $0x1, (%rsp)
incl %r13d
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x577b
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x52f7
movups (%rsp), %xmm0
jmp 0x4e23
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
leal 0x1(%r13), %r15d
xorl %r12d, %r12d
movl $0x11, (%rsp)
leal (%r15,%r12), %eax
movslq %eax, %rsi
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x56f3
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x51e3
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x51ee
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
incq %r12
cmpq $0x4, %r12
jne 0x518f
movl $0x13, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x522d
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
leaq 0x10b9(%rip), %r12      # 0x62e4
jmp 0x523f
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
leaq 0x10a5(%rip), %r12      # 0x62e4
addl $0x5, %r13d
jmp 0x52de
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
incl %r13d
jmp 0x52de
movl $0x17, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x504c
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x5065
movl $0x9, (%rsp)
cmpq %rsi, %rdx
jbe 0x5797
movzwl 0x4(%rax,%r8), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x5354
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52e1
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
addl $0x2, %r13d
movl %r13d, %r15d
incl %r15d
movl %r15d, %r13d
cmpl 0x40(%rsp), %r15d
jl 0x4248
jmp 0x54d1
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52de
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
movl $0xb, (%rsp)
incl %r13d
movslq %r13d, %rsi
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x5789
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5365
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x52e1
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x52e1
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
movl $0xe, (%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rbp, %rdx
jbe 0x57a5
movzwl 0x4(%rax,%r12), %eax
movw %ax, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x53d4
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
leaq 0xf15(%rip), %r12       # 0x62e4
jmp 0x52e1
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
leaq 0xefe(%rip), %r12       # 0x62e4
jmp 0x52e1
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x523f
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
movq 0x28(%rsp), %rsi
movl $0x11, (%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x57c6
movq %r12, %rsi
cmpq %r12, %rdx
jbe 0x57c6
movq 0x38(%rsp), %rcx
movzwl 0x4(%rax,%rcx), %ecx
movq 0x30(%rsp), %rdx
addw 0x4(%rax,%rdx), %cx
movw %cx, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x547d
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rbx), %rsi
addq $0x10, %rsi
movq %rsi, 0x8(%rbx)
leaq 0xe69(%rip), %r12       # 0x62e4
jmp 0x5493
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
leaq 0xe55(%rip), %r12       # 0x62e4
movq 0x8(%rbx), %rsi
movl $0x12, (%rsp)
movw $0x0, 0x4(%rsp)
movq $0x0, 0x8(%rsp)
cmpq 0x10(%rbx), %rsi
je 0x54c1
movups (%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5130
movq %rbx, %rdi
movq %rsp, %rdx
callq 0x3200
jmp 0x5130
cmpb $0x0, 0x24(%rsp)
je 0x552f
movq %rsp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x4200
movq (%rbx), %rdi
movq 0x10(%rbx), %rsi
movaps (%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0x10(%rsp), %rax
movq %rax, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
testq %rdi, %rdi
je 0x552f
subq %rdi, %rsi
callq 0x21b0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x552f
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x21b0
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0xaeb(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0xad6(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
movq %rsi, %rcx
leaq 0xabe(%rip), %rdi       # 0x603a
movq %rcx, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0xaa6(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rbp, %rdx
cmovaq %rdx, %rbp
leaq 0xa91(%rip), %rdi       # 0x603a
movq %rbp, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
movq %rsi, %r12
leaq 0xa76(%rip), %rdi       # 0x603a
movq %r12, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
movq %rsi, %rcx
leaq 0xa5b(%rip), %rdi       # 0x603a
movq %rcx, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
movq %rsi, %rcx
leaq 0xa40(%rip), %rdi       # 0x603a
movq %rcx, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0xa28(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rbp, %rdx
cmovaq %rdx, %rbp
leaq 0xa13(%rip), %rdi       # 0x603a
movq %rbp, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0x9fb(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0x9e6(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0x9d1(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
movq %rsi, %rcx
leaq 0x9b9(%rip), %rdi       # 0x603a
movq %rcx, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
movq %rsi, %rcx
leaq 0x99e(%rip), %rdi       # 0x603a
movq %rcx, %rsi
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0x986(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0x971(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
cmpq %rsi, %rdx
cmovaq %rdx, %rsi
leaq 0x95c(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x94e(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x940(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x932(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
movq %rsi, %rbp
jmp 0x5620
movq %rcx, %rsi
jmp 0x558d
movq %r9, %rsi
jmp 0x558d
leaq 0x90c(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8fe(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8f0(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8e2(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8d4(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8c6(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8b8(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x8aa(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x89c(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
leaq 0x88e(%rip), %rdi       # 0x603a
movq %rbp, %rsi
xorl %eax, %eax
callq 0x2270
movq %r11, %rcx
jmp 0x55d8
movq %r11, %rcx
jmp 0x55f3
leaq 0x86d(%rip), %rdi       # 0x603a
xorl %eax, %eax
callq 0x2270
movq %rbp, %r12
jmp 0x55bd
movq %rcx, %r12
jmp 0x55bd
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
jmp 0x585e
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x5875
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x21b0
movq %r14, %rdi
callq 0x22e0
nop