// File: /workspace/github_c_makefile_star2_O1/zhou-yuxin[P]redis-aof-no-cow/deps/geohash-int/geohash.c
// Function: geohashNeighbors
void geohashNeighbors(const GeoHashBits *hash, GeoHashNeighbors *neighbors) {
    neighbors->east = *hash;
    neighbors->west = *hash;
    neighbors->north = *hash;
    neighbors->south = *hash;
    neighbors->south_east = *hash;
    neighbors->south_west = *hash;
    neighbors->north_east = *hash;
    neighbors->north_west = *hash;

    geohash_move_x(&neighbors->east, 1);
    geohash_move_y(&neighbors->east, 0);

    geohash_move_x(&neighbors->west, -1);
    geohash_move_y(&neighbors->west, 0);

    geohash_move_x(&neighbors->south, 0);
    geohash_move_y(&neighbors->south, -1);

    geohash_move_x(&neighbors->north, 0);
    geohash_move_y(&neighbors->north, 1);

    geohash_move_x(&neighbors->north_west, -1);
    geohash_move_y(&neighbors->north_west, 1);

    geohash_move_x(&neighbors->north_east, 1);
    geohash_move_y(&neighbors->north_east, 1);

    geohash_move_x(&neighbors->south_east, 1);
    geohash_move_y(&neighbors->south_east, -1);

    geohash_move_x(&neighbors->south_west, -1);
    geohash_move_y(&neighbors->south_west, -1);
}

// Assembly:
pushq %rbx
movups (%rdi), %xmm0
movups %xmm0, 0x10(%rsi)
movups (%rdi), %xmm0
movups %xmm0, 0x20(%rsi)
movups (%rdi), %xmm0
movups %xmm0, (%rsi)
movups (%rdi), %xmm0
movups %xmm0, 0x30(%rsi)
movups (%rdi), %xmm0
movups %xmm0, 0x50(%rsi)
movups (%rdi), %xmm0
movups %xmm0, 0x70(%rsi)
movups (%rdi), %xmm0
movups %xmm0, 0x40(%rsi)
movups (%rdi), %xmm0
movups %xmm0, 0x60(%rsi)
movq 0x10(%rsi), %rdi
movabsq $-0x5555555555555556, %rax # imm = 0xAAAAAAAAAAAAAAAA
movq %rdi, %r8
andq %rax, %r8
movabsq $0x5555555555555555, %rdx # imm = 0x5555555555555555
movb 0x18(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rdx, %r9
shrq %cl, %r9
movq %rax, %r10
shrq %cl, %r10
andq %rdx, %rdi
leaq (%r9,%r8), %rcx
incq %rcx
andq %rcx, %r10
orq %rdi, %r10
movq %r10, 0x10(%rsi)
movq 0x20(%rsi), %rdi
movq %rdi, %r8
andq %rax, %r8
movb 0x28(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rdx, %r9
shrq %cl, %r9
andq %rdx, %rdi
orq %r8, %r9
movq %rax, %r8
sarq %cl, %r8
movq %rax, %r10
shrq %cl, %r10
addq %r9, %r8
andq %r8, %r10
orq %rdi, %r10
movq %r10, 0x20(%rsi)
movq 0x30(%rsi), %r8
movq %r8, %r9
andq %rax, %r9
andq %rdx, %r8
movb 0x38(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rdx, %r10
shrq %cl, %r10
movabsq $0x7fffffffffffffff, %rdi # imm = 0x7FFFFFFFFFFFFFFF
addq %rdi, %r8
andq %r8, %r10
orq %r9, %r10
movq %r10, 0x30(%rsi)
movq (%rsi), %r8
movq %r8, %r9
andq %rax, %r9
movb 0x8(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rax, %r10
shrq %cl, %r10
andq %rdx, %r8
addq %r10, %r8
incq %r8
movq %rdx, %r10
shrq %cl, %r10
andq %r8, %r10
orq %r9, %r10
movq %r10, (%rsi)
movq 0x60(%rsi), %r8
movq %r8, %r9
movb 0x68(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rdx, %r10
shrq %cl, %r10
andq %rax, %r9
orq %r10, %r9
movq %rax, %r11
sarq %cl, %r11
movq %rax, %rbx
shrq %cl, %rbx
addq %r9, %r11
andq %rbx, %r11
andq %rdx, %r8
leaq (%r8,%rbx), %rcx
incq %rcx
andq %r10, %rcx
orq %r11, %rcx
movq %rcx, 0x60(%rsi)
movq 0x40(%rsi), %r8
movb 0x48(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rdx, %r9
shrq %cl, %r9
movq %r8, %r10
andq %rax, %r10
addq %r9, %r10
incq %r10
movq %rax, %r11
shrq %cl, %r11
andq %r11, %r10
andq %rdx, %r8
leaq (%r8,%r11), %rcx
incq %rcx
andq %r9, %rcx
orq %r10, %rcx
movq %rcx, 0x40(%rsi)
movq 0x50(%rsi), %r8
movq %r8, %r9
movb 0x58(%rsi), %cl
addb %cl, %cl
negb %cl
movq %rdx, %r10
shrq %cl, %r10
andq %rax, %r9
addq %r10, %r9
incq %r9
movq %rax, %r11
shrq %cl, %r11
andq %r9, %r11
andq %rdx, %r8
addq %rdi, %r8
andq %r10, %r8
orq %r11, %r8
movq %r8, 0x50(%rsi)
movq 0x70(%rsi), %r8
movq %r8, %r9
movb 0x78(%rsi), %cl
addb %cl, %cl
negb %cl
andq %rdx, %r8
shrq %cl, %rdx
movq %rax, %r10
sarq %cl, %r10
andq %rax, %r9
orq %rdx, %r9
addq %r9, %r10
shrq %cl, %rax
andq %r10, %rax
addq %rdi, %r8
andq %rdx, %r8
orq %rax, %r8
movq %r8, 0x70(%rsi)
popq %rbx
retq
nopl (%rax)