// File: deadshot465[P]OwoifyCpp/./owoify.h
// Function: Word::replace(std::__cxx11::basic_regex<wchar_t, std::__cxx11::regex_traits<wchar_t>> const&, std::function<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::function<std::wstring()>& func,
		bool replaceReplacedWords = false)
	{
		auto replace_value = func();

		if (!replaceReplacedWords &&
			searchValueContainsReplacedWords(regex, replace_value))
			return *this;

		auto replacing_word = m_word;

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

		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, replace_value));
		}

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

		return *this;
	}

// Assembly:
subq $0x218, %rsp            # imm = 0x218
movb %cl, %al
movq %rdi, 0x208(%rsp)
movq %rsi, 0x200(%rsp)
movq %rdx, 0x1f8(%rsp)
andb $0x1, %al
movb %al, 0x1f7(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x1f8(%rsp), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0x1c870
testb $0x1, 0x1f7(%rsp)
jne 0x1c2a6
movq 0x18(%rsp), %rdi
movq 0x200(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
callq 0xdeb0
movb %al, 0x17(%rsp)
jmp 0x1c266
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x1c270
jmp 0x1c2a6
movq 0x18(%rsp), %rax
movq %rax, 0x210(%rsp)
movl $0x1, 0x1c0(%rsp)
jmp 0x1c68d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
jmp 0x1c6aa
movq 0x18(%rsp), %rsi
leaq 0x1a0(%rsp), %rdi
callq 0x6410
jmp 0x1c2ba
movq 0x18(%rsp), %rdi
movq 0x200(%rsp), %rsi
xorl %edx, %edx
callq 0xdf30
movb %al, 0x16(%rsp)
jmp 0x1c2d4
movb 0x16(%rsp), %al
testb $0x1, %al
jne 0x1c2de
jmp 0x1c342
movq 0x18(%rsp), %rsi
movq 0x200(%rsp), %rdx
leaq 0x180(%rsp), %rdi
leaq 0x1d0(%rsp), %rcx
xorl %r8d, %r8d
callq 0xdf80
jmp 0x1c305
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x6860
leaq 0x180(%rsp), %rdi
callq 0x6720
jmp 0x1c342
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
jmp 0x1c67e
movq 0x18(%rsp), %rdi
callq 0x6110
movq 0x18(%rsp), %rdi
movq %rax, 0x138(%rsp)
callq 0x6470
movq %rax, 0x130(%rsp)
movq 0x200(%rsp), %rcx
movq 0x138(%rsp), %rsi
movq 0x130(%rsp), %rdx
leaq 0x140(%rsp), %rdi
xorl %r8d, %r8d
callq 0xe070
jmp 0x1c390
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 0x1c3c2
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 0x1c3fd
jmp 0x1c3ff
leaq 0x90(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xe260
testb $0x1, %al
jne 0x1c467
movl $0x2, 0x1c0(%rsp)
leaq 0x90(%rsp), %rdi
callq 0xe5e0
jmp 0x1c54d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
jmp 0x1c671
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
jmp 0x1c657
leaq 0x90(%rsp), %rdi
callq 0xe310
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
leaq 0x50(%rsp), %rdi
callq 0xe320
jmp 0x1c487
movq 0x200(%rsp), %rdx
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x1d0(%rsp), %rcx
xorl %r8d, %r8d
callq 0xdf80
jmp 0x1c4ab
leaq 0xd0(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xe290
jmp 0x1c4bf
leaq 0x70(%rsp), %rdi
callq 0x6720
leaq 0x50(%rsp), %rdi
callq 0x6720
leaq 0x90(%rsp), %rdi
callq 0xe370
jmp 0x1c4e2
jmp 0x1c3ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
jmp 0x1c53b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
jmp 0x1c531
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c8(%rsp)
movl %eax, 0x1c4(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x6720
leaq 0x50(%rsp), %rdi
callq 0x6720
leaq 0x90(%rsp), %rdi
callq 0xe5e0
jmp 0x1c657
movq 0x18(%rsp), %rsi
leaq 0x1a0(%rsp), %rdi
callq 0xe600
testb $0x1, %al
jne 0x1c568
jmp 0x1c609
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 0x1c5a8
jmp 0x1c5f3
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 0x1c5d5
movb 0x7(%rsp), %al
movq 0x8(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movb %al, 0x28(%rsp)
leaq 0x40(%rsp), %rdi
callq 0xe730
jmp 0x1c593
movq 0x18(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x6630
jmp 0x1c607
jmp 0x1c609
movq 0x18(%rsp), %rax
movq %rax, 0x210(%rsp)
movl $0x1, 0x1c0(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x9ef0
leaq 0xf0(%rsp), %rdi
callq 0xe5e0
leaq 0x140(%rsp), %rdi
callq 0xe5e0
leaq 0x1a0(%rsp), %rdi
callq 0x6720
jmp 0x1c68d
leaq 0xd0(%rsp), %rdi
callq 0x9ef0
leaq 0xf0(%rsp), %rdi
callq 0xe5e0
leaq 0x140(%rsp), %rdi
callq 0xe5e0
leaq 0x1a0(%rsp), %rdi
callq 0x6720
jmp 0x1c6aa
leaq 0x1d0(%rsp), %rdi
callq 0x6720
movq 0x210(%rsp), %rax
addq $0x218, %rsp            # imm = 0x218
retq
leaq 0x1d0(%rsp), %rdi
callq 0x6720
movq 0x1c8(%rsp), %rdi
callq 0x67b0
nopw %cs:(%rax,%rax)
nop