// File: jackz314[P]bars-to-bwav/./bars-to-bwav.cpp
// Function: main
int main(int argc, char const *argv[])
{
    if(argc < 2){
        cout << "Missing file arguments!" << endl;
        displayHelp();
        return -1;
    }

    if(argc == 2 && string(argv[1]) == "-h"){
        displayHelp();
        return 0;
    }

    vector<string> barsFiles;
    if(filesystem::is_directory(argv[1])){// process a directory of bars files
        filesystem::directory_iterator end_itr;
        filesystem::path p(argv[1]);
        cout << "BARS file to be processed in directory " << argv[1] << ':' << endl;
        for(filesystem::directory_iterator itr(p); itr != end_itr; itr++){
            //only deal with bars files
            if (is_regular_file(itr->path()) && itr->path().extension().generic_string() == ".bars") {
                string fileName = itr->path().string();
                barsFiles.push_back(fileName);
                cout << fileName << endl;
            }
        }

    }else{// process single file
        barsFiles.push_back(argv[1]);
        cout << "BARS file to be processed: " << argv[1] << endl;
    }

    string baseOutputDir;
    if(argc > 2){// have output folder or no overwrite
        if(argc == 4 && string(argv[3]) == "--no-overwrite"){ // have no overwrite and output folder
            baseOutputDir = argv[2];
            OVERWRITE = false;
        }
        if(argc == 3 && string(argv[2]) == "--no-overwrite"){ // only no overwrite
            baseOutputDir = "BWAV-Output/";
            OVERWRITE = false;
        }else{ // only out dir
            cout << '['<<argv[2]<<']' << endl;
            baseOutputDir = argv[2];
        }
        if(baseOutputDir.back() != '/' || baseOutputDir.back() != '\\'){
            baseOutputDir += '/';
        }
    }else{
        baseOutputDir = "BWAV-Output/";
    }

    string spliter = "----------------------------------------";
    
    int totalBWAVCount = 0;

    int countB = 0;
    for(string barsFile : barsFiles){
        ifstream inFile(barsFile, ios::binary);
        if(!inFile){
            cout << "Failed to open BARS file " << barsFile << endl;
            return -2;
        }
        inFile.seekg(0, ios::end);
        streamsize barsSize = inFile.tellg();
        inFile.seekg(0,ios::beg);
        
        cout << spliter << '(' << dec << ++countB << '/' << barsFiles.size() << ')' << spliter << endl;
        cout << "Processing BARS file " << barsFile << " size: " << barsSize << endl;

        vector<char> fBuf(barsSize);
        if(!inFile.read(fBuf.data(), barsSize)){
            //read filed
            cout << "Read file failed." << endl;
        }

        vector<string> audioNames;
        vector<streamoff> startOffsets;

        for (streamoff i = 0; i < barsSize - 4; i+=4){
            //Hex representation of BWAV's header start (BWAV: 0x42 0x57 0x41 0x56)
            if(fBuf[i] == 0x42 && fBuf[i+1] == 0x57 && fBuf[i+2] == 0x41 && fBuf[i+3] == 0x56){
                //matched BWAV, send to start offsets
                startOffsets.push_back(i);
               if(VERBOSE) cout << "Found BWAV at offset 0x" << hex << i <<endl;
            }

            //Hex representation of BARS's AMTA header start (AMTA: 0x41 0x4D 0x54 0x41)
            if(fBuf[i] == 0x41 && fBuf[i+1] == 0x4D && fBuf[i+2] == 0x54 && fBuf[i+3] == 0x41){
                //matched AMTA, send to file names
                streamsize nameLen = 0;
                streamoff nameStart = i+0x48;//start of name string offset +0x48 after start of AMTA tag (possibly after a padding)
                if(fBuf[nameStart] == 0x01){
                    //start is 0x01, skip padding (or something else) of 0x8 to the actual file name
                    nameStart += 0x8;
                    /* for(; nameStart < barsSize; nameStart++){
                        if(fBuf[nameStart] != '\0') break; // start of name, not null
                    } */
                }
                //go to file name end
                for(streamoff j = nameStart; j < barsSize; j++, nameLen++){
                    // cout << "CHAR:[" << fBuf[j] << "]. Int: " << int(fBuf[j]) << endl;
                    if(fBuf[j] == -0x3e){ // some files needs to move start idx forward if -c2 is present, inconsistent
                        // cout << "FOUND -3e" << endl; // c2 in signed byte is -3e
                        nameStart = j + 1;
                        nameLen = -1; // so it's 0 when the next iteration begins
                    }
                    if(fBuf[j] == '\0') break; // end of name, null
                }
                string name = string(fBuf.begin() + nameStart, fBuf.begin() + nameStart + nameLen);
                if(find(audioNames.begin(),audioNames.end(), name) != audioNames.end()){//already exists
                    //deal with duplicates with repeat counter
                    int repeatCounter = 1;
                    while(find(audioNames.begin(),audioNames.end(), name + '-' + to_string(repeatCounter)) != audioNames.end()){
                        repeatCounter++;
                    }
                    name += '-' + to_string(repeatCounter);
                }
                audioNames.push_back(name);
                if(VERBOSE) cout << "Found AMTA tag at offset 0x" << hex << i << " Name: " << name << endl;
            }
        }

        cout << endl << "Found all BWAV files. Total count: " << dec << startOffsets.size() << ". Writing bwav files to " << baseOutputDir << endl;
        
        if(!createDirIfNotExist(baseOutputDir)) return -3;

        if(audioNames.size() < startOffsets.size()){
            cout << "BWAV names count is not the same as BWAV counts!" << endl;
            for(size_t i = 1; i < startOffsets.size() - audioNames.size() + 1; i++){
                audioNames.push_back("extra_" + to_string(i));
            }
        }

        //write bwav files
        string onlyBarsFileName = filesystem::path(barsFile).filename().string();
        string outputDir = onlyBarsFileName.substr(0, onlyBarsFileName.size() - 5) + '/';//remove the extension and add directory slash
        cout << "Output subdirectory: " << outputDir << endl;
        if(!createDirIfNotExist(baseOutputDir + outputDir)) return -3;
        int illegal_counter = 0;
        for(size_t i = 0; i < startOffsets.size(); i++){
            streamoff offset = startOffsets[i];
            streamoff nextOffset;
            if(i+1 == startOffsets.size()){
                nextOffset = barsSize;
            }else{
                nextOffset = startOffsets[i+1];            
            }
            streamsize writeSize = nextOffset - offset;
            string fName = audioNames[i] + ".bwav";
            if(VERBOSE) cout << dec << '(' << i+1 << '/' << startOffsets.size() << ") Writing " << fName << " from offset 0x" << hex << offset << endl;
            string oFilePath = baseOutputDir + outputDir + fName;

            //deal with duplicate file names, already dealt with before, here to deal with pre-existing ones
            if(!OVERWRITE && filesystem::exists(oFilePath)){//don't overwrite
                int repeatCounter = 1;
                string newOFilePath = oFilePath.substr(0,oFilePath.size()-5) + '-';
                while(filesystem::exists(newOFilePath + to_string(repeatCounter) + ".bwav")){//already exists, use another name
                    repeatCounter++;
                }
                oFilePath = newOFilePath + to_string(repeatCounter) + ".bwav";
            }

            fstream oFile(oFilePath, ios::out | ios::binary);
            if(!oFile.write(fBuf.data()+offset, writeSize)){// if failed, probably due to illegal name
                ++illegal_counter;
                oFilePath = baseOutputDir + outputDir + "illegal_name_" + to_string(illegal_counter) + ".bwav";
                fstream oFileRetry(oFilePath, ios::out | ios::binary); // try again
                if(!oFileRetry.write(fBuf.data()+offset, writeSize)){ // still failed
                    cout << "Write bwav failed. Path: [" << oFilePath << "] Count: " << dec << i << " Offset: 0x" << hex << offset << endl;
                }else{
                    ++totalBWAVCount;
                }
                oFileRetry.close();
            }else{
                ++totalBWAVCount;
            }
            oFile.close();
        }
    }

    cout << spliter << spliter << endl;
    cout << "Done! Processed " << dec << barsFiles.size() << " BARS files and generated " << totalBWAVCount << " BWAV files in total." << endl;

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1190, %rsp           # imm = 0x1190
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
jge 0x188f2
leaq 0xfec1a(%rip), %rdi     # 0x1174e0
leaq 0xbb847(%rip), %rsi     # 0xd4114
callq 0x89220
movq %rax, %rdi
leaq 0x70224(%rip), %rsi     # 0x88b00
callq 0x87d10
callq 0x18830
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1af99
movl -0x8(%rbp), %ecx
movb $0x0, -0x32(%rbp)
movb $0x0, -0x45(%rbp)
xorl %eax, %eax
cmpl $0x2, %ecx
movb %al, -0xdf9(%rbp)
jne 0x18970
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xe10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0xe08(%rbp)
callq 0x21050
movq -0xe10(%rbp), %rsi
movq -0xe08(%rbp), %rdx
movb $0x1, -0x32(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x1b120
jmp 0x18946
movb $0x1, -0x45(%rbp)
leaq 0xbb7db(%rip), %rsi     # 0xd412c
leaq -0x30(%rbp), %rdi
callq 0x1b0f0
movb %al, -0xe11(%rbp)
jmp 0x18962
movb -0xe11(%rbp), %al
movb %al, -0xdf9(%rbp)
jmp 0x18970
movb -0xdf9(%rbp), %al
movb %al, -0xe12(%rbp)
testb $0x1, -0x45(%rbp)
jne 0x18984
jmp 0x1898d
leaq -0x30(%rbp), %rdi
callq 0x8f5f0
testb $0x1, -0x32(%rbp)
jne 0x18995
jmp 0x1899e
leaq -0x31(%rbp), %rdi
callq 0x21070
movb -0xe12(%rbp), %al
testb $0x1, %al
jne 0x189aa
jmp 0x189fe
callq 0x18830
movl $0x0, -0x4(%rbp)
jmp 0x1af99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x189e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x45(%rbp)
jne 0x189dd
jmp 0x189e6
leaq -0x30(%rbp), %rdi
callq 0x8f5f0
jmp 0x189e8
testb $0x1, -0x32(%rbp)
jne 0x189f0
jmp 0x189f9
leaq -0x31(%rbp), %rdi
callq 0x21070
jmp 0x1afa5
leaq -0x60(%rbp), %rdi
callq 0x1b1d0
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
leaq -0x88(%rbp), %rdi
movl $0x2, %edx
callq 0x1b220
jmp 0x18a22
leaq -0x88(%rbp), %rdi
callq 0x1b1f0
movb %al, -0xe13(%rbp)
jmp 0x18a36
leaq -0x88(%rbp), %rdi
callq 0x1b0c0
movb -0xe13(%rbp), %al
testb $0x1, %al
jne 0x18a51
jmp 0x18dcf
leaq -0x98(%rbp), %rdi
callq 0x1b300
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
leaq -0xc0(%rbp), %rdi
movl $0x2, %edx
callq 0x1b220
jmp 0x18a78
leaq 0xfea61(%rip), %rdi     # 0x1174e0
leaq 0xbb6a9(%rip), %rsi     # 0xd412f
callq 0x89220
movq %rax, -0xe20(%rbp)
jmp 0x18a94
movq -0xe20(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x89220
movq %rax, -0xe28(%rbp)
jmp 0x18ab1
movq -0xe28(%rbp), %rdi
movl $0x3a, %esi
callq 0x89150
movq %rax, -0xe30(%rbp)
jmp 0x18acb
movq -0xe30(%rbp), %rdi
leaq 0x70027(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x18ae0
leaq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x1b320
jmp 0x18af5
jmp 0x18af7
leaq -0xd0(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x1b350
testb $0x1, %al
jne 0x18b6f
leaq -0xd0(%rbp), %rdi
callq 0x1b6b0
jmp 0x18d95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1af8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x1b0c0
jmp 0x1af8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18dbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18db2
leaq -0xd0(%rbp), %rdi
callq 0x1b3b0
movq %rax, %rdi
callq 0x1b3d0
movq %rax, %rdi
movb $0x0, -0x119(%rbp)
movb $0x0, -0x11a(%rbp)
callq 0x1b380
movb %al, -0xe31(%rbp)
jmp 0x18ba1
movb -0xe31(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xe32(%rbp)
jne 0x18bb6
jmp 0x18c27
leaq -0xd0(%rbp), %rdi
callq 0x1b3b0
movq %rax, %rdi
callq 0x1b3d0
movq %rax, %rsi
leaq -0x118(%rbp), %rdi
callq 0x1b3e0
jmp 0x18bdb
movb $0x1, -0x119(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x1b490
jmp 0x18bf7
movb $0x1, -0x11a(%rbp)
leaq 0xbb552(%rip), %rsi     # 0xd4157
leaq -0xf0(%rbp), %rdi
callq 0x1b0f0
movb %al, -0xe33(%rbp)
jmp 0x18c19
movb -0xe33(%rbp), %al
movb %al, -0xe32(%rbp)
jmp 0x18c27
movb -0xe32(%rbp), %al
movb %al, -0xe34(%rbp)
testb $0x1, -0x11a(%rbp)
jne 0x18c3e
jmp 0x18c4a
leaq -0xf0(%rbp), %rdi
callq 0x8f5f0
testb $0x1, -0x119(%rbp)
jne 0x18c55
jmp 0x18c61
leaq -0x118(%rbp), %rdi
callq 0x1b0c0
movb -0xe34(%rbp), %al
testb $0x1, %al
jne 0x18c70
jmp 0x18d5d
leaq -0xd0(%rbp), %rdi
callq 0x1b3b0
movq %rax, %rdi
callq 0x1b3d0
movq %rax, %rsi
leaq -0x140(%rbp), %rdi
callq 0x1b510
jmp 0x18c95
leaq -0x60(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x1b590
jmp 0x18ca7
leaq 0xfe832(%rip), %rdi     # 0x1174e0
leaq -0x140(%rbp), %rsi
callq 0x91fb0
movq %rax, -0xe40(%rbp)
jmp 0x18cc3
movq -0xe40(%rbp), %rdi
leaq 0x6fe2f(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x18cd8
leaq -0x140(%rbp), %rdi
callq 0x8f5f0
jmp 0x18d5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18d87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18d2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x11a(%rbp)
jne 0x18d1c
jmp 0x18d28
leaq -0xf0(%rbp), %rdi
callq 0x8f5f0
jmp 0x18d2a
testb $0x1, -0x119(%rbp)
jne 0x18d35
jmp 0x18d41
leaq -0x118(%rbp), %rdi
callq 0x1b0c0
jmp 0x18d87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x8f5f0
jmp 0x18d87
jmp 0x18d5f
leaq -0x170(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
xorl %edx, %edx
callq 0x1b600
jmp 0x18d76
leaq -0x170(%rbp), %rdi
callq 0x1b690
jmp 0x18af7
leaq -0xd0(%rbp), %rdi
callq 0x1b6b0
jmp 0x18db2
leaq -0xc0(%rbp), %rdi
callq 0x1b0c0
leaq -0x98(%rbp), %rdi
callq 0x1b6b0
jmp 0x18ebe
leaq -0xc0(%rbp), %rdi
callq 0x1b0c0
leaq -0x98(%rbp), %rdi
callq 0x1b6b0
jmp 0x1af8e
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xe50(%rbp)
leaq -0x191(%rbp), %rdi
movq %rdi, -0xe48(%rbp)
callq 0x21050
movq -0xe50(%rbp), %rsi
movq -0xe48(%rbp), %rdx
leaq -0x190(%rbp), %rdi
callq 0x1b120
jmp 0x18e0d
leaq -0x60(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x1b6d0
jmp 0x18e1f
leaq -0x190(%rbp), %rdi
callq 0x8f5f0
leaq -0x191(%rbp), %rdi
callq 0x21070
leaq 0xfe6a2(%rip), %rdi     # 0x1174e0
leaq 0xbb318(%rip), %rsi     # 0xd415d
callq 0x89220
movq %rax, -0xe58(%rbp)
jmp 0x18e53
movq -0xe58(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x89220
movq %rax, -0xe60(%rbp)
jmp 0x18e70
movq -0xe60(%rbp), %rdi
leaq 0x6fc82(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x18e85
jmp 0x18ebe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18ead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x8f5f0
leaq -0x191(%rbp), %rdi
callq 0x21070
jmp 0x1af8e
leaq -0x1b8(%rbp), %rdi
callq 0x8f4e0
cmpl $0x2, -0x8(%rbp)
jle 0x19232
movl -0x8(%rbp), %ecx
movb $0x0, -0x1da(%rbp)
movb $0x0, -0x1db(%rbp)
xorl %eax, %eax
cmpl $0x4, %ecx
movb %al, -0xe61(%rbp)
jne 0x18f67
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0xe78(%rbp)
leaq -0x1d9(%rbp), %rdi
movq %rdi, -0xe70(%rbp)
callq 0x21050
movq -0xe78(%rbp), %rsi
movq -0xe70(%rbp), %rdx
movb $0x1, -0x1da(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x1b120
jmp 0x18f37
movb $0x1, -0x1db(%rbp)
leaq 0xbb234(%rip), %rsi     # 0xd4179
leaq -0x1d8(%rbp), %rdi
callq 0x1b0f0
movb %al, -0xe79(%rbp)
jmp 0x18f59
movb -0xe79(%rbp), %al
movb %al, -0xe61(%rbp)
jmp 0x18f67
movb -0xe61(%rbp), %al
movb %al, -0xe7a(%rbp)
testb $0x1, -0x1db(%rbp)
jne 0x18f7e
jmp 0x18f8a
leaq -0x1d8(%rbp), %rdi
callq 0x8f5f0
testb $0x1, -0x1da(%rbp)
jne 0x18f95
jmp 0x18fa1
leaq -0x1d9(%rbp), %rdi
callq 0x21070
movb -0xe7a(%rbp), %al
testb $0x1, %al
jne 0x18fad
jmp 0x1902c
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x90640
jmp 0x18fc3
movb $0x0, 0xfd486(%rip)     # 0x116450
jmp 0x1902c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18fff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x1db(%rbp)
jne 0x18ff1
jmp 0x18ffd
leaq -0x1d8(%rbp), %rdi
callq 0x8f5f0
jmp 0x18fff
testb $0x1, -0x1da(%rbp)
jne 0x1900a
jmp 0x19016
leaq -0x1d9(%rbp), %rdi
callq 0x21070
jmp 0x1af82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1af82
movl -0x8(%rbp), %ecx
movb $0x0, -0x202(%rbp)
movb $0x0, -0x203(%rbp)
xorl %eax, %eax
cmpl $0x3, %ecx
movb %al, -0xe7b(%rbp)
jne 0x190bf
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xe90(%rbp)
leaq -0x201(%rbp), %rdi
movq %rdi, -0xe88(%rbp)
callq 0x21050
movq -0xe90(%rbp), %rsi
movq -0xe88(%rbp), %rdx
movb $0x1, -0x202(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x1b120
jmp 0x1908f
movb $0x1, -0x203(%rbp)
leaq 0xbb0dc(%rip), %rsi     # 0xd4179
leaq -0x200(%rbp), %rdi
callq 0x1b0f0
movb %al, -0xe91(%rbp)
jmp 0x190b1
movb -0xe91(%rbp), %al
movb %al, -0xe7b(%rbp)
jmp 0x190bf
movb -0xe7b(%rbp), %al
movb %al, -0xe92(%rbp)
testb $0x1, -0x203(%rbp)
jne 0x190d6
jmp 0x190e2
leaq -0x200(%rbp), %rdi
callq 0x8f5f0
testb $0x1, -0x202(%rbp)
jne 0x190ed
jmp 0x190f9
leaq -0x201(%rbp), %rdi
callq 0x21070
movb -0xe92(%rbp), %al
testb $0x1, %al
jne 0x19105
jmp 0x19175
leaq 0xbb07c(%rip), %rsi     # 0xd4188
leaq -0x1b8(%rbp), %rdi
callq 0x90640
jmp 0x1911a
movb $0x0, 0xfd32f(%rip)     # 0x116450
jmp 0x191f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19159
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x203(%rbp)
jne 0x1914b
jmp 0x19157
leaq -0x200(%rbp), %rdi
callq 0x8f5f0
jmp 0x19159
testb $0x1, -0x202(%rbp)
jne 0x19164
jmp 0x19170
leaq -0x201(%rbp), %rdi
callq 0x21070
jmp 0x1af82
leaq 0xfe364(%rip), %rdi     # 0x1174e0
movl $0x5b, %esi
callq 0x89150
movq %rax, -0xea0(%rbp)
jmp 0x1918f
movq -0xea0(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x89220
movq %rax, -0xea8(%rbp)
jmp 0x191ac
movq -0xea8(%rbp), %rdi
movl $0x5d, %esi
callq 0x89150
movq %rax, -0xeb0(%rbp)
jmp 0x191c6
movq -0xeb0(%rbp), %rdi
leaq 0x6f92c(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x191db
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x90640
jmp 0x191f1
jmp 0x191f3
leaq -0x1b8(%rbp), %rdi
callq 0x8fbc0
movsbl (%rax), %eax
cmpl $0x2f, %eax
jne 0x1921b
leaq -0x1b8(%rbp), %rdi
callq 0x8fbc0
movsbl (%rax), %eax
cmpl $0x5c, %eax
je 0x19230
leaq -0x1b8(%rbp), %rdi
movl $0x2f, %esi
callq 0x8fc00
jmp 0x1922e
jmp 0x19230
jmp 0x19249
leaq 0xbaf4f(%rip), %rsi     # 0xd4188
leaq -0x1b8(%rbp), %rdi
callq 0x90640
jmp 0x19247
jmp 0x19249
leaq -0x229(%rbp), %rdi
movq %rdi, -0xeb8(%rbp)
callq 0x21050
movq -0xeb8(%rbp), %rdx
leaq 0xbaf2b(%rip), %rsi     # 0xd4195
leaq -0x228(%rbp), %rdi
callq 0x1b120
jmp 0x19278
leaq -0x229(%rbp), %rdi
callq 0x21070
movl $0x0, -0x230(%rbp)
movl $0x0, -0x234(%rbp)
leaq -0x60(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rdi
callq 0x1b700
movq %rax, -0x248(%rbp)
movq -0x240(%rbp), %rdi
callq 0x1b730
movq %rax, -0x250(%rbp)
leaq -0x248(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x1b760
testb $0x1, %al
jne 0x192e5
jmp 0x1ae34
leaq -0x248(%rbp), %rdi
callq 0x1b7a0
movq %rax, %rsi
leaq -0x270(%rbp), %rdi
callq 0x91d80
jmp 0x19302
leaq -0x478(%rbp), %rdi
leaq -0x270(%rbp), %rsi
movl $0x4, %edx
callq 0x656e0
jmp 0x1931c
movq -0x478(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x478(%rbp,%rax), %rdi
callq 0x69b50
movb %al, -0xeb9(%rbp)
jmp 0x1933c
movb -0xeb9(%rbp), %al
testb $0x1, %al
jne 0x1934b
jmp 0x193fe
leaq 0xfe18e(%rip), %rdi     # 0x1174e0
leaq 0xbae65(%rip), %rsi     # 0xd41be
callq 0x89220
movq %rax, -0xec8(%rbp)
jmp 0x19367
movq -0xec8(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x91fb0
movq %rax, -0xed0(%rbp)
jmp 0x19383
movq -0xed0(%rbp), %rdi
leaq 0x6f76f(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x19398
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
movl $0x1, -0x47c(%rbp)
jmp 0x1ad8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x229(%rbp), %rdi
callq 0x21070
jmp 0x1af82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1af76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ae23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ae17
xorl %eax, %eax
movl %eax, %esi
leaq -0x478(%rbp), %rdi
movl $0x2, %edx
callq 0x6eb10
jmp 0x19415
leaq -0x478(%rbp), %rdi
callq 0x6e8a0
movq %rdx, -0xee0(%rbp)
movq %rax, -0xed8(%rbp)
jmp 0x19431
movq -0xee0(%rbp), %rax
movq -0xed8(%rbp), %rcx
movq %rcx, -0x498(%rbp)
movq %rax, -0x490(%rbp)
leaq -0x498(%rbp), %rdi
callq 0x1b7c0
movq %rax, -0xee8(%rbp)
jmp 0x19462
movq -0xee8(%rbp), %rax
movq %rax, -0x488(%rbp)
xorl %edx, %edx
movl %edx, %esi
leaq -0x478(%rbp), %rdi
callq 0x6eb10
jmp 0x19482
leaq 0xfe057(%rip), %rdi     # 0x1174e0
leaq -0x228(%rbp), %rsi
callq 0x91fb0
movq %rax, -0xef0(%rbp)
jmp 0x1949e
movq -0xef0(%rbp), %rdi
movl $0x28, %esi
callq 0x89150
movq %rax, -0xef8(%rbp)
jmp 0x194b8
movq -0xef8(%rbp), %rdi
leaq 0x231a(%rip), %rsi      # 0x1b7e0
callq 0x87d40
movq %rax, -0xf00(%rbp)
jmp 0x194d4
movq -0xf00(%rbp), %rdi
movl -0x234(%rbp), %esi
incl %esi
movl %esi, -0x234(%rbp)
callq 0x895c0
movq %rax, -0xf08(%rbp)
jmp 0x194f7
movq -0xf08(%rbp), %rdi
movl $0x2f, %esi
callq 0x89150
movq %rax, -0xf10(%rbp)
jmp 0x19511
leaq -0x60(%rbp), %rdi
callq 0x1b810
movq -0xf10(%rbp), %rdi
movq %rax, %rsi
callq 0x89830
movq %rax, -0xf18(%rbp)
jmp 0x19532
movq -0xf18(%rbp), %rdi
movl $0x29, %esi
callq 0x89150
movq %rax, -0xf20(%rbp)
jmp 0x1954c
movq -0xf20(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x91fb0
movq %rax, -0xf28(%rbp)
jmp 0x19568
movq -0xf28(%rbp), %rdi
leaq 0x6f58a(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1957d
leaq 0xfdf5c(%rip), %rdi     # 0x1174e0
leaq 0xbac4d(%rip), %rsi     # 0xd41d8
callq 0x89220
movq %rax, -0xf30(%rbp)
jmp 0x19599
movq -0xf30(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x91fb0
movq %rax, -0xf38(%rbp)
jmp 0x195b5
movq -0xf38(%rbp), %rdi
leaq 0xbac2b(%rip), %rsi     # 0xd41ee
callq 0x89220
movq %rax, -0xf40(%rbp)
jmp 0x195d1
movq -0xf40(%rbp), %rdi
movq -0x488(%rbp), %rsi
callq 0x89580
movq %rax, -0xf48(%rbp)
jmp 0x195ed
movq -0xf48(%rbp), %rdi
leaq 0x6f505(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x19602
movq -0x488(%rbp), %rax
movq %rax, -0xf58(%rbp)
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0xf50(%rbp)
callq 0x21050
movq -0xf58(%rbp), %rsi
movq -0xf50(%rbp), %rdx
leaq -0x4b0(%rbp), %rdi
callq 0x1b830
jmp 0x1963f
leaq -0x4b1(%rbp), %rdi
callq 0x21070
leaq -0x4b0(%rbp), %rdi
callq 0x1b8a0
movq %rax, %rsi
movq -0x488(%rbp), %rdx
leaq -0x478(%rbp), %rdi
callq 0x6e250
movq %rax, -0xf60(%rbp)
jmp 0x19676
movq -0xf60(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x69b50
movb %al, -0xf61(%rbp)
jmp 0x19694
movb -0xf61(%rbp), %al
testb $0x1, %al
jne 0x196a0
jmp 0x19701
leaq 0xfde39(%rip), %rdi     # 0x1174e0
leaq 0xbab48(%rip), %rsi     # 0xd41f6
callq 0x89220
movq %rax, -0xf70(%rbp)
jmp 0x196bc
movq -0xf70(%rbp), %rdi
leaq 0x6f436(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x196d1
jmp 0x19701
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4b1(%rbp), %rdi
callq 0x21070
jmp 0x1ae17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ae0b
leaq -0x4d0(%rbp), %rdi
callq 0x1b1d0
leaq -0x4e8(%rbp), %rdi
callq 0x1b8c0
movq $0x0, -0x4f0(%rbp)
movq -0x4f0(%rbp), %rax
movq -0x488(%rbp), %rcx
subq $0x4, %rcx
cmpq %rcx, %rax
jge 0x19e56
movq -0x4f0(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x42, %eax
jne 0x19863
movq -0x4f0(%rbp), %rsi
addq $0x1, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x57, %eax
jne 0x19863
movq -0x4f0(%rbp), %rsi
addq $0x2, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x41, %eax
jne 0x19863
movq -0x4f0(%rbp), %rsi
addq $0x3, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x56, %eax
jne 0x19863
leaq -0x4e8(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x1b900
jmp 0x197dc
testb $0x1, 0xfcddf(%rip)     # 0x1165c2
je 0x19861
leaq 0xfdcf4(%rip), %rdi     # 0x1174e0
leaq 0xbaa15(%rip), %rsi     # 0xd4208
callq 0x89220
movq %rax, -0xf78(%rbp)
jmp 0x19801
movq -0xf78(%rbp), %rdi
leaq 0x2161(%rip), %rsi      # 0x1b970
callq 0x87d40
movq %rax, -0xf80(%rbp)
jmp 0x1981d
movq -0xf80(%rbp), %rdi
movq -0x4f0(%rbp), %rsi
callq 0x89580
movq %rax, -0xf88(%rbp)
jmp 0x19839
movq -0xf88(%rbp), %rdi
leaq 0x6f2b9(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1984e
jmp 0x19861
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1adf3
jmp 0x19863
movq -0x4f0(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x41, %eax
jne 0x19e3d
movq -0x4f0(%rbp), %rsi
addq $0x1, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x4d, %eax
jne 0x19e3d
movq -0x4f0(%rbp), %rsi
addq $0x2, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x54, %eax
jne 0x19e3d
movq -0x4f0(%rbp), %rsi
addq $0x3, %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x41, %eax
jne 0x19e3d
movq $0x0, -0x4f8(%rbp)
movq -0x4f0(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x500(%rbp)
movq -0x500(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x1, %eax
jne 0x19935
movq -0x500(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x500(%rbp)
movq -0x500(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x508(%rbp), %rax
cmpq -0x488(%rbp), %rax
jge 0x199d7
movq -0x508(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $-0x3e, %eax
jne 0x1998f
movq -0x508(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x500(%rbp)
movq $-0x1, -0x4f8(%rbp)
movq -0x508(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x1b8e0
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x199ac
jmp 0x199d7
jmp 0x199ae
movq -0x508(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x508(%rbp)
movq -0x4f8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x4f8(%rbp)
jmp 0x19943
leaq -0x4b0(%rbp), %rdi
movq %rdi, -0xf98(%rbp)
callq 0x1b9a0
movq %rax, -0x538(%rbp)
movq -0x500(%rbp), %rsi
leaq -0x538(%rbp), %rdi
callq 0x1b9d0
movq -0xf98(%rbp), %rdi
movq %rax, -0x530(%rbp)
callq 0x1b9a0
movq %rax, -0x550(%rbp)
movq -0x500(%rbp), %rsi
leaq -0x550(%rbp), %rdi
callq 0x1b9d0
movq %rax, -0x548(%rbp)
movq -0x4f8(%rbp), %rsi
leaq -0x548(%rbp), %rdi
callq 0x1b9d0
movq %rax, -0x540(%rbp)
leaq -0x551(%rbp), %rdi
movq %rdi, -0xf90(%rbp)
callq 0x21050
movq -0xf90(%rbp), %rcx
movq -0x530(%rbp), %rsi
movq -0x540(%rbp), %rdx
leaq -0x528(%rbp), %rdi
callq 0x1ba10
jmp 0x19a88
leaq -0x551(%rbp), %rdi
callq 0x21070
leaq -0x4d0(%rbp), %rdi
movq %rdi, -0xfa8(%rbp)
callq 0x1b700
movq -0xfa8(%rbp), %rdi
movq %rax, -0x568(%rbp)
callq 0x1b730
movq %rax, -0x570(%rbp)
movq -0x568(%rbp), %rdi
movq -0x570(%rbp), %rsi
leaq -0x528(%rbp), %rdx
callq 0x1ba90
movq %rax, -0xfa0(%rbp)
jmp 0x19ae4
movq -0xfa0(%rbp), %rax
movq %rax, -0x560(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x1b730
movq %rax, -0x578(%rbp)
leaq -0x560(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x1b760
testb $0x1, %al
jne 0x19b21
jmp 0x19d59
movl $0x1, -0x57c(%rbp)
leaq -0x4d0(%rbp), %rdi
movq %rdi, -0xfb0(%rbp)
callq 0x1b700
movq -0xfb0(%rbp), %rdi
movq %rax, -0x590(%rbp)
callq 0x1b730
movq %rax, -0x598(%rbp)
leaq -0x5d8(%rbp), %rdi
leaq -0x528(%rbp), %rsi
movl $0x2d, %edx
callq 0x1bbb0
jmp 0x19b72
movl -0x57c(%rbp), %esi
leaq -0x5f8(%rbp), %rdi
callq 0x1bc30
jmp 0x19b86
leaq -0x5b8(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
leaq -0x5f8(%rbp), %rdx
callq 0x1bae0
jmp 0x19ba2
movq -0x590(%rbp), %rdi
movq -0x598(%rbp), %rsi
leaq -0x5b8(%rbp), %rdx
callq 0x1ba90
movq %rax, -0xfb8(%rbp)
jmp 0x19bc5
movq -0xfb8(%rbp), %rax
movq %rax, -0x588(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x1b730
movq %rax, -0x600(%rbp)
leaq -0x588(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0x1b760
movb %al, -0xfb9(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x8f5f0
leaq -0x5f8(%rbp), %rdi
callq 0x8f5f0
leaq -0x5d8(%rbp), %rdi
callq 0x8f5f0
movb -0xfb9(%rbp), %al
testb $0x1, %al
jne 0x19c32
jmp 0x19cc5
movl -0x57c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x57c(%rbp)
jmp 0x19b2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x551(%rbp), %rdi
callq 0x21070
jmp 0x1adf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19e2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19cb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19ca8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x8f5f0
leaq -0x5f8(%rbp), %rdi
callq 0x8f5f0
leaq -0x5d8(%rbp), %rdi
callq 0x8f5f0
jmp 0x19e2c
movl -0x57c(%rbp), %esi
leaq -0x640(%rbp), %rdi
callq 0x1bc30
jmp 0x19cd9
leaq -0x620(%rbp), %rdi
movl $0x2d, %esi
leaq -0x640(%rbp), %rdx
callq 0x1bd50
jmp 0x19cf3
leaq -0x528(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x90d10
jmp 0x19d08
leaq -0x620(%rbp), %rdi
callq 0x8f5f0
leaq -0x640(%rbp), %rdi
callq 0x8f5f0
jmp 0x19d59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19d48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x8f5f0
leaq -0x640(%rbp), %rdi
callq 0x8f5f0
jmp 0x19e2c
leaq -0x4d0(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x1b590
jmp 0x19d6e
testb $0x1, 0xfc84d(%rip)     # 0x1165c2
je 0x19e1e
leaq 0xfd75e(%rip), %rdi     # 0x1174e0
leaq 0xba497(%rip), %rsi     # 0xd4220
callq 0x89220
movq %rax, -0xfc8(%rbp)
jmp 0x19d97
movq -0xfc8(%rbp), %rdi
leaq 0x1bcb(%rip), %rsi      # 0x1b970
callq 0x87d40
movq %rax, -0xfd0(%rbp)
jmp 0x19db3
movq -0xfd0(%rbp), %rdi
movq -0x4f0(%rbp), %rsi
callq 0x89580
movq %rax, -0xfd8(%rbp)
jmp 0x19dcf
movq -0xfd8(%rbp), %rdi
leaq 0xba45f(%rip), %rsi     # 0xd423c
callq 0x89220
movq %rax, -0xfe0(%rbp)
jmp 0x19deb
movq -0xfe0(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x91fb0
movq %rax, -0xfe8(%rbp)
jmp 0x19e07
movq -0xfe8(%rbp), %rdi
leaq 0x6eceb(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x19e1c
jmp 0x19e1e
leaq -0x528(%rbp), %rdi
callq 0x8f5f0
jmp 0x19e3d
leaq -0x528(%rbp), %rdi
callq 0x8f5f0
jmp 0x1adf3
jmp 0x19e3f
movq -0x4f0(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x4f0(%rbp)
jmp 0x19724
leaq 0xfd683(%rip), %rdi     # 0x1174e0
leaq 0x6ec9c(%rip), %rsi     # 0x88b00
callq 0x87d10
movq %rax, -0xff0(%rbp)
jmp 0x19e72
movq -0xff0(%rbp), %rdi
leaq 0xba3c4(%rip), %rsi     # 0xd4244
callq 0x89220
movq %rax, -0xff8(%rbp)
jmp 0x19e8e
movq -0xff8(%rbp), %rdi
leaq 0x1944(%rip), %rsi      # 0x1b7e0
callq 0x87d40
movq %rax, -0x1000(%rbp)
jmp 0x19eaa
leaq -0x4e8(%rbp), %rdi
callq 0x1bda0
movq -0x1000(%rbp), %rdi
movq %rax, %rsi
callq 0x89830
movq %rax, -0x1008(%rbp)
jmp 0x19ece
movq -0x1008(%rbp), %rdi
leaq 0xba38c(%rip), %rsi     # 0xd4268
callq 0x89220
movq %rax, -0x1010(%rbp)
jmp 0x19eea
movq -0x1010(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x91fb0
movq %rax, -0x1018(%rbp)
jmp 0x19f06
movq -0x1018(%rbp), %rdi
leaq 0x6ebec(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x19f1b
leaq -0x1b8(%rbp), %rdi
callq 0x18750
movb %al, -0x1019(%rbp)
jmp 0x19f2f
movb -0x1019(%rbp), %al
testb $0x1, %al
jne 0x19f51
jmp 0x19f3b
movl $0xfffffffd, -0x4(%rbp) # imm = 0xFFFFFFFD
movl $0x1, -0x47c(%rbp)
jmp 0x1ad66
leaq -0x4d0(%rbp), %rdi
callq 0x1b810
movq %rax, -0x1028(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x1bda0
movq %rax, %rcx
movq -0x1028(%rbp), %rax
cmpq %rcx, %rax
jae 0x1a0bb
leaq 0xfd556(%rip), %rdi     # 0x1174e0
leaq 0xba2f0(%rip), %rsi     # 0xd4281
callq 0x89220
movq %rax, -0x1030(%rbp)
jmp 0x19f9f
movq -0x1030(%rbp), %rdi
leaq 0x6eb53(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x19fb4
movq $0x1, -0x648(%rbp)
movq -0x648(%rbp), %rax
movq %rax, -0x1038(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x1bda0
movq %rax, -0x1040(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x1b810
movq -0x1040(%rbp), %rcx
movq %rax, %rdx
movq -0x1038(%rbp), %rax
subq %rdx, %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jae 0x1a0b9
movq -0x648(%rbp), %rsi
leaq -0x688(%rbp), %rdi
callq 0x1be10
jmp 0x1a022
leaq 0xba289(%rip), %rsi     # 0xd42b2
leaq -0x668(%rbp), %rdi
leaq -0x688(%rbp), %rdx
callq 0x1bdc0
jmp 0x1a03e
leaq -0x4d0(%rbp), %rdi
leaq -0x668(%rbp), %rsi
callq 0x1b6d0
jmp 0x1a053
leaq -0x668(%rbp), %rdi
callq 0x8f5f0
leaq -0x688(%rbp), %rdi
callq 0x8f5f0
movq -0x648(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x648(%rbp)
jmp 0x19fbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a0a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x8f5f0
leaq -0x688(%rbp), %rdi
callq 0x8f5f0
jmp 0x1adf3
jmp 0x1a0bb
leaq -0x6f8(%rbp), %rdi
leaq -0x270(%rbp), %rsi
movl $0x2, %edx
callq 0x1afb0
jmp 0x1a0d5
leaq -0x6d0(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x1bef0
jmp 0x1a0ea
leaq -0x6a8(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
callq 0x1b510
jmp 0x1a0ff
leaq -0x6d0(%rbp), %rdi
callq 0x1b0c0
leaq -0x6f8(%rbp), %rdi
callq 0x1b0c0
leaq -0x6a8(%rbp), %rdi
movq %rdi, -0x1048(%rbp)
callq 0x8f810
movq -0x1048(%rbp), %rsi
movq %rax, %rcx
addq $-0x5, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x738(%rbp), %rdi
callq 0x91f30
jmp 0x1a14a
leaq -0x718(%rbp), %rdi
leaq -0x738(%rbp), %rsi
movl $0x2f, %edx
callq 0x1bff0
jmp 0x1a164
leaq -0x738(%rbp), %rdi
callq 0x8f5f0
leaq 0xfd369(%rip), %rdi     # 0x1174e0
leaq 0xba13b(%rip), %rsi     # 0xd42b9
callq 0x89220
movq %rax, -0x1050(%rbp)
jmp 0x1a18c
movq -0x1050(%rbp), %rdi
leaq -0x718(%rbp), %rsi
callq 0x91fb0
movq %rax, -0x1058(%rbp)
jmp 0x1a1a8
movq -0x1058(%rbp), %rdi
leaq 0x6e94a(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1a1bd
leaq -0x758(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
leaq -0x718(%rbp), %rdx
callq 0x1c040
jmp 0x1a1d9
leaq -0x758(%rbp), %rdi
callq 0x18750
movb %al, -0x1059(%rbp)
jmp 0x1a1ed
movb -0x1059(%rbp), %al
xorb $-0x1, %al
movb %al, -0x105a(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x8f5f0
movb -0x105a(%rbp), %al
testb $0x1, %al
jne 0x1a216
jmp 0x1a2bf
movl $0xfffffffd, -0x4(%rbp) # imm = 0xFFFFFFFD
movl $0x1, -0x47c(%rbp)
jmp 0x1ad4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a252
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x1b0c0
leaq -0x6f8(%rbp), %rdi
callq 0x1b0c0
jmp 0x1adf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ade7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x8f5f0
jmp 0x1ade7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1addb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x8f5f0
jmp 0x1addb
movl $0x0, -0x75c(%rbp)
movq $0x0, -0x768(%rbp)
movq -0x768(%rbp), %rax
movq %rax, -0x1068(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x1bda0
movq %rax, %rcx
movq -0x1068(%rbp), %rax
cmpq %rcx, %rax
jae 0x1ad44
movq -0x768(%rbp), %rsi
leaq -0x4e8(%rbp), %rdi
callq 0x1c0c0
movq (%rax), %rax
movq %rax, -0x770(%rbp)
movq -0x768(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1070(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x1bda0
movq %rax, %rcx
movq -0x1070(%rbp), %rax
cmpq %rcx, %rax
jne 0x1a35b
movq -0x488(%rbp), %rax
movq %rax, -0x778(%rbp)
jmp 0x1a37c
movq -0x768(%rbp), %rsi
addq $0x1, %rsi
leaq -0x4e8(%rbp), %rdi
callq 0x1c0c0
movq (%rax), %rax
movq %rax, -0x778(%rbp)
movq -0x778(%rbp), %rax
movq -0x770(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x780(%rbp)
movq -0x768(%rbp), %rsi
leaq -0x4d0(%rbp), %rdi
callq 0x1c160
movq %rax, %rsi
leaq 0xb9f1e(%rip), %rdx     # 0xd42cf
leaq -0x7a0(%rbp), %rdi
callq 0x1c0e0
jmp 0x1a3bf
testb $0x1, 0xfc1fc(%rip)     # 0x1165c2
je 0x1a513
leaq 0xfd10d(%rip), %rdi     # 0x1174e0
leaq 0x1406(%rip), %rsi      # 0x1b7e0
callq 0x87d40
movq %rax, -0x1078(%rbp)
jmp 0x1a3e8
movq -0x1078(%rbp), %rdi
movl $0x28, %esi
callq 0x89150
movq %rax, -0x1080(%rbp)
jmp 0x1a402
movq -0x1080(%rbp), %rdi
movq -0x768(%rbp), %rsi
incq %rsi
callq 0x89830
movq %rax, -0x1088(%rbp)
jmp 0x1a421
movq -0x1088(%rbp), %rdi
movl $0x2f, %esi
callq 0x89150
movq %rax, -0x1090(%rbp)
jmp 0x1a43b
leaq -0x4e8(%rbp), %rdi
callq 0x1bda0
movq -0x1090(%rbp), %rdi
movq %rax, %rsi
callq 0x89830
movq %rax, -0x1098(%rbp)
jmp 0x1a45f
movq -0x1098(%rbp), %rdi
leaq 0xb9e68(%rip), %rsi     # 0xd42d5
callq 0x89220
movq %rax, -0x10a0(%rbp)
jmp 0x1a47b
movq -0x10a0(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x91fb0
movq %rax, -0x10a8(%rbp)
jmp 0x1a497
movq -0x10a8(%rbp), %rdi
leaq 0xb9e3b(%rip), %rsi     # 0xd42e0
callq 0x89220
movq %rax, -0x10b0(%rbp)
jmp 0x1a4b3
movq -0x10b0(%rbp), %rdi
leaq 0x14af(%rip), %rsi      # 0x1b970
callq 0x87d40
movq %rax, -0x10b8(%rbp)
jmp 0x1a4cf
movq -0x10b8(%rbp), %rdi
movq -0x770(%rbp), %rsi
callq 0x89580
movq %rax, -0x10c0(%rbp)
jmp 0x1a4eb
movq -0x10c0(%rbp), %rdi
leaq 0x6e607(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1a500
jmp 0x1a513
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ad33
leaq -0x7e0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
leaq -0x718(%rbp), %rdx
callq 0x1c040
jmp 0x1a52f
leaq -0x7c0(%rbp), %rdi
leaq -0x7e0(%rbp), %rsi
leaq -0x7a0(%rbp), %rdx
callq 0x1c180
jmp 0x1a54b
leaq -0x7e0(%rbp), %rdi
callq 0x8f5f0
movb 0xfbef3(%rip), %cl      # 0x116450
movb $0x0, -0x809(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x10c1(%rbp)
jne 0x1a5b4
leaq -0x808(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
movl $0x2, %edx
callq 0x1afb0
jmp 0x1a58b
movb $0x1, -0x809(%rbp)
leaq -0x808(%rbp), %rdi
callq 0x1b090
movb %al, -0x10c2(%rbp)
jmp 0x1a5a6
movb -0x10c2(%rbp), %al
movb %al, -0x10c1(%rbp)
jmp 0x1a5b4
movb -0x10c1(%rbp), %al
movb %al, -0x10c3(%rbp)
testb $0x1, -0x809(%rbp)
jne 0x1a5cb
jmp 0x1a5d7
leaq -0x808(%rbp), %rdi
callq 0x1b0c0
movb -0x10c3(%rbp), %al
testb $0x1, %al
jne 0x1a5e6
jmp 0x1a8d9
movl $0x1, -0x810(%rbp)
leaq -0x7c0(%rbp), %rdi
movq %rdi, -0x10d0(%rbp)
callq 0x8f810
movq -0x10d0(%rbp), %rsi
movq %rax, %rcx
addq $-0x5, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x850(%rbp), %rdi
callq 0x91f30
jmp 0x1a623
leaq -0x830(%rbp), %rdi
leaq -0x850(%rbp), %rsi
movl $0x2d, %edx
callq 0x1bff0
jmp 0x1a63d
leaq -0x850(%rbp), %rdi
callq 0x8f5f0
movl -0x810(%rbp), %esi
leaq -0x8d8(%rbp), %rdi
callq 0x1bc30
jmp 0x1a65d
leaq -0x8b8(%rbp), %rdi
leaq -0x830(%rbp), %rsi
leaq -0x8d8(%rbp), %rdx
callq 0x1c220
jmp 0x1a679
leaq 0xb9c4f(%rip), %rdx     # 0xd42cf
leaq -0x898(%rbp), %rdi
leaq -0x8b8(%rbp), %rsi
callq 0x1c1d0
jmp 0x1a695
leaq -0x878(%rbp), %rdi
leaq -0x898(%rbp), %rsi
movl $0x2, %edx
callq 0x1c270
jmp 0x1a6af
leaq -0x878(%rbp), %rdi
callq 0x1b090
movb %al, -0x10d1(%rbp)
jmp 0x1a6c3
leaq -0x878(%rbp), %rdi
callq 0x1b0c0
leaq -0x898(%rbp), %rdi
callq 0x8f5f0
leaq -0x8b8(%rbp), %rdi
callq 0x8f5f0
leaq -0x8d8(%rbp), %rdi
callq 0x8f5f0
movb -0x10d1(%rbp), %al
testb $0x1, %al
jne 0x1a702
jmp 0x1a805
movl -0x810(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x810(%rbp)
jmp 0x1a649
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x7e0(%rbp), %rdi
callq 0x8f5f0
jmp 0x1ad33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ad27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x809(%rbp)
jne 0x1a75b
jmp 0x1a767
leaq -0x808(%rbp), %rdi
callq 0x1b0c0
jmp 0x1ad27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x850(%rbp), %rdi
callq 0x8f5f0
jmp 0x1ad27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a8c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a7f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a7e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a7dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x1b0c0
leaq -0x898(%rbp), %rdi
callq 0x8f5f0
leaq -0x8b8(%rbp), %rdi
callq 0x8f5f0
leaq -0x8d8(%rbp), %rdi
callq 0x8f5f0
jmp 0x1a8c8
movl -0x810(%rbp), %esi
leaq -0x938(%rbp), %rdi
callq 0x1bc30
jmp 0x1a819
leaq -0x918(%rbp), %rdi
leaq -0x830(%rbp), %rsi
leaq -0x938(%rbp), %rdx
callq 0x1c220
jmp 0x1a835
leaq 0xb9a93(%rip), %rdx     # 0xd42cf
leaq -0x8f8(%rbp), %rdi
leaq -0x918(%rbp), %rsi
callq 0x1c1d0
jmp 0x1a851
leaq -0x7c0(%rbp), %rdi
leaq -0x8f8(%rbp), %rsi
callq 0x8f640
leaq -0x8f8(%rbp), %rdi
callq 0x8f5f0
leaq -0x918(%rbp), %rdi
callq 0x8f5f0
leaq -0x938(%rbp), %rdi
callq 0x8f5f0
leaq -0x830(%rbp), %rdi
callq 0x8f5f0
jmp 0x1a8d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a8bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x918(%rbp), %rdi
callq 0x8f5f0
leaq -0x938(%rbp), %rdi
callq 0x8f5f0
leaq -0x830(%rbp), %rdi
callq 0x8f5f0
jmp 0x1ad27
movl $0x10, %edi
movl $0x4, %esi
callq 0x1c300
movl %eax, -0x10d8(%rbp)
jmp 0x1a8f0
movl -0x10d8(%rbp), %edx
leaq -0xb48(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x650e0
jmp 0x1a90b
leaq -0xb38(%rbp), %rax
movq %rax, -0x10e8(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x1b8a0
movq -0x10e8(%rbp), %rdi
movq %rax, %rsi
movq -0x770(%rbp), %rax
addq %rax, %rsi
movq -0x780(%rbp), %rdx
callq 0x88970
movq %rax, -0x10e0(%rbp)
jmp 0x1a94e
movq -0x10e0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x69b50
movb %al, -0x10e9(%rbp)
jmp 0x1a96c
movb -0x10e9(%rbp), %al
testb $0x1, %al
jne 0x1a97b
jmp 0x1acc3
movl -0x75c(%rbp), %eax
incl %eax
movl %eax, -0x75c(%rbp)
leaq -0xbc8(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
leaq -0x718(%rbp), %rdx
callq 0x1c040
jmp 0x1a9a5
leaq 0xb9944(%rip), %rdx     # 0xd42f0
leaq -0xba8(%rbp), %rdi
leaq -0xbc8(%rbp), %rsi
callq 0x1c1d0
jmp 0x1a9c1
movl -0x75c(%rbp), %esi
leaq -0xbe8(%rbp), %rdi
callq 0x1bc30
jmp 0x1a9d5
leaq -0xb88(%rbp), %rdi
leaq -0xba8(%rbp), %rsi
leaq -0xbe8(%rbp), %rdx
callq 0x1bae0
jmp 0x1a9f1
leaq 0xb98d7(%rip), %rdx     # 0xd42cf
leaq -0xb68(%rbp), %rdi
leaq -0xb88(%rbp), %rsi
callq 0x1c1d0
jmp 0x1aa0d
leaq -0x7c0(%rbp), %rdi
leaq -0xb68(%rbp), %rsi
movq %rsi, -0x10f8(%rbp)
callq 0x8f640
movq -0x10f8(%rbp), %rdi
callq 0x8f5f0
leaq -0xb88(%rbp), %rdi
callq 0x8f5f0
leaq -0xbe8(%rbp), %rdi
callq 0x8f5f0
leaq -0xba8(%rbp), %rdi
callq 0x8f5f0
leaq -0xbc8(%rbp), %rdi
callq 0x8f5f0
movl $0x10, %edi
movl $0x4, %esi
callq 0x1c300
movl %eax, -0x10f0(%rbp)
jmp 0x1aa7a
movl -0x10f0(%rbp), %edx
leaq -0xdf8(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x650e0
jmp 0x1aa95
leaq -0xde8(%rbp), %rax
movq %rax, -0x1108(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x1b8a0
movq -0x1108(%rbp), %rdi
movq %rax, %rsi
movq -0x770(%rbp), %rax
addq %rax, %rsi
movq -0x780(%rbp), %rdx
callq 0x88970
movq %rax, -0x1100(%rbp)
jmp 0x1aad8
movq -0x1100(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x69b50
movb %al, -0x1109(%rbp)
jmp 0x1aaf6
movb -0x1109(%rbp), %al
testb $0x1, %al
jne 0x1ab05
jmp 0x1ac98
leaq 0xfc9d4(%rip), %rdi     # 0x1174e0
leaq 0xb97eb(%rip), %rsi     # 0xd42fe
callq 0x89220
movq %rax, -0x1118(%rbp)
jmp 0x1ab21
movq -0x1118(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x91fb0
movq %rax, -0x1120(%rbp)
jmp 0x1ab3d
movq -0x1120(%rbp), %rdi
leaq 0xb97ce(%rip), %rsi     # 0xd4319
callq 0x89220
movq %rax, -0x1128(%rbp)
jmp 0x1ab59
movq -0x1128(%rbp), %rdi
leaq 0xc79(%rip), %rsi       # 0x1b7e0
callq 0x87d40
movq %rax, -0x1130(%rbp)
jmp 0x1ab75
movq -0x1130(%rbp), %rdi
movq -0x768(%rbp), %rsi
callq 0x89830
movq %rax, -0x1138(%rbp)
jmp 0x1ab91
movq -0x1138(%rbp), %rdi
leaq 0xb9784(%rip), %rsi     # 0xd4323
callq 0x89220
movq %rax, -0x1140(%rbp)
jmp 0x1abad
movq -0x1140(%rbp), %rdi
leaq 0xdb5(%rip), %rsi       # 0x1b970
callq 0x87d40
movq %rax, -0x1148(%rbp)
jmp 0x1abc9
movq -0x1148(%rbp), %rdi
movq -0x770(%rbp), %rsi
callq 0x89580
movq %rax, -0x1150(%rbp)
jmp 0x1abe5
movq -0x1150(%rbp), %rdi
leaq 0x6df0d(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1abfa
jmp 0x1aca7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ad1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1ac52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb88(%rbp), %rdi
callq 0x8f5f0
leaq -0xbe8(%rbp), %rdi
callq 0x8f5f0
leaq -0xba8(%rbp), %rdi
callq 0x8f5f0
leaq -0xbc8(%rbp), %rdi
callq 0x8f5f0
jmp 0x1ad1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xdf8(%rbp), %rdi
callq 0x668b0
jmp 0x1ad1b
movl -0x230(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x230(%rbp)
leaq -0xdf8(%rbp), %rdi
callq 0x660e0
jmp 0x1acb5
leaq -0xdf8(%rbp), %rdi
callq 0x668b0
jmp 0x1acd2
movl -0x230(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x230(%rbp)
leaq -0xb48(%rbp), %rdi
callq 0x660e0
jmp 0x1ace0
leaq -0xb48(%rbp), %rdi
callq 0x668b0
leaq -0x7c0(%rbp), %rdi
callq 0x8f5f0
leaq -0x7a0(%rbp), %rdi
callq 0x8f5f0
movq -0x768(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x768(%rbp)
jmp 0x1a2d4
leaq -0xb48(%rbp), %rdi
callq 0x668b0
leaq -0x7c0(%rbp), %rdi
callq 0x8f5f0
leaq -0x7a0(%rbp), %rdi
callq 0x8f5f0
jmp 0x1addb
movl $0x0, -0x47c(%rbp)
leaq -0x718(%rbp), %rdi
callq 0x8f5f0
leaq -0x6a8(%rbp), %rdi
callq 0x8f5f0
leaq -0x4e8(%rbp), %rdi
callq 0x1c320
leaq -0x4d0(%rbp), %rdi
callq 0x1c380
leaq -0x4b0(%rbp), %rdi
callq 0x1c3e0
leaq -0x478(%rbp), %rdi
callq 0x66410
movl -0x47c(%rbp), %eax
testl %eax, %eax
jne 0x1adac
jmp 0x1ada2
movl $0x0, -0x47c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x8f5f0
movl -0x47c(%rbp), %eax
testl %eax, %eax
jne 0x1af53
jmp 0x1adc8
jmp 0x1adca
leaq -0x248(%rbp), %rdi
callq 0x1c440
jmp 0x192c9
leaq -0x718(%rbp), %rdi
callq 0x8f5f0
leaq -0x6a8(%rbp), %rdi
callq 0x8f5f0
leaq -0x4e8(%rbp), %rdi
callq 0x1c320
leaq -0x4d0(%rbp), %rdi
callq 0x1c380
leaq -0x4b0(%rbp), %rdi
callq 0x1c3e0
leaq -0x478(%rbp), %rdi
callq 0x66410
leaq -0x270(%rbp), %rdi
callq 0x8f5f0
jmp 0x1af76
leaq 0xfc6a5(%rip), %rdi     # 0x1174e0
leaq -0x228(%rbp), %rsi
callq 0x91fb0
movq %rax, -0x1158(%rbp)
jmp 0x1ae50
movq -0x1158(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x91fb0
movq %rax, -0x1160(%rbp)
jmp 0x1ae6c
movq -0x1160(%rbp), %rdi
leaq 0x6dc86(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1ae81
leaq 0xfc658(%rip), %rdi     # 0x1174e0
leaq 0xb94a0(%rip), %rsi     # 0xd432f
callq 0x89220
movq %rax, -0x1168(%rbp)
jmp 0x1ae9d
movq -0x1168(%rbp), %rdi
leaq 0x935(%rip), %rsi       # 0x1b7e0
callq 0x87d40
movq %rax, -0x1170(%rbp)
jmp 0x1aeb9
leaq -0x60(%rbp), %rdi
callq 0x1b810
movq -0x1170(%rbp), %rdi
movq %rax, %rsi
callq 0x89830
movq %rax, -0x1178(%rbp)
jmp 0x1aeda
movq -0x1178(%rbp), %rdi
leaq 0xb9458(%rip), %rsi     # 0xd4340
callq 0x89220
movq %rax, -0x1180(%rbp)
jmp 0x1aef6
movq -0x1180(%rbp), %rdi
movl -0x230(%rbp), %esi
callq 0x895c0
movq %rax, -0x1188(%rbp)
jmp 0x1af11
movq -0x1188(%rbp), %rdi
leaq 0xb943c(%rip), %rsi     # 0xd435b
callq 0x89220
movq %rax, -0x1190(%rbp)
jmp 0x1af2d
movq -0x1190(%rbp), %rdi
leaq 0x6dbc5(%rip), %rsi     # 0x88b00
callq 0x87d10
jmp 0x1af42
movl $0x0, -0x4(%rbp)
movl $0x1, -0x47c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x8f5f0
leaq -0x1b8(%rbp), %rdi
callq 0x8f5f0
leaq -0x60(%rbp), %rdi
callq 0x1c380
jmp 0x1af99
leaq -0x228(%rbp), %rdi
callq 0x8f5f0
leaq -0x1b8(%rbp), %rdi
callq 0x8f5f0
leaq -0x60(%rbp), %rdi
callq 0x1c380
jmp 0x1afa5
movl -0x4(%rbp), %eax
addq $0x1190, %rsp           # imm = 0x1190
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x137b0
nop