// File: deadshot465[P]OwoifyCpp/./owoify.h
// Function: Word::replace(std::__cxx11::basic_regex<wchar_t, std::__cxx11::regex_traits<wchar_t>> const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> const&, bool)
Word& replace(const std::wregex& regex, const std::wstring& replaceValue,
		bool replaceReplacedWords = false)
	{
		if (!replaceReplacedWords &&
			searchValueContainsReplacedWords(regex, replaceValue))
			return *this;

		auto replacing_word = m_word;

		if (std::regex_search(m_word, regex))
			replacing_word = std::regex_replace(m_word, regex, replaceValue);

		auto begin = std::wsregex_iterator(m_word.cbegin(), m_word.cend(), regex);
		auto end = std::wsregex_iterator();
		auto replaced_words = std::vector<std::wstring>();

		for (auto i = begin; i != end; ++i)
		{
			replaced_words.emplace_back(std::regex_replace(i->str(), regex, replaceValue));
		}

		if (replacing_word != m_word)
		{
			for (const auto& word : replaced_words)
			{
				m_replacedWords.emplace(word);
			}
			m_word = replacing_word;
		}

		return *this;
	}

// Assembly:
subq $0x1f8, %rsp            # imm = 0x1F8
movb %cl, %al
movq %rdi, 0x1e8(%rsp)
movq %rsi, 0x1e0(%rsp)
movq %rdx, 0x1d8(%rsp)
andb $0x1, %al
movb %al, 0x1d7(%rsp)
movq 0x1e8(%rsp), %rax
movq %rax, 0x18(%rsp)
testb $0x1, 0x1d7(%rsp)
jne 0xda63
movq 0x18(%rsp), %rdi
movq 0x1e0(%rsp), %rsi
movq 0x1d8(%rsp), %rdx
callq 0xdeb0
testb $0x1, %al
jne 0xda51
jmp 0xda63
movq 0x18(%rsp), %rax
movq %rax, 0x1f0(%rsp)
jmp 0xde32
movq 0x18(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
callq 0x6410
movq 0x18(%rsp), %rdi
movq 0x1e0(%rsp), %rsi
xorl %edx, %edx
callq 0xdf30
movb %al, 0x17(%rsp)
jmp 0xda8f
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0xda99
jmp 0xdafd
movq 0x18(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
movq 0x1d8(%rsp), %rcx
leaq 0x180(%rsp), %rdi
xorl %r8d, %r8d
callq 0xdf80
jmp 0xdac0
leaq 0x1b0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x6860
leaq 0x180(%rsp), %rdi
callq 0x6720
jmp 0xdafd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xde23
movq 0x18(%rsp), %rdi
callq 0x6110
movq 0x18(%rsp), %rdi
movq %rax, 0x138(%rsp)
callq 0x6470
movq %rax, 0x130(%rsp)
movq 0x1e0(%rsp), %rcx
movq 0x138(%rsp), %rsi
movq 0x130(%rsp), %rdx
leaq 0x140(%rsp), %rdi
xorl %r8d, %r8d
callq 0xe070
jmp 0xdb4b
xorps %xmm0, %xmm0
movaps %xmm0, 0x120(%rsp)
movaps %xmm0, 0x110(%rsp)
movaps %xmm0, 0x100(%rsp)
movaps %xmm0, 0xf0(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0xe1b0
jmp 0xdb7d
xorps %xmm0, %xmm0
movaps %xmm0, 0xd0(%rsp)
movq $0x0, 0xe0(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0xe200
leaq 0x90(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0xe210
jmp 0xdbb8
jmp 0xdbba
leaq 0x90(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xe260
testb $0x1, %al
jne 0xdc17
leaq 0x90(%rsp), %rdi
callq 0xe5e0
jmp 0xdcfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xde16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xddfc
leaq 0x90(%rsp), %rdi
callq 0xe310
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
leaq 0x50(%rsp), %rdi
callq 0xe320
jmp 0xdc37
movq 0x1e0(%rsp), %rdx
movq 0x1d8(%rsp), %rcx
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %r8d, %r8d
callq 0xdf80
jmp 0xdc5b
leaq 0xd0(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xe290
jmp 0xdc6f
leaq 0x70(%rsp), %rdi
callq 0x6720
leaq 0x50(%rsp), %rdi
callq 0x6720
leaq 0x90(%rsp), %rdi
callq 0xe370
jmp 0xdc92
jmp 0xdbba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xdceb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xdce1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x6720
leaq 0x50(%rsp), %rdi
callq 0x6720
leaq 0x90(%rsp), %rdi
callq 0xe5e0
jmp 0xddfc
movq 0x18(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
callq 0xe600
testb $0x1, %al
jne 0xdd18
jmp 0xddb9
leaq 0xd0(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0xe630
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0xe660
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0xe690
testb $0x1, %al
jne 0xdd58
jmp 0xdda3
leaq 0x40(%rsp), %rdi
callq 0xe6d0
movq 0x18(%rsp), %rdi
movq %rax, 0x30(%rsp)
addq $0x20, %rdi
movq 0x30(%rsp), %rsi
callq 0xe6e0
movb %dl, 0x7(%rsp)
movq %rax, 0x8(%rsp)
jmp 0xdd85
movb 0x7(%rsp), %al
movq 0x8(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movb %al, 0x28(%rsp)
leaq 0x40(%rsp), %rdi
callq 0xe730
jmp 0xdd43
movq 0x18(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x6630
jmp 0xddb7
jmp 0xddb9
movq 0x18(%rsp), %rax
movq %rax, 0x1f0(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x9ef0
leaq 0xf0(%rsp), %rdi
callq 0xe5e0
leaq 0x140(%rsp), %rdi
callq 0xe5e0
leaq 0x1b0(%rsp), %rdi
callq 0x6720
jmp 0xde32
leaq 0xd0(%rsp), %rdi
callq 0x9ef0
leaq 0xf0(%rsp), %rdi
callq 0xe5e0
leaq 0x140(%rsp), %rdi
callq 0xe5e0
leaq 0x1b0(%rsp), %rdi
callq 0x6720
jmp 0xde42
movq 0x1f0(%rsp), %rax
addq $0x1f8, %rsp            # imm = 0x1F8
retq
movq 0x1a8(%rsp), %rdi
callq 0x67b0
nop