// File: SethKasmann[P]clever-girl/src/bitboard.cpp
// Function: bb_init()
void bb_init()
{
    for (Square sq_src = first_sq; sq_src <= last_sq; ++sq_src)
    {
        U64 bit = 1ULL << sq_src;
        square_bb[sq_src] = bit;
        pawn_attacks[white][sq_src] = ((bit & Not_h_file) << 7)
                                    | ((bit & Not_a_file) << 9);
        pawn_attacks[black][sq_src] = ((bit & Not_h_file) >> 9)
                                    | ((bit & Not_a_file) >> 7);
        pawn_push[white][sq_src]    = bit << 8;
        pawn_push[black][sq_src]    = bit >> 8;

        U64 front = east_fill(bit) | west_fill(bit);
        in_front[white][sq_src] = north_fill(front << 8);
        in_front[black][sq_src] = south_fill(front >> 8);

        king_net_bb[white][sq_src] = King_moves[sq_src] | (King_moves[sq_src] << 16);
        king_net_bb[black][sq_src] = King_moves[sq_src] | (King_moves[sq_src] >> 16);

        file_bb[sq_src] = north_fill(bit) | south_fill(bit);
        rank_bb[sq_src] = east_fill(bit) | west_fill(bit);

        bishopMoves[sq_src] = (north_east_fill(bit) | north_west_fill(bit) 
                    | south_east_fill(bit) | south_west_fill(bit)) & ~bit;

        rookMoves[sq_src] = (north_fill(bit) | south_fill(bit) 
                  | east_fill(bit) | west_fill(bit)) & ~bit;

        if (bit & Rank_2)
        {
            pawn_dbl_push[white][sq_src] = bit << 16;
            pawn_dbl_push[black][sq_src] = 0;
        }
        else if (bit & Rank_7)
        {
            pawn_dbl_push[white][sq_src] = 0;
            pawn_dbl_push[black][sq_src] = bit >> 16;
        }
        else
        {
            pawn_dbl_push[white][sq_src] = 0;
            pawn_dbl_push[black][sq_src] = 0;
        }
        for (Square sq_dst = H1; sq_dst <= A8; ++sq_dst)
        {
            adj_files[sq_dst] = sq_dst & File_a ? File_b
                              : sq_dst & File_b ? File_a | File_c
                              : sq_dst & File_c ? File_b | File_d
                              : sq_dst & File_d ? File_c | File_e
                              : sq_dst & File_e ? File_d | File_f
                              : sq_dst & File_f ? File_e | File_g
                              : sq_dst & File_g ? File_f | File_h
                              : File_g;


            U64 r_attacks, b_attacks, occ;
            occ = 1ULL << sq_src | 1ULL << sq_dst;
            
            r_attacks = Rmagic(sq_src, 0);
            b_attacks = Bmagic(sq_src, 0);

            r_attacks &= (r_attacks & occ ? Rmagic(sq_dst, 0) : 0);
            b_attacks &= (b_attacks & occ ? Bmagic(sq_dst, 0) : 0);

            coplanar[sq_src][sq_dst] = r_attacks | b_attacks;

            r_attacks = Rmagic(sq_src, occ);
            b_attacks = Bmagic(sq_src, occ);

            r_attacks &= (r_attacks & occ ? Rmagic(sq_dst, occ) : 0);
            b_attacks &= (b_attacks & occ ? Bmagic(sq_dst, occ) : 0);

            between_dia[sq_src][sq_dst] = b_attacks;
            between_hor[sq_src][sq_dst] = r_attacks;
            between[sq_src][sq_dst] = b_attacks | r_attacks;
        }
    }
    outpost_area[white] = Rank_4 | Rank_5 | Rank_6 | Rank_7;
    outpost_area[black] = Rank_2 | Rank_3 | Rank_4 | Rank_5;
}

// Assembly:
subq $0x158, %rsp            # imm = 0x158
movl $0x0, 0xd4(%rsp)
cmpl $0x3f, 0xd4(%rsp)
ja 0x2124a
movl 0xd4(%rsp), %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x1344ef(%rip), %rax    # 0x154b10
movq %rdx, (%rax,%rcx,8)
movabsq $-0x101010101010102, %rdx # imm = 0xFEFEFEFEFEFEFEFE
andq 0xc8(%rsp), %rdx
shlq $0x7, %rdx
movabsq $0x7f7f7f7f7f7f7f7f, %rax # imm = 0x7F7F7F7F7F7F7F7F
andq 0xc8(%rsp), %rax
shlq $0x9, %rax
orq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134aac(%rip), %rax    # 0x155110
movq %rdx, (%rax,%rcx,8)
movabsq $-0x101010101010102, %rdx # imm = 0xFEFEFEFEFEFEFEFE
andq 0xc8(%rsp), %rdx
shrq $0x9, %rdx
movabsq $0x7f7f7f7f7f7f7f7f, %rax # imm = 0x7F7F7F7F7F7F7F7F
andq 0xc8(%rsp), %rax
shrq $0x7, %rax
orq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134a69(%rip), %rax    # 0x155110
movq %rdx, 0x200(%rax,%rcx,8)
movq 0xc8(%rsp), %rdx
shlq $0x8, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134e45(%rip), %rax    # 0x155510
movq %rdx, (%rax,%rcx,8)
movq 0xc8(%rsp), %rdx
shrq $0x8, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134e25(%rip), %rax    # 0x155510
movq %rdx, 0x200(%rax,%rcx,8)
movq 0xc8(%rsp), %rdi
callq 0x21470
movq %rax, 0x58(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21510
movq %rax, %rcx
movq 0x58(%rsp), %rax
orq %rcx, %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rdi
shlq $0x8, %rdi
callq 0x215b0
movq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x1557c7(%rip), %rax    # 0x175f10
movq %rdx, (%rax,%rcx,8)
movq 0xc0(%rsp), %rdi
shrq $0x8, %rdi
callq 0x21600
movq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x15579f(%rip), %rax    # 0x175f10
movq %rdx, 0x200(%rax,%rcx,8)
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x20667(%rip), %rax     # 0x40df0
movq (%rax,%rcx,8), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x20653(%rip), %rax     # 0x40df0
movq (%rax,%rcx,8), %rax
shlq $0x10, %rax
orq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x155b58(%rip), %rax    # 0x176310
movq %rdx, (%rax,%rcx,8)
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x20624(%rip), %rax     # 0x40df0
movq (%rax,%rcx,8), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x20610(%rip), %rax     # 0x40df0
movq (%rax,%rcx,8), %rax
shrq $0x10, %rax
orq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x155b15(%rip), %rax    # 0x176310
movq %rdx, 0x200(%rax,%rcx,8)
movq 0xc8(%rsp), %rdi
callq 0x215b0
movq %rax, 0x60(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21600
movq 0x60(%rsp), %rdx
orq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x1344d6(%rip), %rax    # 0x154d10
movq %rdx, (%rax,%rcx,8)
movq 0xc8(%rsp), %rdi
callq 0x21470
movq %rax, 0x68(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21510
movq 0x68(%rsp), %rdx
orq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x13469b(%rip), %rax    # 0x154f10
movq %rdx, (%rax,%rcx,8)
movq 0xc8(%rsp), %rdi
callq 0x21650
movq %rax, 0x70(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x216f0
movq %rax, %rcx
movq 0x70(%rsp), %rax
orq %rcx, %rax
movq %rax, 0x78(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21790
movq %rax, %rcx
movq 0x78(%rsp), %rax
orq %rcx, %rax
movq %rax, 0x80(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21830
movq 0x80(%rsp), %rdx
orq %rax, %rdx
movq 0xc8(%rsp), %rax
xorq $-0x1, %rax
andq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x155e21(%rip), %rax    # 0x176720
movq %rdx, (%rax,%rcx,8)
movq 0xc8(%rsp), %rdi
callq 0x215b0
movq %rax, 0x88(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21600
movq %rax, %rcx
movq 0x88(%rsp), %rax
orq %rcx, %rax
movq %rax, 0x90(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21470
movq %rax, %rcx
movq 0x90(%rsp), %rax
orq %rcx, %rax
movq %rax, 0x98(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x21510
movq 0x98(%rsp), %rdx
orq %rax, %rdx
movq 0xc8(%rsp), %rax
xorq $-0x1, %rax
andq %rax, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x155f8b(%rip), %rax    # 0x176920
movq %rdx, (%rax,%rcx,8)
movq 0xc8(%rsp), %rax
andq $0xff00, %rax           # imm = 0xFF00
cmpq $0x0, %rax
je 0x209ee
movq 0xc8(%rsp), %rdx
shlq $0x10, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134f47(%rip), %rax    # 0x155910
movq %rdx, (%rax,%rcx,8)
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134f33(%rip), %rax    # 0x155910
movq $0x0, 0x200(%rax,%rcx,8)
jmp 0x20a7a
movabsq $0xff000000000000, %rax # imm = 0xFF000000000000
andq 0xc8(%rsp), %rax
cmpq $0x0, %rax
je 0x20a44
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134efa(%rip), %rax    # 0x155910
movq $0x0, (%rax,%rcx,8)
movq 0xc8(%rsp), %rdx
shrq $0x10, %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134ed6(%rip), %rax    # 0x155910
movq %rdx, 0x200(%rax,%rcx,8)
jmp 0x20a78
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134ebc(%rip), %rax    # 0x155910
movq $0x0, (%rax,%rcx,8)
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134ea4(%rip), %rax    # 0x155910
movq $0x0, 0x200(%rax,%rcx,8)
jmp 0x20a7a
movl $0x0, 0xbc(%rsp)
cmpl $0x3f, 0xbc(%rsp)
ja 0x21236
movl 0xbc(%rsp), %edi
movabsq $-0x7f7f7f7f7f7f7f80, %rsi # imm = 0x8080808080808080
callq 0x218d0
cmpq $0x0, %rax
je 0x20ac3
movabsq $0x4040404040404040, %rax # imm = 0x4040404040404040
movq %rax, 0x50(%rsp)
jmp 0x20c19
movl 0xbc(%rsp), %edi
movabsq $0x4040404040404040, %rsi # imm = 0x4040404040404040
callq 0x218d0
cmpq $0x0, %rax
je 0x20af3
movabsq $-0x5f5f5f5f5f5f5f60, %rax # imm = 0xA0A0A0A0A0A0A0A0
movq %rax, 0x48(%rsp)
jmp 0x20c0f
movl 0xbc(%rsp), %edi
movabsq $0x2020202020202020, %rsi # imm = 0x2020202020202020
callq 0x218d0
cmpq $0x0, %rax
je 0x20b23
movabsq $0x5050505050505050, %rax # imm = 0x5050505050505050
movq %rax, 0x40(%rsp)
jmp 0x20c05
movl 0xbc(%rsp), %edi
movabsq $0x1010101010101010, %rsi # imm = 0x1010101010101010
callq 0x218d0
cmpq $0x0, %rax
je 0x20b53
movabsq $0x2828282828282828, %rax # imm = 0x2828282828282828
movq %rax, 0x38(%rsp)
jmp 0x20bfb
movl 0xbc(%rsp), %edi
movabsq $0x808080808080808, %rsi # imm = 0x808080808080808
callq 0x218d0
cmpq $0x0, %rax
je 0x20b80
movabsq $0x1414141414141414, %rax # imm = 0x1414141414141414
movq %rax, 0x30(%rsp)
jmp 0x20bf1
movl 0xbc(%rsp), %edi
movabsq $0x404040404040404, %rsi # imm = 0x404040404040404
callq 0x218d0
cmpq $0x0, %rax
je 0x20bad
movabsq $0xa0a0a0a0a0a0a0a, %rax # imm = 0xA0A0A0A0A0A0A0A
movq %rax, 0x28(%rsp)
jmp 0x20be7
movl 0xbc(%rsp), %edi
movabsq $0x202020202020202, %rsi # imm = 0x202020202020202
callq 0x218d0
movq %rax, %rdx
movabsq $0x202020202020202, %rax # imm = 0x202020202020202
movabsq $0x505050505050505, %rcx # imm = 0x505050505050505
cmpq $0x0, %rdx
cmovneq %rcx, %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdx
movl 0xbc(%rsp), %eax
movl %eax, %ecx
leaq 0x1550e2(%rip), %rax    # 0x175d10
movq %rdx, (%rax,%rcx,8)
movl 0xd4(%rsp), %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movl 0xbc(%rsp), %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, 0xa0(%rsp)
movl 0xd4(%rsp), %eax
movl %eax, 0x114(%rsp)
movq $0x0, 0x108(%rsp)
movl 0x114(%rsp), %eax
movl %eax, %ecx
leaq 0x30836(%rip), %rax     # 0x514c0
movq (%rax,%rcx,8), %rax
movq 0x108(%rsp), %rdx
movl 0x114(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f72a(%rip), %rcx     # 0x403d0
andq (%rcx,%rsi,8), %rdx
movl 0x114(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f516(%rip), %rcx     # 0x401d0
imulq (%rcx,%rsi,8), %rdx
movl 0x114(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f401(%rip), %rcx     # 0x400d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xb0(%rsp)
movl 0xd4(%rsp), %eax
movl %eax, 0x154(%rsp)
movq $0x0, 0x148(%rsp)
movl 0x154(%rsp), %eax
movl %eax, %ecx
leaq 0x305b2(%rip), %rax     # 0x512c0
movq (%rax,%rcx,8), %rax
movq 0x148(%rsp), %rdx
movl 0x154(%rsp), %ecx
movl %ecx, %esi
leaq 0x1fba6(%rip), %rcx     # 0x408d0
andq (%rcx,%rsi,8), %rdx
movl 0x154(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f992(%rip), %rcx     # 0x406d0
imulq (%rcx,%rsi,8), %rdx
movl 0x154(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f87d(%rip), %rcx     # 0x405d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xa8(%rsp)
movq 0xb0(%rsp), %rax
andq 0xa0(%rsp), %rax
cmpq $0x0, %rax
je 0x20e05
movl 0xbc(%rsp), %eax
movl %eax, 0x104(%rsp)
movq $0x0, 0xf8(%rsp)
movl 0x104(%rsp), %eax
movl %eax, %ecx
leaq 0x30714(%rip), %rax     # 0x514c0
movq (%rax,%rcx,8), %rax
movq 0xf8(%rsp), %rdx
movl 0x104(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f608(%rip), %rcx     # 0x403d0
andq (%rcx,%rsi,8), %rdx
movl 0x104(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f3f4(%rip), %rcx     # 0x401d0
imulq (%rcx,%rsi,8), %rdx
movl 0x104(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f2df(%rip), %rcx     # 0x400d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x20(%rsp)
jmp 0x20e0e
xorl %eax, %eax
movq %rax, 0x20(%rsp)
jmp 0x20e0e
movq 0x20(%rsp), %rax
andq 0xb0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0xa8(%rsp), %rax
andq 0xa0(%rsp), %rax
cmpq $0x0, %rax
je 0x20ec0
movl 0xbc(%rsp), %eax
movl %eax, 0x144(%rsp)
movq $0x0, 0x138(%rsp)
movl 0x144(%rsp), %eax
movl %eax, %ecx
leaq 0x30459(%rip), %rax     # 0x512c0
movq (%rax,%rcx,8), %rax
movq 0x138(%rsp), %rdx
movl 0x144(%rsp), %ecx
movl %ecx, %esi
leaq 0x1fa4d(%rip), %rcx     # 0x408d0
andq (%rcx,%rsi,8), %rdx
movl 0x144(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f839(%rip), %rcx     # 0x406d0
imulq (%rcx,%rsi,8), %rdx
movl 0x144(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f724(%rip), %rcx     # 0x405d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
jmp 0x20ec9
xorl %eax, %eax
movq %rax, 0x18(%rsp)
jmp 0x20ec9
movq 0x18(%rsp), %rax
andq 0xa8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0xb0(%rsp), %rdx
orq 0xa8(%rsp), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x14ce12(%rip), %rax    # 0x16dd10
shlq $0x9, %rcx
addq %rcx, %rax
movl 0xbc(%rsp), %ecx
movq %rdx, (%rax,%rcx,8)
movl 0xd4(%rsp), %ecx
movq 0xa0(%rsp), %rax
movl %ecx, 0xf4(%rsp)
movq %rax, 0xe8(%rsp)
movl 0xf4(%rsp), %eax
movl %eax, %ecx
leaq 0x30582(%rip), %rax     # 0x514c0
movq (%rax,%rcx,8), %rax
movq 0xe8(%rsp), %rdx
movl 0xf4(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f476(%rip), %rcx     # 0x403d0
andq (%rcx,%rsi,8), %rdx
movl 0xf4(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f262(%rip), %rcx     # 0x401d0
imulq (%rcx,%rsi,8), %rdx
movl 0xf4(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f14d(%rip), %rcx     # 0x400d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xb0(%rsp)
movl 0xd4(%rsp), %ecx
movq 0xa0(%rsp), %rax
movl %ecx, 0x134(%rsp)
movq %rax, 0x128(%rsp)
movl 0x134(%rsp), %eax
movl %eax, %ecx
leaq 0x302fa(%rip), %rax     # 0x512c0
movq (%rax,%rcx,8), %rax
movq 0x128(%rsp), %rdx
movl 0x134(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f8ee(%rip), %rcx     # 0x408d0
andq (%rcx,%rsi,8), %rdx
movl 0x134(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f6da(%rip), %rcx     # 0x406d0
imulq (%rcx,%rsi,8), %rdx
movl 0x134(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f5c5(%rip), %rcx     # 0x405d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xa8(%rsp)
movq 0xb0(%rsp), %rax
andq 0xa0(%rsp), %rax
cmpq $0x0, %rax
je 0x210c1
movl 0xbc(%rsp), %ecx
movq 0xa0(%rsp), %rax
movl %ecx, 0xe4(%rsp)
movq %rax, 0xd8(%rsp)
movl 0xe4(%rsp), %eax
movl %eax, %ecx
leaq 0x30458(%rip), %rax     # 0x514c0
movq (%rax,%rcx,8), %rax
movq 0xd8(%rsp), %rdx
movl 0xe4(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f34c(%rip), %rcx     # 0x403d0
andq (%rcx,%rsi,8), %rdx
movl 0xe4(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f138(%rip), %rcx     # 0x401d0
imulq (%rcx,%rsi,8), %rdx
movl 0xe4(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f023(%rip), %rcx     # 0x400d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x10(%rsp)
jmp 0x210ca
xorl %eax, %eax
movq %rax, 0x10(%rsp)
jmp 0x210ca
movq 0x10(%rsp), %rax
andq 0xb0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0xa8(%rsp), %rax
andq 0xa0(%rsp), %rax
cmpq $0x0, %rax
je 0x21180
movl 0xbc(%rsp), %ecx
movq 0xa0(%rsp), %rax
movl %ecx, 0x124(%rsp)
movq %rax, 0x118(%rsp)
movl 0x124(%rsp), %eax
movl %eax, %ecx
leaq 0x30199(%rip), %rax     # 0x512c0
movq (%rax,%rcx,8), %rax
movq 0x118(%rsp), %rdx
movl 0x124(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f78d(%rip), %rcx     # 0x408d0
andq (%rcx,%rsi,8), %rdx
movl 0x124(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f579(%rip), %rcx     # 0x406d0
imulq (%rcx,%rsi,8), %rdx
movl 0x124(%rsp), %ecx
movl %ecx, %esi
leaq 0x1f464(%rip), %rcx     # 0x405d0
movl (%rcx,%rsi,4), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x8(%rsp)
jmp 0x21189
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0x21189
movq 0x8(%rsp), %rax
andq 0xa8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x134b5a(%rip), %rax    # 0x155d10
shlq $0x9, %rcx
addq %rcx, %rax
movl 0xbc(%rsp), %ecx
movq %rdx, (%rax,%rcx,8)
movq 0xb0(%rsp), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x13cb30(%rip), %rax    # 0x15dd10
shlq $0x9, %rcx
addq %rcx, %rax
movl 0xbc(%rsp), %ecx
movq %rdx, (%rax,%rcx,8)
movq 0xa8(%rsp), %rdx
orq 0xb0(%rsp), %rdx
movl 0xd4(%rsp), %eax
movl %eax, %ecx
leaq 0x144afe(%rip), %rax    # 0x165d10
shlq $0x9, %rcx
addq %rcx, %rax
movl 0xbc(%rsp), %ecx
movq %rdx, (%rax,%rcx,8)
leaq 0xbc(%rsp), %rdi
callq 0x218f0
jmp 0x20a85
jmp 0x21238
leaq 0xd4(%rsp), %rdi
callq 0x218f0
jmp 0x205e2
movabsq $0xffffffff000000, %rax # imm = 0xFFFFFFFF000000
movq %rax, 0x1554b5(%rip)    # 0x176710
movabsq $0xffffffff00, %rax     # imm = 0xFFFFFFFF00
movq %rax, 0x1554ac(%rip)    # 0x176718
addq $0x158, %rsp            # imm = 0x158
retq
nopw %cs:(%rax,%rax)