// File: /workspace/github_cpp_makefile_star2_O1/SethKasmann[P]clever-girl/src/state.cpp
// Function: State::make_t(unsigned short)
void State::make_t(Move pMove)
{
    assert(pMove != nullMove);
    assert(getSrc(pMove) < no_sq);
    assert(getDst(pMove) < no_sq);
    Square src, dst;
    PieceType moved, captured;
    bool epFlag = false;
    bool gamePhase = false;


    src = getSrc(pMove);
    dst = getDst(pMove);
    moved = onSquare(src);
    assert(moved != none);
    captured = onSquare(dst);
    assert(captured != king);

    // Update the Fifty Move Rule
    mFiftyMoveRule++;

    // Remove the ep file and castle rights from the zobrist key.
    if (mEnPassant)
        mKey ^= Zobrist::key(get_file(mEnPassant));

    mKey ^= Zobrist::key(mCastleRights);

    if (captured != none && !isCastle(pMove))
    {
        mFiftyMoveRule = 0;
        removePiece(mThem, captured, dst);
        if (captured == pawn)
            mPawnKey ^= Zobrist::key(mThem, pawn, dst);
        gamePhase = true;
    }

    if (isCastle(pMove))
    {
        // Kingside Castle
        if (dst < src)
        {
            movePiece(mUs, rook, src-3, dst+1);
            movePiece(mUs, king, src, dst);
        }
        // Queenside Castle
        else
        {
            movePiece(mUs, rook, src+4, dst-1);
            movePiece(mUs, king, src, dst);
        }
    }
    else
        movePiece(mUs, moved, src, dst);

    if (moved == pawn)
    {
        mFiftyMoveRule = 0;
        mPawnKey ^= Zobrist::key(mUs, pawn, src, dst);

        // Check for double pawn push.
        if (int(std::max(src, dst)) - int(std::min(src, dst)) == 16)
        {
            mEnPassant = mUs == white ? square_bb[dst - 8]
                                      : square_bb[dst + 8];

            mKey ^= Zobrist::key(get_file(mEnPassant));
            epFlag = true;
        }
        else if (getPiecePromo(pMove))
        {
            mPawnKey ^= Zobrist::key(mUs, pawn, dst);
            removePiece(mUs, pawn, dst);
            addPiece(mUs, getPiecePromo(pMove), dst);
            gamePhase = true;
        }
        else if (mEnPassant & square_bb[dst])
        {
            Square epCapture = (mUs == white) ? dst - 8 : dst + 8;
            mPawnKey ^= Zobrist::key(mThem, pawn, epCapture);
            removePiece(mThem, pawn, epCapture);
            gamePhase = true;
        }
    }

    if (!epFlag)
        mEnPassant = 0;

    if (gamePhase)
        setGamePhase();

    // Update castle rights.
    mCastleRights &= Castle_rights[src];
    mCastleRights &= Castle_rights[dst];

    mKey ^= Zobrist::key(mCastleRights);

    assert(!check());
    assert((mEnPassant & getOccupancyBB()) == 0);
    swapTurn();

    setPins(white);
    setPins(black);
    setCheckers();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
movl %esi, %ecx
andl $0x3f, %ecx
movl %esi, %eax
shrl $0x6, %eax
andl $0x3f, %eax
movl 0x188(%rdi,%rcx,4), %edx
movq %rdx, 0x8(%rsp)
movl 0x188(%rdi,%rax,4), %edi
incl 0x8(%rbx)
movq 0x30(%rbx), %r9
testq %r9, %r9
je 0x17b6f
bsfq %r9, %rdx
andl $0x7, %edx
leaq 0x14f2e9(%rip), %r8     # 0x166e50
movq (%r8,%rdx,8), %rdx
xorq %rdx, 0x18(%rbx)
movq %r9, 0x28(%rsp)
movslq 0xc(%rbx), %rdx
leaq 0x14f311(%rip), %r8     # 0x166e90
movq 0x18(%rbx), %r11
xorq (%r8,%rdx,8), %r11
movq %r11, 0x18(%rbx)
xorl %r13d, %r13d
testw %si, %si
js 0x17cb0
cmpl $0x6, %edi
je 0x17cb0
movl $0x0, 0x8(%rbx)
movl 0x4(%rbx), %r8d
leal (,%rax,8), %edx
leaq 0xe0eb7(%rip), %r9      # 0xf8a70
movq (%r9,%rdx), %r10
notq %r10
leaq (%r8,%r8,2), %r14
movq %r14, %r15
shlq $0x4, %r15
addq %rbx, %r15
andq %r10, 0x288(%r15,%rdi,8)
movq (%r9,%rdx), %r9
notq %r9
andq %r9, 0x78(%rbx,%r8,8)
leal (,%rax,4), %r9d
movl $0x6, 0x188(%rbx,%r9)
leaq (%rbx,%r14,8), %r10
movslq 0x2e8(%r10,%rdi,4), %r15
leaq -0x1(%r15), %r12
movl %r12d, 0x2e8(%r10,%rdi,4)
imulq $0xf0, %r8, %r10
addq %rbx, %r10
leaq (%rdi,%rdi,4), %r12
leaq (%r10,%r12,8), %r10
movl 0x324(%r10,%r15,4), %r12d
movslq 0x88(%rbx,%r9), %r13
movl %r13d, 0x88(%rbx,%r12,4)
movl %r12d, 0x328(%r10,%r13,4)
movl $0x40, 0x324(%r10,%r15,4)
movq %rdi, %r10
shlq $0xa, %r10
leaq 0x6926(%rip), %r15      # 0x1e580
movq %r8, %r12
shlq $0x8, %r12
addq %r15, %r12
addq %r10, %r12
movl (%r9,%r12), %r10d
movl 0x200(%r9,%r12), %r9d
subl %r10d, 0x318(%rbx,%r8,8)
subl %r9d, 0x31c(%rbx,%r8,8)
movq %rdi, %r8
shlq $0xa, %r14
addq 0xd2ff(%rip), %r14      # 0x24f90
shlq $0x9, %r8
addq %r14, %r8
xorq (%rdx,%r8), %r11
movq %r11, 0x18(%rbx)
movb $0x1, %r13b
testq %rdi, %rdi
jne 0x17cb0
movq (%r14,%rax,8), %rdx
xorq %rdx, 0x20(%rbx)
leaq 0x18(%rbx), %r12
movl %esi, 0x30(%rsp)
testw %si, %si
js 0x17dd6
leal (,%rcx,8), %r11d
leaq 0xe0da0(%rip), %rsi     # 0xf8a70
leal (,%rax,8), %r14d
movq (%rsi,%r14), %r8
orq (%rsi,%r11), %r8
movl (%rbx), %edi
leaq (%rdi,%rdi,2), %rdx
movq %rdx, %r9
shlq $0x4, %r9
addq %rbx, %r9
movq 0x8(%rsp), %rbp
xorq %r8, 0x288(%r9,%rbp,8)
movq (%rsi,%r14), %r8
orq (%rsi,%r11), %r8
xorq %r8, 0x78(%rbx,%rdi,8)
leal (,%rax,4), %r8d
movl %ebp, 0x188(%rbx,%r8)
leal (,%rcx,4), %esi
movl $0x6, 0x188(%rbx,%rsi)
movslq 0x88(%rbx,%rsi), %r9
movl %r9d, 0x88(%rbx,%r8)
imulq $0xf0, %rdi, %r10
addq %rbx, %r10
leaq (,%rbp,4), %r15
addq %rbp, %r15
leaq (%r10,%r15,8), %r10
movl %eax, 0x328(%r10,%r9,4)
movq %rbp, %r9
shlq $0xa, %r9
leaq 0x6815(%rip), %r10      # 0x1e580
movq %rdi, %r15
shlq $0x8, %r15
addq %r10, %r15
addq %r9, %r15
movl 0x318(%rbx,%rdi,8), %r9d
movl 0x31c(%rbx,%rdi,8), %r10d
subl (%rsi,%r15), %r9d
subl 0x200(%rsi,%r15), %r10d
addl (%r8,%r15), %r9d
movl %r9d, 0x318(%rbx,%rdi,8)
addl 0x200(%r8,%r15), %r10d
movl %r10d, 0x31c(%rbx,%rdi,8)
movq %rbp, %rsi
shlq $0x9, %rsi
shlq $0xa, %rdx
addq 0xd1ce(%rip), %rdx      # 0x24f90
addq %rsi, %rdx
movq (%r14,%rdx), %rdi
xorq (%r11,%rdx), %rdi
xorq 0x18(%rbx), %rdi
jmp 0x18174
movl %r13d, 0x14(%rsp)
movq %r12, 0x18(%rsp)
movl (%rbx), %esi
leaq (%rsi,%rsi,2), %r11
movq %r11, %rdx
shlq $0x4, %rdx
leaq (%rbx,%rdx), %r12
addq $0x288, %r12            # imm = 0x288
movq 0x18(%r12), %rdx
cmpw %cx, %ax
jae 0x17fb5
leal -0x3(%rcx), %r9d
leal 0x1(%rax), %r8d
leaq 0xe0c5b(%rip), %r10     # 0xf8a70
leal 0x8(,%rax,8), %r15d
movq (%r10,%r15), %rdi
orq (%r10,%r9,8), %rdi
xorq %rdi, %rdx
movq %rdx, 0x18(%r12)
movq (%r10,%r15), %rdx
orq (%r10,%r9,8), %rdx
xorq 0x78(%rbx,%rsi,8), %rdx
movq %rdx, 0x78(%rbx,%rsi,8)
movq %r12, 0x20(%rsp)
leal 0x4(,%rax,4), %r12d
movl $0x3, 0x188(%rbx,%r12)
movl $0x6, %edi
movl %edi, 0x188(%rbx,%r9,4)
movslq 0x88(%rbx,%r9,4), %r13
movl %r13d, 0x88(%rbx,%r12)
imulq $0xf0, %rsi, %rdi
addq %rbx, %rdi
movl %r8d, 0x3a0(%rdi,%r13,4)
movq %rsi, %r14
shlq $0x8, %r14
leaq 0x66eb(%rip), %r13      # 0x1e580
movl 0x318(%rbx,%rsi,8), %r8d
movl 0x31c(%rbx,%rsi,8), %ebp
addq %r14, %r13
subl 0xc00(%r13,%r9,4), %r8d
subl 0xe00(%r13,%r9,4), %ebp
addl 0xc00(%r12,%r13), %r8d
movl %r8d, 0x318(%rbx,%rsi,8)
addl 0xe00(%r12,%r13), %ebp
shlq $0xa, %r11
addq 0xd0b6(%rip), %r11      # 0x24f90
movl %ebp, 0x31c(%rbx,%rsi,8)
movq 0x600(%r15,%r11), %r15
xorq 0x600(%r11,%r9,8), %r15
xorq 0x18(%rbx), %r15
movq %r15, 0x18(%rbx)
leal (,%rcx,8), %r9d
leal (,%rax,8), %r12d
movq (%r10,%r12), %r14
orq (%r10,%r9), %r14
movq 0x20(%rsp), %r10
xorq %r14, 0x28(%r10)
leaq 0xe0b4f(%rip), %r10     # 0xf8a70
movq (%r10,%r12), %r14
orq (%r10,%r9), %r14
xorq %rdx, %r14
movq %r14, 0x78(%rbx,%rsi,8)
leal (,%rax,4), %edx
movl $0x5, 0x188(%rbx,%rdx)
leal (,%rcx,4), %r10d
movl $0x6, %r14d
movl %r14d, 0x188(%rbx,%r10)
movslq 0x88(%rbx,%r10), %r14
movl %r14d, 0x88(%rbx,%rdx)
movl %eax, 0x3f0(%rdi,%r14,4)
subl 0x1400(%r10,%r13), %r8d
subl 0x1600(%r10,%r13), %ebp
addl 0x1400(%rdx,%r13), %r8d
movl %r8d, 0x318(%rbx,%rsi,8)
addl 0x1600(%rdx,%r13), %ebp
movl %ebp, 0x31c(%rbx,%rsi,8)
movq 0xa00(%r9,%r11), %rdi
xorq 0xa00(%r12,%r11), %rdi
jmp 0x18162
leal -0x1(%rax), %r15d
leal 0x20(,%rcx,8), %r9d
leaq 0xe0aa8(%rip), %r8      # 0xf8a70
movq (%r8,%r15,8), %rdi
orq (%r8,%r9), %rdi
xorq %rdi, %rdx
movq %rdx, 0x18(%r12)
movq (%r8,%r15,8), %rdx
orq (%r8,%r9), %rdx
xorq 0x78(%rbx,%rsi,8), %rdx
movq %rdx, 0x78(%rbx,%rsi,8)
movl $0x3, 0x188(%rbx,%r15,4)
leal 0x10(,%rcx,4), %r10d
movl $0x6, %edi
movl %edi, 0x188(%rbx,%r10)
movslq 0x88(%rbx,%r10), %r8
movl %r8d, 0x88(%rbx,%r15,4)
imulq $0xf0, %rsi, %rdi
addq %rbx, %rdi
movq %rdi, 0x20(%rsp)
movl %r15d, 0x3a0(%rdi,%r8,4)
movq %rsi, %r14
shlq $0x8, %r14
leaq 0x6540(%rip), %r13      # 0x1e580
movl 0x318(%rbx,%rsi,8), %r8d
movl 0x31c(%rbx,%rsi,8), %ebp
addq %r14, %r13
subl 0xc00(%r10,%r13), %r8d
subl 0xe00(%r10,%r13), %ebp
addl 0xc00(%r13,%r15,4), %r8d
movl %r8d, 0x318(%rbx,%rsi,8)
addl 0xe00(%r13,%r15,4), %ebp
shlq $0xa, %r11
addq 0xcf0b(%rip), %r11      # 0x24f90
movl %ebp, 0x31c(%rbx,%rsi,8)
movq 0x600(%r11,%r15,8), %r15
xorq 0x600(%r9,%r11), %r15
xorq 0x18(%rbx), %r15
movq %r15, 0x18(%rbx)
leal (,%rcx,8), %r9d
leal (,%rax,8), %r10d
movq %rcx, %rdi
leaq 0xe09b2(%rip), %rcx     # 0xf8a70
movq (%rcx,%r10), %r14
orq (%rcx,%r9), %r14
xorq %r14, 0x28(%r12)
movq (%rcx,%r10), %r14
orq (%rcx,%r9), %r14
movq %rdi, %rcx
xorq %rdx, %r14
movq %r14, 0x78(%rbx,%rsi,8)
leal (,%rax,4), %edx
movl $0x5, 0x188(%rbx,%rdx)
leal (,%rdi,4), %r14d
movl $0x6, %r12d
movl %r12d, 0x188(%rbx,%r14)
movslq 0x88(%rbx,%r14), %r12
movl %r12d, 0x88(%rbx,%rdx)
movq 0x20(%rsp), %rdi
movl %eax, 0x3f0(%rdi,%r12,4)
subl 0x1400(%r14,%r13), %r8d
subl 0x1600(%r14,%r13), %ebp
addl 0x1400(%rdx,%r13), %r8d
movl %r8d, 0x318(%rbx,%rsi,8)
addl 0x1600(%rdx,%r13), %ebp
movl %ebp, 0x31c(%rbx,%rsi,8)
movq 0xa00(%r9,%r11), %rdi
xorq 0xa00(%r10,%r11), %rdi
xorq %r15, %rdi
movq 0x18(%rsp), %r12
movl 0x14(%rsp), %r13d
movq 0x8(%rsp), %rbp
movq %rdi, (%r12)
testl %ebp, %ebp
je 0x18184
xorl %r8d, %r8d
jmp 0x183b0
movl $0x0, 0x8(%rbx)
movl (%rbx), %r11d
leaq (%r11,%r11,2), %r15
movq %r15, %r14
shlq $0xa, %r14
addq 0xcdf0(%rip), %r14      # 0x24f90
movq (%r14,%rax,8), %rdx
xorq (%r14,%rcx,8), %rdx
xorq 0x20(%rbx), %rdx
movq %rdx, 0x20(%rbx)
movl %eax, %esi
movl %ecx, %edi
subq %rsi, %rdi
movq %rdi, %rsi
negq %rsi
cmovsq %rdi, %rsi
cmpl $0x10, %esi
sete %r8b
jne 0x18203
xorl %edx, %edx
testq %r11, %r11
setne %dl
shll $0x4, %edx
addl %eax, %edx
addl $-0x8, %edx
leaq 0xe088f(%rip), %rsi     # 0xf8a70
movq (%rsi,%rdx,8), %rdx
movq %rdx, 0x30(%rbx)
bsfq %rdx, %rdx
andl $0x7, %edx
leaq 0x14ec59(%rip), %rsi    # 0x166e50
movq (%rsi,%rdx,8), %rdi
movq %r12, %r9
jmp 0x183a9
movzwl 0x30(%rsp), %edi
shrl $0xc, %edi
andw $0x7, %di
je 0x185fd
leaq (%r14,%rax,8), %rsi
movq %rsi, 0x30(%rsp)
xorq (%rsi), %rdx
movq %rdx, 0x20(%rbx)
leal (,%rax,8), %r10d
movq %r10, 0x8(%rsp)
leaq 0xe0837(%rip), %rdx     # 0xf8a70
movq (%rdx,%r10), %r9
notq %r9
leaq (%rbx,%r15,8), %rsi
movq %rsi, 0x28(%rsp)
shlq $0x4, %r15
andq %r9, 0x288(%rbx,%r15)
movq (%rdx,%r10), %rbp
notq %rbp
andq 0x78(%rbx,%r11,8), %rbp
movq %rbp, 0x78(%rbx,%r11,8)
leal (,%rax,4), %r13d
movl $0x6, 0x188(%rbx,%r13)
movslq 0x2e8(%rsi), %r9
leaq -0x1(%r9), %r10
movl %r10d, 0x2e8(%rsi)
imulq $0xf0, %r11, %r10
addq %rbx, %r10
movl 0x324(%r10,%r9,4), %edx
movq %r12, 0x18(%rsp)
movslq 0x88(%rbx,%r13), %r12
movl %r12d, 0x88(%rbx,%rdx,4)
movl %edx, 0x328(%r10,%r12,4)
movl $0x40, 0x324(%r10,%r9,4)
movq %r11, %rdx
shlq $0x8, %rdx
leaq 0x62ab(%rip), %r12      # 0x1e580
addq %rdx, %r12
movl (%r13,%r12), %edx
movl 0x200(%r13,%r12), %esi
subl %edx, 0x318(%rbx,%r11,8)
movzwl %di, %r9d
leaq (%rbx,%r15), %rdx
subl %esi, 0x31c(%rbx,%r11,8)
movq 0x18(%rbx), %rdi
movq 0x30(%rsp), %rsi
xorq (%rsi), %rdi
movq %rdi, 0x18(%rbx)
movq 0x8(%rsp), %r15
leaq 0xe0757(%rip), %rsi     # 0xf8a70
movq (%rsi,%r15), %rsi
orq %rsi, 0x288(%rdx,%r9,8)
leaq 0xe0744(%rip), %rdx     # 0xf8a70
orq (%rdx,%r15), %rbp
movq %rbp, 0x78(%rbx,%r11,8)
movl %r9d, 0x188(%rbx,%r13)
movq 0x28(%rsp), %r15
movslq 0x2e8(%r15,%r9,4), %rdx
leal 0x1(%rdx), %esi
movl %esi, 0x2e8(%r15,%r9,4)
leaq (%r12,%r13), %rsi
movq 0x18(%rsp), %r12
movl %edx, 0x88(%rbx,%r13)
leaq (%r9,%r9,4), %r15
leaq (%r10,%r15,8), %r10
addq $0x328, %r10            # imm = 0x328
movl %eax, (%r10,%rdx,4)
movl %r9d, %edx
shll $0xa, %edx
movl (%rdx,%rsi), %r10d
movl 0x200(%rdx,%rsi), %edx
addl %r10d, 0x318(%rbx,%r11,8)
addl %edx, 0x31c(%rbx,%r11,8)
shll $0x9, %r9d
addq 0x8(%rsp), %r9
addq %r14, %r9
movb $0x1, %r13b
xorq (%r9), %rdi
movq %rdi, (%r12)
testb %r8b, %r8b
jne 0x183bd
movq $0x0, 0x30(%rbx)
testb %r13b, %r13b
je 0x18420
movl 0x2ec(%rbx), %edx
movl 0x30c(%rbx), %esi
addl 0x2f4(%rbx), %esi
movl 0x310(%rbx), %edi
addl 0x2f8(%rbx), %edi
addl 0x304(%rbx), %edx
addl 0x2f0(%rbx), %edx
addl 0x308(%rbx), %edx
leal (%rdx,%rdi,4), %edx
leal (%rdx,%rsi,2), %edx
movl $0x18, %esi
subl %edx, %esi
cvtsi2ss %esi, %xmm0
mulss 0x3b45(%rip), %xmm0     # 0x1bf50
addss 0x5fb9(%rip), %xmm0     # 0x1e3cc
divss 0x5fb5(%rip), %xmm0     # 0x1e3d0
movss %xmm0, 0x10(%rbx)
leaq 0x6059(%rip), %rdx      # 0x1e480
movl (%rbx), %esi
movl 0xc(%rbx), %edi
andl (%rdx,%rcx,4), %edi
movslq %edi, %rcx
movslq (%rdx,%rax,4), %rax
andq %rcx, %rax
movl %eax, 0xc(%rbx)
movq 0x18(%rbx), %rcx
leaq 0x14ea49(%rip), %rdx    # 0x166e90
xorq (%rdx,%rax,8), %rcx
movq %rcx, 0x18(%rbx)
leaq 0x14eaba(%rip), %rax    # 0x166f10
xorq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movl %esi, 0x4(%rbx)
xorl %eax, %eax
testl %esi, %esi
sete %al
movl %eax, (%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x16cd6
movq %rbx, %rdi
movl $0x1, %esi
callq 0x16cd6
movl (%rbx), %ecx
movl 0x4(%rbx), %r8d
imulq $0xf0, %rcx, %rcx
movl 0x3f0(%rbx,%rcx), %esi
xorl %edi, %edi
testq %r8, %r8
sete %dil
leaq (%r8,%r8,2), %r11
movq 0x80(%rbx), %rdx
orq 0x78(%rbx), %rdx
leaq 0x338d(%rip), %rax      # 0x1b840
movq (%rax,%rsi,8), %r13
andq %rdx, %r13
leaq 0x317f(%rip), %rax      # 0x1b640
imulq (%rax,%rsi,8), %r13
shlq $0x4, %r11
leaq 0x306f(%rip), %rax      # 0x1b540
movb (%rax,%rsi,4), %cl
shrq %cl, %r13
movq 0x2a8(%rbx,%r11), %rbp
leaq 0x2e5a(%rip), %r14      # 0x1b340
movq (%r14,%rsi,8), %rax
andq %rdx, %rax
leaq 0x2c4c(%rip), %r15      # 0x1b140
imulq (%r15,%rsi,8), %rax
leaq 0x2b40(%rip), %r12      # 0x1b040
movb (%r12,%rsi,4), %cl
shrq %cl, %rax
movq 0x298(%rbx,%r11), %rcx
orq %rbp, %rcx
leaq 0xccf7(%rip), %r9       # 0x25210
movq (%r9,%rsi,8), %r10
andq (%r10,%r13,8), %rcx
orq 0x2a0(%rbx,%r11), %rbp
leaq 0xcee0(%rip), %r13      # 0x25410
movq (%r13,%rsi,8), %r10
andq (%r10,%rax,8), %rbp
shll $0x9, %edi
leaq 0xe0b2d(%rip), %rax     # 0xf9070
addq %rax, %rdi
movq 0x288(%rbx,%r11), %r10
andq (%rdi,%rsi,8), %r10
movq 0x290(%rbx,%r11), %rdi
leaq 0x35df(%rip), %r11      # 0x1bb40
andq (%r11,%rsi,8), %rdi
orq %r10, %rdi
orq %rdi, %rcx
orq %rcx, %rbp
movq %rbp, 0x28(%rbx)
imulq $0xf0, %r8, %rcx
shlq $0x9, %r8
addq %rax, %r8
movl 0x3f0(%rbx,%rcx), %eax
movq (%r8,%rax,8), %rcx
movq %rcx, 0x38(%rbx)
movq (%r11,%rax,8), %rcx
movq %rcx, 0x40(%rbx)
leaq 0x32a2(%rip), %rcx      # 0x1b840
movq (%rcx,%rax,8), %rsi
andq %rdx, %rsi
leaq 0x3094(%rip), %rcx      # 0x1b640
imulq (%rcx,%rax,8), %rsi
leaq 0x2f88(%rip), %rcx      # 0x1b540
movb (%rcx,%rax,4), %cl
movq (%r9,%rax,8), %rdi
shrq %cl, %rsi
movq (%rdi,%rsi,8), %rsi
movq %rsi, 0x48(%rbx)
andq (%r14,%rax,8), %rdx
imulq (%r15,%rax,8), %rdx
movb (%r12,%rax,4), %cl
movq (%r13,%rax,8), %rax
shrq %cl, %rdx
movq (%rax,%rdx,8), %rax
movq %rax, 0x50(%rbx)
orq %rsi, %rax
movq %rax, 0x58(%rbx)
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xe046c(%rip), %r9      # 0xf8a70
movq 0x28(%rsp), %rsi
testq %rsi, (%r9,%rax,8)
je 0x1817c
xorl %r10d, %r10d
testq %r11, %r11
setne %r10b
shll $0x4, %r10d
movl 0x4(%rbx), %esi
leaq (%rsi,%rsi,2), %r11
movq %r11, %rdi
shlq $0xa, %rdi
addq 0xc95a(%rip), %rdi      # 0x24f90
addl %eax, %r10d
addl $-0x8, %r10d
xorq (%rdi,%r10,8), %rdx
movq %rdx, 0x20(%rbx)
movq (%r9,%r10,8), %rdx
notq %rdx
movq %r11, %r14
shlq $0x4, %r14
andq %rdx, 0x288(%rbx,%r14)
movq (%r9,%r10,8), %rdx
notq %rdx
andq %rdx, 0x78(%rbx,%rsi,8)
movl $0x6, 0x188(%rbx,%r10,4)
movslq 0x2e8(%rbx,%r11,8), %rdx
leaq -0x1(%rdx), %r9
movl %r9d, 0x2e8(%rbx,%r11,8)
imulq $0xf0, %rsi, %r9
addq %rbx, %r9
movl 0x324(%r9,%rdx,4), %r11d
movslq 0x88(%rbx,%r10,4), %r14
movl %r14d, 0x88(%rbx,%r11,4)
movl %r11d, 0x328(%r9,%r14,4)
movl $0x40, 0x324(%r9,%rdx,4)
movq %rsi, %rdx
shlq $0x8, %rdx
leaq 0x5eb5(%rip), %r9       # 0x1e580
addq %rdx, %r9
movl (%r9,%r10,4), %edx
movl 0x200(%r9,%r10,4), %r9d
subl %edx, 0x318(%rbx,%rsi,8)
subl %r9d, 0x31c(%rbx,%rsi,8)
movq (%rdi,%r10,8), %rdi
movb $0x1, %r13b
jmp 0x181fb
nop