// File: Worthy-Wang[P]Warcraft3-StartWar/Headquarters.cpp
// Function: warcraft::Headquarters::createWarrior(warcraft::WarriorType)
WarriorPtr Headquarters::createWarrior(WarriorType type)
{
    size_t hp = GameConfig::getInstance()->getInitWarriorHp(GameConfig::getInstance()->currentGroupId(), type);
    _baseHp -= hp;
    WarriorPtr warrior;
    WarriorViewPtr warriorView;
    WeaponPtr weapon;
    WeaponViewPtr weaponView;
    switch (type)
    {
    case DRAGON:
    {
        warrior.reset(new Dragon(getColor(), getWarriorId(), hp, getBaseHp()));
        warriorView.reset(new DragonView(warrior));
        weapon = createWeapon(getWarriorId() % 3, DRAGON);
        warrior->setWeapon(weapon);
        break;
    }
    case NINJA:
    {
        warrior.reset(new Ninja(getColor(), getWarriorId(), hp, getBaseHp()));
        warriorView.reset(new NinjaView(warrior));
        weapon = createWeapon(getWarriorId() % 3, NINJA);
        WeaponPtr weapon2 = createWeapon((getWarriorId() + 1) % 3, NINJA);
        warrior->setWeapon(weapon);
        warrior->setWeapon(weapon2);
        break;
    }
    case ICEMAN:
    {
        warrior.reset(new Iceman(getColor(), getWarriorId(), hp, getBaseHp()));
        warriorView.reset(new IcemanView(warrior));
        weapon = createWeapon(getWarriorId() % 3, ICEMAN);
        warrior->setWeapon(weapon);
        break;
    }
    case LION:
    {
        warrior.reset(new Lion(getColor(), getWarriorId(), hp, getBaseHp()));
        warriorView.reset(new LionView(warrior));
        weapon = createWeapon(getWarriorId() % 3, LION);
        warrior->setWeapon(weapon);
        break;
    }
    case WOLF:
    {
        warrior.reset(new Wolf(getColor(), getWarriorId(), hp, getBaseHp()));
        warriorView.reset(new WolfView(warrior));
        break;
    }
    default:
        cout << "Warrior Type ERROR!" << endl;
        break;
    }

    _warriorViews[warrior] = warriorView;

    return warrior;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x390, %rsp            # imm = 0x390
movq %rdi, -0x198(%rbp)
movq %rdi, %rax
movq %rax, -0x1a8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x190(%rbp)
callq 0x94e0
movq %rax, -0x1a0(%rbp)
callq 0x94e0
callq 0xcfb0
movq -0x1a0(%rbp), %rdi
movq %rax, %rsi
movl -0x14(%rbp), %edx
callq 0xcf60
movq -0x198(%rbp), %rdi
movq %rax, %rcx
movq -0x190(%rbp), %rax
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rdx
movq 0x8(%rax), %rcx
subq %rdx, %rcx
movq %rcx, 0x8(%rax)
movb $0x0, -0x21(%rbp)
callq 0xcfc0
leaq -0x38(%rbp), %rdi
callq 0xcfe0
leaq -0x48(%rbp), %rdi
callq 0xd000
leaq -0x58(%rbp), %rdi
callq 0xd020
movl -0x14(%rbp), %eax
movq %rax, -0x188(%rbp)
subq $0x4, %rax
ja 0xca55
movq -0x188(%rbp), %rax
leaq 0x122dc(%rip), %rcx     # 0x1e110
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x60, %edi
callq 0x4190
movq %rax, -0x1b0(%rbp)
jmp 0xbe50
movq -0x190(%rbp), %rdi
callq 0xd090
movl %eax, -0x1b4(%rbp)
jmp 0xbe64
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x1c0(%rbp)
jmp 0xbe79
movq -0x190(%rbp), %rdi
movl -0x20(%rbp), %eax
movl %eax, -0x1cc(%rbp)
callq 0xd0c0
movq %rax, -0x1c8(%rbp)
jmp 0xbe97
movl -0x1cc(%rbp), %ecx
movq -0x1c0(%rbp), %rdx
movl -0x1b4(%rbp), %esi
movq -0x1b0(%rbp), %rdi
movq -0x1c8(%rbp), %rax
movq %rax, %xmm0
movaps 0x1222c(%rip), %xmm1    # 0x1e0f0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x12230(%rip), %xmm1    # 0x1e100
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
callq 0xd0e0
jmp 0xbee6
movq -0x1b0(%rbp), %rsi
movq -0x198(%rbp), %rdi
callq 0xd040
jmp 0xbefb
movl $0x18, %edi
callq 0x4190
movq %rax, -0x1d8(%rbp)
jmp 0xbf0e
movq -0x198(%rbp), %rsi
movb $0x1, -0x79(%rbp)
leaq -0x78(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x6640
movq -0x1d8(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
callq 0xd200
jmp 0xbf3e
movq -0x1d8(%rbp), %rsi
movb $0x0, -0x79(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd1b0
jmp 0xbf54
leaq -0x78(%rbp), %rdi
callq 0x6670
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x1e8(%rbp)
jmp 0xbf72
movq -0x190(%rbp), %rsi
movq -0x1e8(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x1e8(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x90(%rbp), %rdi
xorl %ecx, %ecx
callq 0xcb30
jmp 0xbfb1
leaq -0x48(%rbp), %rdi
movq %rdi, -0x200(%rbp)
leaq -0x90(%rbp), %rsi
movq %rsi, -0x208(%rbp)
callq 0x7220
movq -0x208(%rbp), %rdi
callq 0x63c0
movq -0x198(%rbp), %rdi
callq 0x5db0
movq -0x200(%rbp), %rsi
movq %rax, -0x1f8(%rbp)
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x6390
movq -0x1f8(%rbp), %rdi
movq -0x1f0(%rbp), %rsi
callq 0xd280
jmp 0xc01d
leaq -0xa0(%rbp), %rdi
callq 0x63c0
jmp 0xca88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcadf
movq -0x1b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0x60, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x6670
testb $0x1, -0x79(%rbp)
jne 0xc07e
jmp 0xc08f
movq -0x1d8(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x63c0
jmp 0xcadf
movl $0x60, %edi
callq 0x4190
movq %rax, -0x210(%rbp)
jmp 0xc0c4
movq -0x190(%rbp), %rdi
callq 0xd090
movl %eax, -0x214(%rbp)
jmp 0xc0d8
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x220(%rbp)
jmp 0xc0ed
movq -0x190(%rbp), %rdi
movl -0x20(%rbp), %eax
movl %eax, -0x22c(%rbp)
callq 0xd0c0
movq %rax, -0x228(%rbp)
jmp 0xc10b
movl -0x22c(%rbp), %ecx
movq -0x220(%rbp), %rdx
movl -0x214(%rbp), %esi
movq -0x210(%rbp), %rdi
movq -0x228(%rbp), %rax
movq %rax, %xmm0
movaps 0x11fb8(%rip), %xmm1    # 0x1e0f0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x11fbc(%rip), %xmm1    # 0x1e100
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
callq 0xd300
jmp 0xc15a
movq -0x210(%rbp), %rsi
movq -0x198(%rbp), %rdi
callq 0xd2b0
jmp 0xc16f
movl $0x18, %edi
callq 0x4190
movq %rax, -0x238(%rbp)
jmp 0xc182
movq -0x198(%rbp), %rsi
movb $0x1, -0xb1(%rbp)
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x6640
movq -0x238(%rbp), %rdi
movq -0x240(%rbp), %rsi
callq 0xd430
jmp 0xc1b8
movq -0x238(%rbp), %rsi
movb $0x0, -0xb1(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd3e0
jmp 0xc1d1
leaq -0xb0(%rbp), %rdi
callq 0x6670
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x248(%rbp)
jmp 0xc1f2
movq -0x190(%rbp), %rsi
movq -0x248(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x248(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0xc8(%rbp), %rdi
movl $0x1, %ecx
callq 0xcb30
jmp 0xc234
leaq -0x48(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
movq %rsi, -0x258(%rbp)
callq 0x7220
movq -0x258(%rbp), %rdi
callq 0x63c0
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x250(%rbp)
jmp 0xc26c
movq -0x190(%rbp), %rsi
movq -0x250(%rbp), %rax
incq %rax
movq %rax, -0x260(%rbp)
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x260(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0xd8(%rbp), %rdi
movl $0x1, %ecx
callq 0xcb30
jmp 0xc2b8
movq -0x198(%rbp), %rdi
callq 0x5db0
movq %rax, -0x270(%rbp)
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x268(%rbp)
leaq -0x48(%rbp), %rsi
callq 0x6390
movq -0x270(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0xd280
jmp 0xc2f7
leaq -0xe8(%rbp), %rdi
callq 0x63c0
movq -0x198(%rbp), %rdi
callq 0x5db0
movq %rax, -0x280(%rbp)
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x278(%rbp)
leaq -0xd8(%rbp), %rsi
callq 0x6390
movq -0x280(%rbp), %rdi
movq -0x278(%rbp), %rsi
callq 0xd280
jmp 0xc345
leaq -0xf8(%rbp), %rdi
callq 0x63c0
leaq -0xd8(%rbp), %rdi
callq 0x63c0
jmp 0xca88
movq -0x210(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0x60, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x6670
testb $0x1, -0xb1(%rbp)
jne 0xc3a7
jmp 0xc3b8
movq -0x238(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x63c0
jmp 0xc3ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x63c0
leaq -0xd8(%rbp), %rdi
callq 0x63c0
jmp 0xcadf
movl $0x60, %edi
callq 0x4190
movq %rax, -0x288(%rbp)
jmp 0xc413
movq -0x190(%rbp), %rdi
callq 0xd090
movl %eax, -0x28c(%rbp)
jmp 0xc427
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x298(%rbp)
jmp 0xc43c
movq -0x190(%rbp), %rdi
movl -0x20(%rbp), %eax
movl %eax, -0x2a4(%rbp)
callq 0xd0c0
movq %rax, -0x2a0(%rbp)
jmp 0xc45a
movl -0x2a4(%rbp), %ecx
movq -0x298(%rbp), %rdx
movl -0x28c(%rbp), %esi
movq -0x288(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movq %rax, %xmm0
movaps 0x11c69(%rip), %xmm1    # 0x1e0f0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x11c6d(%rip), %xmm1    # 0x1e100
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
callq 0xd4d0
jmp 0xc4a9
movq -0x288(%rbp), %rsi
movq -0x198(%rbp), %rdi
callq 0xd480
jmp 0xc4be
movl $0x18, %edi
callq 0x4190
movq %rax, -0x2b0(%rbp)
jmp 0xc4d1
movq -0x198(%rbp), %rsi
movb $0x1, -0x109(%rbp)
leaq -0x108(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
callq 0x6640
movq -0x2b0(%rbp), %rdi
movq -0x2b8(%rbp), %rsi
callq 0xd600
jmp 0xc507
movq -0x2b0(%rbp), %rsi
movb $0x0, -0x109(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd5b0
jmp 0xc520
leaq -0x108(%rbp), %rdi
callq 0x6670
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x2c0(%rbp)
jmp 0xc541
movq -0x190(%rbp), %rsi
movq -0x2c0(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x2c0(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x120(%rbp), %rdi
movl $0x2, %ecx
callq 0xcb30
jmp 0xc583
leaq -0x48(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
leaq -0x120(%rbp), %rsi
movq %rsi, -0x2e0(%rbp)
callq 0x7220
movq -0x2e0(%rbp), %rdi
callq 0x63c0
movq -0x198(%rbp), %rdi
callq 0x5db0
movq -0x2d8(%rbp), %rsi
movq %rax, -0x2d0(%rbp)
leaq -0x130(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x6390
movq -0x2d0(%rbp), %rdi
movq -0x2c8(%rbp), %rsi
callq 0xd280
jmp 0xc5ef
leaq -0x130(%rbp), %rdi
callq 0x63c0
jmp 0xca88
movq -0x288(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0x60, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x6670
testb $0x1, -0x109(%rbp)
jne 0xc645
jmp 0xc656
movq -0x2b0(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x63c0
jmp 0xcadf
movl $0x68, %edi
callq 0x4190
movq %rax, -0x2e8(%rbp)
jmp 0xc68b
movq -0x190(%rbp), %rdi
callq 0xd090
movl %eax, -0x2ec(%rbp)
jmp 0xc69f
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x2f8(%rbp)
jmp 0xc6b4
movq -0x190(%rbp), %rdi
movl -0x20(%rbp), %eax
movl %eax, -0x304(%rbp)
callq 0xd0c0
movq %rax, -0x300(%rbp)
jmp 0xc6d2
movq -0x300(%rbp), %r8
movl -0x304(%rbp), %ecx
movq -0x2f8(%rbp), %rdx
movl -0x2ec(%rbp), %esi
movq -0x2e8(%rbp), %rdi
callq 0xd6a0
jmp 0xc6fa
movq -0x2e8(%rbp), %rsi
movq -0x198(%rbp), %rdi
callq 0xd650
jmp 0xc70f
movl $0x18, %edi
callq 0x4190
movq %rax, -0x310(%rbp)
jmp 0xc722
movq -0x198(%rbp), %rsi
movb $0x1, -0x141(%rbp)
leaq -0x140(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x6640
movq -0x310(%rbp), %rdi
movq -0x318(%rbp), %rsi
callq 0xd7d0
jmp 0xc758
movq -0x310(%rbp), %rsi
movb $0x0, -0x141(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd780
jmp 0xc771
leaq -0x140(%rbp), %rdi
callq 0x6670
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x320(%rbp)
jmp 0xc792
movq -0x190(%rbp), %rsi
movq -0x320(%rbp), %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rax
movq -0x320(%rbp), %rdx
shrq %rax
leaq (%rax,%rax,2), %rax
subq %rax, %rdx
leaq -0x158(%rbp), %rdi
movl $0x3, %ecx
callq 0xcb30
jmp 0xc7d4
leaq -0x48(%rbp), %rdi
movq %rdi, -0x338(%rbp)
leaq -0x158(%rbp), %rsi
movq %rsi, -0x340(%rbp)
callq 0x7220
movq -0x340(%rbp), %rdi
callq 0x63c0
movq -0x198(%rbp), %rdi
callq 0x5db0
movq -0x338(%rbp), %rsi
movq %rax, -0x330(%rbp)
leaq -0x168(%rbp), %rdi
movq %rdi, -0x328(%rbp)
callq 0x6390
movq -0x330(%rbp), %rdi
movq -0x328(%rbp), %rsi
callq 0xd280
jmp 0xc840
leaq -0x168(%rbp), %rdi
callq 0x63c0
jmp 0xca88
movq -0x2e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0x68, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x6670
testb $0x1, -0x141(%rbp)
jne 0xc896
jmp 0xc8a7
movq -0x310(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x63c0
jmp 0xcadf
movl $0x60, %edi
callq 0x4190
movq %rax, -0x348(%rbp)
jmp 0xc8dc
movq -0x190(%rbp), %rdi
callq 0xd090
movl %eax, -0x34c(%rbp)
jmp 0xc8f0
movq -0x190(%rbp), %rdi
callq 0xd0a0
movq %rax, -0x358(%rbp)
jmp 0xc905
movq -0x190(%rbp), %rdi
movl -0x20(%rbp), %eax
movl %eax, -0x364(%rbp)
callq 0xd0c0
movq %rax, -0x360(%rbp)
jmp 0xc923
movl -0x364(%rbp), %ecx
movq -0x358(%rbp), %rdx
movl -0x34c(%rbp), %esi
movq -0x348(%rbp), %rdi
movq -0x360(%rbp), %rax
movq %rax, %xmm0
movaps 0x117a0(%rip), %xmm1    # 0x1e0f0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x117a4(%rip), %xmm1    # 0x1e100
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
callq 0xd870
jmp 0xc972
movq -0x348(%rbp), %rsi
movq -0x198(%rbp), %rdi
callq 0xd820
jmp 0xc987
movl $0x18, %edi
callq 0x4190
movq %rax, -0x370(%rbp)
jmp 0xc99a
movq -0x198(%rbp), %rsi
movb $0x1, -0x179(%rbp)
leaq -0x178(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x6640
movq -0x370(%rbp), %rdi
movq -0x378(%rbp), %rsi
callq 0xd9a0
jmp 0xc9d0
movq -0x370(%rbp), %rsi
movb $0x0, -0x179(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd950
jmp 0xc9e9
leaq -0x178(%rbp), %rdi
callq 0x6670
jmp 0xca88
movq -0x348(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0x60, %esi
callq 0x41a0
jmp 0xcadf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x6670
testb $0x1, -0x179(%rbp)
jne 0xca3f
jmp 0xca50
movq -0x370(%rbp), %rdi
movl $0x18, %esi
callq 0x41a0
jmp 0xcadf
movq 0x20574(%rip), %rdi     # 0x2cfd0
leaq 0x11711(%rip), %rsi     # 0x1e174
callq 0x4180
movq %rax, -0x380(%rbp)
jmp 0xca71
movq -0x380(%rbp), %rdi
movq 0x20539(%rip), %rsi     # 0x2cfb8
callq 0x41c0
jmp 0xca86
jmp 0xca88
movq -0x198(%rbp), %rsi
movq -0x190(%rbp), %rdi
addq $0x38, %rdi
callq 0xd9f0
movq %rax, -0x388(%rbp)
jmp 0xcaa8
movq -0x388(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xda20
movb $0x1, -0x21(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xda50
leaq -0x48(%rbp), %rdi
callq 0x63c0
leaq -0x38(%rbp), %rdi
callq 0xda70
testb $0x1, -0x21(%rbp)
jne 0xcb14
jmp 0xcb08
leaq -0x58(%rbp), %rdi
callq 0xda50
leaq -0x48(%rbp), %rdi
callq 0x63c0
leaq -0x38(%rbp), %rdi
callq 0xda70
movq -0x198(%rbp), %rdi
callq 0x6670
jmp 0xcb24
movq -0x198(%rbp), %rdi
callq 0x6670
movq -0x1a8(%rbp), %rax
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x4300
nopl (%rax)