// File: Worthy-Wang[P]Warcraft3-StartWar/warcraftWorld.cpp
// Function: warcraft::WarcraftWorld::createAndShow(warcraft::Headquarters*)
bool WarcraftWorld::createAndShow(Headquarters *head)
{
    //基地生命元少于当前创造的勇士生命值时 返回false
    while (head->getBaseHp() < GameConfig::getInstance()->getInitWarriorHp(_caseNum, head->getWarriorType()))
        return false;
    //创建勇士
    WarriorPtr warrior = head->createWarrior(head->getWarriorType());
    WarriorViewPtr warriorView;

    //设置武器
    switch (head->getWarriorType())
    {
    case DRAGON:
    {
        WeaponPtr weapon = head->createWeapon(head->getWarriorId() % 3, DRAGON);
        warrior->setWeapon(weapon);
        warriorView.reset(new DragonView(warrior));
        HeadquartersView headView(head);
        //show
        warriorView->show();
        cout << "It has a " << weapon->getName() << endl;
        break;
    }
    case ICEMAN:
    {
        WeaponPtr weapon = head->createWeapon(head->getWarriorId() % 3, ICEMAN);
        warrior->setWeapon(weapon);
        warriorView.reset(new IcemanView(warrior));
        HeadquartersView headView(head);
        //show
        warriorView->show();
        cout << "It has a " << weapon->getName() << endl;
        break;
    }
    case LION:
    {
        WeaponPtr weapon = head->createWeapon(head->getWarriorId() % 3, LION);
        warrior->setWeapon(weapon);
        warriorView.reset(new LionView(warrior));
        HeadquartersView headView(head);
        //show
        warriorView->show();
        break;
    }
    case NINJA:
    {
        WeaponPtr weapon1 = head->createWeapon(head->getWarriorId() % 3, NINJA);
        WeaponPtr weapon2 = head->createWeapon((head->getWarriorId() + 1) % 3, NINJA);
        warrior->setWeapon(weapon1);
        warrior->setWeapon(weapon2);
        warriorView.reset(new NinjaView(warrior));
        HeadquartersView headView(head);
        //show
        warriorView->show();
        cout << "It has a " << weapon1->getName() << " and a " << weapon2->getName() << endl;
        break;
    }
    case WOLF:
    {
        warriorView.reset(new WolfView(warrior));
        HeadquartersView headView(head);
        //show
        warriorView->show();
        break;
    }
    }
    if (head->getColor() == RED)
        _citys[0]->attach(warrior);
    else
        _citys[GameConfig::getInstance()->getCityNum(_caseNum) + 1]->attach(warrior);
    head->nextWarriorType();
    head->nextWarriorId();
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3e0, %rsp            # imm = 0x3E0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd0c0
movq %rax, -0x238(%rbp)
callq 0x94e0
movq %rax, %rcx
movq -0x230(%rbp), %rax
movq %rcx, -0x248(%rbp)
movq 0x28(%rax), %rax
movq %rax, -0x240(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1c3f0
movq -0x248(%rbp), %rdi
movq -0x240(%rbp), %rsi
movl %eax, %edx
callq 0xcf60
movq %rax, %rcx
movq -0x238(%rbp), %rax
cmpq %rcx, %rax
jae 0x19835
movb $0x0, -0x1(%rbp)
jmp 0x1a4ea
movq -0x18(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x1c3f0
movq -0x258(%rbp), %rsi
movl %eax, %edx
leaq -0x28(%rbp), %rdi
callq 0xbd70
leaq -0x38(%rbp), %rdi
callq 0xcfe0
movq -0x18(%rbp), %rdi
callq 0x1c3f0
movl %eax, -0x24c(%rbp)
jmp 0x19871
movl -0x24c(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0x260(%rbp)
subl $0x4, %eax
ja 0x1a356
movq -0x260(%rbp), %rax
leaq 0x5085(%rip), %rcx      # 0x1e91c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a4d6
movq -0x18(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0xd0a0
movq %rax, -0x268(%rbp)
jmp 0x198ca
movq -0x270(%rbp), %rsi
movq -0x268(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x268(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x58(%rbp), %rdi
xorl %ecx, %ecx
callq 0xcb30
jmp 0x19906
leaq -0x28(%rbp), %rdi
callq 0x5db0
movq %rax, -0x280(%rbp)
leaq -0x68(%rbp), %rdi
movq %rdi, -0x278(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x6390
movq -0x280(%rbp), %rdi
movq -0x278(%rbp), %rsi
callq 0xd280
jmp 0x1993f
leaq -0x68(%rbp), %rdi
callq 0x63c0
movl $0x18, %edi
callq 0x4190
movq %rax, -0x288(%rbp)
jmp 0x1995b
movb $0x1, -0x79(%rbp)
leaq -0x78(%rbp), %rdi
movq %rdi, -0x290(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x288(%rbp), %rdi
movq -0x290(%rbp), %rsi
callq 0xd200
jmp 0x19988
movq -0x288(%rbp), %rsi
movb $0x0, -0x79(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd1b0
jmp 0x1999e
leaq -0x78(%rbp), %rdi
callq 0x6670
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x1c420
jmp 0x199b9
leaq -0x38(%rbp), %rdi
callq 0x1c440
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0x199d0
movq 0x135f9(%rip), %rdi     # 0x2cfd0
leaq 0x508d(%rip), %rsi      # 0x1ea6b
callq 0x4180
movq %rax, -0x298(%rbp)
jmp 0x199ec
leaq -0x58(%rbp), %rdi
callq 0x5d30
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x17c30
jmp 0x19a06
movq -0x298(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x4170
movq %rax, -0x2a0(%rbp)
jmp 0x19a22
movq -0x2a0(%rbp), %rdi
movq 0x13588(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x19a37
leaq -0xa8(%rbp), %rdi
callq 0x40f0
leaq -0x58(%rbp), %rdi
callq 0x63c0
jmp 0x1a356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x63c0
jmp 0x19abe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19abe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x6670
testb $0x1, -0x79(%rbp)
jne 0x19a93
jmp 0x19aa4
movq -0x288(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0x19abe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x40f0
leaq -0x58(%rbp), %rdi
callq 0x63c0
jmp 0x1a4d6
movq -0x18(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0xd0a0
movq %rax, -0x2a8(%rbp)
jmp 0x19ae5
movq -0x2b0(%rbp), %rsi
movq -0x2a8(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x2a8(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0xb8(%rbp), %rdi
movl $0x2, %ecx
callq 0xcb30
jmp 0x19b27
leaq -0x28(%rbp), %rdi
callq 0x5db0
movq %rax, -0x2c0(%rbp)
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x6390
movq -0x2c0(%rbp), %rdi
movq -0x2b8(%rbp), %rsi
callq 0xd280
jmp 0x19b66
leaq -0xc8(%rbp), %rdi
callq 0x63c0
movl $0x18, %edi
callq 0x4190
movq %rax, -0x2c8(%rbp)
jmp 0x19b85
movb $0x1, -0xd9(%rbp)
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x2c8(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
callq 0xd600
jmp 0x19bb8
movq -0x2c8(%rbp), %rsi
movb $0x0, -0xd9(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd5b0
jmp 0x19bd1
leaq -0xd8(%rbp), %rdi
callq 0x6670
movq -0x18(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x1c420
jmp 0x19bef
leaq -0x38(%rbp), %rdi
callq 0x1c440
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0x19c06
movq 0x133c3(%rip), %rdi     # 0x2cfd0
leaq 0x4e57(%rip), %rsi      # 0x1ea6b
callq 0x4180
movq %rax, -0x2d8(%rbp)
jmp 0x19c22
leaq -0xb8(%rbp), %rdi
callq 0x5d30
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0x17c30
jmp 0x19c3f
movq -0x2d8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x4170
movq %rax, -0x2e0(%rbp)
jmp 0x19c5b
movq -0x2e0(%rbp), %rdi
movq 0x1334f(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x19c70
leaq -0x108(%rbp), %rdi
callq 0x40f0
leaq -0xb8(%rbp), %rdi
callq 0x63c0
jmp 0x1a356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x63c0
jmp 0x19d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x6670
testb $0x1, -0xd9(%rbp)
jne 0x19cd8
jmp 0x19ce9
movq -0x2c8(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0x19d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x40f0
leaq -0xb8(%rbp), %rdi
callq 0x63c0
jmp 0x1a4d6
movq -0x18(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0xd0a0
movq %rax, -0x2e8(%rbp)
jmp 0x19d2d
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x2e8(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x118(%rbp), %rdi
movl $0x3, %ecx
callq 0xcb30
jmp 0x19d6f
leaq -0x28(%rbp), %rdi
callq 0x5db0
movq %rax, -0x300(%rbp)
leaq -0x128(%rbp), %rdi
movq %rdi, -0x2f8(%rbp)
leaq -0x118(%rbp), %rsi
callq 0x6390
movq -0x300(%rbp), %rdi
movq -0x2f8(%rbp), %rsi
callq 0xd280
jmp 0x19dae
leaq -0x128(%rbp), %rdi
callq 0x63c0
movl $0x18, %edi
callq 0x4190
movq %rax, -0x308(%rbp)
jmp 0x19dcd
movb $0x1, -0x139(%rbp)
leaq -0x138(%rbp), %rdi
movq %rdi, -0x310(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x308(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0xd7d0
jmp 0x19e00
movq -0x308(%rbp), %rsi
movb $0x0, -0x139(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd780
jmp 0x19e19
leaq -0x138(%rbp), %rdi
callq 0x6670
movq -0x18(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x1c420
jmp 0x19e37
leaq -0x38(%rbp), %rdi
callq 0x1c440
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0x19e4e
leaq -0x118(%rbp), %rdi
callq 0x63c0
jmp 0x1a356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x63c0
jmp 0x19ebd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x19ebd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x6670
testb $0x1, -0x139(%rbp)
jne 0x19eaa
jmp 0x19ebb
movq -0x308(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0x19ebd
leaq -0x118(%rbp), %rdi
callq 0x63c0
jmp 0x1a4d6
movq -0x18(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0xd0a0
movq %rax, -0x318(%rbp)
jmp 0x19ee7
movq -0x320(%rbp), %rsi
movq -0x318(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x318(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x158(%rbp), %rdi
movl $0x1, %ecx
callq 0xcb30
jmp 0x19f29
movq -0x18(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0xd0a0
movq %rax, -0x328(%rbp)
jmp 0x19f42
movq -0x330(%rbp), %rsi
movq -0x328(%rbp), %rax
incq %rax
movq %rax, -0x338(%rbp)
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x338(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x168(%rbp), %rdi
movl $0x1, %ecx
callq 0xcb30
jmp 0x19f8e
leaq -0x28(%rbp), %rdi
callq 0x5db0
movq %rax, -0x348(%rbp)
leaq -0x178(%rbp), %rdi
movq %rdi, -0x340(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x6390
movq -0x348(%rbp), %rdi
movq -0x340(%rbp), %rsi
callq 0xd280
jmp 0x19fcd
leaq -0x178(%rbp), %rdi
callq 0x63c0
leaq -0x28(%rbp), %rdi
callq 0x5db0
movq %rax, -0x358(%rbp)
leaq -0x188(%rbp), %rdi
movq %rdi, -0x350(%rbp)
leaq -0x168(%rbp), %rsi
callq 0x6390
movq -0x358(%rbp), %rdi
movq -0x350(%rbp), %rsi
callq 0xd280
jmp 0x1a018
leaq -0x188(%rbp), %rdi
callq 0x63c0
movl $0x18, %edi
callq 0x4190
movq %rax, -0x360(%rbp)
jmp 0x1a037
movb $0x1, -0x199(%rbp)
leaq -0x198(%rbp), %rdi
movq %rdi, -0x368(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x360(%rbp), %rdi
movq -0x368(%rbp), %rsi
callq 0xd430
jmp 0x1a06a
movq -0x360(%rbp), %rsi
movb $0x0, -0x199(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd3e0
jmp 0x1a083
leaq -0x198(%rbp), %rdi
callq 0x6670
movq -0x18(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x1c420
jmp 0x1a0a1
leaq -0x38(%rbp), %rdi
callq 0x1c440
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0x1a0b8
movq 0x12f11(%rip), %rdi     # 0x2cfd0
leaq 0x49a5(%rip), %rsi      # 0x1ea6b
callq 0x4180
movq %rax, -0x370(%rbp)
jmp 0x1a0d4
leaq -0x158(%rbp), %rdi
callq 0x5d30
movq %rax, %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x17c30
jmp 0x1a0f1
movq -0x370(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x4170
movq %rax, -0x378(%rbp)
jmp 0x1a10d
movq -0x378(%rbp), %rdi
leaq 0x495a(%rip), %rsi      # 0x1ea75
callq 0x4180
movq %rax, -0x380(%rbp)
jmp 0x1a129
leaq -0x168(%rbp), %rdi
callq 0x5d30
movq %rax, %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x17c30
jmp 0x1a146
movq -0x380(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4170
movq %rax, -0x388(%rbp)
jmp 0x1a162
movq -0x388(%rbp), %rdi
movq 0x12e48(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0x1a177
leaq -0x1e8(%rbp), %rdi
callq 0x40f0
leaq -0x1c8(%rbp), %rdi
callq 0x40f0
leaq -0x168(%rbp), %rdi
callq 0x63c0
leaq -0x158(%rbp), %rdi
callq 0x63c0
jmp 0x1a356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a276
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x63c0
jmp 0x1a26a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x63c0
jmp 0x1a26a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a26a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x6670
testb $0x1, -0x199(%rbp)
jne 0x1a225
jmp 0x1a236
movq -0x360(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0x1a26a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1a25e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x40f0
leaq -0x1c8(%rbp), %rdi
callq 0x40f0
leaq -0x168(%rbp), %rdi
callq 0x63c0
leaq -0x158(%rbp), %rdi
callq 0x63c0
jmp 0x1a4d6
movl $0x18, %edi
callq 0x4190
movq %rax, -0x390(%rbp)
jmp 0x1a29a
movb $0x1, -0x1f9(%rbp)
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x398(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x390(%rbp), %rdi
movq -0x398(%rbp), %rsi
callq 0xd9a0
jmp 0x1a2cd
movq -0x390(%rbp), %rsi
movb $0x0, -0x1f9(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd950
jmp 0x1a2e6
leaq -0x1f8(%rbp), %rdi
callq 0x6670
movq -0x18(%rbp), %rsi
leaq -0x208(%rbp), %rdi
callq 0x1c420
jmp 0x1a304
leaq -0x38(%rbp), %rdi
callq 0x1c440
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0x1a31b
jmp 0x1a356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x6670
testb $0x1, -0x1f9(%rbp)
jne 0x1a340
jmp 0x1a351
movq -0x390(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0x1a4d6
movq -0x18(%rbp), %rdi
callq 0xd090
movl %eax, -0x39c(%rbp)
jmp 0x1a367
movl -0x39c(%rbp), %eax
cmpl $0x0, %eax
jne 0x1a3ef
movq -0x230(%rbp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1c210
movq %rax, %rdi
callq 0x1c230
movq %rax, -0x3b0(%rbp)
leaq -0x218(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x3b0(%rbp), %rdi
movq -0x3a8(%rbp), %rsi
callq 0x17d80
jmp 0x1a3c1
leaq -0x218(%rbp), %rdi
callq 0x6670
jmp 0x1a4a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x6670
jmp 0x1a4d6
movq -0x230(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x3c0(%rbp)
callq 0x94e0
movq %rax, -0x3b8(%rbp)
jmp 0x1a40f
movq -0x3b8(%rbp), %rdi
movq -0x230(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0xe480
movq %rax, -0x3c8(%rbp)
jmp 0x1a42f
movq -0x3c0(%rbp), %rdi
movq -0x3c8(%rbp), %rsi
incq %rsi
callq 0x1c210
movq %rax, %rdi
callq 0x1c230
movq %rax, -0x3d8(%rbp)
leaq -0x228(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x6640
movq -0x3d8(%rbp), %rdi
movq -0x3d0(%rbp), %rsi
callq 0x17d80
jmp 0x1a480
leaq -0x228(%rbp), %rdi
callq 0x6670
jmp 0x1a4a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x6670
jmp 0x1a4d6
movq -0x18(%rbp), %rdi
callq 0x1c460
jmp 0x1a4b3
movq -0x18(%rbp), %rdi
callq 0x1c4b0
jmp 0x1a4be
movb $0x1, -0x1(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xda70
leaq -0x28(%rbp), %rdi
callq 0x6670
jmp 0x1a4ea
leaq -0x38(%rbp), %rdi
callq 0xda70
leaq -0x28(%rbp), %rdi
callq 0x6670
jmp 0x1a4f8
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x3e0, %rsp            # imm = 0x3E0
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)