// File: /workspace/github_cpp_makefile_star2_O2/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 $0x58, %rsp
movq %rdi, %rbx
andw $0x0, (%rdi)
xorl %eax, %eax
movb %al, 0x2(%rdi)
andl $0x0, 0x4(%rdi)
andl $0x0, 0x7(%rdi)
andl $0x0, 0xc(%rdi)
andl $0x0, 0xf(%rdi)
leaq 0x48(%rdi), %rcx
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x27(%rdi)
movq %rcx, 0x38(%rdi)
andq $0x0, 0x40(%rdi)
movq %rsi, %r13
movb %al, 0x48(%rdi)
leaq 0x68(%rdi), %rcx
movq %rcx, 0x58(%rdi)
andq $0x0, 0x60(%rdi)
leaq 0x38(%rdi), %r14
leaq 0x58(%rdi), %r15
movb %al, 0x68(%rdi)
leaq 0xb8(%rdi), %r12
movups %xmm0, 0x78(%rdi)
movups %xmm0, 0x88(%rdi)
movups %xmm0, 0x98(%rdi)
movups %xmm0, 0xa8(%rdi)
movq %r12, %rdi
movq %r14, 0x50(%rsp)
callq 0xc74a
leaq 0x10731(%rip), %rsi     # 0x1b99f
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, (%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x1072d(%rip), %rsi     # 0x1b9ca
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x1(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10721(%rip), %rsi     # 0x1b9ee
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x2(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10757(%rip), %rsi     # 0x1ba54
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x34(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10740(%rip), %rsi     # 0x1ba6d
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x35(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x1078b(%rip), %rsi     # 0x1bae8
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x36(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10848(%rip), %rsi     # 0x1bbd5
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x7208
movq %r14, %rdi
movq %rax, %rsi
callq 0x5240
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x108d8(%rip), %rsi     # 0x1bc9d
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x7208
movq %r15, %rdi
movq %rax, %rsi
callq 0x5240
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10a83(%rip), %rsi     # 0x1be80
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x714e
leaq 0x4(%rbx), %rcx
movl %eax, (%rcx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10a97(%rip), %rsi     # 0x1bec7
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x8(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10a90(%rip), %rsi     # 0x1bef0
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x9(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10ae4(%rip), %rsi     # 0x1bf74
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x72f2
leaq 0xc(%rbx), %rcx
movl %eax, (%rcx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10ab1(%rip), %rsi     # 0x1bf74
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x7208
movq %rax, %rbp
leaq 0x10b56(%rip), %rsi     # 0x1c03f
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x760a
leaq 0x30(%rsp), %r14
movq %rbp, %rdi
movq %r14, %rsi
callq 0x8c40
movb %al, 0xa(%rbx)
movq %r14, %rdi
callq 0x51f0
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x108ba(%rip), %rsi     # 0x1bdde
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x12(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
leaq 0x10852(%rip), %rsi     # 0x1bda6
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
testb %al, %al
je 0xb57a
movb $0x1, 0x11(%rbx)
jmp 0xb5aa
leaq 0x10b27(%rip), %rsi     # 0x1c0a8
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x760a
leaq 0x30(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movb %al, 0x11(%rbx)
leaq 0x30(%rsp), %rdi
callq 0x51f0
leaq 0x10(%rsp), %rdi
callq 0x51f0
movb 0x12(%rbx), %al
testb %al, %al
je 0xb5c1
movb $0x0, 0x10(%rbx)
jmp 0xb5f6
leaq 0x10ae0(%rip), %rsi     # 0x1c0a8
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
xorb $0x1, %al
movb %al, 0x10(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x51f0
movb 0x12(%rbx), %al
testb $0x1, %al
je 0xb604
cmpb $0x1, 0x11(%rbx)
je 0xb78e
leaq 0x1079b(%rip), %rsi     # 0x1bda6
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x760a
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
testb %al, %al
je 0xb6bc
leaq 0x10a72(%rip), %rsi     # 0x1c0a8
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x760a
leaq 0x30(%rsp), %rsi
movq %r13, %rdi
callq 0x79ee
movl %eax, %ebp
leaq 0x30(%rsp), %rdi
callq 0x51f0
leaq 0x10(%rsp), %rdi
callq 0x51f0
testb %bpl, %bpl
je 0xb6c6
pushq $0x10
popq %rdi
callq 0x5210
movq %rax, %rbp
leaq 0x10a06(%rip), %rsi     # 0x1c085
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
movb $0x1, %r14b
leaq 0x10(%rsp), %rsi
movq %rbp, %rdi
callq 0xc7be
xorl %r14d, %r14d
leaq 0x1f430(%rip), %rsi     # 0x2aad8
leaq -0x1593(%rip), %rdx     # 0xa11c
movq %rbp, %rdi
callq 0x56f0
jmp 0xb7d8
leaq 0x10(%rsp), %rdi
callq 0x51f0
movb 0x9(%rbx), %al
orb %al, 0x8(%rbx)
movzbl 0x34(%rbx), %eax
orl $0x10, %eax
movl %eax, 0x30(%rbx)
cmpq $0x0, 0x40(%rbx)
je 0xb6f3
cmpq $0x0, 0x60(%rbx)
je 0xb742
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x5210
movq %rax, %rbp
leaq 0x109af(%rip), %rsi     # 0x1c0b4
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
movb $0x1, %r14b
leaq 0x10(%rsp), %rsi
movq %rbp, %rdi
callq 0xc7be
xorl %r14d, %r14d
leaq 0x1f3aa(%rip), %rsi     # 0x2aad8
leaq -0x1619(%rip), %rdx     # 0xa11c
movq %rbp, %rdi
callq 0x56f0
jmp 0xb7d8
pushq $0x10
popq %rdi
callq 0x5210
movq %rax, %rbp
leaq 0x1097b(%rip), %rsi     # 0x1c0cf
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
movb $0x1, %r14b
leaq 0x10(%rsp), %rsi
movq %rbp, %rdi
callq 0xc7be
xorl %r14d, %r14d
leaq 0x1f35b(%rip), %rsi     # 0x2aad8
leaq -0x1668(%rip), %rdx     # 0xa11c
movq %rbp, %rdi
callq 0x56f0
jmp 0xb7d8
pushq $0x10
popq %rdi
callq 0x5210
movq %rax, %rbp
leaq 0x108a1(%rip), %rsi     # 0x1c041
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x760a
movb $0x1, %r14b
leaq 0x10(%rsp), %rsi
movq %rbp, %rdi
callq 0xc7be
xorl %r14d, %r14d
leaq 0x1f30f(%rip), %rsi     # 0x2aad8
leaq -0x16b4(%rip), %rdx     # 0xa11c
movq %rbp, %rdi
callq 0x56f0
jmp 0xb7e4
jmp 0xb7f8
jmp 0xb7e4
jmp 0xb7f8
jmp 0xb7e4
jmp 0xb7f8
movq %rax, %r13
leaq 0x10(%rsp), %rdi
callq 0x51f0
testb %r14b, %r14b
jne 0xb7fb
jmp 0xb873
movq %rax, %r13
movq %rbp, %rdi
callq 0x5330
jmp 0xb873
jmp 0xb80d
jmp 0xb866
jmp 0xb866
jmp 0xb85a
movq %rax, %r13
leaq 0x30(%rsp), %rdi
callq 0x51f0
jmp 0xb869
jmp 0xb866
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb85a
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
jmp 0xb85a
jmp 0xb866
movq %rax, %r13
jmp 0xb873
movq %rax, %r13
jmp 0xb87b
jmp 0xb866
movq %rax, %r13
leaq 0x10(%rsp), %rdi
callq 0x51f0
movq %r12, %rdi
callq 0xc7d4
addq $0x18, %rbx
movq %r15, %rdi
callq 0x51f0
movq 0x50(%rsp), %rdi
callq 0x51f0
movq %rbx, %rdi
callq 0xc7f4
movq %r13, %rdi
callq 0x5730
nop