// File: /workspace/github_cpp_makefile_star2_O1/IHorvalds[P]RomAna/./processing/special_characters.hpp
// Function: specialChars::cleanUpWord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
static std::string cleanUpWord(std::string word) {
    if (!word.empty()) {
      // First get rid of the punctuation of 1 byte, using "ispunct"
      word.erase(std::remove_if(word.begin(), word.end(), ::ispunct), word.end());
      
      // Also get rid of digits
      word.erase(std::remove_if(word.begin(), word.end(), ::isdigit), word.end());
      
      // And the white spaces
      word.erase(std::remove_if(word.begin(), word.end(), ::isspace), word.end());
#if 0
      // TODO: fix it
      // Then look at the punctuation of many more bytes
      for (int i = 0; i < word.size(); i++) {
        int amount = isPunctuation(&word[i]) + isdigit(word[i]);
        word.erase(i, amount);
        i -= (amount > 0);
      }
#endif
    }
    return word;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq 0x8(%rsi), %r13
testq %r13, %r13
je 0x5cb1
movq %rdi, (%rsp)
movq (%rbx), %r14
leaq (%r14,%r13), %r15
movq %r13, %rbp
sarq $0x2, %rbp
testq %rbp, %rbp
jle 0x59ef
andq $-0x4, %r13
addq %r14, %r13
incq %rbp
addq $0x3, %r14
movq %r14, %r12
movsbl -0x3(%r12), %edi
callq 0x3500
testl %eax, %eax
jne 0x5a3e
movsbl -0x2(%r12), %edi
callq 0x3500
testl %eax, %eax
jne 0x5a44
movsbl -0x1(%r12), %edi
callq 0x3500
testl %eax, %eax
jne 0x5a4a
movsbl (%r12), %edi
callq 0x3500
testl %eax, %eax
jne 0x5a4d
decq %rbp
addq $0x4, %r12
cmpq $0x1, %rbp
jg 0x599c
movq %r13, %r14
movq %r15, %rax
subq %r14, %rax
cmpq $0x1, %rax
je 0x5a2a
cmpq $0x2, %rax
je 0x5a1a
movq %r15, %r12
cmpq $0x3, %rax
jne 0x5a4d
movsbl (%r14), %edi
callq 0x3500
testl %eax, %eax
jne 0x5a39
incq %r14
movsbl (%r14), %edi
callq 0x3500
testl %eax, %eax
jne 0x5a39
incq %r14
movsbl (%r14), %edi
callq 0x3500
testl %eax, %eax
cmoveq %r15, %r14
movq %r14, %r12
jmp 0x5a4d
addq $-0x3, %r12
jmp 0x5a4d
addq $-0x2, %r12
jmp 0x5a4d
decq %r12
cmpq %r15, %r12
sete %al
leaq 0x1(%r12), %r14
cmpq %r15, %r14
sete %cl
orb %al, %cl
jne 0x5a81
movb (%r14), %bpl
movsbl %bpl, %edi
callq 0x3500
testl %eax, %eax
jne 0x5a79
movb %bpl, (%r12)
incq %r12
incq %r14
cmpq %r15, %r14
jne 0x5a62
movq %r12, %rax
subq (%rbx), %rax
movq %rax, 0x8(%rbx)
movb $0x0, (%r12)
movq (%rbx), %rdx
movq 0x8(%rbx), %rsi
leaq (%rdx,%rsi), %rax
movq %rsi, %rdi
sarq $0x2, %rdi
testq %rdi, %rdi
jle 0x5af7
andq $-0x4, %rsi
addq %rdx, %rsi
incq %rdi
addq $0x3, %rdx
movq %rdx, %rcx
movsbl -0x3(%rcx), %edx
addl $-0x3a, %edx
cmpl $-0xb, %edx
ja 0x5b40
movsbl -0x2(%rcx), %edx
addl $-0x3a, %edx
cmpl $-0xb, %edx
ja 0x5b46
movsbl -0x1(%rcx), %edx
addl $-0x3a, %edx
cmpl $-0xb, %edx
ja 0x5b4c
movsbl (%rcx), %edx
addl $-0x3a, %edx
cmpl $-0xb, %edx
ja 0x5b4f
decq %rdi
addq $0x4, %rcx
cmpq $0x1, %rdi
jg 0x5ab8
movq %rsi, %rdx
movq %rax, %rsi
subq %rdx, %rsi
cmpq $0x1, %rsi
je 0x5b2e
cmpq $0x2, %rsi
je 0x5b20
movq %rax, %rcx
cmpq $0x3, %rsi
jne 0x5b4f
movsbl (%rdx), %ecx
addl $-0x3a, %ecx
cmpl $-0xb, %ecx
ja 0x5b3b
incq %rdx
movsbl (%rdx), %ecx
addl $-0x3a, %ecx
cmpl $-0xb, %ecx
ja 0x5b3b
incq %rdx
movsbl (%rdx), %ecx
addl $-0x3a, %ecx
cmpl $-0xa, %ecx
cmovbq %rax, %rdx
movq %rdx, %rcx
jmp 0x5b4f
addq $-0x3, %rcx
jmp 0x5b4f
addq $-0x2, %rcx
jmp 0x5b4f
decq %rcx
cmpq %rax, %rcx
sete %sil
leaq 0x1(%rcx), %rdx
cmpq %rax, %rdx
sete %dil
orb %sil, %dil
jne 0x5b7f
movsbl (%rdx), %esi
leal -0x3a(%rsi), %edi
cmpl $-0xb, %edi
ja 0x5b77
movb %sil, (%rcx)
incq %rcx
incq %rdx
cmpq %rax, %rdx
jne 0x5b66
movq %rcx, %rax
subq (%rbx), %rax
movq %rax, 0x8(%rbx)
movb $0x0, (%rcx)
movq (%rbx), %r13
movq 0x8(%rbx), %rbp
movq %r13, %r15
addq %rbp, %r15
movq %rbp, %r14
sarq $0x2, %r14
testq %r14, %r14
jle 0x5c09
andq $-0x4, %rbp
addq %r13, %rbp
incq %r14
addq $0x3, %r13
movq %r13, %r12
movsbl -0x3(%r12), %edi
callq 0x3070
testl %eax, %eax
jne 0x5c5b
movsbl -0x2(%r12), %edi
callq 0x3070
testl %eax, %eax
jne 0x5c61
movsbl -0x1(%r12), %edi
callq 0x3070
testl %eax, %eax
jne 0x5c67
movsbl (%r12), %edi
callq 0x3070
testl %eax, %eax
jne 0x5c6a
decq %r14
addq $0x4, %r12
cmpq $0x1, %r14
jg 0x5bb6
movq %rbp, %r13
movq %r15, %rax
subq %r13, %rax
cmpq $0x1, %rax
je 0x5c46
cmpq $0x2, %rax
je 0x5c35
movq %r15, %r12
cmpq $0x3, %rax
jne 0x5c6a
movsbl (%r13), %edi
callq 0x3070
testl %eax, %eax
jne 0x5c56
incq %r13
movsbl (%r13), %edi
callq 0x3070
testl %eax, %eax
jne 0x5c56
incq %r13
movsbl (%r13), %edi
callq 0x3070
testl %eax, %eax
cmoveq %r15, %r13
movq %r13, %r12
jmp 0x5c6a
addq $-0x3, %r12
jmp 0x5c6a
addq $-0x2, %r12
jmp 0x5c6a
decq %r12
cmpq %r15, %r12
sete %al
leaq 0x1(%r12), %r14
cmpq %r15, %r14
sete %cl
orb %al, %cl
jne 0x5c9e
movb (%r14), %bpl
movsbl %bpl, %edi
callq 0x3070
testl %eax, %eax
jne 0x5c96
movb %bpl, (%r12)
incq %r12
incq %r14
cmpq %r15, %r14
jne 0x5c7f
movq %r12, %rax
subq (%rbx), %rax
movq %rax, 0x8(%rbx)
movb $0x0, (%r12)
movq (%rsp), %rdi
leaq 0x10(%rdi), %rcx
movq %rcx, (%rdi)
movq (%rbx), %rdx
leaq 0x10(%rbx), %rax
cmpq %rax, %rdx
je 0x5cd0
movq %rdx, (%rdi)
movq (%rax), %rcx
movq %rcx, 0x10(%rdi)
jmp 0x5cd6
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq 0x8(%rbx), %rcx
movq %rcx, 0x8(%rdi)
movq %rax, (%rbx)
movq $0x0, 0x8(%rbx)
movb $0x0, 0x10(%rbx)
movq %rdi, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop