// File: jovermann[P]streplace/src/streplace.cpp
// Function: Rule::Rule(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)
Rule(const std::string& rule, const std::string& separator, bool noRegex)
    {
        std::vector<std::string> sides = ut1::splitString(rule, separator);
        if (sides.size() != 2)
        {
            throw Error("Rule \"" + rule + "\" must contain exactly one separator '" + separator + "' (got " + std::to_string(sides.size() - 1) + ")." + ((sides.size() >= 2) ? " You can choose a different/unique separator string using --equals to avoid conflicts with the left and right side of the rule." : ""));
        }
        lhs = std::move(sides[0]);
        rhs = ut1::compileCString(sides[1]);
        if (noRegex)
        {
            lhs = ut1::quoteRegexChars(lhs);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x198(%rbp)
movq %rdi, %rax
movq %rax, -0x1a8(%rbp)
callq 0x7860
movq -0x198(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x7860
movq -0x198(%rbp), %rax
movq $0x0, 0x40(%rax)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x38(%rbp), %rdi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x11e40
jmp 0x1aa66
leaq -0x38(%rbp), %rdi
callq 0xb550
cmpq $0x2, %rax
je 0x1acc8
movb $0x1, -0x149(%rbp)
movl $0x10, %edi
callq 0x7310
movq %rax, -0x1b0(%rbp)
movq -0x10(%rbp), %rdx
leaq 0x309a0(%rip), %rsi     # 0x4b43c
leaq -0x128(%rbp), %rdi
callq 0xb5b0
jmp 0x1aaaa
leaq 0x30992(%rip), %rdx     # 0x4b443
leaq -0x108(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xb720
jmp 0x1aac6
movq -0x18(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x1add0
jmp 0x1aadf
leaq 0x30984(%rip), %rdx     # 0x4b46a
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xb720
jmp 0x1aafb
leaq -0x38(%rbp), %rdi
callq 0xb550
movq %rax, %rsi
decq %rsi
leaq -0x148(%rbp), %rdi
callq 0x1ae20
jmp 0x1ab18
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0xc4e0
jmp 0x1ab34
leaq 0x3080a(%rip), %rdx     # 0x4b345
leaq -0x88(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xb720
jmp 0x1ab50
leaq -0x38(%rbp), %rdi
callq 0xb550
subq $0x2, %rax
leaq 0x3090e(%rip), %rax     # 0x4b472
leaq 0x2f523(%rip), %rdx     # 0x4a08e
cmovaeq %rax, %rdx
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0xb720
jmp 0x1ab81
movq -0x1b0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1a140
jmp 0x1ab93
movq -0x1b0(%rbp), %rdi
movb $0x0, -0x149(%rbp)
leaq 0x4eef0(%rip), %rsi     # 0x69a98
leaq -0x617f(%rip), %rdx     # 0x14a30
callq 0x79d0
jmp 0x1adc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ada3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1acac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1aca0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x73c0
leaq -0x88(%rbp), %rdi
callq 0x73c0
leaq -0xa8(%rbp), %rdi
callq 0x73c0
leaq -0x148(%rbp), %rdi
callq 0x73c0
leaq -0xc8(%rbp), %rdi
callq 0x73c0
leaq -0xe8(%rbp), %rdi
callq 0x73c0
leaq -0x108(%rbp), %rdi
callq 0x73c0
leaq -0x128(%rbp), %rdi
callq 0x73c0
testb $0x1, -0x149(%rbp)
jne 0x1acb7
jmp 0x1acc3
movq -0x1b0(%rbp), %rdi
callq 0x74a0
jmp 0x1ad9a
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x1b8(%rbp)
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0xc3a0
movq -0x1a8(%rbp), %rdi
movq %rax, %rsi
callq 0x7750
movq -0x1c0(%rbp), %rdi
movl $0x1, %esi
callq 0xc3a0
movq -0x1b8(%rbp), %rdx
movq %rax, %rsi
leaq -0x170(%rbp), %rdi
callq 0x118e0
jmp 0x1ad1b
movq -0x1a8(%rbp), %rdi
addq $0x20, %rdi
leaq -0x170(%rbp), %rsi
callq 0x7750
leaq -0x170(%rbp), %rdi
callq 0x73c0
testb $0x1, -0x19(%rbp)
je 0x1ad88
movq -0x1a8(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x12980
jmp 0x1ad59
movq -0x1a8(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x7750
leaq -0x190(%rbp), %rdi
callq 0x73c0
jmp 0x1ad88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ad9a
leaq -0x38(%rbp), %rdi
callq 0xb3c0
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0xb3c0
movq -0x1a0(%rbp), %rdi
callq 0x73c0
movq -0x198(%rbp), %rdi
callq 0x73c0
movq -0x40(%rbp), %rdi
callq 0x7a30
nopw %cs:(%rax,%rax)
nop