// File: /workspace/github_cpp_makefile_star2_O1/smilingthax[P]cttrie/test_cttrie.cpp
// Function: main
int main(int argc,char **argv)
{
  const char *str=(argc>1) ? argv[1] : "abc";

  printf("%d\n",
    TRIE2(lc_stringview,str) return -1;
    CASE("abc") return 0;
    CASE("bcd") return 1;
    ENDTRIE
  );

  TRIE(str)
    printf("E\n");
  CASE("Rosten")
    printf("6\n");
  CASE("Raben")
    printf("0\n");
  CASE("Rasen")
    printf("1\n");
  CASE("Rasten")
    printf("2\n");
  CASE("Raster")
    printf("3\n");
  CASE("Rastender")
    printf("4\n");
  CASE("Raban")
    printf("5\n");
  ENDTRIE;

  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
cmpl $0x2, %edi
jl 0x117e
movq 0x8(%rsi), %rbx
jmp 0x1185
leaq 0xe7f(%rip), %rbx       # 0x2004
movq %rbx, %rdi
callq 0x1040
movq %rax, %r14
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testl %r14d, %r14d
je 0x11fd
movsbl (%rbx), %edi
callq 0x1050
xorl %ecx, %ecx
movl %r14d, %r15d
subl $0x1, %r15d
cmovbl %ecx, %r15d
cmpb $0x62, %al
je 0x11f3
movzbl %al, %eax
cmpl $0x61, %eax
jne 0x11fd
cmpl $0x1, %r14d
je 0x11fd
movsbl 0x1(%rbx), %edi
callq 0x1050
cmpl $0x1, %r15d
je 0x11fd
movzbl %al, %eax
cmpl $0x62, %eax
jne 0x11fd
movsbl 0x2(%rbx), %edi
callq 0x1050
cmpb $0x63, %al
jne 0x11fd
xorl %ebp, %ebp
cmpl $0x2, %r15d
setne %bpl
negl %ebp
jmp 0x11fd
cmpl $0x1, %r14d
jne 0x12d2
leaq 0xe04(%rip), %rdi       # 0x2008
movl %ebp, %esi
xorl %eax, %eax
callq 0x1030
movq %rbx, %rdi
callq 0x1040
leaq 0xdf0(%rip), %rdi       # 0x200c
testl %eax, %eax
je 0x1468
cmpb $0x52, (%rbx)
jne 0x1468
xorl %esi, %esi
movl %eax, %edx
subl $0x1, %edx
cmovbl %esi, %edx
je 0x1468
movzbl 0x1(%rbx), %r8d
movl %eax, %ecx
subl $0x2, %ecx
cmovbl %esi, %ecx
cmpl $0x6f, %r8d
je 0x1317
cmpl $0x61, %r8d
jne 0x1468
cmpl $0x1, %edx
je 0x1468
movzbl 0x2(%rbx), %esi
xorl %r8d, %r8d
movl %eax, %edx
subl $0x3, %edx
cmovbl %r8d, %edx
cmpl $0x73, %esi
je 0x137d
cmpl $0x62, %esi
jne 0x1468
cmpl $0x1, %ecx
je 0x1468
movzbl 0x3(%rbx), %ecx
xorl %esi, %esi
subl $0x4, %eax
cmovbl %esi, %eax
cmpl $0x65, %ecx
je 0x13c3
cmpl $0x61, %ecx
jne 0x1468
cmpl $0x1, %edx
je 0x1468
cmpb $0x6e, 0x4(%rbx)
jne 0x1468
cmpl $0x1, %eax
leaq 0xd41(%rip), %rax       # 0x200e
jmp 0x13e0
movsbl 0x1(%rbx), %edi
callq 0x1050
cmpl $0x1, %r15d
je 0x11fd
movzbl %al, %eax
cmpl $0x63, %eax
jne 0x11fd
movsbl 0x2(%rbx), %edi
callq 0x1050
cmpb $0x64, %al
jne 0x11fd
xorl %eax, %eax
cmpl $0x2, %r15d
sete %al
leal -0x1(,%rax,2), %ebp
jmp 0x11fd
cmpl $0x1, %edx
je 0x1468
cmpb $0x73, 0x2(%rbx)
setne %dl
cmpl $0x1, %ecx
sete %sil
orb %dl, %sil
jne 0x1468
cmpb $0x74, 0x3(%rbx)
jne 0x1468
xorl %edx, %edx
subl $0x4, %eax
cmovbl %edx, %eax
cmpl $0x2, %ecx
je 0x1468
cmpb $0x65, 0x4(%rbx)
setne %cl
cmpl $0x1, %eax
sete %dl
orb %cl, %dl
jne 0x1468
cmpb $0x6e, 0x5(%rbx)
jne 0x1468
cmpl $0x2, %eax
leaq 0xc9f(%rip), %rax       # 0x201a
jmp 0x13e0
cmpl $0x1, %ecx
je 0x1468
movzbl 0x3(%rbx), %esi
xorl %r8d, %r8d
movl %eax, %ecx
subl $0x4, %ecx
cmovbl %r8d, %ecx
cmpl $0x74, %esi
je 0x13ed
cmpl $0x65, %esi
jne 0x1468
cmpl $0x1, %edx
je 0x1468
cmpb $0x6e, 0x4(%rbx)
jne 0x1468
cmpl $0x1, %ecx
leaq 0xc51(%rip), %rax       # 0x2012
jmp 0x13e0
cmpl $0x1, %edx
je 0x1468
cmpb $0x6e, 0x4(%rbx)
jne 0x1468
cmpl $0x1, %eax
leaq 0xc30(%rip), %rax       # 0x2010
leaq 0xc25(%rip), %rdi       # 0x200c
cmoveq %rax, %rdi
jmp 0x1468
cmpl $0x1, %edx
je 0x1468
cmpb $0x65, 0x4(%rbx)
jne 0x1468
xorl %esi, %esi
movl %eax, %edx
subl $0x5, %edx
cmovbl %esi, %edx
cmpl $0x1, %ecx
je 0x1468
movzbl 0x5(%rbx), %ecx
cmpl $0x72, %ecx
je 0x1423
cmpl $0x6e, %ecx
jne 0x1468
cmpl $0x1, %edx
jne 0x142f
leaq 0xbf3(%rip), %rdi       # 0x2014
jmp 0x1468
cmpl $0x1, %edx
leaq 0xbeb(%rip), %rax       # 0x2018
jmp 0x13e0
cmpb $0x64, 0x6(%rbx)
jne 0x1468
xorl %ecx, %ecx
subl $0x7, %eax
cmovbl %ecx, %eax
cmpl $0x2, %edx
je 0x1468
cmpb $0x65, 0x7(%rbx)
setne %cl
cmpl $0x1, %eax
sete %dl
orb %cl, %dl
jne 0x1468
cmpb $0x72, 0x8(%rbx)
jne 0x1468
cmpl $0x2, %eax
leaq 0xbb3(%rip), %rax       # 0x2016
jmp 0x13e0
callq 0x1060
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq