LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: Se6[P]CmdLineArgs/./CmdLineArgs.h
// Function: CmdLineArgs::throwIfRemaining()
void CmdLineArgs::throwIfRemaining()
{
    if(!args_.empty()) {
        std::string msg("\nError: remaining args: ");
        for( auto &arg: args_ )
            msg += arg + " ";
        throw std::runtime_error(msg);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x7fc0
testb $0x1, %al
jne 0x604a
leaq -0x29(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x34f0
movq -0x90(%rbp), %rdx
leaq 0xa18b(%rip), %rsi      # 0x100a0
leaq -0x28(%rbp), %rdi
callq 0x7730
jmp 0x5f20
leaq -0x29(%rbp), %rdi
callq 0x3340
movq -0x88(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x7a20
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
callq 0x79b0
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x7b00
testb $0x1, %al
jne 0x5f64
jmp 0x5fe9
leaq -0x50(%rbp), %rdi
callq 0x7c40
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rsi
leaq 0xa112(%rip), %rdx      # 0x1008e
leaq -0x80(%rbp), %rdi
callq 0x83c0
jmp 0x5f87
leaq -0x28(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x33c0
jmp 0x5f96
leaq -0x80(%rbp), %rdi
callq 0x31d0
leaq -0x50(%rbp), %rdi
callq 0x7c20
jmp 0x5f4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x3340
jmp 0x6053
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x603f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x31d0
jmp 0x603f
movl $0x10, %edi
callq 0x3180
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x98(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x3460
jmp 0x600b
movq -0x98(%rbp), %rdi
movq 0xffd7(%rip), %rsi      # 0x15ff0
movq 0xffa0(%rip), %rdx      # 0x15fc0
callq 0x34b0
jmp 0x605c
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x3240
leaq -0x28(%rbp), %rdi
callq 0x31d0
jmp 0x6053
addq $0xa0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x34e0
nopl (%rax)
// File: Se6[P]CmdLineArgs/./CmdLineArgs.h
// Function: CmdLineArgs::throwIfUnparsed()
void CmdLineArgs::throwIfUnparsed()
{
    std::vector<std::string> unparsed = getUnparsedOpts();
    if( !unparsed.empty() ) {
        std::string msg("\nError: unparsed options: ");
        for( auto &arg: unparsed )
            msg += arg + " ";
        throw std::runtime_error(msg);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x5de0
leaq -0x20(%rbp), %rdi
callq 0x7fc0
testb $0x1, %al
jne 0x61e9
leaq -0x41(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x34f0
movq -0xa0(%rbp), %rdx
leaq 0xa00e(%rip), %rsi      # 0x100b9
leaq -0x40(%rbp), %rdi
callq 0x7730
jmp 0x60b6
leaq -0x41(%rbp), %rdi
callq 0x3340
leaq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x7a20
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
callq 0x79b0
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x7b00
testb $0x1, %al
jne 0x60f7
jmp 0x6188
leaq -0x68(%rbp), %rdi
callq 0x7c40
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rsi
leaq 0x9f7f(%rip), %rdx      # 0x1008e
leaq -0x98(%rbp), %rdi
callq 0x83c0
jmp 0x611d
leaq -0x40(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x33c0
jmp 0x612f
leaq -0x98(%rbp), %rdi
callq 0x31d0
leaq -0x68(%rbp), %rdi
callq 0x7c20
jmp 0x60e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x3340
jmp 0x61fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x61de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x31d0
jmp 0x61de
movl $0x10, %edi
callq 0x3180
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xa8(%rbp)
leaq -0x40(%rbp), %rsi
callq 0x3460
jmp 0x61aa
movq -0xa8(%rbp), %rdi
movq 0xfe38(%rip), %rsi      # 0x15ff0
movq 0xfe01(%rip), %rdx      # 0x15fc0
callq 0x34b0
jmp 0x620d
movq -0xa8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3240
leaq -0x40(%rbp), %rdi
callq 0x31d0
jmp 0x61fb
leaq -0x20(%rbp), %rdi
callq 0x76b0
addq $0xb0, %rsp
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0x76b0
movq -0x50(%rbp), %rdi
callq 0x34e0
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/City.cpp
// Function: warcraft::compBeforeFight(std::shared_ptr<warcraft::Weapon>, std::shared_ptr<warcraft::Weapon>)
bool compBeforeFight(WeaponPtr lhs, WeaponPtr rhs)
{
    if (lhs->getType() < rhs->getType())
        return true;
    else if (lhs->getType() == ARROW && lhs->getType() == rhs->getType() && lhs->getDurability() < rhs->getDurability())
        return true;
    else
        return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x30(%rbp)
movq %rsi, -0x28(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
movq -0x28(%rbp), %rdi
movl %eax, -0x1c(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
movl %eax, %ecx
movl -0x1c(%rbp), %eax
cmpl %ecx, %eax
jge 0x470b
movb $0x1, -0x1(%rbp)
jmp 0x478b
movq -0x30(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
cmpl $0x2, %eax
jne 0x4787
movq -0x30(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
movq -0x28(%rbp), %rdi
movl %eax, -0x34(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
movl %eax, %ecx
movl -0x34(%rbp), %eax
cmpl %ecx, %eax
jne 0x4787
movq -0x30(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x5d70
movq -0x28(%rbp), %rdi
movq %rax, -0x40(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x5d70
movq %rax, %rcx
movq -0x40(%rbp), %rax
cmpq %rcx, %rax
jae 0x4787
movb $0x1, -0x1(%rbp)
jmp 0x478b
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/City.cpp
// Function: warcraft::City::Battle()
bool City::Battle()
{
    //城市中没有对立的两武士，决斗失败
    if (!redWarrior.get() || !blueWarrior.get())
        return false;

    /****************************战前准备*******************************/
    //排列好武器
    vector<WeaponPtr> &redWeaponLib = redWarrior->getWeapons();
    if (!redWeaponLib.empty())
    std::sort(redWeaponLib.begin(), redWeaponLib.end(), compBeforeFight);
    
    vector<WeaponPtr> &blueWeaponLib = blueWarrior->getWeapons();
    if (!blueWeaponLib.empty())
    std::sort(blueWeaponLib.begin(), blueWeaponLib.end(), compBeforeFight);

    //如果双方都没有武器，则视为平局
    if (0 == redWeaponLib.size() && 0 == blueWeaponLib.size())
    {
        bothAlive();
        return true; //决斗成功
    }

    /****************************战中*******************************/
    //偶数编号城市，蓝方先攻击
    if (0 == _id % 2)
        blueWarriorAttackFirst();
    //奇数编号城市，红方先攻击
    else
        redWarriorAttackFirst();

    return true; //决斗成功
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x48(%rbp)
addq $0x8, %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x48b6
movq -0x48(%rbp), %rdi
addq $0x18, %rdi
callq 0x5d90
cmpq $0x0, %rax
jne 0x48bf
movb $0x0, -0x1(%rbp)
jmp 0x49c6
movq -0x48(%rbp), %rdi
addq $0x8, %rdi
callq 0x5db0
movq %rax, %rdi
callq 0x5dd0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5df0
testb $0x1, %al
jne 0x4913
movq -0x18(%rbp), %rdi
callq 0x5e80
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5eb0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq -0x24e(%rip), %rdx      # 0x46c0
callq 0x5e30
movq -0x48(%rbp), %rdi
addq $0x18, %rdi
callq 0x5db0
movq %rax, %rdi
callq 0x5dd0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x5df0
testb $0x1, %al
jne 0x4967
movq -0x30(%rbp), %rdi
callq 0x5e80
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x5eb0
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rsi
leaq -0x2a2(%rip), %rdx      # 0x46c0
callq 0x5e30
movq -0x18(%rbp), %rdi
callq 0x5ee0
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x499c
movq -0x30(%rbp), %rdi
callq 0x5ee0
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x499c
movq -0x48(%rbp), %rdi
callq 0x5f00
movb $0x1, -0x1(%rbp)
jmp 0x49c6
movq -0x48(%rbp), %rax
movq (%rax), %rcx
andq $0x1, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x49b9
movq -0x48(%rbp), %rdi
callq 0x49e0
jmp 0x49c2
movq -0x48(%rbp), %rdi
callq 0x4db0
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/City.cpp
// Function: warcraft::City::judgeResult(bool&, bool&)
bool City::judgeResult(bool &redHpFlag, bool &blueHpFlag)
{
    //如果双方的HP都没有变化，则平局
    if (false == redHpFlag && false == blueHpFlag)
    {
        bothAlive();
        return true;
    }

    else if (redWarrior->getHp() <= 0 && blueWarrior->getHp() <= 0)
    {
        bothdie();
        return true;
    }
    else if (redWarrior->getHp() <= 0)
    {
        win(blueWarrior, redWarrior);
        return true;
    }
    else if (blueWarrior->getHp() <= 0)
    {
        win(redWarrior, blueWarrior);
        return true;
    }
    else
        return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x57d3
movq -0x20(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x57d3
movq -0x78(%rbp), %rdi
callq 0x5f00
movb $0x1, -0x1(%rbp)
jmp 0x595b
movq -0x78(%rbp), %rdi
addq $0x8, %rdi
callq 0x5db0
movq %rax, %rdi
callq 0x6440
cmpl $0x0, %eax
jg 0x5819
movq -0x78(%rbp), %rdi
addq $0x18, %rdi
callq 0x5db0
movq %rax, %rdi
callq 0x6440
cmpl $0x0, %eax
jg 0x5819
movq -0x78(%rbp), %rdi
callq 0x6460
movb $0x1, -0x1(%rbp)
jmp 0x595b
movq -0x78(%rbp), %rdi
addq $0x8, %rdi
callq 0x5db0
movq %rax, %rdi
callq 0x6440
cmpl $0x0, %eax
jg 0x58b8
movq -0x78(%rbp), %rsi
addq $0x18, %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x6640
movq -0x78(%rbp), %rsi
addq $0x8, %rsi
leaq -0x40(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x6640
movq -0x78(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x5190
jmp 0x587a
leaq -0x40(%rbp), %rdi
callq 0x6670
leaq -0x30(%rbp), %rdi
callq 0x6670
movb $0x1, -0x1(%rbp)
jmp 0x595b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x6670
leaq -0x30(%rbp), %rdi
callq 0x6670
jmp 0x5969
movq -0x78(%rbp), %rdi
addq $0x18, %rdi
callq 0x5db0
movq %rax, %rdi
callq 0x6440
cmpl $0x0, %eax
jg 0x5957
movq -0x78(%rbp), %rsi
addq $0x8, %rsi
leaq -0x60(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x6640
movq -0x78(%rbp), %rsi
addq $0x18, %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x6640
movq -0x78(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
callq 0x5190
jmp 0x591f
leaq -0x70(%rbp), %rdi
callq 0x6670
leaq -0x60(%rbp), %rdi
callq 0x6670
movb $0x1, -0x1(%rbp)
jmp 0x595b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x6670
leaq -0x60(%rbp), %rdi
callq 0x6670
jmp 0x5969
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xa0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/./Type.h
// Function: warcraft::toString[abi:cxx11](warcraft::ColorType)
inline string toString(ColorType color)
{
    switch(color)
    {
        case RED:
        return "red";
        case BLUE:
        return "blue";
        default:
        return string();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x38(%rbp)
movq %rdi, %rax
movq %rax, -0x30(%rbp)
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x6123
jmp 0x6116
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x6168
jmp 0x61ad
leaq -0xd(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rdx
leaq 0x17f07(%rip), %rsi     # 0x1e046
callq 0x66b0
jmp 0x6146
leaq -0xd(%rbp), %rdi
callq 0x41e0
jmp 0x61b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xd(%rbp), %rdi
callq 0x41e0
jmp 0x61c0
leaq -0x1d(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x48(%rbp), %rdx
leaq 0x17ec6(%rip), %rsi     # 0x1e04a
callq 0x66b0
jmp 0x618b
leaq -0x1d(%rbp), %rdi
callq 0x41e0
jmp 0x61b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x41e0
jmp 0x61c0
movq -0x38(%rbp), %rdi
callq 0x4260
movq -0x30(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x4300
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/GameConfig.cpp
// Function: warcraft::GameConfig::readFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void GameConfig::readFromFile(const string filename)
{
    std::ifstream ifs(filename, std::ifstream::in);
    if (!ifs.good())
    {
        cout << filename << " GameConfig::readFromFile ERROR!" << endl;
        exit(-1);
    }
    readFromStream(ifs);
    ifs.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movq %rsi, -0x238(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x230(%rbp)
leaq -0x218(%rbp), %rdi
movl $0x8, %edx
callq 0x42b0
movq -0x218(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x218(%rbp,%rax), %rdi
callq 0x42e0
movb %al, -0x225(%rbp)
jmp 0x8ff6
movb -0x225(%rbp), %al
testb $0x1, %al
jne 0x9079
jmp 0x9002
movq -0x238(%rbp), %rsi
movq 0x23fc0(%rip), %rdi     # 0x2cfd0
callq 0x4170
movq %rax, -0x240(%rbp)
jmp 0x901e
movq -0x240(%rbp), %rdi
leaq 0x1506f(%rip), %rsi     # 0x1e09b
callq 0x4180
movq %rax, -0x248(%rbp)
jmp 0x903a
movq -0x248(%rbp), %rdi
movq 0x23f70(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x904f
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x4230
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x4070
jmp 0x90b1
movq -0x230(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x8d30
jmp 0x908e
leaq -0x218(%rbp), %rdi
callq 0x4050
jmp 0x909c
leaq -0x218(%rbp), %rdi
callq 0x4070
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
movq -0x220(%rbp), %rdi
callq 0x4300
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/./Type.h
// Function: warcraft::toString[abi:cxx11](warcraft::WarriorType)
inline string toString(WarriorType warrior)
{
    switch(warrior)
    {
        case DRAGON:
        return "dragon";
        case NINJA:
        return "ninja";
        case ICEMAN:
        return "iceman";
        case LION:
        return "lion";
        case WOLF:
        return "wolf";
        default:
        return string();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x38(%rbp)
movq %rdi, %rax
movq %rax, -0x30(%rbp)
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x4, %rax
ja 0xeb9a
movq -0x28(%rbp), %rax
leaq 0xf72a(%rip), %rcx      # 0x1e150
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xd(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rdx
leaq 0xf781(%rip), %rsi      # 0x1e1cc
callq 0x66b0
jmp 0xea52
leaq -0xd(%rbp), %rdi
callq 0x41e0
jmp 0xeba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xd(%rbp), %rdi
callq 0x41e0
jmp 0xebad
leaq -0x1d(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x48(%rbp), %rdx
leaq 0xf73d(%rip), %rsi      # 0x1e1d3
callq 0x66b0
jmp 0xea9d
leaq -0x1d(%rbp), %rdi
callq 0x41e0
jmp 0xeba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x41e0
jmp 0xebad
leaq -0x1e(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x50(%rbp), %rdx
leaq 0xf6f8(%rip), %rsi      # 0x1e1d9
callq 0x66b0
jmp 0xeae8
leaq -0x1e(%rbp), %rdi
callq 0x41e0
jmp 0xeba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1e(%rbp), %rdi
callq 0x41e0
jmp 0xebad
leaq -0x1f(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0xf6b4(%rip), %rsi      # 0x1e1e0
callq 0x66b0
jmp 0xeb33
leaq -0x1f(%rbp), %rdi
callq 0x41e0
jmp 0xeba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1f(%rbp), %rdi
callq 0x41e0
jmp 0xebad
leaq -0x20(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x60(%rbp), %rdx
leaq 0xf674(%rip), %rsi      # 0x1e1e5
callq 0x66b0
jmp 0xeb78
leaq -0x20(%rbp), %rdi
callq 0x41e0
jmp 0xeba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x41e0
jmp 0xebad
movq -0x38(%rbp), %rdi
callq 0x4260
movq -0x30(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/./Type.h
// Function: warcraft::toString[abi:cxx11](warcraft::WeaponType)
inline string toString(WeaponType weapon)
{
    switch(weapon)
    {
        case SWORD:
        return "sword";
        case BOMB:
        return "bomb";
        case ARROW:
        return "arrow";
        default:
        return string();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x38(%rbp)
movq %rdi, %rax
movq %rax, -0x30(%rbp)
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x100b1
jmp 0x10096
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x100fc
jmp 0x100a0
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x10141
jmp 0x10186
leaq -0xd(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rdx
leaq 0xe15a(%rip), %rsi      # 0x1e227
callq 0x66b0
jmp 0x100d4
leaq -0xd(%rbp), %rdi
callq 0x41e0
jmp 0x1018f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xd(%rbp), %rdi
callq 0x41e0
jmp 0x10199
leaq -0x1d(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x48(%rbp), %rdx
leaq 0xe115(%rip), %rsi      # 0x1e22d
callq 0x66b0
jmp 0x1011f
leaq -0x1d(%rbp), %rdi
callq 0x41e0
jmp 0x1018f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x41e0
jmp 0x10199
leaq -0x1e(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x4310
movq -0x38(%rbp), %rdi
movq -0x50(%rbp), %rdx
leaq 0xe0d5(%rip), %rsi      # 0x1e232
callq 0x66b0
jmp 0x10164
leaq -0x1e(%rbp), %rdi
callq 0x41e0
jmp 0x1018f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1e(%rbp), %rdi
callq 0x41e0
jmp 0x10199
movq -0x38(%rbp), %rdi
callq 0x4260
movq -0x30(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/TestWarcraft.cpp
// Function: test1()
void test1()
{
    //勇士生命值，攻击力赋值顺序
    vector<WarriorType> initWarriorOrder{DRAGON, NINJA, ICEMAN, LION, WOLF};
    GameConfig::getInstance()->setInitWarriorOrder(initWarriorOrder.begin(), initWarriorOrder.end());
    GameConfig::getInstance()->readFromFile("warcraft.conf");
    GameConfig::getInstance()->print();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movups 0x78e6(%rip), %xmm0     # 0x1e8c8
movaps %xmm0, -0x40(%rbp)
movl $0x4, -0x30(%rbp)
leaq -0x40(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x5, -0x20(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x9770
movq -0x98(%rbp), %rcx
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x18(%rbp), %rdi
callq 0x17970
jmp 0x17027
leaq -0x41(%rbp), %rdi
callq 0x9cf0
callq 0x94e0
movq %rax, -0xa0(%rbp)
jmp 0x1703e
leaq -0x18(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x17a50
movq -0xa8(%rbp), %rdi
movq %rax, -0x60(%rbp)
callq 0x17a80
movq -0xa0(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rsi
movq -0x68(%rbp), %rdx
callq 0x179f0
jmp 0x17078
callq 0x94e0
movq %rax, -0xb0(%rbp)
jmp 0x17086
leaq -0x89(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x4310
movq -0xb8(%rbp), %rdx
leaq 0x7835(%rip), %rsi      # 0x1e8dc
leaq -0x88(%rbp), %rdi
callq 0x66b0
jmp 0x170b5
movq -0xb0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x8fa0
jmp 0x170ca
leaq -0x88(%rbp), %rdi
callq 0x40f0
leaq -0x89(%rbp), %rdi
callq 0x41e0
callq 0x94e0
movq %rax, -0xc0(%rbp)
jmp 0x170f0
movq -0xc0(%rbp), %rdi
callq 0x90c0
jmp 0x170fe
leaq -0x18(%rbp), %rdi
callq 0x9910
addq $0xc0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x9cf0
jmp 0x17170
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x17167
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1715b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x40f0
leaq -0x89(%rbp), %rdi
callq 0x41e0
leaq -0x18(%rbp), %rdi
callq 0x9910
movq -0x50(%rbp), %rdi
callq 0x4300
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/TestWarcraft.cpp
// Function: test2()
void test2()
{
    GameTime::getInstance()->showTime();
    GameTime::getInstance()->updateTime();
    cout << endl;
    GameTime::getInstance()->showTime();
    GameTime::getInstance()->updateTime();
    cout << endl;
    GameTime::getInstance()->showTime();
    GameTime::getInstance()->updateTime();
    cout << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
movq 0x15e2b(%rip), %rdi     # 0x2cfd0
movq 0x15e0c(%rip), %rsi     # 0x2cfb8
callq 0x41c0
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
movq 0x15dfe(%rip), %rdi     # 0x2cfd0
movq 0x15ddf(%rip), %rsi     # 0x2cfb8
callq 0x41c0
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
movq 0x15dd1(%rip), %rdi     # 0x2cfd0
movq 0x15db2(%rip), %rsi     # 0x2cfb8
callq 0x41c0
popq %rbp
retq
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/TestWarcraft.cpp
// Function: test3()
void test3()
{
    test1();
    WeaponPtr weapon(new Arrow(DRAGON));
    cout << weapon->getAttackValue() << endl;
    cout << weapon->getName() << endl;
    cout << weapon->getDurability() << endl;
    weapon->decreaseDuribility();
    cout << weapon->getDurability() << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
callq 0x16fd0
movl $0x48, %edi
callq 0x4190
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x48(%rbp)
xorl %esi, %esi
callq 0xdf70
jmp 0x1723d
movq -0x48(%rbp), %rsi
leaq -0x10(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x17be0
movq -0x58(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x17c10
movq %rax, -0x50(%rbp)
jmp 0x17265
movq -0x50(%rbp), %rsi
movq 0x15d60(%rip), %rdi     # 0x2cfd0
callq 0x4060
movq %rax, -0x60(%rbp)
jmp 0x1727b
movq -0x60(%rbp), %rdi
movq 0x15d32(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x1728d
leaq -0x10(%rbp), %rdi
callq 0x5d30
movq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0x17c30
jmp 0x172a4
movq 0x15d25(%rip), %rdi     # 0x2cfd0
leaq -0x40(%rbp), %rsi
callq 0x4170
movq %rax, -0x68(%rbp)
jmp 0x172ba
movq -0x68(%rbp), %rdi
movq 0x15cf3(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x172cc
leaq -0x40(%rbp), %rdi
callq 0x40f0
leaq -0x10(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x5d70
movq %rax, -0x70(%rbp)
jmp 0x172ec
movq -0x70(%rbp), %rsi
movq 0x15cd9(%rip), %rdi     # 0x2cfd0
callq 0x4060
movq %rax, -0x78(%rbp)
jmp 0x17302
movq -0x78(%rbp), %rdi
movq 0x15cab(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x17314
leaq -0x10(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x17c60
jmp 0x17327
leaq -0x10(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x5d70
movq %rax, -0x80(%rbp)
jmp 0x1733e
movq -0x80(%rbp), %rsi
movq 0x15c87(%rip), %rdi     # 0x2cfd0
callq 0x4060
movq %rax, -0x88(%rbp)
jmp 0x17357
movq -0x88(%rbp), %rdi
movq 0x15c53(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x1736c
leaq -0x10(%rbp), %rdi
callq 0x63c0
addq $0x90, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0x48, %esi
callq 0x41a0
jmp 0x173c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x173bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x40f0
leaq -0x10(%rbp), %rdi
callq 0x63c0
movq -0x18(%rbp), %rdi
callq 0x4300
nop
// File: Worthy-Wang[P]Warcraft3-StartWar/./GameTime.h
// Function: warcraft::GameTime::updateTime()
void updateTime()
    {
        if ((_minute + 5) == 60)
        {
            _hour++;
            _minute = 0;
        }
        else
        {
            _minute += 5;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq 0x8(%rax), %rax
addq $0x5, %rax
cmpq $0x3c, %rax
jne 0x17bc6
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
jmp 0x17bd6
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
addq $0x5, %rcx
movq %rcx, 0x8(%rax)
popq %rbp
retq
nopl (%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/./WarcraftWorld.h
// Function: warcraft::WarcraftWorld::~WarcraftWorld()
~WarcraftWorld()
    {
        if (_red)
            delete _red;
        if (_blue)
            delete _blue;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, (%rax)
je 0x17ec4
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
je 0x17ec2
movq -0x18(%rbp), %rdi
callq 0x18330
movq -0x18(%rbp), %rdi
movl $0xa8, %esi
callq 0x41a0
jmp 0x17ec4
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x17efa
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x17ef8
movq -0x20(%rbp), %rdi
callq 0x18330
movq -0x20(%rbp), %rdi
movl $0xa8, %esi
callq 0x41a0
jmp 0x17efa
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
callq 0x17fe0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/Warrior.cpp
// Function: warcraft::Warrior::attack(std::shared_ptr<warcraft::Warrior>, std::shared_ptr<warcraft::Weapon>)
void Warrior::attack(WarriorPtr enemy, WeaponPtr weapon)
{
    switch (weapon->getType())
    {
    case SWORD:
    {
        enemy->sufferAttack(weapon->getAttackValue());
        break;
    }
    case BOMB:
    {
        enemy->sufferAttack(weapon->getAttackValue());
        if (this->getType() != NINJA)
            this->sufferAttack(weapon->getAttackValue() / 2);
        break;
    }
    case ARROW:
    {
        enemy->sufferAttack(weapon->getAttackValue());
        break;
    }
    }
    weapon->decreaseDuribility();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdx, -0x40(%rbp)
movq %rdi, %rax
movq -0x40(%rbp), %rdi
movq %rsi, -0x38(%rbp)
movq %rdi, -0x30(%rbp)
movq %rax, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
movl %eax, %ecx
movl %ecx, -0x1c(%rbp)
testl %eax, %eax
je 0x19302
jmp 0x192e7
movl -0x1c(%rbp), %eax
subl $0x1, %eax
je 0x19331
jmp 0x192f1
movl -0x1c(%rbp), %eax
subl $0x2, %eax
je 0x1938b
jmp 0x193b5
movq -0x38(%rbp), %rdi
callq 0x5db0
movq -0x30(%rbp), %rdi
movq %rax, -0x48(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x17c10
movq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0x195d0
jmp 0x193b5
movq -0x38(%rbp), %rdi
callq 0x5db0
movq -0x30(%rbp), %rdi
movq %rax, -0x50(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x17c10
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0x195d0
movq -0x28(%rbp), %rdi
callq 0xebc0
cmpl $0x1, %eax
je 0x19389
movq -0x30(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x17c10
movq -0x28(%rbp), %rdi
movq %rax, %rsi
shrq %rsi
callq 0x195d0
jmp 0x193b5
movq -0x38(%rbp), %rdi
callq 0x5db0
movq -0x30(%rbp), %rdi
movq %rax, -0x58(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x17c10
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0x195d0
movq -0x30(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x17c60
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/Warrior.cpp
// Function: warcraft::Warrior::getNewWeapon(std::shared_ptr<warcraft::Weapon>)
void Warrior::getNewWeapon(WeaponPtr weapon) 
{
    if (!weapon.get())
        return;
    WeaponPtr newWeapon;
    switch (weapon->getType())
    {
        case SWORD:newWeapon.reset(new Sword(_type)); break;
        case BOMB:newWeapon.reset(new Bomb(_type));break;
        case ARROW:newWeapon.reset(new Arrow(_type)); newWeapon->setDurability(weapon->getDurability()); break;
    }
    _weapons.push_back(newWeapon);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rsi, -0x48(%rbp)
movq %rdi, %rax
movq -0x48(%rbp), %rdi
movq %rdi, -0x40(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0x6d20
cmpq $0x0, %rax
jne 0x1940a
jmp 0x195a6
leaq -0x20(%rbp), %rdi
callq 0xd000
movq -0x40(%rbp), %rdi
callq 0x5d30
movq %rax, %rdi
callq 0x5d50
movl %eax, -0x4c(%rbp)
jmp 0x19429
movl -0x4c(%rbp), %eax
testl %eax, %eax
je 0x1945e
jmp 0x19432
movl -0x4c(%rbp), %eax
subl $0x1, %eax
je 0x194b3
jmp 0x1943c
movl -0x4c(%rbp), %eax
subl $0x2, %eax
je 0x19508
jmp 0x1958a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x195af
movl $0x40, %edi
callq 0x4190
movq %rax, -0x58(%rbp)
jmp 0x1946e
movq -0x58(%rbp), %rdi
movq -0x38(%rbp), %rax
movl 0x3c(%rax), %esi
callq 0xdae0
jmp 0x19480
movq -0x58(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0xda90
jmp 0x1948f
jmp 0x1958a
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x40, %esi
callq 0x41a0
jmp 0x195af
movl $0x40, %edi
callq 0x4190
movq %rax, -0x60(%rbp)
jmp 0x194c3
movq -0x60(%rbp), %rdi
movq -0x38(%rbp), %rax
movl 0x3c(%rax), %esi
callq 0xdd40
jmp 0x194d5
movq -0x60(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0xdcf0
jmp 0x194e4
jmp 0x1958a
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x40, %esi
callq 0x41a0
jmp 0x195af
movl $0x48, %edi
callq 0x4190
movq %rax, -0x68(%rbp)
jmp 0x19518
movq -0x68(%rbp), %rdi
movq -0x38(%rbp), %rax
movl 0x3c(%rax), %esi
callq 0xdf70
jmp 0x1952a
movq -0x68(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0xdf20
jmp 0x19539
leaq -0x20(%rbp), %rdi
callq 0x5d30
movq -0x40(%rbp), %rdi
movq %rax, -0x78(%rbp)
callq 0x5d30
movq %rax, %rdi
callq 0x5d70
movq %rax, -0x70(%rbp)
jmp 0x1955d
movq -0x70(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x195f0
jmp 0x1956c
jmp 0x1958a
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x48, %esi
callq 0x41a0
jmp 0x195af
movq -0x38(%rbp), %rdi
addq $0x40, %rdi
leaq -0x20(%rbp), %rsi
callq 0xebe0
jmp 0x1959d
leaq -0x20(%rbp), %rdi
callq 0x63c0
addq $0x80, %rsp
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0x63c0
movq -0x28(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/warcraftWorld.cpp
// Function: warcraft::WarcraftWorld::startGame()
void WarcraftWorld::startGame()
{
    size_t deadline = GameConfig::getInstance()->getDeadline(_caseNum);
    while (GameTime::getInstance()->getTime() < deadline)
    {
        //1):武士降生
        GameTime::getInstance()->showTime();
        createAndShow(_red);
        createAndShow(_blue);
        GameTime::getInstance()->updateTime();

        //2):Lion逃跑
        GameTime::getInstance()->showTime();
        lionRun();
        GameTime::getInstance()->updateTime();

        //3):武士前进到某一城市
        GameTime::getInstance()->showTime();
        warriorMarch();
        GameTime::getInstance()->updateTime();

        //4):wolf抢敌人的武器
        GameTime::getInstance()->showTime();
        wolfStealing();
        GameTime::getInstance()->updateTime();

        //5):进行战斗并报告战斗情况
        GameTime::getInstance()->showTime();
        startFight();
        GameTime::getInstance()->updateTime();

        //6):龙开始欢呼
        GameTime::getInstance()->showTime();
        dragonCheer();
        GameTime::getInstance()->updateTime();

        //7):武士抵达敌方司令部
        GameTime::getInstance()->showTime();
        warriorArriveHeadquarters();
        GameTime::getInstance()->updateTime();

        //8):司令部被占领
        GameTime::getInstance()->showTime();
        occupyHeadquarters();
        GameTime::getInstance()->updateTime();

        //9):司令部报告生命元数量
        GameTime::getInstance()->showTime();
        headquartersReport();
        GameTime::getInstance()->updateTime();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
callq 0x94e0
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x1c1c0
movq %rax, -0x10(%rbp)
callq 0x17ab0
movq %rax, %rdi
callq 0x1c1f0
cmpq -0x10(%rbp), %rax
jae 0x197a4
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
movq (%rdi), %rsi
callq 0x197b0
movq -0x18(%rbp), %rdi
movq 0x8(%rdi), %rsi
callq 0x197b0
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1a510
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1a890
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1b050
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1b280
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1b300
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1b470
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1b8f0
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
callq 0x17ab0
movq %rax, %rdi
callq 0x17ac0
movq -0x18(%rbp), %rdi
callq 0x1ba40
callq 0x17ab0
movq %rax, %rdi
callq 0x17b90
jmp 0x1963d
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/warcraftWorld.cpp
// Function: warcraft::WarcraftWorld::wolfStealing()
void WarcraftWorld::wolfStealing()
{
    for (auto &e : _citys)
    {
        WarriorPtr redWarrior = e->getRedWarrior();
        WarriorPtr blueWarrior = e->getBlueWarrior();
        if (redWarrior.get() && WOLF == redWarrior->getType())
        {
            redWarrior->stealWeapons(blueWarrior);
        }
        if (blueWarrior.get() && WOLF == blueWarrior->getType())
        {
            blueWarrior->stealWeapons(redWarrior);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c2b0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c2e0
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1c310
testb $0x1, %al
jne 0x1b09b
jmp 0x1b25f
leaq -0x18(%rbp), %rdi
callq 0x1c350
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x1c230
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0x1c250
movq -0x28(%rbp), %rdi
callq 0x1c230
movq %rax, %rsi
leaq -0x48(%rbp), %rdi
callq 0x1c280
jmp 0x1b0d4
leaq -0x38(%rbp), %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x1b191
leaq -0x38(%rbp), %rdi
callq 0x5db0
movq %rax, %rdi
callq 0xebc0
movl %eax, -0x7c(%rbp)
jmp 0x1b0fd
movl -0x7c(%rbp), %ecx
movl $0x4, %eax
cmpl %ecx, %eax
jne 0x1b191
leaq -0x38(%rbp), %rdi
callq 0x5db0
movq %rax, -0x90(%rbp)
leaq -0x68(%rbp), %rdi
movq %rdi, -0x88(%rbp)
leaq -0x48(%rbp), %rsi
callq 0x6640
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
jmp 0x1b14a
leaq -0x68(%rbp), %rdi
callq 0x6670
jmp 0x1b191
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1b254
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1b24b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x6670
jmp 0x1b24b
leaq -0x48(%rbp), %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x1b22b
leaq -0x48(%rbp), %rdi
callq 0x5db0
movq %rax, %rdi
callq 0xebc0
movl %eax, -0x94(%rbp)
jmp 0x1b1bd
movl -0x94(%rbp), %ecx
movl $0x4, %eax
cmpl %ecx, %eax
jne 0x1b22b
leaq -0x48(%rbp), %rdi
callq 0x5db0
movq %rax, -0xa8(%rbp)
leaq -0x78(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x6640
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rsi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
jmp 0x1b209
leaq -0x78(%rbp), %rdi
callq 0x6670
jmp 0x1b22b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x6670
jmp 0x1b24b
leaq -0x48(%rbp), %rdi
callq 0x6670
leaq -0x38(%rbp), %rdi
callq 0x6670
leaq -0x18(%rbp), %rdi
callq 0x1c370
jmp 0x1b085
leaq -0x48(%rbp), %rdi
callq 0x6670
leaq -0x38(%rbp), %rdi
callq 0x6670
jmp 0x1b268
addq $0xb0, %rsp
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)
// File: Worthy-Wang[P]Warcraft3-StartWar/warcraftWorld.cpp
// Function: warcraft::WarcraftWorld::dragonCheer()
void WarcraftWorld::dragonCheer()
{
    for (auto &e : _citys)
    {
        WarriorPtr redWarrior = e->getRedWarrior();
        WarriorPtr blueWarrior = e->getBlueWarrior();
        if (redWarrior.get() && DRAGON == redWarrior->getType())
        {
            redWarrior->cheer();
        }
        if (blueWarrior.get() && DRAGON == blueWarrior->getType())
        {
            blueWarrior->cheer();
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c2b0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c2e0
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1c310
testb $0x1, %al
jne 0x1b348
jmp 0x1b45f
leaq -0x18(%rbp), %rdi
callq 0x1c350
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x1c230
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0x1c250
movq -0x28(%rbp), %rdi
callq 0x1c230
movq %rax, %rsi
leaq -0x48(%rbp), %rdi
callq 0x1c280
jmp 0x1b381
leaq -0x38(%rbp), %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x1b3ed
leaq -0x38(%rbp), %rdi
callq 0x5db0
movq %rax, %rdi
callq 0xebc0
movl %eax, -0x58(%rbp)
jmp 0x1b3a6
movl -0x58(%rbp), %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1b3ed
leaq -0x38(%rbp), %rdi
callq 0x5db0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0x1b3c6
jmp 0x1b3ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1b454
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x6670
jmp 0x1b454
leaq -0x48(%rbp), %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x1b434
leaq -0x48(%rbp), %rdi
callq 0x5db0
movq %rax, %rdi
callq 0xebc0
movl %eax, -0x5c(%rbp)
jmp 0x1b412
movl -0x5c(%rbp), %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1b434
leaq -0x48(%rbp), %rdi
callq 0x5db0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0x1b432
jmp 0x1b434
leaq -0x48(%rbp), %rdi
callq 0x6670
leaq -0x38(%rbp), %rdi
callq 0x6670
leaq -0x18(%rbp), %rdi
callq 0x1c370
jmp 0x1b332
leaq -0x38(%rbp), %rdi
callq 0x6670
jmp 0x1b465
addq $0x60, %rsp
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x4300
nop
// File: Worthy-Wang[P]Warcraft3-StartWar/warcraftWorld.cpp
// Function: warcraft::WarcraftWorld::occupyHeadquarters()
void WarcraftWorld::occupyHeadquarters()
{
    //蓝方基地
    WarriorPtr redWarrior = _citys[GameConfig::getInstance()->getCityNum(_caseNum) + 1]->getRedWarrior();
    if (redWarrior.get()){
        cout << "blue headquarter was taken" << endl;
        exit(0);
    }
    //红方基地
    WarriorPtr blueWarrior = _citys[0]->getBlueWarrior();
    if (blueWarrior.get())
    {
        cout << "red headquarter was taken" << endl;
        exit(0);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
addq $0x10, %rax
movq %rax, -0x40(%rbp)
callq 0x94e0
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0xe480
movq -0x40(%rbp), %rdi
movq %rax, %rsi
addq $0x1, %rsi
callq 0x1c210
movq %rax, %rdi
callq 0x1c230
movq %rax, %rsi
leaq -0x18(%rbp), %rdi
callq 0x1c250
leaq -0x18(%rbp), %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x1b997
movq 0x11675(%rip), %rdi     # 0x2cfd0
leaq 0x304b(%rip), %rsi      # 0x1e9ad
callq 0x4180
movq %rax, -0x50(%rbp)
jmp 0x1b96d
movq -0x50(%rbp), %rdi
movq 0x11640(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x1b97f
xorl %edi, %edi
callq 0x4230
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1ba2e
movq -0x48(%rbp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1c210
movq %rax, %rdi
callq 0x1c230
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0x1c280
jmp 0x1b9be
leaq -0x38(%rbp), %rdi
callq 0x5d90
cmpq $0x0, %rax
je 0x1ba16
movq 0x115fc(%rip), %rdi     # 0x2cfd0
leaq 0x2fed(%rip), %rsi      # 0x1e9c8
callq 0x4180
movq %rax, -0x58(%rbp)
jmp 0x1b9e6
movq -0x58(%rbp), %rdi
movq 0x115c7(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x1b9f8
xorl %edi, %edi
callq 0x4230
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6670
jmp 0x1ba2e
leaq -0x38(%rbp), %rdi
callq 0x6670
leaq -0x18(%rbp), %rdi
callq 0x6670
addq $0x60, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x6670
movq -0x20(%rbp), %rdi
callq 0x4300
// File: davmac314[P]dinit/src/dinitctl.cc
// Function: signal_list()
static int signal_list()
{
    using namespace std;
    using namespace dinit_load;
    cout << "dinitctl: The following signal names are supported:";
    int skip_none = 0;
    for (const auto &signal: signal_to_int_map) {
        if (skip_none < 2) {
            skip_none += 1;
        }
        else {
            cout << endl << "dinitctl: ";
            string sigpad = signal.first;
            sigpad.resize(5,' ');
            cout << sigpad << "-> " << signal.second;
        }
    }
    cout << endl;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq 0x2a576(%rip), %rdi     # 0x31f98
leaq 0x1d863(%rip), %rsi     # 0x2528c
callq 0x53d0
movl $0x0, -0x4(%rbp)
leaq 0x2a134(%rip), %rax     # 0x31b70
movq %rax, -0x10(%rbp)
leaq 0x2a129(%rip), %rax     # 0x31b70
movq %rax, -0x18(%rbp)
leaq 0x2a11e(%rip), %rax     # 0x31b70
addq $0xb0, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0x7b7b
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpl $0x2, -0x4(%rbp)
jge 0x7a86
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x7b68
movq 0x2a50b(%rip), %rdi     # 0x31f98
movq 0x2a4d4(%rip), %rsi     # 0x31f68
callq 0x5410
movq %rax, %rdi
leaq 0x1c2bd(%rip), %rsi     # 0x23d60
callq 0x53d0
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
leaq -0x49(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x5700
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
leaq -0x48(%rbp), %rdi
callq 0x10f00
jmp 0x7ad3
leaq -0x49(%rbp), %rdi
callq 0x5440
leaq -0x48(%rbp), %rdi
movl $0x5, %esi
movl $0x20, %edx
callq 0x50f0
jmp 0x7af1
movq 0x2a4a0(%rip), %rdi     # 0x31f98
leaq -0x48(%rbp), %rsi
callq 0x53a0
movq %rax, -0x78(%rbp)
jmp 0x7b07
movq -0x78(%rbp), %rdi
leaq 0x1d7ae(%rip), %rsi     # 0x252c0
callq 0x53d0
movq %rax, -0x80(%rbp)
jmp 0x7b1d
movq -0x80(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x56d0
jmp 0x7b2f
leaq -0x48(%rbp), %rdi
callq 0x5280
jmp 0x7b68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x49(%rbp), %rdi
callq 0x5440
jmp 0x7b99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5280
jmp 0x7b99
jmp 0x7b6a
movq -0x18(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x18(%rbp)
jmp 0x7a5c
movq 0x2a416(%rip), %rdi     # 0x31f98
movq 0x2a3df(%rip), %rsi     # 0x31f68
callq 0x5410
xorl %eax, %eax
addq $0x80, %rsp
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0x56f0
nopw %cs:(%rax,%rax)
// File: davmac314[P]dinit/src/dinitctl.cc
// Function: unpin_service(int, cpbuffer<1024u>&, char const*, bool)
static int unpin_service(int socknum, cpbuffer_t &rbuffer, const char *service_name, bool verbose)
{
    using namespace std;

    handle_t handle;
    
    // Build buffer;
    if (! load_service(socknum, rbuffer, service_name, &handle, nullptr)) {
        return 1;
    }
    
    // Issue UNPIN command.
    {
        auto m = membuf()
                .append((char)cp_cmd::UNPINSERVICE)
                .append(handle);
        write_all_x(socknum, m);
        
        wait_for_reply(rbuffer, socknum);
        if (rbuffer[0] != (char)cp_rply::ACK) {
            cerr << "dinitctl: protocol error." << endl;
            return 1;
        }
        rbuffer.consume(1);
    }

    if (verbose) {
        cout << "Service '" << service_name << "' unpinned." << endl;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %cl, %al
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x20(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
movl $0x1, %r9d
callq 0xc5e0
testb $0x1, %al
jne 0x9759
movl $0x1, -0x4(%rbp)
jmp 0x9834
movb $0x7, -0x28(%rbp)
leaq -0x27(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x11b60
movb %al, -0x26(%rbp)
leaq -0x26(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x131e0
movl %eax, %ecx
movl %ecx, -0x25(%rbp)
shrq $0x20, %rax
movb %al, -0x21(%rbp)
movl -0x8(%rbp), %edi
leaq -0x25(%rbp), %rsi
callq 0x13220
movq -0x10(%rbp), %rdi
movl -0x8(%rbp), %esi
callq 0x11350
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x113e0
movsbl %al, %eax
cmpl $0x32, %eax
je 0x97dc
movq 0x28830(%rip), %rdi     # 0x31fe8
leaq 0x1a986(%rip), %rsi     # 0x24145
callq 0x53d0
movq %rax, %rdi
movq 0x2879a(%rip), %rsi     # 0x31f68
callq 0x5410
movl $0x1, -0x4(%rbp)
jmp 0x9834
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x115f0
testb $0x1, -0x19(%rbp)
je 0x982d
movq 0x287a1(%rip), %rdi     # 0x31f98
leaq 0x1a867(%rip), %rsi     # 0x24065
callq 0x53d0
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x53d0
movq %rax, %rdi
leaq 0x1ad8c(%rip), %rsi     # 0x245a5
callq 0x53d0
movq %rax, %rdi
movq 0x28740(%rip), %rsi     # 0x31f68
callq 0x5410
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)