// File: /workspace/github_cpp_makefile_star2_O2/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 0x43e0(%rip), %r15      # 0x151ff
movq %rdi, -0x50(%rbp)
movq %r15, %rsi
callq 0x5556
movzbl %al, %ebx
leaq 0x268(%r14), %rdi
movq %rdi, -0x58(%rbp)
movq %r15, %rsi
callq 0x5556
movzbl %al, %r12d
addl %ebx, %r12d
movq %r14, %rdi
movq %r15, %rsi
callq 0x5556
movzbl %al, %eax
addl %r12d, %eax
cmpl $0x1, %eax
jne 0x10ee5
leaq 0x228(%r14), %rdi
leaq 0x438f(%rip), %rsi      # 0x151ff
movq %rdi, -0x88(%rbp)
callq 0x5556
testb %al, %al
movq %r13, %r12
jne 0x10e9e
leaq 0x208(%r14), %rdi
leaq 0x436e(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x10f38
leaq 0x5245(%rip), %rsi      # 0x160ea
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq 0x2e8(%r14), %r15
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x10ef4
leaq 0x69c3(%rip), %rsi      # 0x178a3
jmp 0x1130b
leaq 0x695f(%rip), %rsi      # 0x1784b
movq %r13, %rdi
jmp 0x1130e
leaq 0x5575(%rip), %rsi      # 0x16470
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x10fcc
leaq 0x69d1(%rip), %rsi      # 0x17904
jmp 0x1130b
movb 0x30(%r14), %al
testb $0x1, %al
je 0x10f80
leaq 0x549e(%rip), %rsi      # 0x163e5
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq 0x2e8(%r14), %rdi
leaq -0x48(%rbp), %rsi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x110c7
movb 0x30(%r14), %al
testb $0x1, %al
jne 0x11010
leaq 0x5456(%rip), %rsi      # 0x163e5
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq 0x2e8(%r14), %rdi
leaq -0x48(%rbp), %rsi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x11010
leaq 0x6b91(%rip), %rsi      # 0x17b58
jmp 0x1130b
leaq 0x66aa(%rip), %rsi      # 0x1767d
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x11087
leaq 0x6964(%rip), %rsi      # 0x1796f
jmp 0x1130b
leaq 0x41e8(%rip), %rsi      # 0x151ff
movq -0x50(%rbp), %rdi
callq 0x5556
testb %al, %al
jne 0x1103c
leaq 0x41d4(%rip), %rsi      # 0x151ff
movq -0x58(%rbp), %rdi
callq 0x5556
testb %al, %al
je 0x11113
leaq 0x5272(%rip), %rsi      # 0x162b5
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq 0x2e8(%r14), %rdi
leaq -0x48(%rbp), %rsi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
movb $0x1, %r15b
cmpb $0x1, %bl
jne 0x11116
leaq 0x6b2d(%rip), %rsi      # 0x17baf
jmp 0x1130b
leaq 0x5818(%rip), %rsi      # 0x168a6
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x110d3
leaq 0x6912(%rip), %rsi      # 0x179d4
jmp 0x1130b
leaq 0x6a53(%rip), %rsi      # 0x17b21
jmp 0x1130b
leaq 0x530b(%rip), %rsi      # 0x163e5
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x11166
leaq 0x692b(%rip), %rsi      # 0x17a39
jmp 0x1130b
xorl %r15d, %r15d
leaq 0x65c3(%rip), %rsi      # 0x176e0
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq 0x2e8(%r14), %r13
leaq -0x48(%rbp), %rsi
movq %r13, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x111e4
testb %r15b, %r15b
je 0x111aa
leaq 0x6acc(%rip), %rsi      # 0x17c2d
jmp 0x1130b
leaq 0x5540(%rip), %rsi      # 0x166ad
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x11229
leaq 0x68f7(%rip), %rsi      # 0x17a9c
jmp 0x1130b
leaq 0x2a8(%r14), %rdi
leaq 0x4047(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
jne 0x111d8
leaq 0x288(%r14), %rdi
leaq 0x4030(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x111e4
leaq 0x6ad1(%rip), %rsi      # 0x17cb0
jmp 0x1130b
cmpb $0x1, 0x28(%r14)
jne 0x1127d
leaq 0x1c8(%r14), %rdi
leaq 0x4002(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
jne 0x1121d
leaq 0x1e8(%r14), %rdi
leaq 0x3feb(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x1123d
leaq 0x6ae2(%rip), %rsi      # 0x17d06
jmp 0x1130b
movw $0x100, 0x30(%r14)      # imm = 0x100
movl $0x1, 0x6c(%r14)
jmp 0x10f88
leaq 0x649c(%rip), %rsi      # 0x176e0
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r13, %rdi
callq 0x53e2
movb 0x89(%rax), %bl
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %bl
jne 0x1127d
leaq 0x6b05(%rip), %rsi      # 0x17d7d
jmp 0x1130b
leaq 0x2a8(%r14), %rdi
leaq 0x3f74(%rip), %rsi      # 0x151ff
movq %rdi, %rbx
callq 0x5556
testb %al, %al
jne 0x112dc
leaq 0x288(%r14), %rdi
leaq 0x3f5a(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
jne 0x112dc
leaq 0x1c8(%r14), %rdi
leaq 0x3f43(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
jne 0x112dc
leaq 0x1e8(%r14), %rdi
leaq 0x3f2c(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x11324
leaq 0x3f1c(%rip), %rsi      # 0x151ff
movq -0x50(%rbp), %rdi
callq 0x5556
testb %al, %al
jne 0x11304
leaq 0x3f08(%rip), %rsi      # 0x151ff
movq -0x58(%rbp), %rdi
callq 0x5556
testb %al, %al
je 0x11324
leaq 0x6ac2(%rip), %rsi      # 0x17dcd
movq %r12, %rdi
callq 0x4590
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6270(%rip), %rsi      # 0x1759b
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
movq %r12, -0x50(%rbp)
leaq -0x48(%rbp), %rsi
movq %r13, %rdi
callq 0x53e2
movb 0x89(%rax), %r12b
leaq -0x48(%rbp), %rdi
callq 0x45e8
leaq 0x61c3(%rip), %rsi      # 0x17522
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq %r13, -0x58(%rbp)
movq %r13, %rdi
callq 0x53e2
movb 0x89(%rax), %r13b
leaq -0x48(%rbp), %rdi
callq 0x45e8
movl %r12d, %eax
orb %r13b, %al
andb %r15b, %al
cmpb $0x1, %al
jne 0x113a2
leaq 0x6a9b(%rip), %rsi      # 0x17e3b
jmp 0x113ae
cmpb %r13b, %r12b
je 0x113b7
leaq 0x6b06(%rip), %rsi      # 0x17eb4
movq -0x50(%rbp), %rdi
jmp 0x1130e
leaq 0x3e41(%rip), %rsi      # 0x151ff
movq %rbx, %rdi
callq 0x5556
testb %al, %al
movq -0x50(%rbp), %r12
je 0x113f1
leaq 0x288(%r14), %rdi
leaq 0x3e23(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x113f1
leaq 0x6afb(%rip), %rsi      # 0x17ee7
jmp 0x1130b
testb %r15b, %r15b
je 0x1142c
leaq 0x3e02(%rip), %rsi      # 0x151ff
movq %rbx, %rdi
callq 0x5556
testb %al, %al
jne 0x11420
leaq 0x288(%r14), %rdi
leaq 0x3de8(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x1142c
leaq 0x6b0d(%rip), %rsi      # 0x17f34
jmp 0x1130b
leaq 0x5473(%rip), %rsi      # 0x168a6
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x53e2
movq -0x88(%rbp), %r13
cmpb $0x1, 0x89(%rax)
jne 0x11482
leaq 0x3d9b(%rip), %rsi      # 0x151ff
movq %r13, %rdi
callq 0x5556
testb %al, %al
je 0x1150c
leaq -0x48(%rbp), %rdi
callq 0x45e8
jmp 0x11534
leaq -0x48(%rbp), %rdi
callq 0x45e8
leaq 0x3d6d(%rip), %rsi      # 0x151ff
movq %r13, %rdi
callq 0x5556
testb %al, %al
movq -0x50(%rbp), %r12
je 0x114c5
leaq 0x208(%r14), %rdi
leaq 0x3d4f(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x114c5
leaq 0x6b3f(%rip), %rsi      # 0x17fff
jmp 0x1130b
leaq 0x5f35(%rip), %rsi      # 0x17401
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
movq -0x58(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x53e2
movb 0x89(%rax), %al
xorb $0x1, %al
andb %al, %r15b
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %r15b
jne 0x11540
leaq 0x6b2e(%rip), %rsi      # 0x18035
jmp 0x1130b
leaq 0x208(%r14), %rdi
leaq 0x3ce5(%rip), %rsi      # 0x151ff
callq 0x5556
movl %eax, %r12d
leaq -0x48(%rbp), %rdi
callq 0x45e8
testb %r12b, %r12b
je 0x1148b
leaq 0x6a60(%rip), %rsi      # 0x17f9b
jmp 0x113ae
leaq 0x2c8(%r14), %rdi
leaq 0x3cb1(%rip), %rsi      # 0x151ff
callq 0x5556
testb %al, %al
je 0x1156a
leaq 0xa8(%r14), %rdi
leaq 0x5e98(%rip), %rsi      # 0x173fd
callq 0x4590
leaq 0xa8(%r14), %rdi
leaq 0x4291(%rip), %rsi      # 0x15809
callq 0x5549
testb %al, %al
je 0x115c4
leaq 0x6b60(%rip), %rsi      # 0x180e8
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x53e2
movb 0x89(%rax), %r15b
leaq -0x48(%rbp), %rdi
callq 0x45e8
cmpb $0x1, %r15b
jne 0x115c4
leaq 0x6aec(%rip), %rsi      # 0x180ab
jmp 0x113ae
leaq 0x616d(%rip), %rsi      # 0x17738
leaq -0x48(%rbp), %rdi
leaq -0x5a(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x53e2
cmpb $0x1, 0x89(%rax)
jne 0x11639
leaq 0x6b39(%rip), %rsi      # 0x1812e
leaq -0x80(%rbp), %rdi
leaq -0x59(%rbp), %rdx
callq 0x53a6
leaq -0x80(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x53e2
movb 0x89(%rax), %r15b
leaq -0x80(%rbp), %rdi
callq 0x45e8
leaq -0x48(%rbp), %rdi
callq 0x45e8
testb %r15b, %r15b
jne 0x11642
leaq 0x6ac6(%rip), %rsi      # 0x180fa
jmp 0x113ae
leaq -0x48(%rbp), %rdi
callq 0x45e8
leaq 0x4ec7(%rip), %rsi      # 0x16510
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x53a6
leaq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x53e2
cmpb $0x1, 0x89(%rax)
jne 0x116bc
leaq 0xe8(%r14), %rdi
leaq 0x3b85(%rip), %rsi      # 0x151ff
callq 0x5549
testb %al, %al
je 0x116bc
addq $0x128, %r14            # imm = 0x128
leaq 0x3b6e(%rip), %rsi      # 0x151ff
movq %r14, %rdi
callq 0x5549
movl %eax, %r14d
leaq -0x48(%rbp), %rdi
callq 0x45e8
movb $0x1, %al
testb %r14b, %r14b
je 0x11315
leaq 0x6a82(%rip), %rsi      # 0x18139
jmp 0x113ae
leaq -0x48(%rbp), %rdi
callq 0x45e8
movb $0x1, %al
jmp 0x11315
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x45e8
jmp 0x11723
jmp 0x11720
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x1172e
jmp 0x11720
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
jmp 0x11720
jmp 0x1172e
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x45e8
jmp 0x11731
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4530
nop