// File: /workspace/github_cpp_makefile_star2_O1/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 0x419b57
leaq 0x18a508(%rip), %rcx    # 0x5a3e84
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl (%rsi), %ecx
shll $0x8, %ecx
movsbl 0x1(%rsi), %eax
shll $0x6, %eax
addl %ecx, %eax
movl $0x4, %ecx
movl $0x3, %edx
movl $0x2, %r8d
jmp 0x419b3b
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), %ecx
shll $0x8, %ecx
movsbl 0x5(%rsi), %eax
shll $0x6, %eax
addl %ecx, %eax
addl %edx, %eax
movl $0x8, %ecx
movl $0x7, %edx
movl $0x6, %r8d
jmp 0x419b3b
movsbl (%rsi), %eax
shll $0xc, %eax
movsbl 0x1(%rsi), %ecx
shll $0xa, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %edx
shll $0x8, %edx
movsbl 0x3(%rsi), %eax
shll $0x6, %eax
addl %edx, %eax
addl %ecx, %eax
movl $0x6, %ecx
movl $0x5, %edx
movl $0x4, %r8d
jmp 0x419b3b
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
addl %edx, %eax
movl $0x7, %ecx
movl $0x6, %edx
movl $0x5, %r8d
jmp 0x419b3b
movsbl (%rsi), %eax
shll $0xa, %eax
movsbl 0x1(%rsi), %ecx
shll $0x8, %ecx
addl %eax, %ecx
movsbl 0x2(%rsi), %eax
shll $0x6, %eax
addl %ecx, %eax
movl $0x5, %ecx
movl $0x4, %edx
movl $0x3, %r8d
jmp 0x419b3b
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
movl $0x9, %ecx
movl $0x8, %edx
movl $0x7, %r8d
jmp 0x419b3b
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), %r8d
shll $0x8, %r8d
addl %ecx, %r8d
addl %edx, %r8d
movsbl 0x7(%rsi), %eax
shll $0x6, %eax
addl %r8d, %eax
movl $0xa, %ecx
movl $0x9, %edx
movl $0x8, %r8d
movsbl (%rsi,%r8), %r8d
shll $0x4, %r8d
addl %eax, %r8d
movsbl (%rsi,%rdx), %eax
leal (%r8,%rax,4), %eax
movsbl (%rsi,%rcx), %ecx
addl %eax, %ecx
movl %ecx, (%rdi)
movq 0x10(%rdi), %rax
movl (%rdi), %ecx
movl (%rax,%rcx,4), %eax
movl %eax, 0x8(%rdi)
retq