// File: /workspace/github_cpp_makefile_star2_O1/hanhwi[P]SimPoint/analysiscode/SimpointOptions.cpp
// Function: SimpointOptions::validateOptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
bool SimpointOptions::validateOptions(string *errMsg) {
    // exactly one of loadVectorsTxtFmt or loadVectorsBinFmt or loadFVFile must be specified
    int numLoadOptions = (loadVectorsTxtFmtName != "") +
        (loadVectorsBinFmtName != "") + (frequencyVectorFileName != "");
    if ((numLoadOptions == 0) || (numLoadOptions > 1)) {
        *errMsg = "Exactly one of -loadVectorsTxtFmt, -loadVectorsBinFmt, or "
            "-loadFVFile must be specified";
        return false;
    }

    // check that the user has not specified an initial set of centers or labels
    // and also specified -k
    if ((loadInitialLabelsName != "") || (loadInitialCentersName != "")) {
        if (cmdLineParser.findOption("k")->isSpecified()) {
            *errMsg = "Cannot specify -k when loading initial centers or labels; "
                      "the k value comes from the loaded file";
            return false;
        }

        if (cmdLineParser.findOption("numInitSeeds")->isSpecified()) {
            *errMsg = "Cannot specify -numInitSeeds when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("seedkm")->isSpecified()) {
            *errMsg = "Cannot specify -seedkm when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("initkm")->isSpecified()) {
            *errMsg = "Cannot specify -initkm when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("maxK")->isSpecified()) {
            *errMsg = "Cannot specify -maxK when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("bicThreshold")->isSpecified()) {
            *errMsg = "Should not specify -bicThreshold when loading initial "
                "centers or labels, as only the given centers are used (no "
                "search is performed)";
            return false;
        }

        // if the user did specify an initialization, find the k value from the
        // user-provided file
        learnKFromFile = true;
        useBinarySearch = false;

        numInitSeeds = 1;
    }


    // if using binary search, maxK must be specified
    if (useBinarySearch && (! cmdLineParser.findOption("maxK")->isSpecified())) {
        *errMsg = "When -k \"search\" is used, -maxK must also be specified";
        return false;
    }

    // if not using binary search, maxK has no effect
    if ((! useBinarySearch) && cmdLineParser.findOption("maxK")->isSpecified()) {
        *errMsg = "When specific values are given for -k, -maxK has no effect "
            "and should not be specified";
        return false;
    }

    // if loading from projected data and specifying -dim, -dim has no effect
    bool preProjected = (loadVectorsTxtFmtName != "") || (loadVectorsBinFmtName != "");
    if (preProjected) {
        if (cmdLineParser.findOption("dim")->isSpecified()) {
            *errMsg = "When loading pre-projected data with -loadVectorsTxtFmt or "
                      "-loadVectorsBinFmt, -dim has no effect and should not be specified";
            return false;
        }

    }

    if (cmdLineParser.findOption("seedproj")->isSpecified()) {
        if (preProjected) {
            *errMsg = "When loading pre-projected data with -loadVectorsTxtFmt or "
                      "-loadVectorsBinFmt, -seedproj has no effect and should "
                      "not be specified";
            return false;
        }

        if ((loadProjMatrixTxtFmtName != "") || (loadProjMatrixBinFmtName != "")) {
            *errMsg = "Loading a projection matrix and specifying a projection "
                "seed are incompatible options";
            return false;
        }
    }


    // noProject has no effect with seedproj and loading pre-projected data
    if (useNoProjection) {
        if ((saveProjMatrixTxtFmtName != "") || (saveProjMatrixBinFmtName != "")) {
            *errMsg = "No projection matrix is used when using -dim noProject; "
                "-saveProjMatrixTxtFmt and -saveProjMatrixBinFmt have no effect";
            return false;
        }

        if (cmdLineParser.findOption("seedproj")->isSpecified()) {
            *errMsg = "No projection matrix is used when using -dim noProject; "
                "-seedproj has no effect";
            return false;
        }
    }

    // if loading simpoint-vector data, no projection matrix is used
    if (((loadProjMatrixTxtFmtName != "") || (loadProjMatrixBinFmtName != "") ||
         (saveProjMatrixTxtFmtName != "") || (saveProjMatrixBinFmtName != "")) &&
        ((loadVectorsTxtFmtName != "") || (loadVectorsBinFmtName != ""))) {
        *errMsg = "Cannot load or save a projection matrix when vectors are "
            "loaded with -loadVectorsTxtFmt or -loadVectorsBinFmt";
        return false;
    }


    // -FVDim and -numFVs must be specified together, and only with -loadFVFile
    bool fvd_spec = cmdLineParser.findOption("FVDim")->isSpecified();
    bool nfv_spec = cmdLineParser.findOption("numFVs")->isSpecified();
    if ((fvd_spec || nfv_spec) && preProjected) {
        *errMsg = "When loading with -loadVectorsTxtFmt or -loadVectorsBinFmt,"
                  "-numFVs and -FVDim have no effect and should not be specified";
        return false;
    }
    if ((fvd_spec && (! nfv_spec)) || ((! fvd_spec) && nfv_spec)) {
        *errMsg = "Both -numFVs and -FVDim must be specified together";
        return false;
    }

    // check that the user has not specified two projection matrices
    if ((loadProjMatrixTxtFmtName != "") && (loadProjMatrixBinFmtName != "")) {
        *errMsg = "Only one of -loadProjMatrixTxtFmt and -loadProjMatrixBinFmt "
            "may be specified";
        return false;
    }

    // check that the user has not specified a projection matrix with
    // pre-projected data
    if (preProjected && ((loadProjMatrixTxtFmtName != "") ||
                (loadProjMatrixBinFmtName != ""))) {
        *errMsg = "Loading a projection matrix has no effect on data loaded with "
                  "-loadVectorsTxtFmt or -loadVectorsBinFmt";
        return false;
    }

    // check that the user has not specified the k-means initialization type and
    // an initial set of labels
    if (cmdLineParser.findOption("initkm")->isSpecified() &&
        ((loadInitialLabelsName != "") || (loadInitialCentersName != ""))) {
        *errMsg = "Loading initial labels or centers is incompatible with "
                  "specifying the k-means initialization method";
        return false;
    }

    // loading initial centers and labels is incompatible
    if ((loadInitialLabelsName != "") && (loadInitialCentersName != "")) {
        *errMsg = "Cannot specify both -loadInitCtrs and -loadInitLabels";
        return false;
    }

    // fixed length vectors setting should be consistent with loading data from
    // pre-projected data files, which may have non-uniform weights
    if ((! cmdLineParser.findOption("fixedLength")->isSpecified()) && preProjected) {
        *errMsg = "You should specify the -fixedLength option (on or off) "
                  "explicitly when using -loadVectorsTxtFmt or -loadVectorsBinFmt";
        return false;
    }

    // assume that if the user provides weights, they want fixed-length = off
    if (loadVectorWeightsName != "") {
        fixedLength = "off";
    }

    // fixedLength and loadVectorWeights are incompatible
    if ((fixedLength == "on") && 
            cmdLineParser.findOption("loadVectorWeights")->isSpecified()) {
        *errMsg = "Fixed-length vectors (-fixedLength on) is incompatible "
                  "with -loadVectorWeights";
        return false;
    }

    // check that if the user specifies a sample seed, he also specifies the
    // sample size
    if (cmdLineParser.findOption("seedsample")->isSpecified() &&
            (! cmdLineParser.findOption("sampleSize")->isSpecified())) {
        *errMsg = "When specifying -seedsample, you must also specify -sampleSize";
        return false;
    }

    // coveragePct only has an effect on two options
    if (cmdLineParser.findOption("coveragePct")->isSpecified() &&
        ((saveSimpointWeightsName == "") && (saveSimpointsName == ""))) {
        *errMsg = "When specifying -coveragePct, you must also specify "
            "-saveSimpoints and/or -saveSimpointWeights";
        return false;
    }

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %r13
movq %rdi, %r14
addq $0x248, %rdi            # imm = 0x248
leaq 0x6a4c(%rip), %r15      # 0x1c23a
movq %rdi, -0x88(%rbp)
movq %r15, %rsi
callq 0x40e0
movl %eax, %ebx
leaq 0x268(%r14), %rdi
movq %rdi, -0x80(%rbp)
movq %r15, %rsi
callq 0x40e0
xorl %r12d, %r12d
testl %eax, %eax
setne %r12b
cmpl $0x1, %ebx
sbbl $-0x1, %r12d
movq %r14, %rdi
movq %r15, %rsi
callq 0x40e0
cmpl $0x1, %eax
sbbl $-0x1, %r12d
cmpl $0x1, %r12d
jne 0x158f3
movq %r13, -0x30(%rbp)
leaq 0x228(%r14), %r13
leaq 0x69ea(%rip), %rsi      # 0x1c23a
movq %r13, %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15877
leaq 0x208(%r14), %rdi
leaq 0x69d0(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15b46
leaq -0x60(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x78b4(%rip), %rsi      # 0x1d13a
leaq 0x78ae(%rip), %rdx      # 0x1d13b
leaq -0x70(%rbp), %rdi
callq 0x6086
leaq 0x308(%r14), %r15
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x158d4
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15926
movq -0x30(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x900b(%rip), %rcx      # 0x1e8f3
xorl %r14d, %r14d
movl $0x60, %r8d
jmp 0x1590a
movq 0x8(%r13), %rdx
leaq 0x8f9d(%rip), %rcx      # 0x1e89b
xorl %r14d, %r14d
movl $0x57, %r8d
movq %r13, %rdi
xorl %esi, %esi
callq 0x44b0
movl %r14d, %eax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x70(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7b8c(%rip), %rsi      # 0x1d4c0
leaq 0x7b91(%rip), %rdx      # 0x1d4cc
callq 0x6086
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15977
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15999
movq -0x30(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8fc9(%rip), %rcx      # 0x1e954
xorl %r14d, %r14d
movl $0x6a, %r8d
jmp 0x1590a
leaq -0x70(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8d26(%rip), %rsi      # 0x1e6cd
leaq 0x8d25(%rip), %rdx      # 0x1e6d3
callq 0x6086
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x159ea
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15a00
movq -0x30(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8fc1(%rip), %rcx      # 0x1e9bf
jmp 0x15a65
leaq -0x70(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7ee8(%rip), %rsi      # 0x1d8f6
leaq 0x7ee7(%rip), %rdx      # 0x1d8fc
callq 0x6086
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15a51
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15a73
movq -0x30(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8fbf(%rip), %rcx      # 0x1ea24
xorl %r14d, %r14d
movl $0x64, %r8d
jmp 0x1590a
leaq -0x70(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x79b4(%rip), %rsi      # 0x1d435
leaq 0x79b1(%rip), %rdx      # 0x1d439
callq 0x6086
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15ac4
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15ad5
leaq 0x8fb9(%rip), %rsi      # 0x1ea89
jmp 0x15f00
leaq -0x70(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7c1a(%rip), %rsi      # 0x1d6fd
leaq 0x7c1f(%rip), %rdx      # 0x1d709
callq 0x6086
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15b26
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15b37
leaq 0x8fba(%rip), %rsi      # 0x1eaec
jmp 0x15f00
movw $0x100, 0x30(%r14)      # imm = 0x100
movl $0x1, 0x6c(%r14)
movb 0x30(%r14), %bl
cmpb $0x1, %bl
jne 0x15b9a
leaq -0x60(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x78d7(%rip), %rsi      # 0x1d435
leaq 0x78d4(%rip), %rdx      # 0x1d439
leaq -0x70(%rbp), %rdi
callq 0x6086
leaq 0x308(%r14), %rdi
leaq -0x70(%rbp), %rsi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
xorb $0x1, %r15b
jmp 0x15b9d
xorl %r15d, %r15d
testb %bl, %bl
movq -0x30(%rbp), %rbx
je 0x15bbe
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15bbe
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15bdc
movq 0x8(%rbx), %rdx
leaq 0x8fa3(%rip), %rcx      # 0x1eb71
xorl %r14d, %r14d
movl $0x36, %r8d
jmp 0x15c77
movb 0x30(%r14), %bl
testb %bl, %bl
je 0x15be9
xorl %r15d, %r15d
jmp 0x15c37
leaq -0xd8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x783a(%rip), %rsi      # 0x1d435
leaq 0x7837(%rip), %rdx      # 0x1d439
leaq -0xe8(%rbp), %rdi
callq 0x6086
leaq 0x308(%r14), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
testb %bl, %bl
movq -0x30(%rbp), %rbx
jne 0x15c5e
leaq -0xd8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15c5e
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15c7f
movq 0x8(%rbx), %rdx
leaq 0x8f3a(%rip), %rcx      # 0x1eba8
xorl %r14d, %r14d
movl $0x56, %r8d
movq %rbx, %rdi
jmp 0x1590a
leaq 0x65b4(%rip), %rsi      # 0x1c23a
movq -0x88(%rbp), %rdi
callq 0x40e0
movb $0x1, %r15b
testl %eax, %eax
jne 0x15caf
leaq 0x659a(%rip), %rsi      # 0x1c23a
movq -0x80(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
setne %r15b
leaq -0x40(%rbp), %rbx
testb %r15b, %r15b
je 0x15d1e
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x763f(%rip), %rsi      # 0x1d305
leaq 0x763b(%rip), %rdx      # 0x1d308
callq 0x6086
leaq 0x308(%r14), %rdi
leaq -0x50(%rbp), %rsi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15d0d
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15d1e
leaq 0x8ee6(%rip), %rsi      # 0x1ebff
jmp 0x15f00
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8a04(%rip), %rsi      # 0x1e730
leaq 0x8a05(%rip), %rdx      # 0x1e738
callq 0x6086
leaq 0x308(%r14), %rdi
leaq -0x50(%rbp), %rsi
movq %rdi, -0x78(%rbp)
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15d77
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15dc7
testb %r15b, %r15b
je 0x15d8d
leaq 0x8ef5(%rip), %rsi      # 0x1ec7d
jmp 0x15f00
leaq 0x2a8(%r14), %rdi
leaq 0x649f(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15dbb
leaq 0x288(%r14), %rdi
leaq 0x6488(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15dc7
leaq 0x8f3e(%rip), %rsi      # 0x1ed00
jmp 0x15f00
cmpb $0x1, 0x28(%r14)
jne 0x15e6f
leaq 0x1c8(%r14), %rdi
leaq 0x645a(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15e00
leaq 0x1e8(%r14), %rdi
leaq 0x6443(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15e0c
leaq 0x8f4f(%rip), %rsi      # 0x1ed56
jmp 0x15f00
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8916(%rip), %rsi      # 0x1e730
leaq 0x8917(%rip), %rdx      # 0x1e738
callq 0x6086
leaq -0x50(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15e5e
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15e6f
leaq 0x8f63(%rip), %rsi      # 0x1edcd
jmp 0x15f00
leaq 0x2a8(%r14), %r12
leaq 0x63bd(%rip), %rsi      # 0x1c23a
movq %r12, %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15ece
leaq 0x288(%r14), %rdi
leaq 0x63a3(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15ece
leaq 0x1c8(%r14), %rdi
leaq 0x638c(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15ece
leaq 0x1e8(%r14), %rdi
leaq 0x6375(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15f11
leaq 0x6365(%rip), %rsi      # 0x1c23a
movq -0x88(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15ef9
leaq 0x634e(%rip), %rsi      # 0x1c23a
movq -0x80(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x15f11
leaq 0x8f1d(%rip), %rsi      # 0x1ee1d
movq -0x30(%rbp), %rdi
callq 0x4410
xorl %r14d, %r14d
jmp 0x15911
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x86cc(%rip), %rsi      # 0x1e5eb
leaq 0x86ca(%rip), %rdx      # 0x1e5f0
callq 0x6086
movq %r12, -0x88(%rbp)
leaq -0x50(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15f6a
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x85fa(%rip), %rsi      # 0x1e572
leaq 0x85f9(%rip), %rdx      # 0x1e578
callq 0x6086
movq %r13, -0x80(%rbp)
leaq -0x50(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r13b
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15fc0
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
movl %r12d, %eax
orb %r13b, %al
andb %r15b, %al
cmpb $0x1, %al
jne 0x15fd9
leaq 0x8eb7(%rip), %rsi      # 0x1ee8b
jmp 0x15f00
cmpb %r13b, %r12b
je 0x15fea
leaq 0x8f1f(%rip), %rsi      # 0x1ef04
jmp 0x15f00
leaq 0x6249(%rip), %rsi      # 0x1c23a
movq -0x88(%rbp), %r12
movq %r12, %rdi
callq 0x40e0
testl %eax, %eax
je 0x16027
leaq 0x288(%r14), %rdi
leaq 0x6228(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x16027
leaq 0x8f15(%rip), %rsi      # 0x1ef37
jmp 0x15f00
testb %r15b, %r15b
je 0x16062
leaq 0x6207(%rip), %rsi      # 0x1c23a
movq %r12, %rdi
callq 0x40e0
testl %eax, %eax
jne 0x16056
leaq 0x288(%r14), %rdi
leaq 0x61ed(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x16062
leaq 0x8f27(%rip), %rsi      # 0x1ef84
jmp 0x15f00
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7886(%rip), %rsi      # 0x1d8f6
leaq 0x7885(%rip), %rdx      # 0x1d8fc
callq 0x6086
leaq -0x50(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
cmpb $0x1, 0x89(%rax)
jne 0x160d7
leaq 0x6192(%rip), %rsi      # 0x1c23a
movq -0x80(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x1618a
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x161be
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x161be
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x160ec
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq 0x6147(%rip), %rsi      # 0x1c23a
movq -0x80(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x16123
leaq 0x208(%r14), %rdi
leaq 0x612c(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x16123
leaq 0x8f31(%rip), %rsi      # 0x1f04f
jmp 0x15f00
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8320(%rip), %rsi      # 0x1e451
leaq 0x8324(%rip), %rdx      # 0x1e45c
callq 0x6086
leaq -0x50(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %al
xorb $0x1, %al
andb %al, %r15b
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x16179
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x161ca
leaq 0x8f00(%rip), %rsi      # 0x1f085
jmp 0x15f00
leaq 0x208(%r14), %rdi
leaq 0x60a2(%rip), %rsi      # 0x1c23a
callq 0x40e0
movl %eax, %r12d
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x161b5
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
testl %r12d, %r12d
je 0x160ec
leaq 0x8e26(%rip), %rsi      # 0x1efeb
jmp 0x15f00
leaq 0x2c8(%r14), %rdi
leaq 0x6062(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x161f4
leaq 0xa8(%r14), %rdi
leaq 0x825e(%rip), %rsi      # 0x1e44d
callq 0x4410
leaq 0xa8(%r14), %rdi
leaq 0x6657(%rip), %rsi      # 0x1c859
callq 0x40e0
movl %eax, %r15d
testl %eax, %eax
je 0x16213
xorl %r12d, %r12d
jmp 0x16250
leaq -0x50(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8f17(%rip), %rsi      # 0x1f138
leaq 0x8f21(%rip), %rdx      # 0x1f149
callq 0x6086
leaq -0x50(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
testl %r15d, %r15d
jne 0x1626a
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1626a
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x1627b
leaq 0x8e85(%rip), %rsi      # 0x1f0fb
jmp 0x15f00
leaq -0x98(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x84fb(%rip), %rsi      # 0x1e788
leaq 0x84fe(%rip), %rdx      # 0x1e792
leaq -0xa8(%rbp), %rdi
callq 0x6086
leaq -0xa8(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
cmpb $0x1, %r15b
jne 0x1631e
leaq -0xb8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x8e9f(%rip), %rsi      # 0x1f17e
leaq 0x8ea2(%rip), %rdx      # 0x1f188
leaq -0xc8(%rbp), %rdi
callq 0x6086
leaq -0xc8(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
xorb $0x1, %r12b
jmp 0x16321
xorl %r12d, %r12d
testb %r15b, %r15b
je 0x16345
leaq -0xb8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x16345
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x42d0
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x16360
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x16371
leaq 0x8dde(%rip), %rsi      # 0x1f14a
jmp 0x15f00
leaq -0xa8(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x71de(%rip), %rsi      # 0x1d560
leaq 0x71e2(%rip), %rdx      # 0x1d56b
callq 0x6086
leaq -0xa8(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x5f62
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
cmpb $0x1, 0x89(%rax)
jne 0x163cd
leaq 0xe8(%r14), %rdi
leaq 0x5e76(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x163f0
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x163e8
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x42d0
movb $0x1, %r14b
jmp 0x15911
addq $0x128, %r14            # imm = 0x128
leaq 0x5e3c(%rip), %rsi      # 0x1c23a
movq %r14, %rdi
callq 0x40e0
movl %eax, %r15d
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x16424
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x42d0
movb $0x1, %r14b
testl %r15d, %r15d
jne 0x15911
leaq 0x8d52(%rip), %rsi      # 0x1f189
jmp 0x15f00
jmp 0x1646c
jmp 0x16517
movq %rax, %r14
movq -0xc8(%rbp), %rdi
cmpq %r12, %rdi
je 0x1646f
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x1646f
jmp 0x1646c
jmp 0x164af
jmp 0x16517
movq %rax, %r14
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1651a
movq -0x98(%rbp), %rsi
jmp 0x1650d
jmp 0x16517
jmp 0x164af
jmp 0x16517
jmp 0x164af
jmp 0x16517
jmp 0x164af
jmp 0x16517
jmp 0x164af
jmp 0x16517
jmp 0x164af
jmp 0x16517
jmp 0x164af
jmp 0x16517
jmp 0x164fd
jmp 0x16517
movq %rax, %r14
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1651a
movq -0x40(%rbp), %rsi
jmp 0x1650d
jmp 0x16517
movq %rax, %r14
movq -0xe8(%rbp), %rdi
cmpq %r15, %rdi
je 0x1651a
movq -0xd8(%rbp), %rsi
jmp 0x1650d
jmp 0x16517
jmp 0x164fd
jmp 0x16517
movq %rax, %r14
movq -0x70(%rbp), %rdi
cmpq %r15, %rdi
jne 0x16509
jmp 0x1651a
jmp 0x16517
jmp 0x164fd
jmp 0x16517
jmp 0x164fd
jmp 0x16517
jmp 0x164fd
jmp 0x16517
movq %rax, %r14
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1651a
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x1651a
movq %rax, %r14
movq %r14, %rdi
callq 0x4580