// File: BohangZhang[P]Sorcery-C-Project/act_minion.cc
// Function: Act_Minion::use()
void Act_Minion::use() {
    if (getSilent()) throw 1; // Number; The minion has been silented
    if (getMaster()->isSlotFull()) throw 2; // You have already own 5 Minions!
    if (name == "Apprentice Summoner") {
        shared_ptr<Minion> m = this->master->getDatabase()->getMinion("Air Elemental")->cloneMinion();
        shared_ptr<Card> p = m;
        p->setMaster(master);
        this->getMaster()->getSlot()->push(m);
        this->getMaster()->getGame()->notify("Enter", m);
    }
    if (name == "Master Summoner") {
        int i = this->master->getSlot()->getSize();
        int count = 0;
        while (!(getMaster()->isSlotFull()) && (count < 3)) {
            shared_ptr<Minion> m = this->master->getDatabase()->getMinion("Air Elemental")->cloneMinion();
            shared_ptr<Card> p = m;
            p->setMaster(master);
            this->getMaster()->getSlot()->push(m);
            this->getMaster()->getGame()->notify("Enter", m);
            ++count;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x350, %rsp            # imm = 0x350
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x260(%rbp)
movq (%rdi), %rax
callq *0x60(%rax)
testb $0x1, %al
jne 0x14b56
jmp 0x14b79
movl $0x4, %edi
callq 0x6160
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x3f428(%rip), %rsi     # 0x53f98
xorl %eax, %eax
movl %eax, %edx
callq 0x6430
movq -0x260(%rbp), %rsi
leaq -0x18(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x19d90
movq -0x270(%rbp), %rdi
callq 0x12980
movq %rax, %rdi
callq 0x2a920
movb %al, -0x261(%rbp)
jmp 0x14bac
leaq -0x18(%rbp), %rdi
callq 0x12a00
movb -0x261(%rbp), %al
testb $0x1, %al
jne 0x14bc1
jmp 0x14bfe
movl $0x4, %edi
callq 0x6160
movq %rax, %rdi
movl $0x2, (%rdi)
movq 0x3f3bd(%rip), %rsi     # 0x53f98
xorl %eax, %eax
movl %eax, %edx
callq 0x6430
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x12a00
jmp 0x1558f
movq -0x260(%rbp), %rdi
addq $0x8, %rdi
leaq 0x2bba2(%rip), %rsi     # 0x407b2
callq 0x12920
testb $0x1, %al
jne 0x14c1e
jmp 0x1500d
movq -0x260(%rbp), %rdi
addq $0x70, %rdi
callq 0x12980
movq %rax, %rsi
leaq -0x58(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x2a740
movq -0x288(%rbp), %rdi
callq 0x15bb0
movq %rax, -0x280(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x6470
movq -0x278(%rbp), %rdx
leaq 0x2bb54(%rip), %rsi     # 0x407c6
leaq -0x78(%rbp), %rdi
callq 0x12870
jmp 0x14c7d
movq -0x280(%rbp), %rsi
leaq -0x48(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0x19f60
jmp 0x14c93
leaq -0x48(%rbp), %rdi
callq 0x12d30
movq %rax, %rsi
movq (%rsi), %rax
movq 0x100(%rax), %rax
leaq -0x38(%rbp), %rdi
callq *%rax
jmp 0x14cb1
leaq -0x48(%rbp), %rdi
callq 0x12d50
leaq -0x78(%rbp), %rdi
callq 0x64c8
leaq -0x79(%rbp), %rdi
callq 0x62f0
leaq -0x58(%rbp), %rdi
callq 0x15bd0
leaq -0x90(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x15bf0
movq -0x2a0(%rbp), %rdi
callq 0x15c20
movq -0x260(%rbp), %rsi
movq %rax, -0x298(%rbp)
addq $0x70, %rsi
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x129a0
movq -0x298(%rbp), %rdi
movq -0x290(%rbp), %rsi
callq 0x19d60
jmp 0x14d32
leaq -0xa0(%rbp), %rdi
callq 0x12a00
movq -0x260(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x19d90
jmp 0x14d53
leaq -0xc0(%rbp), %rdi
callq 0x12980
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
callq 0x2a6b0
jmp 0x14d70
leaq -0xb0(%rbp), %rdi
callq 0x12af0
movq %rax, -0x2b0(%rbp)
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x12c10
movq -0x2b0(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
callq 0x3d2b0
jmp 0x14daf
leaq -0xd0(%rbp), %rdi
callq 0x12d50
leaq -0xb0(%rbp), %rdi
callq 0x12b30
leaq -0xc0(%rbp), %rdi
callq 0x12a00
movq -0x260(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x19d90
jmp 0x14de8
leaq -0xf0(%rbp), %rdi
callq 0x12980
movq %rax, %rsi
leaq -0xe0(%rbp), %rdi
callq 0x2a670
jmp 0x14e05
leaq -0xe0(%rbp), %rdi
callq 0x12a20
movq %rax, -0x2c0(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
callq 0x6470
movq -0x2b8(%rbp), %rdx
leaq 0x2cb71(%rip), %rsi     # 0x419aa
leaq -0x110(%rbp), %rdi
callq 0x12870
jmp 0x14e47
leaq -0x128(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x12c10
movq -0x2c0(%rbp), %rdi
movq -0x2c8(%rbp), %rdx
leaq -0x110(%rbp), %rsi
callq 0x22cc0
jmp 0x14e7a
leaq -0x128(%rbp), %rdi
callq 0x12d50
leaq -0x110(%rbp), %rdi
callq 0x64c8
leaq -0x111(%rbp), %rdi
callq 0x62f0
leaq -0xe0(%rbp), %rdi
callq 0x12a70
leaq -0xf0(%rbp), %rdi
callq 0x12a00
leaq -0x90(%rbp), %rdi
callq 0x15c40
leaq -0x38(%rbp), %rdi
callq 0x12d50
jmp 0x1500d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x14f0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x14f01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x12d50
leaq -0x78(%rbp), %rdi
callq 0x64c8
leaq -0x79(%rbp), %rdi
callq 0x62f0
leaq -0x58(%rbp), %rdi
callq 0x15bd0
jmp 0x1558f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x12a00
jmp 0x14ff3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x14ff3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x14f81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x12d50
leaq -0xb0(%rbp), %rdi
callq 0x12b30
leaq -0xc0(%rbp), %rdi
callq 0x12a00
jmp 0x14ff3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x14fe7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x14fcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x12d50
leaq -0x110(%rbp), %rdi
callq 0x64c8
leaq -0x111(%rbp), %rdi
callq 0x62f0
leaq -0xe0(%rbp), %rdi
callq 0x12a70
leaq -0xf0(%rbp), %rdi
callq 0x12a00
leaq -0x90(%rbp), %rdi
callq 0x15c40
leaq -0x38(%rbp), %rdi
callq 0x12d50
jmp 0x1558f
movq -0x260(%rbp), %rdi
addq $0x8, %rdi
leaq 0x2b7b5(%rip), %rsi     # 0x407d4
callq 0x12920
testb $0x1, %al
jne 0x1502d
jmp 0x15586
movq -0x260(%rbp), %rdi
addq $0x70, %rdi
callq 0x12980
movq %rax, %rsi
leaq -0x140(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x2a6b0
movq -0x2d8(%rbp), %rdi
callq 0x12af0
movq %rax, %rdi
callq 0x3d230
movl %eax, -0x2cc(%rbp)
jmp 0x1506f
leaq -0x140(%rbp), %rdi
callq 0x12b30
movl -0x2cc(%rbp), %eax
movl %eax, -0x12c(%rbp)
movl $0x0, -0x144(%rbp)
movq -0x260(%rbp), %rsi
leaq -0x158(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x19d90
movq -0x2e8(%rbp), %rdi
callq 0x12980
movq %rax, %rdi
callq 0x2a920
movb %al, -0x2d9(%rbp)
jmp 0x150c7
movb -0x2d9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x2e9(%rbp)
jne 0x150ec
jmp 0x150dc
cmpl $0x3, -0x144(%rbp)
setl %al
movb %al, -0x2e9(%rbp)
movb -0x2e9(%rbp), %al
movb %al, -0x2ea(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x12a00
movb -0x2ea(%rbp), %al
testb $0x1, %al
jne 0x15113
jmp 0x15584
movq -0x260(%rbp), %rdi
addq $0x70, %rdi
callq 0x12980
movq %rax, %rsi
leaq -0x188(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x2a740
movq -0x308(%rbp), %rdi
callq 0x15bb0
movq %rax, -0x300(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x2f8(%rbp)
callq 0x6470
movq -0x2f8(%rbp), %rdx
leaq 0x2b659(%rip), %rsi     # 0x407c6
leaq -0x1a8(%rbp), %rdi
callq 0x12870
jmp 0x1517b
movq -0x300(%rbp), %rsi
leaq -0x178(%rbp), %rdi
leaq -0x1a8(%rbp), %rdx
callq 0x19f60
jmp 0x15197
leaq -0x178(%rbp), %rdi
callq 0x12d30
movq %rax, %rsi
movq (%rsi), %rax
movq 0x100(%rax), %rax
leaq -0x168(%rbp), %rdi
callq *%rax
jmp 0x151bb
leaq -0x178(%rbp), %rdi
callq 0x12d50
leaq -0x1a8(%rbp), %rdi
callq 0x64c8
leaq -0x1a9(%rbp), %rdi
callq 0x62f0
leaq -0x188(%rbp), %rdi
callq 0x15bd0
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x320(%rbp)
leaq -0x168(%rbp), %rsi
callq 0x15bf0
movq -0x320(%rbp), %rdi
callq 0x15c20
movq -0x260(%rbp), %rsi
movq %rax, -0x318(%rbp)
addq $0x70, %rsi
leaq -0x1d0(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x129a0
movq -0x318(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x19d60
jmp 0x1524b
leaq -0x1d0(%rbp), %rdi
callq 0x12a00
movq -0x260(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x19d90
jmp 0x1526c
leaq -0x1f0(%rbp), %rdi
callq 0x12980
movq %rax, %rsi
leaq -0x1e0(%rbp), %rdi
callq 0x2a6b0
jmp 0x15289
leaq -0x1e0(%rbp), %rdi
callq 0x12af0
movq %rax, -0x330(%rbp)
leaq -0x200(%rbp), %rdi
movq %rdi, -0x328(%rbp)
leaq -0x168(%rbp), %rsi
callq 0x12c10
movq -0x330(%rbp), %rdi
movq -0x328(%rbp), %rsi
callq 0x3d2b0
jmp 0x152cb
leaq -0x200(%rbp), %rdi
callq 0x12d50
leaq -0x1e0(%rbp), %rdi
callq 0x12b30
leaq -0x1f0(%rbp), %rdi
callq 0x12a00
movq -0x260(%rbp), %rsi
leaq -0x220(%rbp), %rdi
callq 0x19d90
jmp 0x15304
leaq -0x220(%rbp), %rdi
callq 0x12980
movq %rax, %rsi
leaq -0x210(%rbp), %rdi
callq 0x2a670
jmp 0x15321
leaq -0x210(%rbp), %rdi
callq 0x12a20
movq %rax, -0x340(%rbp)
leaq -0x241(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x6470
movq -0x338(%rbp), %rdx
leaq 0x2c655(%rip), %rsi     # 0x419aa
leaq -0x240(%rbp), %rdi
callq 0x12870
jmp 0x15363
leaq -0x258(%rbp), %rdi
movq %rdi, -0x348(%rbp)
leaq -0x168(%rbp), %rsi
callq 0x12c10
movq -0x340(%rbp), %rdi
movq -0x348(%rbp), %rdx
leaq -0x240(%rbp), %rsi
callq 0x22cc0
jmp 0x15399
leaq -0x258(%rbp), %rdi
callq 0x12d50
leaq -0x240(%rbp), %rdi
callq 0x64c8
leaq -0x241(%rbp), %rdi
callq 0x62f0
leaq -0x210(%rbp), %rdi
callq 0x12a70
leaq -0x220(%rbp), %rdi
callq 0x12a00
movl -0x144(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x144(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x15c40
leaq -0x168(%rbp), %rdi
callq 0x12d50
jmp 0x15091
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x12b30
jmp 0x1558f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x12a00
jmp 0x1558f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1547b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1546f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x12d50
leaq -0x1a8(%rbp), %rdi
callq 0x64c8
leaq -0x1a9(%rbp), %rdi
callq 0x62f0
leaq -0x188(%rbp), %rdi
callq 0x15bd0
jmp 0x1558f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x12a00
jmp 0x1556a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1556a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x154f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x12d50
leaq -0x1e0(%rbp), %rdi
callq 0x12b30
leaq -0x1f0(%rbp), %rdi
callq 0x12a00
jmp 0x1556a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1555e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x15546
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x12d50
leaq -0x240(%rbp), %rdi
callq 0x64c8
leaq -0x241(%rbp), %rdi
callq 0x62f0
leaq -0x210(%rbp), %rdi
callq 0x12a70
leaq -0x220(%rbp), %rdi
callq 0x12a00
leaq -0x1c0(%rbp), %rdi
callq 0x15c40
leaq -0x168(%rbp), %rdi
callq 0x12d50
jmp 0x1558f
jmp 0x15586
addq $0x350, %rsp            # imm = 0x350
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x6460
nopl (%rax,%rax)