// File: Mariotti94[P]BigFloat/BigFloat.cc
// Function: BigFloat::Pow(BigFloat const&, BigFloat const&)
BigFloat BigFloat::Pow(const BigFloat& left, const BigFloat& right)
{
    if(right == 0)
        return 1;
    else if(right % 2 == 0)
        return BigFloat::Pow(left, right / 2) * BigFloat::Pow(left, right / 2);
    else
        return left * BigFloat::Pow(left, right / 2) * BigFloat::Pow(left, right / 2);
}

// Assembly:
subq $0x5a8, %rsp            # imm = 0x5A8
movq %rdi, 0x40(%rsp)
movq %rdi, %rax
movq %rax, 0x48(%rsp)
movq %rdi, 0x5a0(%rsp)
movq %rsi, 0x598(%rsp)
movq %rdx, 0x590(%rsp)
movq 0x590(%rsp), %rdi
movl $0x0, 0x58c(%rsp)
leaq 0x58c(%rsp), %rsi
callq 0x57a0
testb $0x1, %al
jne 0x5392
jmp 0x53a6
movq 0x40(%rsp), %rdi
movl $0x1, %esi
callq 0x27b0
jmp 0x5782
movq 0x590(%rsp), %rsi
movl $0x2, 0x504(%rsp)
leaq 0x508(%rsp), %rdi
movq %rdi, 0x30(%rsp)
leaq 0x504(%rsp), %rdx
callq 0x5830
movq 0x30(%rsp), %rdi
movl $0x0, 0x500(%rsp)
leaq 0x500(%rsp), %rsi
callq 0x57a0
movb %al, 0x3f(%rsp)
jmp 0x53f6
leaq 0x508(%rsp), %rdi
callq 0x2780
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x5410
jmp 0x55c0
movq 0x598(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x590(%rsp), %rsi
movl $0x2, 0x3ec(%rsp)
leaq 0x3f0(%rsp), %rdi
movq %rdi, 0x28(%rsp)
leaq 0x3ec(%rsp), %rdx
callq 0x5a60
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0x470(%rsp), %rdi
callq 0x5340
jmp 0x5463
movq 0x598(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x590(%rsp), %rsi
movl $0x2, 0x2e4(%rsp)
leaq 0x2e8(%rsp), %rdi
leaq 0x2e4(%rsp), %rdx
callq 0x5a60
jmp 0x549a
movq 0x18(%rsp), %rsi
leaq 0x368(%rsp), %rdi
leaq 0x2e8(%rsp), %rdx
callq 0x5340
jmp 0x54b6
movq 0x40(%rsp), %rdi
leaq 0x470(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0x58e0
jmp 0x54d2
leaq 0x368(%rsp), %rdi
callq 0x2780
leaq 0x2e8(%rsp), %rdi
callq 0x2780
leaq 0x470(%rsp), %rdi
callq 0x2780
leaq 0x3f0(%rsp), %rdi
callq 0x2780
jmp 0x5782
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
leaq 0x508(%rsp), %rdi
callq 0x2780
jmp 0x578f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x55ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x55a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x5594
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
leaq 0x368(%rsp), %rdi
callq 0x2780
leaq 0x2e8(%rsp), %rdi
callq 0x2780
leaq 0x470(%rsp), %rdi
callq 0x2780
leaq 0x3f0(%rsp), %rdi
callq 0x2780
jmp 0x578f
movq 0x598(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x590(%rsp), %rsi
movl $0x2, 0x15c(%rsp)
leaq 0x160(%rsp), %rdi
movq %rdi, 0x10(%rsp)
leaq 0x15c(%rsp), %rdx
callq 0x5a60
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x5340
jmp 0x5613
movq 0x8(%rsp), %rsi
leaq 0x260(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
callq 0x58e0
jmp 0x562f
movq 0x598(%rsp), %rax
movq %rax, (%rsp)
movq 0x590(%rsp), %rsi
movl $0x2, 0x54(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x54(%rsp), %rdx
callq 0x5a60
jmp 0x565c
movq (%rsp), %rsi
leaq 0xd8(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x5340
jmp 0x5674
movq 0x40(%rsp), %rdi
leaq 0x260(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x58e0
jmp 0x5690
leaq 0xd8(%rsp), %rdi
callq 0x2780
leaq 0x58(%rsp), %rdi
callq 0x2780
leaq 0x260(%rsp), %rdi
callq 0x2780
leaq 0x1e0(%rsp), %rdi
callq 0x2780
leaq 0x160(%rsp), %rdi
callq 0x2780
jmp 0x5782
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x5773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x5766
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x5759
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
jmp 0x574f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4f8(%rsp)
movl %eax, 0x4f4(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x2780
leaq 0x58(%rsp), %rdi
callq 0x2780
leaq 0x260(%rsp), %rdi
callq 0x2780
leaq 0x1e0(%rsp), %rdi
callq 0x2780
leaq 0x160(%rsp), %rdi
callq 0x2780
jmp 0x578f
movq 0x48(%rsp), %rax
addq $0x5a8, %rsp            # imm = 0x5A8
retq
movq 0x4f8(%rsp), %rdi
callq 0x2300
nopl (%rax)