// File: /workspace/github_cpp_makefile_star2_O3/jovermann[P]streplace/src/streplace.cpp
// Function: Streplace::Streplace(ut1::CommandLineParser const&)
explicit Streplace(const ut1::CommandLineParser& cl)
    {
        // Get command line options.
        recursive   = cl("recursive");
        followLinks = cl("follow-links");
        all         = cl("all");

        ignoreCase = cl("ignore-case");
        noRegex    = cl("no-regex");
        wholeWords = cl("whole-words");
        equals     = cl.getStr("equals");
        dollar     = cl.getStr("dollar");

        verbose        = cl.getCount("verbose");
        dummyMode      = cl("dummy-mode");
        preview        = cl("preview");
        context        = int(cl.getInt("context"));
        previewHideSep = ut1::hasPrefix(cl.getStr("context"), "+");

        // Derive rename/symlink/file content mode.
        modifySymlinks = cl("modify-symlinks");
        rename = cl("rename") || cl("rename-only");
        modifyFiles = (!modifySymlinks) && (!cl("rename-only"));
        if (modifySymlinks && rename)
        {
            throw Error("--modify-symlinks cannot be combined with --rename or --rename-only");
        }
        if (cl("rename") && cl("rename-only"))
        {
            throw Error("--rename cannot be combined with --rename-only");
        }

        // Implicit options.
        dummyMode |= preview;

        // Regex flags.
        regexFlags = std::regex::ECMAScript; // | std::regex::multiline;
#if 0
        regexFlags = std::regex::egrep;
        regexFlags = std::regex::extended;
        regexFlags = std::regex::basic;
        regexFlags = std::regex::grep;
        regexFlags = std::regex::awk;
#endif
        if (ignoreCase)
        {
            regexFlags |= std::regex::icase;
        }

        if (equals.empty())
        {
            throw Error("--equals must not be empty");
        }
        if (dollar.empty())
        {
            throw Error("--dollar must not be empty");
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %r12
movq %rdi, %rbx
movw $0x0, (%rdi)
xorl %eax, %eax
movb %al, 0x2(%rdi)
leaq 0x38(%rdi), %r15
leaq 0x48(%rdi), %rcx
movl %eax, 0x4(%rdi)
movl %eax, 0x7(%rdi)
movl %eax, 0xc(%rdi)
movl %eax, 0xf(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x27(%rdi)
movq %rcx, 0x50(%rsp)
movq %rcx, 0x38(%rdi)
movq %rax, 0x40(%rdi)
movb %al, 0x48(%rdi)
leaq 0x58(%rdi), %rbp
leaq 0x68(%rdi), %rcx
movq %rcx, 0x48(%rsp)
movq %rcx, 0x58(%rdi)
movq %rax, 0x60(%rdi)
movb %al, 0x68(%rdi)
leaq 0xc8(%rdi), %rax
movups %xmm0, 0x78(%rdi)
movups %xmm0, 0x88(%rdi)
movups %xmm0, 0x98(%rdi)
movups %xmm0, 0xa8(%rdi)
movq %rax, 0xb8(%rdi)
movw $0x6d, %ax
movw %ax, 0xcc(%rdi)
movl $0x31305b1b, 0xc8(%rdi) # imm = 0x31305B1B
movl $0x5, %ecx
movq %rcx, 0xc0(%rdi)
leaq 0xe8(%rdi), %rdx
movq %rdx, 0xd8(%rdi)
movw %ax, 0xec(%rdi)
movl $0x37305b1b, 0xe8(%rdi) # imm = 0x37305B1B
movq %rcx, 0xe0(%rdi)
leaq 0x108(%rdi), %rdx
movq %rdx, 0xf8(%rdi)
movw %ax, 0x10c(%rdi)
movl $0x30305b1b, 0x108(%rdi) # imm = 0x30305B1B
movq %rcx, 0x100(%rdi)
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x14298(%rip), %rsi     # 0x2199f
leaq 0x1429a(%rip), %rdx     # 0x219a8
leaq 0x8(%rsp), %rdi
movq %r15, 0x60(%rsp)
movq %rbp, 0x58(%rsp)
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne (%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd74b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14270(%rip), %rsi     # 0x219ca
leaq 0x14275(%rip), %rdx     # 0x219d6
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x1(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd790
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1424f(%rip), %rsi     # 0x219ee
leaq 0x1424b(%rip), %rdx     # 0x219f1
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x2(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd7d5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14270(%rip), %rsi     # 0x21a54
leaq 0x14274(%rip), %rdx     # 0x21a5f
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x34(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd81a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14244(%rip), %rsi     # 0x21a6d
leaq 0x14245(%rip), %rdx     # 0x21a75
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x35(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd85f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1427a(%rip), %rsi     # 0x21ae8
leaq 0x1427e(%rip), %rdx     # 0x21af3
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x36(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd8a4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14322(%rip), %rsi     # 0x21bd5
leaq 0x14321(%rip), %rdx     # 0x21bdb
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x83be
movq %r15, %rdi
movq %rax, %rsi
callq 0x5220
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd8ee
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x143a0(%rip), %rsi     # 0x21c9d
leaq 0x1439f(%rip), %rdx     # 0x21ca3
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x83be
movq %rbp, %rdi
movq %rax, %rsi
callq 0x5220
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd938
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14539(%rip), %rsi     # 0x21e80
leaq 0x14539(%rip), %rdx     # 0x21e87
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
leaq 0x4(%rbx), %rcx
movl %eax, (%rcx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd97d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1453b(%rip), %rsi     # 0x21ec7
leaq 0x1453e(%rip), %rdx     # 0x21ed1
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x8(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd9c2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1451f(%rip), %rsi     # 0x21ef0
leaq 0x1451f(%rip), %rdx     # 0x21ef7
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x9(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xda07
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1455e(%rip), %rsi     # 0x21f74
leaq 0x1455e(%rip), %rdx     # 0x21f7b
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8534
leaq 0xc(%rbx), %rcx
movl %eax, (%rcx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xda4c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14519(%rip), %rsi     # 0x21f74
leaq 0x14519(%rip), %rdx     # 0x21f7b
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x83be
movq %rax, %r13
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x145b8(%rip), %rsi     # 0x2203f
leaq 0x145b2(%rip), %rdx     # 0x22040
leaq 0x28(%rsp), %rdi
callq 0x9172
leaq 0x28(%rsp), %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0xa358
movb %al, 0xa(%rbx)
movq (%rbp), %rdi
cmpq %r15, %rdi
je 0xdac1
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5410
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdad8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x142f7(%rip), %rsi     # 0x21dde
leaq 0x142ff(%rip), %rdx     # 0x21ded
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x12(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdb1d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1427a(%rip), %rsi     # 0x21da6
leaq 0x14279(%rip), %rdx     # 0x21dac
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
je 0xdb4f
movb $0x1, 0x11(%rbx)
jmp 0xdb94
leaq 0x28(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x1454a(%rip), %rsi     # 0x220a8
leaq 0x1454e(%rip), %rdx     # 0x220b3
callq 0x9172
leaq 0x28(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne 0x11(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0xdb94
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5410
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdbab
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
movb 0x12(%rbx), %al
testb %al, %al
je 0xdbb8
movb $0x0, 0x10(%rbx)
jmp 0xdc00
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x144e1(%rip), %rsi     # 0x220a8
leaq 0x144e5(%rip), %rdx     # 0x220b3
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
sete 0x10(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdbfd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
movb 0x12(%rbx), %al
testb $0x1, %al
je 0xdc0e
cmpb $0x1, 0x11(%rbx)
je 0xdded
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14189(%rip), %rsi     # 0x21da6
leaq 0x14188(%rip), %rdx     # 0x21dac
callq 0x9172
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
je 0xdc81
leaq 0x28(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x1445f(%rip), %rsi     # 0x220a8
leaq 0x14463(%rip), %rdx     # 0x220b3
callq 0x9172
leaq 0x28(%rsp), %rsi
movq %r12, %rdi
callq 0x8260
testl %eax, %eax
setne %bpl
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0xdc83
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5410
jmp 0xdc83
xorl %ebp, %ebp
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdc9a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
testb %bpl, %bpl
jne 0xdcd0
movb 0x9(%rbx), %al
orb %al, 0x8(%rbx)
movzbl 0x34(%rbx), %eax
orl $0x10, %eax
movl %eax, 0x30(%rbx)
cmpq $0x0, 0x40(%rbx)
je 0xdd30
cmpq $0x0, 0x60(%rbx)
je 0xdd90
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x51e0
movq %rax, %r13
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14399(%rip), %rsi     # 0x22085
leaq 0x143c0(%rip), %rdx     # 0x220b3
callq 0x9172
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0x5520
leaq 0x1fda1(%rip), %rax     # 0x2dab0
movq %rax, (%r13)
xorl %ebp, %ebp
leaq 0x1fdac(%rip), %rsi     # 0x2dac8
leaq -0x1e53(%rip), %rdx     # 0xbed0
movq %r13, %rdi
callq 0x56e0
jmp 0xde48
movl $0x10, %edi
callq 0x51e0
movq %rax, %r13
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14368(%rip), %rsi     # 0x220b4
leaq 0x1437b(%rip), %rdx     # 0x220ce
callq 0x9172
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0x5520
leaq 0x1fd41(%rip), %rax     # 0x2dab0
movq %rax, (%r13)
xorl %ebp, %ebp
leaq 0x1fd4c(%rip), %rsi     # 0x2dac8
leaq -0x1eb3(%rip), %rdx     # 0xbed0
movq %r13, %rdi
callq 0x56e0
jmp 0xde48
movl $0x10, %edi
callq 0x51e0
movq %rax, %r13
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14323(%rip), %rsi     # 0x220cf
leaq 0x14336(%rip), %rdx     # 0x220e9
callq 0x9172
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0x5520
leaq 0x1fce1(%rip), %rax     # 0x2dab0
movq %rax, (%r13)
xorl %ebp, %ebp
leaq 0x1fcec(%rip), %rsi     # 0x2dac8
leaq -0x1f13(%rip), %rdx     # 0xbed0
movq %r13, %rdi
callq 0x56e0
jmp 0xde48
movl $0x10, %edi
callq 0x51e0
movq %rax, %r13
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x14238(%rip), %rsi     # 0x22041
leaq 0x14274(%rip), %rdx     # 0x22084
callq 0x9172
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0x5520
leaq 0x1fc84(%rip), %rax     # 0x2dab0
movq %rax, (%r13)
xorl %ebp, %ebp
leaq 0x1fc8f(%rip), %rsi     # 0x2dac8
leaq -0x1f70(%rip), %rdx     # 0xbed0
movq %r13, %rdi
callq 0x56e0
jmp 0xde5b
jmp 0xde7f
jmp 0xde90
jmp 0xdef1
jmp 0xde5b
jmp 0xde7f
jmp 0xde5b
jmp 0xde7f
movq %rax, %r12
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xde75
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
testb %bpl, %bpl
jne 0xde82
jmp 0xdf0b
movq %rax, %r12
movq %r13, %rdi
callq 0x5310
jmp 0xdf0b
jmp 0xdef1
jmp 0xdeea
movq %rax, %r12
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0xdef4
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5410
jmp 0xdef4
jmp 0xdef1
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdeea
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
jmp 0xdeea
jmp 0xdef1
movq %rax, %r12
jmp 0xdf0b
jmp 0xdef1
movq %rax, %r12
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdf0b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5410
leaq 0xb8(%rbx), %rdi
callq 0x1060c
movq 0x58(%rsp), %rax
movq (%rax), %rdi
cmpq 0x48(%rsp), %rdi
je 0xdf36
movq 0x48(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x5410
addq $0x18, %rbx
movq 0x60(%rsp), %rax
movq (%rax), %rdi
cmpq 0x50(%rsp), %rdi
je 0xdf59
movq 0x50(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x5410
movq %rbx, %rdi
callq 0x1065a
movq %r12, %rdi
callq 0x5720
nop