// File: /workspace/github_cpp_makefile_star2_O1/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 $0x38, %rsp
movl %edx, 0x2c(%rsp)
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x8(%rsi), %r15
subq (%rsi), %r15
shrq $0x4, %r15
testl %r15d, %r15d
jle 0x54e7
movq %rsi, %r14
xorl %r13d, %r13d
movq %r15, 0x20(%rsp)
movabsq $0x700000016, %rax      # imm = 0x700000016
movq %rax, 0x8(%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4224
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x5534
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4226
xorl %esi, %esi
testb %sil, %sil
je 0x4238
addq $0x4, %r8
cmpq $0x8, %r8
sete %cl
jne 0x41ff
testb $0x1, %cl
je 0x4291
leal 0x1(%r13), %ebp
movslq %ebp, %rsi
cmpq %rsi, %rdx
jbe 0x5534
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x4291
movl $0x18, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x449a
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5043
movabsq $0x1600000007, %rcx     # imm = 0x1600000007
movq %rcx, 0x8(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x42cd
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x5542
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x42cf
xorl %esi, %esi
testb %sil, %sil
je 0x42e1
addq $0x4, %r8
cmpq $0x8, %r8
sete %cl
jne 0x42a8
testb $0x1, %cl
leaq 0x1fdd(%rip), %r10      # 0x62c8
je 0x433d
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x5542
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x433d
movl $0x6, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4b6d
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4b7a
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4369
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x5550
incl %edi
movl (%r8,%r10), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x436b
xorl %esi, %esi
testb %sil, %sil
je 0x437d
addq $0x4, %r8
cmpq $0x14, %r8
sete %cl
jne 0x4345
testb $0x1, %cl
je 0x43be
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x5550
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x43be
leal 0x3(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x5550
shlq $0x4, %rsi
cmpw $-0x1, 0x4(%rax,%rsi)
je 0x4b82
movabsq $0x300000007, %rcx      # imm = 0x300000007
movq %rcx, 0x8(%rsp)
movl $0x7, 0x10(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4402
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x55b5
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4404
xorl %esi, %esi
testb %sil, %sil
je 0x4416
addq $0x4, %r8
cmpq $0xc, %r8
sete %cl
jne 0x43dd
testb $0x1, %cl
je 0x44ac
leal 0x2(%r13), %ebp
movslq %ebp, %rsi
cmpq %rsi, %rdx
jbe 0x55b5
leal 0x1(%r13), %ecx
movslq %ecx, %rdi
cmpq %rdi, %rdx
jbe 0x55b2
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %ecx
shlq $0x4, %rdi
cmpw 0x4(%rax,%rdi), %cx
jne 0x44ac
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x55b5
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %edi
addl %ecx, %edi
jne 0x44ac
addq %rsi, %rax
addq $0x4, %rax
movl $0xe, 0x8(%rsp)
movzwl (%rax), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4e90
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5043
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
leaq 0x1e21(%rip), %r10      # 0x62dc
cmpl %edx, %edi
jge 0x44df
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x555e
incl %edi
movl (%r8,%r10), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x44e1
xorl %esi, %esi
testb %sil, %sil
je 0x44f3
addq $0x4, %r8
cmpq $0x14, %r8
sete %cl
jne 0x44bb
testb $0x1, %cl
je 0x4547
movl $0x11, 0x8(%rsp)
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x55d1
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4a91
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4a9e
movabsq $0x300000001, %rcx      # imm = 0x300000001
movq %rcx, 0x8(%rsp)
movl $0x7, 0x10(%rsp)
xorl %ecx, %ecx
movl %r13d, %esi
xorl %edi, %edi
cmpl %edx, %esi
jge 0x458a
movslq %esi, %r12
cmpq %r12, %rdx
jbe 0x560c
incl %esi
movl 0x8(%rsp,%rdi), %r8d
shlq $0x4, %r12
cmpl (%rax,%r12), %r8d
sete %r8b
jmp 0x458d
xorl %r8d, %r8d
testb %r8b, %r8b
je 0x459f
addq $0x4, %rdi
cmpq $0xc, %rdi
sete %cl
jne 0x4565
testb $0x1, %cl
je 0x4633
movslq %r13d, %r12
cmpq %r12, %rdx
jbe 0x560c
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x5609
movq %r12, %r15
shlq $0x4, %r15
movswl 0x4(%rax,%r15), %ecx
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %esi
addl %ecx, %esi
jne 0x4633
leal 0x2(%r13), %ebp
movslq %ebp, %rsi
cmpq %rsi, %rdx
jbe 0x5609
shlq $0x4, %rsi
movswl 0x4(%rax,%rsi), %esi
addl %esi, %ecx
jne 0x4633
movl $0x4, 0x8(%rsp)
movw $0xffff, 0xc(%rsp)      # imm = 0xFFFF
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x514b
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5158
xorl %ecx, %ecx
movl %r13d, %esi
xorl %edi, %edi
leaq 0x1cdf(%rip), %r9       # 0x6320
cmpl %edx, %esi
jge 0x4665
movslq %esi, %r12
cmpq %r12, %rdx
jbe 0x56a1
incl %esi
movl (%rdi,%r9), %r8d
shlq $0x4, %r12
cmpl (%rax,%r12), %r8d
sete %r8b
jmp 0x4668
xorl %r8d, %r8d
testb %r8b, %r8b
je 0x467a
addq $0x4, %rdi
cmpq $0x20, %rdi
sete %cl
jne 0x4641
testb $0x1, %cl
je 0x4780
leal 0x1(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x56a1
shlq $0x4, %r12
cmpw $-0x1, 0x4(%rax,%r12)
jne 0x4780
leal 0x3(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x56a1
shlq $0x4, %r12
cmpw $0x1, 0x4(%rax,%r12)
jne 0x4780
leal 0x5(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x56a1
shlq $0x4, %r12
cmpw $0x1, 0x4(%rax,%r12)
jne 0x4780
leal 0x2(%r13), %ecx
movslq %ecx, %r12
cmpq %r12, %rdx
jbe 0x56a1
leal 0x4(%r13), %ecx
movslq %ecx, %rbp
cmpq %rbp, %rdx
jbe 0x5699
leal 0x6(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x569e
movq %r12, %r15
shlq $0x4, %r15
movswl 0x4(%rax,%r15), %esi
movq %rbp, 0x30(%rsp)
shlq $0x4, %rbp
movswl 0x4(%rax,%rbp), %edi
addl %esi, %edi
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
addl %edi, %ecx
jne 0x4780
addq %r15, %rax
addq $0x4, %rax
movl $0x11, 0x8(%rsp)
movzwl (%rax), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5408
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5415
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
movq 0x20(%rsp), %r15
cmpl %edx, %edi
jge 0x47b8
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x566c
incl %edi
leaq 0x1b62(%rip), %r9       # 0x6308
movl (%r8,%r9), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x47ba
xorl %esi, %esi
testb %sil, %sil
je 0x47cc
addq $0x4, %r8
cmpq $0x18, %r8
sete %cl
jne 0x478d
testb $0x1, %cl
je 0x4885
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x566c
shlq $0x4, %rsi
cmpw $-0x1, 0x4(%rax,%rsi)
jne 0x4885
leal 0x3(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x566c
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x4885
leal 0x2(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x566c
leal 0x4(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x5669
shlq $0x4, %rsi
addq %rax, %rsi
addq $0x4, %rsi
movswl (%rsi), %edi
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
addl %edi, %ecx
jne 0x4885
movl $0x3, 0x8(%rsp)
movzwl (%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x4973
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x503c
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x48b8
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x567d
incl %edi
leaq 0x1a4a(%rip), %r9       # 0x62f0
movl (%r8,%r9), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x48ba
xorl %esi, %esi
testb %sil, %sil
je 0x48cc
addq $0x4, %r8
cmpq $0x18, %r8
sete %cl
jne 0x488d
testb $0x1, %cl
je 0x4985
leal 0x2(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x567d
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x4985
leal 0x4(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x567d
shlq $0x4, %rsi
cmpw $-0x1, 0x4(%rax,%rsi)
jne 0x4985
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x567d
leal 0x3(%r13), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rdx
jbe 0x567a
shlq $0x4, %rsi
addq %rax, %rsi
addq $0x4, %rsi
movswl (%rsi), %edi
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
addl %edi, %ecx
jne 0x4985
movl $0x3, 0x8(%rsp)
movzwl (%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x535a
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x503c
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x49b8
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x557a
incl %edi
leaq 0x199a(%rip), %r9       # 0x6340
movl (%r8,%r9), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x49ba
xorl %esi, %esi
testb %sil, %sil
je 0x49cc
addq $0x4, %r8
cmpq $0x20, %r8
sete %cl
jne 0x498d
testb $0x1, %cl
je 0x4a09
movl $0x0, 0x8(%rsp)
movw $0x6, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4c88
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4c95
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4a3c
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x5596
incl %edi
leaq 0x18de(%rip), %r9       # 0x6308
movl (%r8,%r9), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4a3e
xorl %esi, %esi
testb %sil, %sil
je 0x4a50
addq $0x4, %r8
cmpq $0x18, %r8
sete %cl
jne 0x4a11
testb $0x1, %cl
je 0x4bb3
movl $0x0, 0x8(%rsp)
movw $0x4, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4f74
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4f81
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movl $0x11, 0x8(%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 0x55df
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4af4
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4b01
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movl $0x15, 0x8(%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 0x55ed
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4b57
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4b64
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
addl $0x4, %r13d
jmp 0x5040
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
incl %r13d
jmp 0x5040
movl $0x17, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x4b48
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x4b64
movabsq $0x400000007, %rcx      # imm = 0x400000007
movq %rcx, 0x8(%rsp)
movl $0x7, 0x10(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4bf7
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x565b
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4bf9
xorl %esi, %esi
testb %sil, %sil
je 0x4c0b
addq $0x4, %r8
cmpq $0xc, %r8
sete %cl
jne 0x4bd2
testb $0x1, %cl
je 0x4d45
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x565b
leal 0x2(%r13), %ebp
movslq %ebp, %rcx
cmpq %rcx, %rdx
jbe 0x5658
shlq $0x4, %rsi
addq %rax, %rsi
addq $0x4, %rsi
movswl (%rsi), %edi
shlq $0x4, %rcx
movswl 0x4(%rax,%rcx), %ecx
addl %edi, %ecx
jne 0x4d45
movl $0x11, 0x8(%rsp)
movzwl (%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x52f1
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x52fe
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
leal 0x1(%r13), %r15d
xorl %r12d, %r12d
movl $0x11, 0x8(%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 0x556c
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4cf2
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4cff
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
incq %r12
cmpq $0x6, %r12
jne 0x4c9c
movl $0x14, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4e75
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
movq 0x20(%rsp), %r15
jmp 0x4e87
movabsq $0x700000004, %rcx      # imm = 0x700000004
movq %rcx, 0x8(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4d81
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x55a4
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4d83
xorl %esi, %esi
testb %sil, %sil
je 0x4d95
addq $0x4, %r8
cmpq $0x8, %r8
sete %cl
jne 0x4d5c
testb $0x1, %cl
je 0x4db6
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x55a4
shlq $0x4, %rsi
cmpw $-0x1, 0x4(%rax,%rsi)
je 0x51c3
movabsq $0x700000004, %rcx      # imm = 0x700000004
movq %rcx, 0x8(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4df2
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x55c3
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4df4
xorl %esi, %esi
testb %sil, %sil
je 0x4e06
addq $0x4, %r8
cmpq $0x8, %r8
sete %cl
jne 0x4dcd
testb $0x1, %cl
je 0x4ea2
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x55c3
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x4ea2
movl $0x5, 0x8(%rsp)
incl %r13d
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x56c0
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x51ff
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5040
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movq 0x20(%rsp), %r15
addl $0x7, %r13d
jmp 0x5040
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5043
movabsq $0x400000007, %rax      # imm = 0x400000007
movq %rax, 0x8(%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x4eec
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x55fb
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x4eee
xorl %esi, %esi
testb %sil, %sil
je 0x4f00
addq $0x4, %r8
cmpq $0x8, %r8
sete %cl
jne 0x4ec7
testb $0x1, %cl
je 0x5056
leal 0x1(%r13), %ebp
movslq %ebp, %rsi
cmpq %rsi, %rdx
jbe 0x55fb
shlq $0x4, %rsi
cmpw $0x1, 0x4(%rax,%rsi)
jne 0x5056
movl $0xa, 0x8(%rsp)
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x56dc
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x449a
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5043
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
leal 0x1(%r13), %r15d
xorl %r12d, %r12d
movl $0x11, 0x8(%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 0x5588
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x4fde
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4feb
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
incq %r12
cmpq $0x4, %r12
jne 0x4f88
movl $0x13, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x502a
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
movq 0x20(%rsp), %r15
jmp 0x503c
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movq 0x20(%rsp), %r15
addl $0x5, %r13d
movl %r13d, %ebp
incl %ebp
movl %ebp, %r13d
cmpl %r15d, %ebp
jl 0x41da
jmp 0x54e7
movabsq $0x400000007, %rcx      # imm = 0x400000007
movq %rcx, 0x8(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x5092
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x561d
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x5094
xorl %esi, %esi
testb %sil, %sil
je 0x50a6
addq $0x4, %r8
cmpq $0x8, %r8
sete %cl
jne 0x506d
testb $0x1, %cl
je 0x50cb
leal 0x1(%r13), %ebp
movslq %ebp, %rsi
cmpq %rsi, %rdx
jbe 0x561d
shlq $0x4, %rsi
cmpw $-0x1, 0x4(%rax,%rsi)
je 0x5395
movabsq $0x400000002, %rcx      # imm = 0x400000002
movq %rcx, 0x8(%rsp)
movl $0x10, 0x10(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x510f
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x562b
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x5111
xorl %esi, %esi
testb %sil, %sil
je 0x5123
addq $0x4, %r8
cmpq $0xc, %r8
sete %cl
jne 0x50ea
testb $0x1, %cl
je 0x5211
movq 0x8(%rbx), %rsi
movl -0x10(%rsi), %eax
cmpl $0x16, %eax
je 0x5141
cmpl $0x4, %eax
jne 0x52bd
addq $-0x10, %rsi
movq %rsi, 0x8(%rbx)
jmp 0x5130
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movl $0xe, 0x8(%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %r12, %rdx
jbe 0x5647
movzwl 0x4(%rax,%r15), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x51ac
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
movq 0x20(%rsp), %r15
jmp 0x5043
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movq 0x20(%rsp), %r15
jmp 0x5043
movl $0x1, 0x8(%rsp)
incl %r13d
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x56ce
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x53e0
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x5040
movabsq $0x700000002, %rcx      # imm = 0x700000002
movq %rcx, 0x8(%rsp)
movl $0x10, 0x10(%rsp)
xorl %ecx, %ecx
movl %r13d, %edi
xorl %r8d, %r8d
cmpl %edx, %edi
jge 0x5255
movslq %edi, %rsi
cmpq %rsi, %rdx
jbe 0x5639
incl %edi
movl 0x8(%rsp,%r8), %r9d
shlq $0x4, %rsi
cmpl (%rax,%rsi), %r9d
sete %sil
jmp 0x5257
xorl %esi, %esi
testb %sil, %sil
je 0x5269
addq $0x4, %r8
cmpq $0xc, %r8
sete %cl
jne 0x5230
testb $0x1, %cl
je 0x536c
movl $0x8, 0x8(%rsp)
leal 0x1(%r13), %ecx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jbe 0x56ea
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x52df
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x53ff
movl $0x16, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
cmpq 0x10(%rbx), %rsi
je 0x53f2
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x53ff
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movl $0xb, 0x8(%rsp)
incl %r13d
movslq %r13d, %rsi
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %rsi, %rdx
jbe 0x568b
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x449a
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5043
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x503c
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x56f8
shlq $0x4, %rsi
addq %rsi, %rax
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x54d4
movups (%rax), %xmm0
jmp 0x5204
movl $0x9, 0x8(%rsp)
movslq %r13d, %rsi
cmpq %rsi, %rdx
jbe 0x5706
shlq $0x4, %rsi
movzwl 0x4(%rax,%rsi), %eax
movw %ax, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
jne 0x449a
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5043
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x5040
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
addl $0x2, %r13d
jmp 0x5040
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movl $0x11, 0x8(%rsp)
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movq 0x30(%rsp), %rsi
cmpq %rsi, %rdx
jbe 0x56b2
movq %r12, %rsi
cmpq %r12, %rdx
jbe 0x56b2
movzwl 0x4(%rax,%r15), %ecx
addw 0x4(%rax,%rbp), %cx
movw %cx, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x547c
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
movq 0x20(%rsp), %r15
jmp 0x548e
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
movq 0x20(%rsp), %r15
movl $0x12, 0x8(%rsp)
movw $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x54c2
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, 0x8(%rbx)
jmp 0x4e87
movq %rbx, %rdi
leaq 0x8(%rsp), %rdx
callq 0x318c
jmp 0x4e87
movq %rbx, %rdi
movq %rax, %rdx
callq 0x57ae
movl %r13d, %ebp
jmp 0x5043
cmpb $0x0, 0x2c(%rsp)
je 0x5522
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x4198
leaq 0x8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x588e
movq (%r14), %rdi
testq %rdi, %rdi
je 0x5522
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x21b0
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xae3(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xad5(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xac7(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xab9(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xaab(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa9d(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa8f(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa81(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa73(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
movq %rdi, %rsi
leaq 0xa62(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa54(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa46(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa38(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa2a(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0xa1c(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
movq %rsi, %r12
leaq 0xa0b(%rip), %rdi       # 0x601e
movq %r12, %rsi
xorl %eax, %eax
callq 0x2270
leaq 0x9fa(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x9ec(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x9de(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x9d0(%rip), %rdi       # 0x601e
movq %r12, %rsi
xorl %eax, %eax
callq 0x2270
movq %rcx, %rsi
leaq 0x9bc(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
movq %rcx, %rsi
leaq 0x9ab(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
movq %rcx, %rsi
leaq 0x99a(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x98c(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
movq %rbp, %r12
jmp 0x56a1
movq %rcx, %r12
leaq 0x976(%rip), %rdi       # 0x601e
movq %r12, %rsi
xorl %eax, %eax
callq 0x2270
leaq 0x965(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x957(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x949(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x93b(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x92d(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x91f(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
leaq 0x911(%rip), %rdi       # 0x601e
xorl %eax, %eax
callq 0x2270
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
jmp 0x578e
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x57a5
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x21b0
movq %r14, %rdi
callq 0x22e0
nop