// File: /workspace/github_cpp_makefile_star2_O2/jswaff[P]prophet3/test/pos__test.cpp
// Function: test_pos_consistency(position*)
bool test_pos_consistency(position *pos) {

    assert(pos);

    // king placement
    square_t wkingsq=NO_SQUARE;
    for (int32 sq=0;sq<64;sq++) {
        if (pos->piece[sq]==KING) {
            wkingsq=(square_t)sq;
            break;
        }
    }
    if (wkingsq != pos->white_king) {
        print("wkingsq: %d, %d\n",wkingsq,pos->white_king);
        return false;
    }

    square_t bkingsq=NO_SQUARE;
    for (int32 sq=0;sq<64;sq++) {
        if (pos->piece[sq]==-KING) {
            bkingsq=(square_t)sq;
            break;
        }
    }
    if (bkingsq != pos->black_king) {
        print("bkingsq: %d, %d\n",bkingsq,pos->black_king);
        return false;
    }

    // ep square
    if (pos->ep_sq!=NO_SQUARE) {
        if (pos->player==BLACK) {
            assert(get_rank(pos->ep_sq)==RANK_3);
            assert(pos->piece[pos->ep_sq-8]==PAWN);
        } else {
            assert(get_rank(pos->ep_sq)==RANK_6);
            assert(pos->piece[pos->ep_sq+8]==-PAWN);
        }
    }

    // piece counts and bitmaps
    uint32 num_wpawns=0,num_wrooks=0,num_wknights=0,num_wbishops=0,num_wqueens=0;
    uint32 num_bpawns=0,num_brooks=0,num_bknights=0,num_bbishops=0,num_bqueens=0;

    uint64 bb_wpawns=0,bb_wrooks=0,bb_wknights=0,bb_wbishops=0,bb_wqueens=0,bb_wpieces=0;
    uint64 bb_bpawns=0,bb_brooks=0,bb_bknights=0,bb_bbishops=0,bb_bqueens=0,bb_bpieces=0;

    for (int32 sq=0;sq<64;sq++) {
        if (pos->piece[sq] > NO_PIECE) {
            bb_wpieces |= bb_squares[sq];
        } else if (pos->piece[sq] < NO_PIECE) {
            bb_bpieces |= bb_squares[sq];
        }

        if (pos->piece[sq]==PAWN) {
            num_wpawns++;
            bb_wpawns |= bb_squares[sq];
        } else if (pos->piece[sq]==-PAWN) {
            num_bpawns++;
            bb_bpawns |= bb_squares[sq];
        } else if (pos->piece[sq]==ROOK) {
            num_wrooks++;
            bb_wrooks |= bb_squares[sq];
        } else if (pos->piece[sq]==-ROOK) {
            num_brooks++;
            bb_brooks |= bb_squares[sq];
        } else if (pos->piece[sq]==KNIGHT) {
            num_wknights++;
            bb_wknights |= bb_squares[sq];
        } else if (pos->piece[sq]==-KNIGHT) {
            num_bknights++;
            bb_bknights |= bb_squares[sq];
        } else if (pos->piece[sq]==BISHOP) {
            num_wbishops++;
            bb_wbishops |= bb_squares[sq];
        } else if (pos->piece[sq]==-BISHOP) {
            num_bbishops++;
            bb_bbishops |= bb_squares[sq];
        } else if (pos->piece[sq]==QUEEN) {
            num_wqueens++;
            bb_wqueens |= bb_squares[sq];
        } else if (pos->piece[sq]==-QUEEN) {
            num_bqueens++;
            bb_bqueens |= bb_squares[sq];
        }
    }

    assert(bb_wpawns==pos->white_pawns);
    assert(get_num_bits(bb_wpawns)==num_wpawns);
    assert(num_wpawns==pos->piece_counts[WHITE][PAWN]);

    assert(bb_bpawns==pos->black_pawns);
    assert(get_num_bits(bb_bpawns)==num_bpawns);
    assert(num_bpawns==pos->piece_counts[BLACK][PAWN]);

    assert(bb_wknights==pos->white_knights);
    assert(get_num_bits(bb_wknights)==num_wknights);
    assert(num_wknights==pos->piece_counts[WHITE][KNIGHT]);

    assert(bb_bknights==pos->black_knights);
    assert(get_num_bits(bb_bknights)==num_bknights);
    assert(num_bknights==pos->piece_counts[BLACK][KNIGHT]);

    assert(bb_wbishops==pos->white_bishops);
    assert(get_num_bits(bb_wbishops)==num_wbishops);
    assert(num_wbishops==pos->piece_counts[WHITE][BISHOP]);

    assert(bb_bbishops==pos->black_bishops);
    assert(get_num_bits(bb_bbishops)==num_bbishops);
    assert(num_bbishops==pos->piece_counts[BLACK][BISHOP]);

    assert(bb_wrooks==pos->white_rooks);
    assert(get_num_bits(bb_wrooks)==num_wrooks);
    assert(num_wrooks==pos->piece_counts[WHITE][ROOK]);

    assert(bb_brooks==pos->black_rooks);
    assert(get_num_bits(bb_brooks)==num_brooks);
    assert(num_brooks==pos->piece_counts[BLACK][ROOK]);

    assert(bb_wqueens==pos->white_queens);
    assert(get_num_bits(bb_wqueens)==num_wqueens);
    assert(num_wqueens==pos->piece_counts[WHITE][QUEEN]);

    assert(bb_bqueens==pos->black_queens);
    assert(get_num_bits(bb_bqueens)==num_bqueens);
    assert(num_bqueens==pos->piece_counts[BLACK][QUEEN]);

    assert(bb_wpieces==pos->white_pieces);
    assert(bb_bpieces==pos->black_pieces);

    // assert casting rights make sense
    if (can_castle_bq(pos)) {
        assert(pos->piece[E8]==-KING);
        assert(pos->piece[A8]==-ROOK);
    }
    if (can_castle_bk(pos)) {
        assert(pos->piece[E8]==-KING);
        assert(pos->piece[H8]==-ROOK);
    }
    if (can_castle_wq(pos)) {
        assert(pos->piece[E1]==KING);
        assert(pos->piece[A1]==ROOK);
    }
    if (can_castle_wk(pos)) {
        assert(pos->piece[E1]==KING);
        assert(pos->piece[H1]==ROOK);
    }

    assert(pos->hash_key==build_hash_key(pos));
    assert(pos->pawn_key==build_pawn_key(pos));

    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x21658
movq %rdi, %rbx
xorl %eax, %eax
pushq $0x40
popq %rsi
cmpq $0x40, %rax
je 0x211a8
cmpl $0x6, (%rbx,%rax,4)
je 0x211a6
incq %rax
jmp 0x21195
movl %eax, %esi
movl 0x14c(%rbx), %edx
cmpl %edx, %esi
jne 0x211c8
xorl %eax, %eax
pushq $0x40
popq %rsi
cmpq $0x40, %rax
je 0x211d3
cmpl $-0x6, (%rbx,%rax,4)
je 0x211d1
incq %rax
jmp 0x211b7
leaq 0x12ef4(%rip), %rdi     # 0x340c3
jmp 0x21234
movl %eax, %esi
movl 0x150(%rbx), %edx
cmpl %edx, %esi
jne 0x2122d
movl 0x13c(%rbx), %edi
cmpl $0x40, %edi
je 0x2125d
movl 0x138(%rbx), %ebp
callq 0xc001
testl %ebp, %ebp
je 0x21242
cmpl $0x2, %eax
jne 0x21b8d
movslq 0x13c(%rbx), %rax
cmpl $-0x1, 0x20(%rbx,%rax,4)
je 0x2125d
leaq 0x12f29(%rip), %rdi     # 0x3413e
leaq 0x125b0(%rip), %rsi     # 0x337cc
leaq 0x12e7a(%rip), %rcx     # 0x3409d
movl $0x13c, %edx            # imm = 0x13C
callq 0x20c0
leaq 0x12ea0(%rip), %rdi     # 0x340d4
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x5fdd
jmp 0x21647
cmpl $0x5, %eax
jne 0x21bac
movslq 0x13c(%rbx), %rax
cmpl $0x1, -0x20(%rbx,%rax,4)
jne 0x21bcb
xorl %eax, %eax
leaq 0xdc24a(%rip), %rcx     # 0xfd4b0
leaq 0x1251f(%rip), %rdx     # 0x3378c
xorl %r15d, %r15d
movl $0x0, 0x10(%rsp)
movl $0x0, 0x20(%rsp)
movl $0x0, 0x18(%rsp)
xorl %r10d, %r10d
movl $0x0, 0x24(%rsp)
movl $0x0, 0xc(%rsp)
movl $0x0, 0x1c(%rsp)
movl $0x0, 0x14(%rsp)
xorl %r9d, %r9d
xorl %edi, %edi
movq $0x0, 0x40(%rsp)
xorl %r12d, %r12d
movq $0x0, 0x50(%rsp)
movq $0x0, 0x30(%rsp)
xorl %ebp, %ebp
xorl %r13d, %r13d
movq $0x0, 0x38(%rsp)
movq $0x0, 0x58(%rsp)
movq $0x0, 0x48(%rsp)
xorl %r11d, %r11d
xorl %r14d, %r14d
cmpq $0x40, %rax
je 0x21396
movl (%rbx,%rax,4), %r8d
testl %r8d, %r8d
jle 0x2132a
movq (%rcx,%rax,8), %rsi
orq %rsi, %rbp
addl $0x5, %r8d
cmpl $0xa, %r8d
ja 0x2138e
movslq (%rdx,%r8,4), %r8
addq %rdx, %r8
jmpq *%r8
incl %r9d
orq %rsi, %r11
jmp 0x2138e
jns 0x2138e
movq (%rcx,%rax,8), %rsi
orq %rsi, %r14
jmp 0x2130e
incl 0x14(%rsp)
orq %rsi, 0x48(%rsp)
jmp 0x2138e
incl %r15d
orq %rsi, %rdi
jmp 0x2138e
incl 0xc(%rsp)
orq %rsi, 0x38(%rsp)
jmp 0x2138e
incl 0x20(%rsp)
orq %rsi, %r12
jmp 0x2138e
incl 0x18(%rsp)
orq %rsi, 0x50(%rsp)
jmp 0x2138e
incl 0x1c(%rsp)
orq %rsi, 0x58(%rsp)
jmp 0x2138e
incl 0x24(%rsp)
orq %rsi, %r13
jmp 0x2138e
incl %r10d
orq %rsi, 0x30(%rsp)
jmp 0x2138e
incl 0x10(%rsp)
orq %rsi, 0x40(%rsp)
incq %rax
jmp 0x212f4
movq %r11, 0x60(%rsp)
movl %r10d, 0x2c(%rsp)
movl %r9d, 0x28(%rsp)
cmpq 0x158(%rbx), %rdi
jne 0x21677
callq 0x3928
cmpl %r15d, %eax
jne 0x21696
cmpl 0x120(%rbx), %r15d
jne 0x216b5
cmpq 0x160(%rbx), %r13
jne 0x216d4
movq %r13, %rdi
callq 0x3928
movl 0x24(%rsp), %ecx
cmpl %ecx, %eax
jne 0x216f3
cmpl 0x104(%rbx), %ecx
jne 0x21712
cmpq 0x168(%rbx), %r12
jne 0x21731
movq %r12, %rdi
callq 0x3928
movl 0x20(%rsp), %ecx
cmpl %ecx, %eax
jne 0x21750
cmpl 0x124(%rbx), %ecx
jne 0x2176f
movq 0x58(%rsp), %rdi
cmpq 0x170(%rbx), %rdi
jne 0x2178e
callq 0x3928
movl 0x1c(%rsp), %ecx
cmpl %ecx, %eax
jne 0x217ad
cmpl 0x108(%rbx), %ecx
movq 0x50(%rsp), %rdi
jne 0x217cc
cmpq 0x178(%rbx), %rdi
jne 0x217eb
callq 0x3928
movl 0x18(%rsp), %ecx
cmpl %ecx, %eax
jne 0x2180a
cmpl 0x128(%rbx), %ecx
jne 0x21829
movq 0x48(%rsp), %rdi
cmpq 0x180(%rbx), %rdi
jne 0x21848
callq 0x3928
movl 0x14(%rsp), %ecx
cmpl %ecx, %eax
jne 0x21867
cmpl 0x10c(%rbx), %ecx
movq 0x40(%rsp), %rdi
jne 0x21886
cmpq 0x188(%rbx), %rdi
jne 0x218a5
callq 0x3928
movl 0x10(%rsp), %ecx
cmpl %ecx, %eax
jne 0x218c4
cmpl 0x12c(%rbx), %ecx
jne 0x218e3
movq 0x38(%rsp), %rdi
cmpq 0x190(%rbx), %rdi
jne 0x21902
callq 0x3928
movl 0xc(%rsp), %ecx
cmpl %ecx, %eax
jne 0x21921
cmpl 0x110(%rbx), %ecx
movq 0x30(%rsp), %rdi
jne 0x21940
cmpq 0x198(%rbx), %rdi
jne 0x2195f
callq 0x3928
movl 0x2c(%rsp), %ecx
cmpl %ecx, %eax
jne 0x2197e
cmpl 0x130(%rbx), %ecx
movq 0x60(%rsp), %rdi
jne 0x2199d
cmpq 0x1a0(%rbx), %rdi
jne 0x219bc
callq 0x3928
movl 0x28(%rsp), %ecx
cmpl %ecx, %eax
jne 0x219db
cmpl 0x114(%rbx), %ecx
jne 0x219fa
cmpq 0x1a8(%rbx), %rbp
jne 0x21a19
cmpq 0x1b0(%rbx), %r14
jne 0x21a38
movq %rbx, %rdi
callq 0xa0da
testb %al, %al
je 0x215a9
cmpl $-0x6, 0x10(%rbx)
jne 0x21a95
cmpl $-0x4, (%rbx)
jne 0x21ab4
movq %rbx, %rdi
callq 0xa0ce
testb %al, %al
je 0x215c9
cmpl $-0x6, 0x10(%rbx)
jne 0x21ad3
cmpl $-0x4, 0x1c(%rbx)
jne 0x21af2
movq %rbx, %rdi
callq 0xa0c3
testb %al, %al
je 0x215ef
cmpl $0x6, 0xf0(%rbx)
jne 0x21b11
cmpl $0x4, 0xe0(%rbx)
jne 0x21b30
movq %rbx, %rdi
callq 0xa0ba
testb %al, %al
je 0x21615
cmpl $0x6, 0xf0(%rbx)
jne 0x21b4f
cmpl $0x4, 0xfc(%rbx)
jne 0x21b6e
movq 0x1b8(%rbx), %r14
movq %rbx, %rdi
callq 0x5a50
cmpq %rax, %r14
jne 0x21a57
movq 0x1c0(%rbx), %r14
movq %rbx, %rdi
callq 0x5b17
movb $0x1, %bl
cmpq %rax, %r14
jne 0x21a76
movl %ebx, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5efa(%rip), %rdi      # 0x27559
leaq 0x12166(%rip), %rsi     # 0x337cc
leaq 0x12a30(%rip), %rcx     # 0x3409d
movl $0x11a, %edx            # imm = 0x11A
callq 0x20c0
leaq 0x12ae0(%rip), %rdi     # 0x3415e
leaq 0x12147(%rip), %rsi     # 0x337cc
leaq 0x12a11(%rip), %rcx     # 0x3409d
movl $0x16f, %edx            # imm = 0x16F
callq 0x20c0
leaq 0x12add(%rip), %rdi     # 0x3417a
leaq 0x12128(%rip), %rsi     # 0x337cc
leaq 0x129f2(%rip), %rcx     # 0x3409d
movl $0x170, %edx            # imm = 0x170
callq 0x20c0
leaq 0x12ae2(%rip), %rdi     # 0x3419e
leaq 0x12109(%rip), %rsi     # 0x337cc
leaq 0x129d3(%rip), %rcx     # 0x3409d
movl $0x171, %edx            # imm = 0x171
callq 0x20c0
leaq 0x12aee(%rip), %rdi     # 0x341c9
leaq 0x120ea(%rip), %rsi     # 0x337cc
leaq 0x129b4(%rip), %rcx     # 0x3409d
movl $0x173, %edx            # imm = 0x173
callq 0x20c0
leaq 0x12aeb(%rip), %rdi     # 0x341e5
leaq 0x120cb(%rip), %rsi     # 0x337cc
leaq 0x12995(%rip), %rcx     # 0x3409d
movl $0x174, %edx            # imm = 0x174
callq 0x20c0
leaq 0x12af0(%rip), %rdi     # 0x34209
leaq 0x120ac(%rip), %rsi     # 0x337cc
leaq 0x12976(%rip), %rcx     # 0x3409d
movl $0x175, %edx            # imm = 0x175
callq 0x20c0
leaq 0x12afc(%rip), %rdi     # 0x34234
leaq 0x1208d(%rip), %rsi     # 0x337cc
leaq 0x12957(%rip), %rcx     # 0x3409d
movl $0x177, %edx            # imm = 0x177
callq 0x20c0
leaq 0x12afd(%rip), %rdi     # 0x34254
leaq 0x1206e(%rip), %rsi     # 0x337cc
leaq 0x12938(%rip), %rcx     # 0x3409d
movl $0x178, %edx            # imm = 0x178
callq 0x20c0
leaq 0x12b06(%rip), %rdi     # 0x3427c
leaq 0x1204f(%rip), %rsi     # 0x337cc
leaq 0x12919(%rip), %rcx     # 0x3409d
movl $0x179, %edx            # imm = 0x179
callq 0x20c0
leaq 0x12b16(%rip), %rdi     # 0x342ab
leaq 0x12030(%rip), %rsi     # 0x337cc
leaq 0x128fa(%rip), %rcx     # 0x3409d
movl $0x17b, %edx            # imm = 0x17B
callq 0x20c0
leaq 0x12b17(%rip), %rdi     # 0x342cb
leaq 0x12011(%rip), %rsi     # 0x337cc
leaq 0x128db(%rip), %rcx     # 0x3409d
movl $0x17c, %edx            # imm = 0x17C
callq 0x20c0
leaq 0x12b20(%rip), %rdi     # 0x342f3
leaq 0x11ff2(%rip), %rsi     # 0x337cc
leaq 0x128bc(%rip), %rcx     # 0x3409d
movl $0x17d, %edx            # imm = 0x17D
callq 0x20c0
leaq 0x12b30(%rip), %rdi     # 0x34322
leaq 0x11fd3(%rip), %rsi     # 0x337cc
leaq 0x1289d(%rip), %rcx     # 0x3409d
movl $0x17f, %edx            # imm = 0x17F
callq 0x20c0
leaq 0x12b31(%rip), %rdi     # 0x34342
leaq 0x11fb4(%rip), %rsi     # 0x337cc
leaq 0x1287e(%rip), %rcx     # 0x3409d
movl $0x180, %edx            # imm = 0x180
callq 0x20c0
leaq 0x12b3a(%rip), %rdi     # 0x3436a
leaq 0x11f95(%rip), %rsi     # 0x337cc
leaq 0x1285f(%rip), %rcx     # 0x3409d
movl $0x181, %edx            # imm = 0x181
callq 0x20c0
leaq 0x12b4a(%rip), %rdi     # 0x34399
leaq 0x11f76(%rip), %rsi     # 0x337cc
leaq 0x12840(%rip), %rcx     # 0x3409d
movl $0x183, %edx            # imm = 0x183
callq 0x20c0
leaq 0x12b4b(%rip), %rdi     # 0x343b9
leaq 0x11f57(%rip), %rsi     # 0x337cc
leaq 0x12821(%rip), %rcx     # 0x3409d
movl $0x184, %edx            # imm = 0x184
callq 0x20c0
leaq 0x12b54(%rip), %rdi     # 0x343e1
leaq 0x11f38(%rip), %rsi     # 0x337cc
leaq 0x12802(%rip), %rcx     # 0x3409d
movl $0x185, %edx            # imm = 0x185
callq 0x20c0
leaq 0x12b64(%rip), %rdi     # 0x34410
leaq 0x11f19(%rip), %rsi     # 0x337cc
leaq 0x127e3(%rip), %rcx     # 0x3409d
movl $0x187, %edx            # imm = 0x187
callq 0x20c0
leaq 0x12b61(%rip), %rdi     # 0x3442c
leaq 0x11efa(%rip), %rsi     # 0x337cc
leaq 0x127c4(%rip), %rcx     # 0x3409d
movl $0x188, %edx            # imm = 0x188
callq 0x20c0
leaq 0x12b66(%rip), %rdi     # 0x34450
leaq 0x11edb(%rip), %rsi     # 0x337cc
leaq 0x127a5(%rip), %rcx     # 0x3409d
movl $0x189, %edx            # imm = 0x189
callq 0x20c0
leaq 0x12b72(%rip), %rdi     # 0x3447b
leaq 0x11ebc(%rip), %rsi     # 0x337cc
leaq 0x12786(%rip), %rcx     # 0x3409d
movl $0x18b, %edx            # imm = 0x18B
callq 0x20c0
leaq 0x12b6f(%rip), %rdi     # 0x34497
leaq 0x11e9d(%rip), %rsi     # 0x337cc
leaq 0x12767(%rip), %rcx     # 0x3409d
movl $0x18c, %edx            # imm = 0x18C
callq 0x20c0
leaq 0x12b74(%rip), %rdi     # 0x344bb
leaq 0x11e7e(%rip), %rsi     # 0x337cc
leaq 0x12748(%rip), %rcx     # 0x3409d
movl $0x18d, %edx            # imm = 0x18D
callq 0x20c0
leaq 0x12b80(%rip), %rdi     # 0x344e6
leaq 0x11e5f(%rip), %rsi     # 0x337cc
leaq 0x12729(%rip), %rcx     # 0x3409d
movl $0x18f, %edx            # imm = 0x18F
callq 0x20c0
leaq 0x12b7f(%rip), %rdi     # 0x34504
leaq 0x11e40(%rip), %rsi     # 0x337cc
leaq 0x1270a(%rip), %rcx     # 0x3409d
movl $0x190, %edx            # imm = 0x190
callq 0x20c0
leaq 0x12b86(%rip), %rdi     # 0x3452a
leaq 0x11e21(%rip), %rsi     # 0x337cc
leaq 0x126eb(%rip), %rcx     # 0x3409d
movl $0x191, %edx            # imm = 0x191
callq 0x20c0
leaq 0x12b94(%rip), %rdi     # 0x34557
leaq 0x11e02(%rip), %rsi     # 0x337cc
leaq 0x126cc(%rip), %rcx     # 0x3409d
movl $0x193, %edx            # imm = 0x193
callq 0x20c0
leaq 0x12b93(%rip), %rdi     # 0x34575
leaq 0x11de3(%rip), %rsi     # 0x337cc
leaq 0x126ad(%rip), %rcx     # 0x3409d
movl $0x194, %edx            # imm = 0x194
callq 0x20c0
leaq 0x12b9a(%rip), %rdi     # 0x3459b
leaq 0x11dc4(%rip), %rsi     # 0x337cc
leaq 0x1268e(%rip), %rcx     # 0x3409d
movl $0x195, %edx            # imm = 0x195
callq 0x20c0
leaq 0x12ba8(%rip), %rdi     # 0x345c8
leaq 0x11da5(%rip), %rsi     # 0x337cc
leaq 0x1266f(%rip), %rcx     # 0x3409d
movl $0x197, %edx            # imm = 0x197
callq 0x20c0
leaq 0x12ba7(%rip), %rdi     # 0x345e6
leaq 0x11d86(%rip), %rsi     # 0x337cc
leaq 0x12650(%rip), %rcx     # 0x3409d
movl $0x198, %edx            # imm = 0x198
callq 0x20c0
leaq 0x5be4(%rip), %rdi      # 0x27642
leaq 0x11d67(%rip), %rsi     # 0x337cc
leaq 0x12631(%rip), %rcx     # 0x3409d
movl $0x1ac, %edx            # imm = 0x1AC
callq 0x20c0
leaq 0x12c08(%rip), %rdi     # 0x34685
leaq 0x11d48(%rip), %rsi     # 0x337cc
leaq 0x12612(%rip), %rcx     # 0x3409d
movl $0x1ad, %edx            # imm = 0x1AD
callq 0x20c0
leaq 0x12b68(%rip), %rdi     # 0x34604
leaq 0x11d29(%rip), %rsi     # 0x337cc
leaq 0x125f3(%rip), %rcx     # 0x3409d
movl $0x19c, %edx            # imm = 0x19C
callq 0x20c0
leaq 0x12b5f(%rip), %rdi     # 0x3461a
leaq 0x11d0a(%rip), %rsi     # 0x337cc
leaq 0x125d4(%rip), %rcx     # 0x3409d
movl $0x19d, %edx            # imm = 0x19D
callq 0x20c0
leaq 0x12b2a(%rip), %rdi     # 0x34604
leaq 0x11ceb(%rip), %rsi     # 0x337cc
leaq 0x125b5(%rip), %rcx     # 0x3409d
movl $0x1a0, %edx            # imm = 0x1A0
callq 0x20c0
leaq 0x12b37(%rip), %rdi     # 0x34630
leaq 0x11ccc(%rip), %rsi     # 0x337cc
leaq 0x12596(%rip), %rcx     # 0x3409d
movl $0x1a1, %edx            # imm = 0x1A1
callq 0x20c0
leaq 0x12b2e(%rip), %rdi     # 0x34646
leaq 0x11cad(%rip), %rsi     # 0x337cc
leaq 0x12577(%rip), %rcx     # 0x3409d
movl $0x1a4, %edx            # imm = 0x1A4
callq 0x20c0
leaq 0x12b24(%rip), %rdi     # 0x3465b
leaq 0x11c8e(%rip), %rsi     # 0x337cc
leaq 0x12558(%rip), %rcx     # 0x3409d
movl $0x1a5, %edx            # imm = 0x1A5
callq 0x20c0
leaq 0x12af0(%rip), %rdi     # 0x34646
leaq 0x11c6f(%rip), %rsi     # 0x337cc
leaq 0x12539(%rip), %rcx     # 0x3409d
movl $0x1a8, %edx            # imm = 0x1A8
callq 0x20c0
leaq 0x12afb(%rip), %rdi     # 0x34670
leaq 0x11c50(%rip), %rsi     # 0x337cc
leaq 0x1251a(%rip), %rcx     # 0x3409d
movl $0x1a9, %edx            # imm = 0x1A9
callq 0x20c0
leaq 0x1258d(%rip), %rdi     # 0x34121
leaq 0x11c31(%rip), %rsi     # 0x337cc
leaq 0x124fb(%rip), %rcx     # 0x3409d
movl $0x13b, %edx            # imm = 0x13B
callq 0x20c0
leaq 0x12532(%rip), %rdi     # 0x340e5
leaq 0x11c12(%rip), %rsi     # 0x337cc
leaq 0x124dc(%rip), %rcx     # 0x3409d
movl $0x138, %edx            # imm = 0x138
callq 0x20c0
leaq 0x12530(%rip), %rdi     # 0x34102
leaq 0x11bf3(%rip), %rsi     # 0x337cc
leaq 0x124bd(%rip), %rcx     # 0x3409d
movl $0x139, %edx            # imm = 0x139
callq 0x20c0