// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: g_expt
static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
    {
#define H_expt "(expt z1 z2) returns z1^z2"
#define Q_expt sc->pcl_n
        s7_pointer n, pw;

        n = car(args);
        if (!s7_is_number(n))
            return(method_or_bust_with_type(sc, n, sc->expt_symbol, args, a_number_string, 1));

        pw = cadr(args);
        if (!s7_is_number(pw))
            return(method_or_bust_with_type(sc, pw, sc->expt_symbol, args, a_number_string, 2));

        /* this provides more than 2 args to expt:
         *  if (is_not_null(cddr(args)))
         *    return(g_expt(sc, list_2(sc, car(args), g_expt(sc, cdr(args)))));
         * but it's unusual in scheme to process args in reverse order, and the
         * syntax by itself is ambiguous (does (expt 2 2 3) = 256 or 64?)
         */

        if (s7_is_zero(n))
        {
            if (s7_is_zero(pw))
            {
                if ((s7_is_integer(n)) && (s7_is_integer(pw)))       /* (expt 0 0) -> 1 */
                    return(small_int(1));
                return(real_zero);                                   /* (expt 0.0 0) -> 0.0 */
            }

            if (s7_is_real(pw))
            {
                if (s7_is_negative(pw))                              /* (expt 0 -1) */
                    return(division_by_zero_error(sc, sc->expt_symbol, args));
                /* (Clisp gives divide-by-zero error here, Guile returns inf.0) */

                if ((!s7_is_rational(pw)) &&                         /* (expt 0 most-positive-fixnum) */
                        (is_NaN(s7_real(pw))))                           /* (expt 0 +nan.0) */
                    return(pw);
            }
            else
            {                                                      /* (expt 0 a+bi) */
                if (real_part(pw) < 0.0)                             /* (expt 0 -1+i) */
                    return(division_by_zero_error(sc, sc->expt_symbol, args));
                if ((is_NaN(real_part(pw))) ||                       /* (expt 0 0+1/0i) */
                        (is_NaN(imag_part(pw))))
                    return(real_NaN);
            }

            if ((s7_is_integer(n)) && (s7_is_integer(pw)))           /* pw != 0, (expt 0 2312) */
                return(small_int(0));
            return(real_zero);                                       /* (expt 0.0 123123) */
        }

        if (s7_is_one(pw))
        {
            if (s7_is_integer(pw))                                   /* (expt x 1) */
                return(n);
            if (is_rational(n))                                      /* (expt ratio 1.0) */
                return(make_real(sc, rational_to_double(sc, n)));
            return(n);
        }

        if (is_t_integer(pw))
        {
            s7_int y;
            y = integer(pw);
            if (y == 0)
            {
                if (is_rational(n))                                 /* (expt 3 0) */
                    return(small_int(1));
                if ((is_NaN(s7_real_part(n))) ||                    /* (expt 1/0 0) -> NaN */
                        (is_NaN(s7_imag_part(n))))                      /* (expt (complex 0 1/0) 0) -> NaN */
                    return(n);
                return(real_one);                                   /* (expt 3.0 0) */
            }

            switch (type(n))
            {
                case T_INTEGER:
                    {
                        s7_int x;
                        x = s7_integer(n);
                        if (x == 1)                                       /* (expt 1 y) */
                            return(n);

                        if (x == -1)
                        {
                            if (y == s7_int_min)                          /* (expt -1 most-negative-fixnum) */
                                return(small_int(1));

                            if (s7_int_abs(y) & 1)                        /* (expt -1 odd-int) */
                                return(n);
                            return(small_int(1));                         /* (expt -1 even-int) */
                        }

                        if (y == s7_int_min)                              /* (expt x most-negative-fixnum) */
                            return(small_int(0));
                        if (x == s7_int_min)                              /* (expt most-negative-fixnum y) */
                            return(make_real(sc, pow((double)x, (double)y)));

                        if (int_pow_ok(x, s7_int_abs(y)))
                        {
                            if (y > 0)
                                return(make_integer(sc, int_to_int(x, y)));
                            return(s7_make_ratio(sc, 1, int_to_int(x, -y)));
                        }
                    }
                    break;

                case T_RATIO:
                    {
                        s7_int nm, dn;

                        nm = numerator(n);
                        dn = denominator(n);

                        if (y == s7_int_min)
                        {
                            if (s7_int_abs(nm) > dn)
                                return(small_int(0));              /* (expt 4/3 most-negative-fixnum) -> 0? */
                            return(real_infinity);               /* (expt 3/4 most-negative-fixnum) -> inf? */
                        }

                        if ((int_pow_ok(nm, s7_int_abs(y))) &&
                                (int_pow_ok(dn, s7_int_abs(y))))
                        {
                            if (y > 0)
                                return(s7_make_ratio(sc, int_to_int(nm, y), int_to_int(dn, y)));
                            return(s7_make_ratio(sc, int_to_int(dn, -y), int_to_int(nm, -y)));
                        }
                    }
                    break;
                    /* occasionally int^rat can be int32_t but it happens so infrequently it's probably not worth checking
                     *  one possibly easy case: (expt 1 1/2) -> 1 (-1?) etc
                     */

                case T_REAL:
                    /* (expt -1.0 most-positive-fixnum) should be -1.0
                     * (expt -1.0 (+ (expt 2 53) 1)) -> -1.0
                     * (expt -1.0 (- 1 (expt 2 54))) -> -1.0
                     */
                    if (real(n) == -1.0)
                    {
                        if (y == s7_int_min)
                            return(real_one);

                        if (s7_int_abs(y) & 1)
                            return(n);
                        return(real_one);
                    }
                    break;

                case T_COMPLEX:
#if HAVE_COMPLEX_NUMBERS
                    if ((s7_real_part(n) == 0.0) &&
                            ((s7_imag_part(n) == 1.0) ||
                             (s7_imag_part(n) == -1.0)))
                    {
                        bool yp, np;
                        yp = (y > 0);
                        np = (s7_imag_part(n) > 0.0);
                        switch (s7_int_abs(y) % 4)
                        {
                            case 0: return(real_one);
                            case 1: return(s7_make_complex(sc, 0.0, (yp == np) ? 1.0 : -1.0));
                            case 2: return(make_real(sc, -1.0));
                            case 3: return(s7_make_complex(sc, 0.0, (yp == np) ? -1.0 : 1.0));
                        }
                    }
#else
                    return(out_of_range(sc, sc->expt_symbol, small_int(2), n, no_complex_numbers_string));
#endif
                    break;
            }
        }

        if ((s7_is_real(n)) &&
                (s7_is_real(pw)))
        {
            s7_double x, y;

            if ((is_t_ratio(pw)) &&
                    (numerator(pw) == 1))
            {
                if (denominator(pw) == 2)
                    return(g_sqrt(sc, args));
                if (denominator(pw) == 3)
                    return(make_real(sc, cbrt(s7_real(n)))); /* (expt 27 1/3) should be 3, not 3.0... */

                /* but: (expt 512/729 1/3) -> 0.88888888888889, and 4 -> sqrt(sqrt...) etc? */
            }

            x = s7_real(n);
            y = s7_real(pw);

            if (is_NaN(x)) return(n);
            if (is_NaN(y)) return(pw);
            if (y == 0.0) return(real_one);

            if (x > 0.0)
                return(make_real(sc, pow(x, y)));      /* tricky cases abound here: (expt -1 1/9223372036854775807) */
        }

        /* (expt 0+i 1e+16) = 0.98156860153485-0.19111012657867i ?
         * (expt 0+i 1+1/0i) = 0.0 ??
         */
        return(s7_from_c_complex(sc, cpow(s7_to_c_complex(n), s7_to_c_complex(pw))));
    }

// Assembly:
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rdi, 0x2b8(%rsp)
movq %rsi, 0x2b0(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x2a8(%rsp)
movq 0x2a8(%rsp), %rdi
callq 0x11320
testb $0x1, %al
jne 0x76ab2
movq 0x2b8(%rsp), %rdi
movq 0x2a8(%rsp), %rsi
movq 0x2b8(%rsp), %rax
movq 0xed8(%rax), %rdx
movq 0x2b0(%rsp), %rcx
movq 0x1ae456(%rip), %r8     # 0x224ef0
movl $0x1, %r9d
callq 0x14130
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x2a0(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x11320
testb $0x1, %al
jne 0x76b21
movq 0x2b8(%rsp), %rdi
movq 0x2a0(%rsp), %rsi
movq 0x2b8(%rsp), %rax
movq 0xed8(%rax), %rdx
movq 0x2b0(%rsp), %rcx
movq 0x1ae3e7(%rip), %r8     # 0x224ef0
movl $0x2, %r9d
callq 0x14130
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a8(%rsp), %rdi
callq 0x1bb660
testb $0x1, %al
jne 0x76b37
jmp 0x76d0a
movq 0x2a0(%rsp), %rdi
callq 0x1bb660
testb $0x1, %al
jne 0x76b4a
jmp 0x76b98
movq 0x2a8(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x76b5d
jmp 0x76b84
movq 0x2a0(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x76b70
jmp 0x76b84
movq 0x19f911(%rip), %rax    # 0x216488
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x1a3bfd(%rip), %rax    # 0x21a788
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a0(%rsp), %rdi
callq 0x11360
testb $0x1, %al
jne 0x76bae
jmp 0x76c35
movq 0x2a0(%rsp), %rdi
callq 0x164530
testb $0x1, %al
jne 0x76bc1
jmp 0x76bf2
movq 0x2b8(%rsp), %rdi
movq 0x2b8(%rsp), %rax
movq 0xed8(%rax), %rsi
movq 0x2b0(%rsp), %rdx
callq 0x123b0
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a0(%rsp), %rdi
callq 0x11380
testb $0x1, %al
jne 0x76c30
movq 0x2a0(%rsp), %rdi
callq 0x128d0
callq 0x13860
testb $0x1, %al
jne 0x76c1b
jmp 0x76c30
movq 0x2a0(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x76cbc
movq 0x2a0(%rsp), %rax
xorps %xmm0, %xmm0
ucomisd 0x8(%rax), %xmm0
jbe 0x76c78
movq 0x2b8(%rsp), %rdi
movq 0x2b8(%rsp), %rax
movq 0xed8(%rax), %rsi
movq 0x2b0(%rsp), %rdx
callq 0x123b0
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a0(%rsp), %rax
movsd 0x8(%rax), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x76ca6
movq 0x2a0(%rsp), %rax
movsd 0x10(%rax), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x76ca6
jmp 0x76cba
movq 0x1a6d23(%rip), %rax    # 0x21d9d0
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x76cbc
movq 0x2a8(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x76ccf
jmp 0x76cf6
movq 0x2a0(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x76ce2
jmp 0x76cf6
movq 0x19f797(%rip), %rax    # 0x216480
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x1a3a8b(%rip), %rax    # 0x21a788
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a0(%rsp), %rdi
callq 0xd5870
testb $0x1, %al
jne 0x76d20
jmp 0x76ec7
movq 0x2a0(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x76d33
jmp 0x76d48
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a8(%rsp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1a37c4(%rip), %rax    # 0x21a520
testb $0x1, (%rax,%rcx)
je 0x76eb2
movq 0x2a8(%rsp), %rax
movq %rax, 0x288(%rsp)
movq 0x288(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0x76dad
movq 0x288(%rsp), %rax
cvtsi2sdq 0x8(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
fldl 0xf8(%rsp)
fstpt 0xe4(%rsp)
jmp 0x76de4
movq 0x288(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x10(%rax), %rax
movq %rcx, 0x108(%rsp)
fildll 0x108(%rsp)
movq %rax, 0x100(%rsp)
fildll 0x100(%rsp)
fdivrp %st, %st(1)
fstpt 0xe4(%rsp)
fldt 0xe4(%rsp)
fstpt 0x270(%rsp)
fldt 0x270(%rsp)
fstpl 0xf0(%rsp)
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x290(%rsp)
movq 0x2b8(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x2b8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x76e3f
movq 0x2b8(%rsp), %rdi
callq 0xc670
movq 0x2b8(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x298(%rsp)
movq 0x298(%rsp), %rax
movq $0xd, (%rax)
movsd 0x290(%rsp), %xmm0
movq 0x298(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movq 0x298(%rsp), %rax
movq %rax, 0x268(%rsp)
movq 0x268(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a0(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0x779ce
movq 0x2a0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x260(%rsp)
cmpq $0x0, 0x260(%rsp)
jne 0x76f83
movq 0x2a8(%rsp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1a360e(%rip), %rax    # 0x21a520
testb $0x1, (%rax,%rcx)
je 0x76f2c
movq 0x19f569(%rip), %rax    # 0x216488
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a8(%rsp), %rdi
callq 0x138f0
callq 0x13860
testb $0x1, %al
jne 0x76f5a
movq 0x2a8(%rsp), %rdi
callq 0x139a0
callq 0x13860
testb $0x1, %al
jne 0x76f5a
jmp 0x76f6f
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x1ae09a(%rip), %rax    # 0x225010
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a8(%rsp), %rax
movzbl (%rax), %eax
addl $-0xb, %eax
movl %eax, %ecx
movq %rcx, 0xd8(%rsp)
subl $0x3, %eax
ja 0x779cc
movq 0xd8(%rsp), %rax
leaq 0x167abd(%rip), %rcx    # 0x1dea70
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x2a8(%rsp), %rdi
callq 0x10790
movq %rax, 0x258(%rsp)
cmpq $0x1, 0x258(%rsp)
jne 0x76ff1
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
cmpq $-0x1, 0x258(%rsp)
jne 0x770af
movq 0x260(%rsp), %rax
cmpq 0x1a3549(%rip), %rax    # 0x21a558
jne 0x77025
movq 0x19f470(%rip), %rax    # 0x216488
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x260(%rsp), %rax
movq %rax, 0x250(%rsp)
cmpq $0x0, 0x250(%rsp)
jl 0x77052
movq 0x250(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x77064
xorl %eax, %eax
subq 0x250(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x248(%rsp)
movq 0x248(%rsp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x7709b
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x19f3e6(%rip), %rax    # 0x216488
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x260(%rsp), %rax
cmpq 0x1a349a(%rip), %rax    # 0x21a558
jne 0x770d4
movq 0x19f3b9(%rip), %rax    # 0x216480
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x258(%rsp), %rax
cmpq 0x1a3475(%rip), %rax    # 0x21a558
jne 0x771ab
cvtsi2sdq 0x258(%rsp), %xmm0
cvtsi2sdq 0x260(%rsp), %xmm1
callq 0x9160
movsd %xmm0, 0x238(%rsp)
movq 0x2b8(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x2b8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x77138
movq 0x2b8(%rsp), %rdi
callq 0xc670
movq 0x2b8(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x240(%rsp)
movq 0x240(%rsp), %rax
movq $0xd, (%rax)
movsd 0x238(%rsp), %xmm0
movq 0x240(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movq 0x240(%rsp), %rax
movq %rax, 0x230(%rsp)
movq 0x230(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x258(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x228(%rsp)
cmpq $0x0, 0x228(%rsp)
jl 0x771e8
movq 0x228(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0x771fa
xorl %eax, %eax
subq 0x228(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc8(%rsp), %rdi
movq 0xc0(%rsp), %rax
movq %rax, 0x220(%rsp)
movq 0x220(%rsp), %rsi
callq 0x1bbf30
testb $0x1, %al
jne 0x77228
jmp 0x77393
cmpq $0x0, 0x260(%rsp)
jle 0x77348
movq 0x258(%rsp), %rdi
movq 0x260(%rsp), %rsi
callq 0x1bc030
movq %rax, 0x218(%rsp)
movq 0x218(%rsp), %rax
andq $-0x800, %rax           # imm = 0xF800
cmpq $0x0, %rax
jne 0x77288
movq 0x218(%rsp), %rcx
leaq 0x19f209(%rip), %rax    # 0x216480
movq (%rax,%rcx,8), %rax
movq %rax, 0xb8(%rsp)
jmp 0x77323
jmp 0x7728a
movq 0x2b8(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x2b8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x772b7
movq 0x2b8(%rsp), %rdi
callq 0xc670
movq 0x2b8(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x208(%rsp)
movq 0x208(%rsp), %rax
movq $0xb, (%rax)
movq 0x218(%rsp), %rcx
movq 0x208(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x208(%rsp), %rax
movq %rax, 0x200(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x210(%rsp)
movq 0x210(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2b8(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x258(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq 0x260(%rsp), %rsi
callq 0x1bc030
movq 0xb0(%rsp), %rdi
movq %rax, %rdx
movl $0x1, %esi
callq 0x11a80
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x779cc
movq 0x2a8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x1f8(%rsp)
movq 0x2a8(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x1f0(%rsp)
movq 0x260(%rsp), %rax
cmpq 0x1a3189(%rip), %rax    # 0x21a558
jne 0x7745e
movq 0x1f8(%rsp), %rax
movq %rax, 0x1e8(%rsp)
cmpq $0x0, 0x1e8(%rsp)
jl 0x77402
movq 0x1e8(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x77414
xorl %eax, %eax
subq 0x1e8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x1e0(%rsp), %rax
cmpq 0x1f0(%rsp), %rax
jle 0x7744a
movq 0x19f043(%rip), %rax    # 0x216480
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x1a6587(%rip), %rax    # 0x21d9d8
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x1f8(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x1d8(%rsp)
cmpq $0x0, 0x1d8(%rsp)
jl 0x7749b
movq 0x1d8(%rsp), %rax
movq %rax, 0x98(%rsp)
jmp 0x774ad
xorl %eax, %eax
subq 0x1d8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rax
movq %rax, 0x1d0(%rsp)
movq 0x1d0(%rsp), %rsi
callq 0x1bbf30
testb $0x1, %al
jne 0x774db
jmp 0x77627
movq 0x1f0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x1c8(%rsp)
cmpq $0x0, 0x1c8(%rsp)
jl 0x77518
movq 0x1c8(%rsp), %rax
movq %rax, 0x88(%rsp)
jmp 0x7752a
xorl %eax, %eax
subq 0x1c8(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq 0x1c0(%rsp), %rsi
callq 0x1bbf30
testb $0x1, %al
jne 0x77558
jmp 0x77627
cmpq $0x0, 0x260(%rsp)
jle 0x775c4
movq 0x2b8(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x1f8(%rsp), %rdi
movq 0x260(%rsp), %rsi
callq 0x1bc030
movq %rax, 0x80(%rsp)
movq 0x1f0(%rsp), %rdi
movq 0x260(%rsp), %rsi
callq 0x1bc030
movq 0x78(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq %rax, %rdx
callq 0x11a80
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2b8(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x1f0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq 0x260(%rsp), %rsi
callq 0x1bc030
movq %rax, 0x70(%rsp)
movq 0x1f8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq 0x260(%rsp), %rsi
callq 0x1bc030
movq 0x68(%rsp), %rdi
movq 0x70(%rsp), %rsi
movq %rax, %rdx
callq 0x11a80
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x779cc
movq 0x2a8(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd 0x16a3bf(%rip), %xmm1   # 0x1e1a00
ucomisd %xmm1, %xmm0
jne 0x776f7
jp 0x776f7
movq 0x260(%rsp), %rax
cmpq 0x1a2ef8(%rip), %rax    # 0x21a558
jne 0x77676
movq 0x1ad9a7(%rip), %rax    # 0x225010
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x260(%rsp), %rax
movq %rax, 0x1b8(%rsp)
cmpq $0x0, 0x1b8(%rsp)
jl 0x776a0
movq 0x1b8(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x776af
xorl %eax, %eax
subq 0x1b8(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x1b0(%rsp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x776e3
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x1ad926(%rip), %rax    # 0x225010
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x779cc
movq 0x2a8(%rsp), %rdi
callq 0x138f0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x779ca
jp 0x779ca
movq 0x2a8(%rsp), %rdi
callq 0x139a0
movsd 0x16a237(%rip), %xmm1   # 0x1e1968
ucomisd %xmm1, %xmm0
jne 0x7773b
jp 0x7773b
jmp 0x77760
movq 0x2a8(%rsp), %rdi
callq 0x139a0
movsd 0x16a2b0(%rip), %xmm1   # 0x1e1a00
ucomisd %xmm1, %xmm0
jne 0x779ca
jp 0x779ca
cmpq $0x0, 0x260(%rsp)
setg %al
andb $0x1, %al
movb %al, 0x1af(%rsp)
movq 0x2a8(%rsp), %rdi
callq 0x139a0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movb %al, 0x1ae(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x1a0(%rsp)
cmpq $0x0, 0x1a0(%rsp)
jl 0x777bf
movq 0x1a0(%rsp), %rax
movq %rax, 0x58(%rsp)
jmp 0x777ce
xorl %eax, %eax
subq 0x1a0(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x198(%rsp), %rax
movq %rax, %rdx
addq $0x3, %rdx
testq %rax, %rax
movq %rax, %rcx
cmovsq %rdx, %rcx
andq $-0x4, %rcx
subq %rcx, %rax
movq %rax, 0x50(%rsp)
subq $0x3, %rax
ja 0x779c8
movq 0x50(%rsp), %rax
leaq 0x16726a(%rip), %rcx    # 0x1dea80
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x1ad7ea(%rip), %rax    # 0x225010
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2b8(%rsp), %rax
movq %rax, 0x38(%rsp)
movb 0x1af(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movb 0x1ae(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
movsd 0x16a107(%rip), %xmm0   # 0x1e1968
movsd 0x16a197(%rip), %xmm1   # 0x1e1a00
movsd %xmm1, 0x40(%rsp)
cmpl %ecx, %eax
movsd %xmm0, 0x48(%rsp)
je 0x77885
movsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x38(%rsp), %rdi
movsd 0x48(%rsp), %xmm1
xorps %xmm0, %xmm0
callq 0x122a0
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movsd 0x16a153(%rip), %xmm0   # 0x1e1a00
movsd %xmm0, 0x188(%rsp)
movq 0x2b8(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x2b8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x778e3
movq 0x2b8(%rsp), %rdi
callq 0xc670
movq 0x2b8(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x190(%rsp)
movq 0x190(%rsp), %rax
movq $0xd, (%rax)
movsd 0x188(%rsp), %xmm0
movq 0x190(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movq 0x190(%rsp), %rax
movq %rax, 0x180(%rsp)
movq 0x180(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2b8(%rsp), %rax
movq %rax, 0x20(%rsp)
movb 0x1af(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movb 0x1ae(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
movsd 0x16a07c(%rip), %xmm0   # 0x1e1a00
movsd 0x169fdc(%rip), %xmm1   # 0x1e1968
movsd %xmm1, 0x28(%rsp)
cmpl %ecx, %eax
movsd %xmm0, 0x30(%rsp)
je 0x779a8
movsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x20(%rsp), %rdi
movsd 0x30(%rsp), %xmm1
xorps %xmm0, %xmm0
callq 0x122a0
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x779ca
jmp 0x779cc
jmp 0x779ce
movq 0x2a8(%rsp), %rdi
callq 0x11360
testb $0x1, %al
jne 0x779e4
jmp 0x77ca0
movq 0x2a0(%rsp), %rdi
callq 0x11360
testb $0x1, %al
jne 0x779fa
jmp 0x77ca0
movq 0x2a0(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xc, %eax
jne 0x77b22
movq 0x2a0(%rsp), %rax
cmpq $0x1, 0x8(%rax)
jne 0x77b22
movq 0x2a0(%rsp), %rax
cmpq $0x2, 0x10(%rax)
jne 0x77a52
movq 0x2b8(%rsp), %rdi
movq 0x2b0(%rsp), %rsi
callq 0x76250
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movq 0x2a0(%rsp), %rax
cmpq $0x3, 0x10(%rax)
jne 0x77b20
movq 0x2a8(%rsp), %rdi
callq 0x128d0
callq 0x9570
movsd %xmm0, 0x160(%rsp)
movq 0x2b8(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x2b8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x77aad
movq 0x2b8(%rsp), %rdi
callq 0xc670
movq 0x2b8(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x168(%rsp)
movq 0x168(%rsp), %rax
movq $0xd, (%rax)
movsd 0x160(%rsp), %xmm0
movq 0x168(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movq 0x168(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x158(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x77b22
movq 0x2a8(%rsp), %rdi
callq 0x128d0
movsd %xmm0, 0x178(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x128d0
movsd %xmm0, 0x170(%rsp)
movsd 0x178(%rsp), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x77b62
jmp 0x77b77
movq 0x2a8(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movsd 0x170(%rsp), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x77b8b
jmp 0x77ba0
movq 0x2a0(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movsd 0x170(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x77bc8
jp 0x77bc8
movq 0x1ad455(%rip), %rax    # 0x225010
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
movsd 0x178(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x77c9e
movsd 0x178(%rsp), %xmm0
movsd 0x170(%rsp), %xmm1
callq 0x9160
movsd %xmm0, 0x148(%rsp)
movq 0x2b8(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x2b8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x77c2b
movq 0x2b8(%rsp), %rdi
callq 0xc670
movq 0x2b8(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x150(%rsp)
movq 0x150(%rsp), %rax
movq $0xd, (%rax)
movsd 0x148(%rsp), %xmm0
movq 0x150(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movq 0x150(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x140(%rsp), %rax
movq %rax, 0x2c0(%rsp)
jmp 0x77d68
jmp 0x77ca0
movq 0x2b8(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x2a8(%rsp), %rdi
callq 0x1bb600
movsd %xmm0, 0x8(%rsp)
movsd %xmm1, 0x10(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1bb600
movaps %xmm0, %xmm3
movsd 0x8(%rsp), %xmm0
movaps %xmm1, %xmm2
movsd 0x10(%rsp), %xmm1
movsd %xmm0, 0x130(%rsp)
movsd %xmm1, 0x138(%rsp)
movsd 0x130(%rsp), %xmm0
movsd 0x138(%rsp), %xmm1
movsd %xmm3, 0x120(%rsp)
movsd %xmm2, 0x128(%rsp)
movsd 0x120(%rsp), %xmm2
movsd 0x128(%rsp), %xmm3
callq 0x91f0
movq 0x18(%rsp), %rdi
movsd %xmm0, 0x110(%rsp)
movsd %xmm1, 0x118(%rsp)
movsd 0x110(%rsp), %xmm0
movsd 0x118(%rsp), %xmm1
callq 0x1bb560
movq %rax, 0x2c0(%rsp)
movq 0x2c0(%rsp), %rax
addq $0x2c8, %rsp            # imm = 0x2C8
retq
nopl (%rax,%rax)