// File: /workspace/github_c_makefile_star2_O1/craigbarnes[P]lua-gumbo/lib/svg_tags.c
// Function: gumbo_get_svg_tag_replacement
const StringReplacement *
gumbo_get_svg_tag_replacement (register const char *str, register size_t len)
{
  static const unsigned char lengthtable[] =
    {
       0,  0,  0,  0,  0,  0,  6,  0,  7,  7,  7,  8, 11, 12,
      12, 13, 11, 12, 16,  7,  7, 16, 11,  7, 19,  8, 13, 17,
      11, 12,  7,  8, 17,  8, 18,  8, 14, 12, 14, 14, 13,  7,
      14
    };
  static const StringReplacement wordlist[] =
    {
      {(char*)0,(char*)0}, {(char*)0,(char*)0},
      {(char*)0,(char*)0}, {(char*)0,(char*)0},
      {(char*)0,(char*)0}, {(char*)0,(char*)0},
      {"fetile", "feTile"},
      {(char*)0,(char*)0},
      {"femerge", "feMerge"},
      {"feimage", "feImage"},
      {"fefuncb", "feFuncB"},
      {"glyphref", "glyphRef"},
      {"femergenode", "feMergeNode"},
      {"femorphology", "feMorphology"},
      {"animatecolor", "animateColor"},
      {"animatemotion", "animateMotion"},
      {"fecomposite", "feComposite"},
      {"feturbulence", "feTurbulence"},
      {"animatetransform", "animateTransform"},
      {"fefuncr", "feFuncR"},
      {"fefunca", "feFuncA"},
      {"feconvolvematrix", "feConvolveMatrix"},
      {"fespotlight", "feSpotLight"},
      {"fefuncg", "feFuncG"},
      {"fecomponenttransfer", "feComponentTransfer"},
      {"altglyph", "altGlyph"},
      {"fecolormatrix", "feColorMatrix"},
      {"fedisplacementmap", "feDisplacementMap"},
      {"altglyphdef", "altGlyphDef"},
      {"altglyphitem", "altGlyphItem"},
      {"feflood", "feFlood"},
      {"clippath", "clipPath"},
      {"fediffuselighting", "feDiffuseLighting"},
      {"textpath", "textPath"},
      {"fespecularlighting", "feSpecularLighting"},
      {"feoffset", "feOffset"},
      {"fedistantlight", "feDistantLight"},
      {"fepointlight", "fePointLight"},
      {"lineargradient", "linearGradient"},
      {"radialgradient", "radialGradient"},
      {"foreignobject", "foreignObject"},
      {"feblend", "feBlend"},
      {"fegaussianblur", "feGaussianBlur"}
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register unsigned int key = hash (str, len);

      if (key <= MAX_HASH_VALUE)
        if (len == lengthtable[key])
          {
            register const char *s = wordlist[key].from;

            if (s && (((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && mem_equal_icase(str, s, len))
              return &wordlist[key];
          }
    }
  return 0;
}

// Assembly:
leaq -0x6(%rsi), %rax
cmpq $0xd, %rax
ja 0x19330
leal -0x3(%rsi), %eax
cmpl $0x4, %eax
jae 0x1924a
movl %esi, %eax
jmp 0x1925c
movzbl 0x6(%rdi), %eax
leaq 0x362bb(%rip), %rcx     # 0x4f510
movzbl 0x1(%rax,%rcx), %eax
addl %esi, %eax
movzbl 0x2(%rdi), %ecx
leaq 0x362a9(%rip), %rdx     # 0x4f510
movzbl (%rcx,%rdx), %ecx
movl %eax, %edx
addq %rcx, %rdx
movb $0x1, %cl
cmpl $0x2a, %edx
ja 0x1932c
leaq 0x3625e(%rip), %rax     # 0x4f4e0
movzbl (%rdx,%rax), %eax
cmpq %rsi, %rax
jne 0x1932c
shlq $0x4, %rdx
leaq 0x3c7d6(%rip), %r8      # 0x55a70
leaq (%r8,%rdx), %rax
movq (%rdx,%r8), %rdx
testq %rdx, %rdx
je 0x1932c
movb (%rdx), %r8b
xorb (%rdi), %r8b
testb $-0x21, %r8b
jne 0x1932c
pushq %rbp
pushq %rbx
testq %rsi, %rsi
sete %r8b
je 0x19321
movzbl (%rdi), %r10d
leaq 0xe83(%rip), %r9        # 0x1a150
movb (%r9,%r10), %r11b
andb $0x20, %r11b
orb %r10b, %r11b
movzbl (%rdx), %r10d
movb (%r9,%r10), %bl
andb $0x20, %bl
orb %r10b, %bl
cmpb %bl, %r11b
jne 0x19321
movl $0x1, %r10d
cmpq %r10, %rsi
sete %r8b
je 0x19321
movzbl (%rdi,%r10), %r11d
movb (%r9,%r11), %bl
andb $0x20, %bl
orb %r11b, %bl
movzbl (%rdx,%r10), %r11d
movb (%r9,%r11), %bpl
andb $0x20, %bpl
orb %r11b, %bpl
incq %r10
cmpb %bpl, %bl
je 0x192f1
testb %r8b, %r8b
popq %rbx
popq %rbp
je 0x1932c
xorl %ecx, %ecx
jmp 0x1932c
testb %cl, %cl
je 0x19332
xorl %eax, %eax
retq
nop