// File: /workspace/github_cpp_makefile_star2_O3/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 $0x68, %rsp
movq %rsi, %r13
movq %rdi, %r14
addq $0x248, %rdi            # imm = 0x248
leaq 0x6a4f(%rip), %r15      # 0x1c23a
movq %rdi, -0x60(%rbp)
movq %r15, %rsi
callq 0x40e0
movl %eax, %ebx
leaq 0x268(%r14), %rdi
movq %rdi, -0x68(%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 0x158ed
movq %r13, -0x50(%rbp)
leaq 0x228(%r14), %r13
leaq 0x69f0(%rip), %rsi      # 0x1c23a
movq %r13, %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15871
leaq 0x208(%r14), %rdi
leaq 0x69d6(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x159fe
leaq -0x38(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x78ba(%rip), %rsi      # 0x1d13a
leaq 0x78b4(%rip), %rdx      # 0x1d13b
leaq -0x48(%rbp), %rdi
callq 0x6058
leaq 0x308(%r14), %r15
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x158ce
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x1591d
movq -0x50(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x9011(%rip), %rcx      # 0x1e8f3
xorl %r14d, %r14d
movl $0x60, %r8d
jmp 0x15904
movq 0x8(%r13), %rdx
leaq 0x8fa3(%rip), %rcx      # 0x1e89b
xorl %r14d, %r14d
movl $0x57, %r8d
movq %r13, %rdi
xorl %esi, %esi
callq 0x44b0
movl %r14d, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x48(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7b95(%rip), %rsi      # 0x1d4c0
leaq 0x7b9a(%rip), %rdx      # 0x1d4cc
callq 0x6058
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1596e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15990
movq -0x50(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8fd2(%rip), %rcx      # 0x1e954
xorl %r14d, %r14d
movl $0x6a, %r8d
jmp 0x15904
leaq -0x48(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8d2f(%rip), %rsi      # 0x1e6cd
leaq 0x8d2e(%rip), %rdx      # 0x1e6d3
callq 0x6058
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x159e1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15a7e
movq -0x50(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8fc6(%rip), %rcx      # 0x1e9bf
jmp 0x15ae3
movb 0x30(%r14), %al
testb $0x1, %al
movq -0x50(%rbp), %r12
je 0x15a71
leaq -0x38(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x7a1c(%rip), %rsi      # 0x1d435
leaq 0x7a19(%rip), %rdx      # 0x1d439
leaq -0x48(%rbp), %rdi
callq 0x6058
leaq 0x308(%r14), %rdi
leaq -0x48(%rbp), %rsi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15a64
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15b57
movb 0x30(%r14), %al
testb $0x1, %al
je 0x15be6
jmp 0x15c62
leaq -0x48(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7e6a(%rip), %rsi      # 0x1d8f6
leaq 0x7e69(%rip), %rdx      # 0x1d8fc
callq 0x6058
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15acf
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15af1
movq -0x50(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8f41(%rip), %rcx      # 0x1ea24
xorl %r14d, %r14d
movl $0x64, %r8d
jmp 0x15904
leaq -0x48(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7936(%rip), %rsi      # 0x1d435
leaq 0x7933(%rip), %rdx      # 0x1d439
callq 0x6058
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15b42
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r12b, %r12b
je 0x15b71
leaq 0x8f3b(%rip), %rsi      # 0x1ea89
movq -0x50(%rbp), %rdi
jmp 0x15eeb
movq 0x8(%r12), %rdx
leaq 0x900e(%rip), %rcx      # 0x1eb71
xorl %r14d, %r14d
movl $0x36, %r8d
jmp 0x15c5a
leaq -0x48(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x7b7e(%rip), %rsi      # 0x1d6fd
leaq 0x7b83(%rip), %rdx      # 0x1d709
callq 0x6058
movq -0x50(%rbp), %r12
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15bc6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15bd7
leaq 0x8f1a(%rip), %rsi      # 0x1eaec
jmp 0x15ee8
movw $0x100, 0x30(%r14)      # imm = 0x100
movl $0x1, 0x6c(%r14)
leaq -0x38(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x7840(%rip), %rsi      # 0x1d435
leaq 0x783d(%rip), %rdx      # 0x1d439
leaq -0x48(%rbp), %rdi
callq 0x6058
leaq 0x308(%r14), %rdi
leaq -0x48(%rbp), %rsi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15c40
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15c62
movq 0x8(%r12), %rdx
leaq 0x8f57(%rip), %rcx      # 0x1eba8
xorl %r14d, %r14d
movl $0x56, %r8d
movq %r12, %rdi
jmp 0x15904
leaq 0x65d1(%rip), %rsi      # 0x1c23a
movq -0x60(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15c8a
leaq 0x65bd(%rip), %rsi      # 0x1c23a
movq -0x68(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x15cf7
leaq -0x38(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x766c(%rip), %rsi      # 0x1d305
leaq 0x7668(%rip), %rdx      # 0x1d308
leaq -0x48(%rbp), %rdi
callq 0x6058
leaq 0x308(%r14), %rdi
leaq -0x48(%rbp), %rsi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x15ce4
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
movb $0x1, %bl
testb %r15b, %r15b
je 0x15cf9
leaq 0x8f0d(%rip), %rsi      # 0x1ebff
jmp 0x15ee8
xorl %ebx, %ebx
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x8a28(%rip), %rsi      # 0x1e730
leaq 0x8a29(%rip), %rdx      # 0x1e738
leaq -0x48(%rbp), %rdi
callq 0x6058
leaq 0x308(%r14), %rdi
leaq -0x48(%rbp), %rsi
movq %rdi, -0x58(%rbp)
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x15d5b
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15daa
testb %bl, %bl
je 0x15d70
leaq 0x8f12(%rip), %rsi      # 0x1ec7d
jmp 0x15ee8
leaq 0x2a8(%r14), %rdi
leaq 0x64bc(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15d9e
leaq 0x288(%r14), %rdi
leaq 0x64a5(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15daa
leaq 0x8f5b(%rip), %rsi      # 0x1ed00
jmp 0x15ee8
cmpb $0x1, 0x28(%r14)
jne 0x15e5a
leaq 0x1c8(%r14), %rdi
leaq 0x6477(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15de3
leaq 0x1e8(%r14), %rdi
leaq 0x6460(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15def
leaq 0x8f6c(%rip), %rsi      # 0x1ed56
jmp 0x15ee8
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x892f(%rip), %rsi      # 0x1e730
leaq 0x8930(%rip), %rdx      # 0x1e738
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x15e49
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %r15b, %r15b
je 0x15e5a
leaq 0x8f78(%rip), %rsi      # 0x1edcd
jmp 0x15ee8
leaq 0x2a8(%r14), %r15
leaq 0x63d2(%rip), %rsi      # 0x1c23a
movq %r15, %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15eb9
leaq 0x288(%r14), %rdi
leaq 0x63b8(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15eb9
leaq 0x1c8(%r14), %rdi
leaq 0x63a1(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
jne 0x15eb9
leaq 0x1e8(%r14), %rdi
leaq 0x638a(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x15ef8
leaq 0x637a(%rip), %rsi      # 0x1c23a
movq -0x60(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
jne 0x15ee1
leaq 0x6366(%rip), %rsi      # 0x1c23a
movq -0x68(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x15ef8
leaq 0x8f35(%rip), %rsi      # 0x1ee1d
movq %r12, %rdi
callq 0x4410
xorl %r14d, %r14d
jmp 0x1590b
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x86e1(%rip), %rsi      # 0x1e5eb
leaq 0x86df(%rip), %rdx      # 0x1e5f0
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r12b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x15f52
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x860e(%rip), %rsi      # 0x1e572
leaq 0x860d(%rip), %rdx      # 0x1e578
callq 0x6058
movq %r13, -0x60(%rbp)
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %r13b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x15fb0
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
movl %r12d, %eax
orb %r13b, %al
andb %bl, %al
cmpb $0x1, %al
jne 0x15fc8
leaq 0x8ec8(%rip), %rsi      # 0x1ee8b
jmp 0x15b4e
cmpb %r13b, %r12b
je 0x15fd9
leaq 0x8f30(%rip), %rsi      # 0x1ef04
jmp 0x15b4e
leaq 0x625a(%rip), %rsi      # 0x1c23a
movq %r15, %rdi
callq 0x40e0
testl %eax, %eax
je 0x1600f
leaq 0x288(%r14), %rdi
leaq 0x6240(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x1600f
leaq 0x8f2d(%rip), %rsi      # 0x1ef37
jmp 0x15b4e
testb %bl, %bl
je 0x16049
leaq 0x6220(%rip), %rsi      # 0x1c23a
movq %r15, %rdi
callq 0x40e0
testl %eax, %eax
jne 0x1603d
leaq 0x288(%r14), %rdi
leaq 0x6206(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x16049
leaq 0x8f40(%rip), %rsi      # 0x1ef84
jmp 0x15b4e
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x789b(%rip), %rsi      # 0x1d8f6
leaq 0x789a(%rip), %rdx      # 0x1d8fc
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
cmpb $0x1, 0x89(%rax)
jne 0x160c6
leaq 0x61a7(%rip), %rsi      # 0x1c23a
movq -0x60(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x16183
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x161bb
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x161bb
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x160df
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq 0x6154(%rip), %rsi      # 0x1c23a
movq -0x60(%rbp), %rdi
callq 0x40e0
testl %eax, %eax
je 0x16116
leaq 0x208(%r14), %rdi
leaq 0x6139(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x16116
leaq 0x8f3e(%rip), %rsi      # 0x1f04f
jmp 0x15b4e
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8329(%rip), %rsi      # 0x1e451
leaq 0x832d(%rip), %rdx      # 0x1e45c
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %al
xorb $0x1, %al
andb %al, %bl
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x16173
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %bl, %bl
je 0x161c7
leaq 0x8f07(%rip), %rsi      # 0x1f085
jmp 0x15b4e
leaq 0x208(%r14), %rdi
leaq 0x60a9(%rip), %rsi      # 0x1c23a
callq 0x40e0
movl %eax, %r15d
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x161b2
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testl %r15d, %r15d
je 0x160df
leaq 0x8e29(%rip), %rsi      # 0x1efeb
jmp 0x15b4e
leaq 0x2c8(%r14), %rdi
leaq 0x6065(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x161f1
leaq 0xa8(%r14), %rdi
leaq 0x8261(%rip), %rsi      # 0x1e44d
callq 0x4410
leaq 0xa8(%r14), %rdi
leaq 0x665a(%rip), %rsi      # 0x1c859
callq 0x40e0
testl %eax, %eax
jne 0x16271
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8f1e(%rip), %rsi      # 0x1f138
leaq 0x8f28(%rip), %rdx      # 0x1f149
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %bl
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x16261
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %bl, %bl
je 0x16271
leaq 0x8e8f(%rip), %rsi      # 0x1f0fb
jmp 0x15b4e
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8505(%rip), %rsi      # 0x1e788
leaq 0x8508(%rip), %rdx      # 0x1e792
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
cmpb $0x1, 0x89(%rax)
jne 0x16318
leaq -0x78(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x8ebb(%rip), %rsi      # 0x1f17e
leaq 0x8ebe(%rip), %rdx      # 0x1f188
leaq -0x88(%rbp), %rdi
callq 0x6058
leaq -0x88(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
movb 0x89(%rax), %bl
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x16313
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x42d0
xorb $0x1, %bl
jmp 0x1631a
xorl %ebx, %ebx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x16333
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
testb %bl, %bl
je 0x16343
leaq 0x8e0c(%rip), %rsi      # 0x1f14a
jmp 0x15b4e
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x720b(%rip), %rsi      # 0x1d560
leaq 0x720f(%rip), %rdx      # 0x1d56b
callq 0x6058
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5f2e
movslq 0x40(%rax), %rax
movq 0x2f0(%r14), %rcx
movq (%rcx,%rax,8), %rax
cmpb $0x1, 0x89(%rax)
jne 0x1639d
leaq 0xe8(%r14), %rdi
leaq 0x5ea6(%rip), %rsi      # 0x1c23a
callq 0x40e0
testl %eax, %eax
je 0x163be
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x163b6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
movb $0x1, %r14b
jmp 0x1590b
addq $0x128, %r14            # imm = 0x128
leaq 0x5e6e(%rip), %rsi      # 0x1c23a
movq %r14, %rdi
callq 0x40e0
movl %eax, %r15d
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x163f0
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
movb $0x1, %r14b
testl %r15d, %r15d
jne 0x1590b
leaq 0x8d86(%rip), %rsi      # 0x1f189
jmp 0x15b4e
jmp 0x16451
jmp 0x1649b
jmp 0x16451
jmp 0x1649b
movq %rax, %r14
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x16454
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x16454
jmp 0x16451
jmp 0x16451
jmp 0x1649b
jmp 0x16451
jmp 0x1649b
jmp 0x16451
jmp 0x1649b
jmp 0x16451
jmp 0x1649b
jmp 0x16451
jmp 0x1649b
jmp 0x16451
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
movq %rax, %r14
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
jne 0x1648d
jmp 0x1649e
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
jmp 0x16481
jmp 0x1649b
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1649e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x42d0
jmp 0x1649e
movq %rax, %r14
movq %r14, %rdi
callq 0x4580