// File: /workspace/github_cpp_makefile_star2_O3/ChnMasterOG[P]KmerGO2/kmc_api/mmer.h
// Function: CMmer::insert(char const*)
inline void CMmer::insert(const char* seq)
{
	switch (len)
	{
	case 5: 
		str = (seq[0] << 8) + (seq[1] << 6) + (seq[2] << 4) + (seq[3] << 2) + (seq[4]);
		break;
	case 6:
		str = (seq[0] << 10) + (seq[1] << 8) + (seq[2] << 6) + (seq[3] << 4) + (seq[4] << 2) + (seq[5]);
		break;
	case 7:
		str = (seq[0] << 12) + (seq[1] << 10) + (seq[2] << 8) + (seq[3] << 6) + (seq[4] << 4 ) + (seq[5] << 2) + (seq[6]);
		break;
	case 8:
		str = (seq[0] << 14) + (seq[1] << 12) + (seq[2] << 10) + (seq[3] << 8) + (seq[4] << 6) + (seq[5] << 4) + (seq[6] << 2) + (seq[7]);
		break;
	case 9:
		str = (seq[0] << 16) + (seq[1] << 14) + (seq[2] << 12) + (seq[3] << 10) + (seq[4] << 8) + (seq[5] << 6) + (seq[6] << 4) + (seq[7] << 2) + (seq[8]);
		break;
	case 10:
		str = (seq[0] << 18) + (seq[1] << 16) + (seq[2] << 14) + (seq[3] << 12) + (seq[4] << 10) + (seq[5] << 8) + (seq[6] << 6) + (seq[7] << 4) + (seq[8] << 2) + (seq[9]);
		break;
	case 11:
		str = (seq[0] << 20) + (seq[1] << 18) + (seq[2] << 16) + (seq[3] << 14) + (seq[4] << 12) + (seq[5] << 10) + (seq[6] << 8) + (seq[7] << 6) + (seq[8] << 4) + (seq[9] << 2) + (seq[10]);
		break;
	default:
		break;
	}

	current_val = norm[str];
}

// Assembly:
movl 0x18(%rdi), %eax
addl $-0x5, %eax
cmpl $0x6, %eax
ja 0x4194fe
leaq 0x189a7c(%rip), %rcx    # 0x5a2e80
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl (%rsi), %eax
shll $0x8, %eax
movsbl 0x1(%rsi), %ecx
shll $0x6, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0x4, %eax
addl %ecx, %eax
movsbl 0x3(%rsi), %ecx
leal (%rax,%rcx,4), %ecx
movsbl 0x4(%rsi), %eax
jmp 0x4195e1
movsbl (%rsi), %eax
shll $0x10, %eax
movsbl 0x1(%rsi), %ecx
shll $0xe, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0xc, %eax
movsbl 0x3(%rsi), %edx
shll $0xa, %edx
addl %eax, %edx
addl %ecx, %edx
movsbl 0x4(%rsi), %eax
shll $0x8, %eax
movsbl 0x5(%rsi), %ecx
shll $0x6, %ecx
addl %eax, %ecx
movsbl 0x6(%rsi), %eax
shll $0x4, %eax
addl %ecx, %eax
addl %edx, %eax
movsbl 0x7(%rsi), %ecx
leal (%rax,%rcx,4), %ecx
movsbl 0x8(%rsi), %eax
jmp 0x4195e1
movsbl (%rsi), %eax
shll $0xc, %eax
movsbl 0x1(%rsi), %ecx
shll $0xa, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0x8, %eax
movsbl 0x3(%rsi), %edx
shll $0x6, %edx
addl %eax, %edx
addl %ecx, %edx
movsbl 0x4(%rsi), %eax
shll $0x4, %eax
addl %edx, %eax
movsbl 0x5(%rsi), %ecx
leal (%rax,%rcx,4), %ecx
movsbl 0x6(%rsi), %eax
jmp 0x4195e1
movsbl (%rsi), %eax
shll $0xe, %eax
movsbl 0x1(%rsi), %ecx
shll $0xc, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0xa, %eax
movsbl 0x3(%rsi), %edx
shll $0x8, %edx
addl %eax, %edx
addl %ecx, %edx
movsbl 0x4(%rsi), %eax
shll $0x6, %eax
movsbl 0x5(%rsi), %ecx
shll $0x4, %ecx
addl %eax, %ecx
addl %edx, %ecx
movsbl 0x6(%rsi), %eax
leal (%rcx,%rax,4), %ecx
movsbl 0x7(%rsi), %eax
jmp 0x4195e1
movl (%rdi), %eax
jmp 0x4195e5
movsbl (%rsi), %eax
shll $0xa, %eax
movsbl 0x1(%rsi), %ecx
shll $0x8, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0x6, %eax
movsbl 0x3(%rsi), %edx
shll $0x4, %edx
addl %eax, %edx
addl %ecx, %edx
movsbl 0x4(%rsi), %eax
leal (%rdx,%rax,4), %ecx
movsbl 0x5(%rsi), %eax
jmp 0x4195e1
movsbl (%rsi), %eax
shll $0x12, %eax
movsbl 0x1(%rsi), %ecx
shll $0x10, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0xe, %eax
movsbl 0x3(%rsi), %edx
shll $0xc, %edx
addl %eax, %edx
addl %ecx, %edx
movsbl 0x4(%rsi), %eax
shll $0xa, %eax
movsbl 0x5(%rsi), %ecx
shll $0x8, %ecx
addl %eax, %ecx
movsbl 0x6(%rsi), %eax
shll $0x6, %eax
addl %ecx, %eax
addl %edx, %eax
movsbl 0x7(%rsi), %ecx
shll $0x4, %ecx
addl %eax, %ecx
movsbl 0x8(%rsi), %eax
leal (%rcx,%rax,4), %ecx
movsbl 0x9(%rsi), %eax
jmp 0x4195e1
movsbl (%rsi), %eax
shll $0x14, %eax
movsbl 0x1(%rsi), %ecx
shll $0x12, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0x10, %eax
movsbl 0x3(%rsi), %edx
shll $0xe, %edx
addl %eax, %edx
addl %ecx, %edx
movsbl 0x4(%rsi), %eax
shll $0xc, %eax
movsbl 0x5(%rsi), %ecx
shll $0xa, %ecx
addl %eax, %ecx
movsbl 0x6(%rsi), %eax
shll $0x8, %eax
addl %ecx, %eax
addl %edx, %eax
movsbl 0x7(%rsi), %ecx
shll $0x6, %ecx
movsbl 0x8(%rsi), %edx
shll $0x4, %edx
addl %ecx, %edx
addl %eax, %edx
movsbl 0x9(%rsi), %eax
leal (%rdx,%rax,4), %ecx
movsbl 0xa(%rsi), %eax
addl %ecx, %eax
movl %eax, (%rdi)
movq 0x10(%rdi), %rcx
movl %eax, %eax
movl (%rcx,%rax,4), %eax
movl %eax, 0x8(%rdi)
retq