Skip to content

Instantly share code, notes, and snippets.

@jedisct1
Created November 27, 2016 20:27
Show Gist options
  • Save jedisct1/a486f6ca14fd3ac6bcd0c20a06f05ab1 to your computer and use it in GitHub Desktop.
Save jedisct1/a486f6ca14fd3ac6bcd0c20a06f05ab1 to your computer and use it in GitHub Desktop.
.section __TEXT,__text,regular,pure_instructions
.p2align 4, 0x90
__ZN3b2b12b2b_compress17h36d71a90a69834d4E:
.cfi_startproc
pushq %rbp
Ltmp0:
.cfi_def_cfa_offset 16
Ltmp1:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp2:
.cfi_def_cfa_register %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
andq $-32, %rsp
subq $256, %rsp
Ltmp3:
.cfi_offset %rbx, -56
Ltmp4:
.cfi_offset %r12, -48
Ltmp5:
.cfi_offset %r13, -40
Ltmp6:
.cfi_offset %r14, -32
Ltmp7:
.cfi_offset %r15, -24
movq %rsi, %rbx
movq (%rdi), %r11
movq 8(%rdi), %rax
movq 16(%rdi), %r9
movq 24(%rdi), %r10
movq 32(%rdi), %r14
movq 40(%rdi), %rsi
movq %rsi, 40(%rsp)
movq 48(%rdi), %rsi
movq %rsi, 64(%rsp)
movabsq $5840696475078001361, %r12
xorq %rbx, %r12
movabsq $2270897969802886507, %rsi
xorq %rdx, %rsi
movq %rsi, 32(%rsp)
movq %rdi, 72(%rsp)
movq 56(%rdi), %r13
vpxor %ymm0, %ymm0, %ymm0
vmovdqa %ymm0, 192(%rsp)
vmovdqa %ymm0, 160(%rsp)
vmovdqa %ymm0, 128(%rsp)
vmovdqa %ymm0, 96(%rsp)
xorl %r15d, %r15d
movl $7, %edi
.p2align 4, 0x90
LBB0_1:
leaq (,%r15,8), %rsi
leaq -7(%rdi), %rdx
cmpq %r8, %rdx
jae LBB0_4
movq %rsi, 24(%rsp)
movzbl -7(%rcx,%rdi), %edx
orq 89(%rsp,%rdi), %rdx
movq %rdx, 89(%rsp,%rdi)
leaq -6(%rdi), %rsi
cmpq %r8, %rsi
jae LBB0_3
movzbl -6(%rcx,%rdi), %ebx
shlq $8, %rbx
orq %rdx, %rbx
movq %rbx, 89(%rsp,%rdi)
leaq -5(%rdi), %rdx
cmpq %r8, %rdx
jae LBB0_8
movzbl -5(%rcx,%rdi), %esi
shlq $16, %rsi
orq %rbx, %rsi
movq %rsi, 89(%rsp,%rdi)
leaq -4(%rdi), %rdx
cmpq %r8, %rdx
jae LBB0_10
movzbl -4(%rcx,%rdi), %ebx
shlq $24, %rbx
orq %rsi, %rbx
movq %rbx, 89(%rsp,%rdi)
leaq -3(%rdi), %rdx
cmpq %r8, %rdx
jae LBB0_12
movzbl -3(%rcx,%rdi), %esi
shlq $32, %rsi
orq %rbx, %rsi
movq %rsi, 89(%rsp,%rdi)
leaq -2(%rdi), %rdx
cmpq %r8, %rdx
jae LBB0_14
movzbl -2(%rcx,%rdi), %edx
shlq $40, %rdx
orq %rsi, %rdx
movq %rdx, 89(%rsp,%rdi)
leaq -1(%rdi), %rsi
cmpq %r8, %rsi
jae LBB0_16
movzbl -1(%rcx,%rdi), %ebx
shlq $48, %rbx
orq %rdx, %rbx
movq %rbx, 89(%rsp,%rdi)
cmpq %r8, %rdi
jae LBB0_18
addq $1, %r15
movzbl (%rcx,%rdi), %edx
shlq $56, %rdx
orq %rbx, %rdx
movq %rdx, 89(%rsp,%rdi)
addq $8, %rdi
cmpq $16, %r15
jb LBB0_1
movabsq $7640891576956012808, %rcx
movq %rcx, 24(%rsp)
movabsq $-7276294671716946913, %r15
movabsq $-4942790177534073029, %rbx
movabsq $4354685564936845355, %rcx
movq %rcx, 56(%rsp)
movq %r13, 48(%rsp)
movabsq $6620516959819538809, %r13
movabsq $-6534734903238641935, %rdx
movl $120, %ecx
movq 32(%rsp), %rdi
movq 40(%rsp), %r8
.p2align 4, 0x90
LBB0_5:
movq %rdx, 32(%rsp)
addq %r14, %r11
leaq _const.4(%rip), %rsi
movq -120(%rcx,%rsi), %rsi
addq 96(%rsp,%rsi,8), %r11
xorq %r11, %r12
rorxq $32, %r12, %rdx
movq %rdx, 88(%rsp)
movq 24(%rsp), %rsi
addq %rdx, %rsi
movq %rsi, 24(%rsp)
xorq %rsi, %r14
rorxq $24, %r14, %rsi
movq %rsi, 40(%rsp)
addq %rsi, %r11
leaq _const.4(%rip), %rdx
movq -112(%rcx,%rdx), %rsi
addq 96(%rsp,%rsi,8), %r11
addq %r8, %rax
movq -104(%rcx,%rdx), %rsi
addq 96(%rsp,%rsi,8), %rax
xorq %rax, %r15
rorxq $32, %r15, %r12
addq %r12, %rbx
movq %rbx, 80(%rsp)
xorq %rbx, %r8
rorxq $24, %r8, %r15
addq %r15, %rax
movq %rdx, %r8
movq -96(%rcx,%r8), %rsi
addq 96(%rsp,%rsi,8), %rax
movq 64(%rsp), %rdx
addq %rdx, %r9
movq -88(%rcx,%r8), %rsi
movq %r8, %rbx
addq 96(%rsp,%rsi,8), %r9
xorq %r9, %rdi
movq %rdx, %rsi
rorxq $32, %rdi, %r8
movq 56(%rsp), %r14
addq %r8, %r14
xorq %r14, %rsi
rorxq $24, %rsi, %rsi
addq %rsi, %r9
movq 48(%rsp), %rdi
movq %rbx, %rdx
movq -80(%rcx,%rdx), %rbx
addq 96(%rsp,%rbx,8), %r9
addq %rdi, %r10
movq -72(%rcx,%rdx), %rbx
addq 96(%rsp,%rbx,8), %r10
xorq %r10, %r13
rorxq $32, %r13, %rdx
movq 32(%rsp), %rbx
addq %rdx, %rbx
movq %rbx, 32(%rsp)
xorq %rbx, %rdi
rorxq $24, %rdi, %r13
addq %r13, %r10
leaq _const.4(%rip), %rdi
movq -64(%rcx,%rdi), %rbx
addq 96(%rsp,%rbx,8), %r10
movq 88(%rsp), %rdi
xorq %r11, %rdi
vmovq %rdi, %xmm0
xorq %r10, %rdx
vmovq %rdx, %xmm1
xorq %r9, %r8
vmovq %r8, %xmm2
xorq %rax, %r12
vpunpcklqdq %xmm0, %xmm1, %xmm0
vmovq %r12, %xmm1
vpunpcklqdq %xmm2, %xmm1, %xmm1
vinserti128 $1, %xmm0, %ymm1, %ymm0
vpsrlq $16, %ymm0, %ymm1
vpsllq $48, %ymm0, %ymm0
vpor %ymm0, %ymm1, %ymm0
vextracti128 $1, %ymm0, %xmm1
vpextrq $1, %xmm1, %r12
addq 24(%rsp), %r12
movq 40(%rsp), %rdx
xorq %r12, %rdx
rorxq $63, %rdx, %rdx
movq %rdx, 24(%rsp)
vmovq %xmm0, %rbx
addq 80(%rsp), %rbx
xorq %rbx, %r15
rorxq $63, %r15, %r8
vpextrq $1, %xmm0, %rdi
addq %r14, %rdi
xorq %rdi, %rsi
rorxq $63, %rsi, %r15
vmovq %xmm1, %rsi
addq 32(%rsp), %rsi
xorq %rsi, %r13
rorxq $63, %r13, %rdx
leaq _const.4(%rip), %r14
movq -56(%rcx,%r14), %r13
vmovq %r15, %xmm1
movq -40(%rcx,%r14), %r15
vmovq %r8, %xmm2
movq -24(%rcx,%r14), %r8
vpunpcklqdq %xmm1, %xmm2, %xmm1
vmovq 24(%rsp), %xmm2
vmovq %rdx, %xmm3
vpunpcklqdq %xmm2, %xmm3, %xmm2
vinserti128 $1, %xmm1, %ymm2, %ymm1
vmovq %rax, %xmm2
vmovq %r11, %xmm3
vpunpcklqdq %xmm2, %xmm3, %xmm2
vmovq %r10, %xmm3
vmovq %r9, %xmm4
vpunpcklqdq %xmm3, %xmm4, %xmm3
vinserti128 $1, %xmm2, %ymm3, %ymm2
movq -8(%rcx,%r14), %rax
vmovq 96(%rsp,%r15,8), %xmm3
vmovq 96(%rsp,%r13,8), %xmm4
vpunpcklqdq %xmm3, %xmm4, %xmm3
vmovq 96(%rsp,%rax,8), %xmm4
vmovq 96(%rsp,%r8,8), %xmm5
vpunpcklqdq %xmm4, %xmm5, %xmm4
vinserti128 $1, %xmm3, %ymm4, %ymm3
vpaddq %ymm3, %ymm2, %ymm2
vpaddq %ymm2, %ymm1, %ymm2
vpxor %ymm2, %ymm0, %ymm0
vpsrlq $32, %ymm0, %ymm3
vpsllq $32, %ymm0, %ymm0
vpor %ymm0, %ymm3, %ymm3
vextracti128 $1, %ymm3, %xmm0
vmovq %xmm0, %rax
addq %rdi, %rax
movq -48(%rcx,%r14), %r8
vpextrq $1, %xmm0, %rdi
addq %rsi, %rdi
movq -32(%rcx,%r14), %r9
vmovq %xmm3, %rdx
addq %r12, %rdx
movq -16(%rcx,%r14), %r10
vpextrq $1, %xmm3, %rsi
addq %rbx, %rsi
vmovq %rdi, %xmm0
vmovq %rax, %xmm4
vpunpcklqdq %xmm0, %xmm4, %xmm0
vmovq %rsi, %xmm4
vmovq %rdx, %xmm5
vpunpcklqdq %xmm4, %xmm5, %xmm4
vinserti128 $1, %xmm0, %ymm4, %ymm4
vpxor %ymm4, %ymm1, %ymm0
vpsrlq $24, %ymm0, %ymm1
vpsllq $40, %ymm0, %ymm0
vpor %ymm0, %ymm1, %ymm5
movq (%rcx,%r14), %rax
vmovq 96(%rsp,%r9,8), %xmm0
vmovq 96(%rsp,%r8,8), %xmm1
vpunpcklqdq %xmm0, %xmm1, %xmm0
vmovq 96(%rsp,%rax,8), %xmm1
vmovq 96(%rsp,%r10,8), %xmm6
vpunpcklqdq %xmm1, %xmm6, %xmm1
vinserti128 $1, %xmm0, %ymm1, %ymm0
vpaddq %ymm0, %ymm2, %ymm0
vpaddq %ymm0, %ymm5, %ymm0
vpxor %ymm0, %ymm3, %ymm1
vpsrlq $16, %ymm1, %ymm2
vpsllq $48, %ymm1, %ymm1
vpor %ymm1, %ymm2, %ymm1
vpaddq %ymm4, %ymm1, %ymm2
vextracti128 $1, %ymm2, %xmm3
vmovq %xmm3, 56(%rsp)
vpextrq $1, %xmm3, %rdx
vmovq %xmm2, 24(%rsp)
vpextrq $1, %xmm2, %rbx
vpxor %ymm2, %ymm5, %ymm3
vpsrlq $63, %ymm3, %ymm4
vpaddq %ymm3, %ymm3, %ymm3
vpor %ymm3, %ymm4, %ymm3
vmovq %xmm1, %r15
vpextrq $1, %xmm1, %rdi
vextracti128 $1, %ymm1, %xmm4
vmovq %xmm4, %r13
vpextrq $1, %xmm4, %r12
vmovq %xmm0, %r9
vpextrq $1, %xmm0, %r10
vextracti128 $1, %ymm0, %xmm4
vmovq %xmm4, %r11
vpextrq $1, %xmm4, %rax
vpextrq $1, %xmm3, %r14
vextracti128 $1, %ymm3, %xmm4
subq $-128, %rcx
cmpq $1656, %rcx
vmovq %xmm4, %r8
vpextrq $1, %xmm4, 64(%rsp)
vmovq %xmm3, 48(%rsp)
jne LBB0_5
vpermq $57, %ymm3, %ymm3
vperm2i128 $1, %ymm0, %ymm0, %ymm0
vpxor %ymm0, %ymm2, %ymm0
movq 72(%rsp), %rax
vpxor (%rax), %ymm0, %ymm0
vmovdqu %ymm0, (%rax)
vpermq $147, %ymm1, %ymm0
vpxor %ymm3, %ymm0, %ymm0
vpxor 32(%rax), %ymm0, %ymm0
vmovdqu %ymm0, 32(%rax)
leaq -40(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
vzeroupper
retq
LBB0_8:
movq 24(%rsp), %rsi
orq $2, %rsi
jmp LBB0_4
LBB0_10:
movq 24(%rsp), %rsi
orq $3, %rsi
jmp LBB0_4
LBB0_12:
movq 24(%rsp), %rsi
orq $4, %rsi
jmp LBB0_4
LBB0_14:
movq 24(%rsp), %rsi
orq $5, %rsi
jmp LBB0_4
LBB0_16:
movq 24(%rsp), %rsi
orq $6, %rsi
jmp LBB0_4
LBB0_18:
movq %rdi, %rsi
jmp LBB0_4
LBB0_3:
movq 24(%rsp), %rsi
orq $1, %rsi
LBB0_4:
leaq _panic_bounds_check_loc.1(%rip), %rdi
movq %r8, %rdx
vzeroupper
callq __ZN4core9panicking18panic_bounds_check17h061ee2397a78277dE
.cfi_endproc
.section __TEXT,__const
.p2align 5
LCPI1_0:
.quad 7640891576939301192
.quad -4942790177534073029
.quad 4354685564936845355
.quad -6534734903238641935
LCPI1_1:
.quad 5840696475078001361
.quad -7276294671716946913
.quad 2270897969802886507
.quad 6620516959819538809
.section __TEXT,__text,regular,pure_instructions
.globl __ZN3b2b3b2b17h0476c9cb319543d4E
.p2align 4, 0x90
__ZN3b2b3b2b17h0476c9cb319543d4E:
.cfi_startproc
pushq %rbp
Ltmp8:
.cfi_def_cfa_offset 16
Ltmp9:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp10:
.cfi_def_cfa_register %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
andq $-32, %rsp
subq $320, %rsp
Ltmp11:
.cfi_offset %rbx, -56
Ltmp12:
.cfi_offset %r12, -48
Ltmp13:
.cfi_offset %r13, -40
Ltmp14:
.cfi_offset %r14, -32
Ltmp15:
.cfi_offset %r15, -24
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
vmovaps LCPI1_0(%rip), %ymm0
vmovups %ymm0, 96(%rsp)
vmovaps LCPI1_1(%rip), %ymm0
vmovups %ymm0, 128(%rsp)
cmpq $129, %r14
jb LBB1_1
movq %rbx, 24(%rsp)
leaq -129(%r14), %rax
andq $-128, %rax
movq %rax, 8(%rsp)
subq $-128, %rax
movq %rax, (%rsp)
leaq -128(%r14), %r15
movl $128, %ebx
leaq 96(%rsp), %r13
movq %r14, 16(%rsp)
.p2align 4, 0x90
LBB1_11:
leaq -128(%r12,%rbx), %rcx
addq $-128, %r14
xorl %edx, %edx
movl $128, %r8d
movq %r13, %rdi
movq %rbx, %rsi
vzeroupper
callq __ZN3b2b12b2b_compress17h36d71a90a69834d4E
subq $-128, %rbx
cmpq $128, %r14
ja LBB1_11
addq (%rsp), %r12
subq 8(%rsp), %r15
movq 24(%rsp), %rbx
movq 16(%rsp), %r14
jmp LBB1_3
LBB1_1:
movq %r14, %r15
LBB1_3:
vxorps %ymm0, %ymm0, %ymm0
vmovaps %ymm0, 256(%rsp)
vmovaps %ymm0, 224(%rsp)
vmovaps %ymm0, 192(%rsp)
vmovaps %ymm0, 160(%rsp)
testq %r15, %r15
je LBB1_7
xorl %esi, %esi
.p2align 4, 0x90
LBB1_5:
cmpq $127, %rsi
ja LBB1_12
movzbl (%r12,%rsi), %eax
movb %al, 160(%rsp,%rsi)
leaq 1(%rsi), %rsi
cmpq %r15, %rsi
jb LBB1_5
LBB1_7:
leaq 96(%rsp), %rdi
leaq 160(%rsp), %rcx
movq $-1, %rdx
movl $128, %r8d
movq %r14, %rsi
vzeroupper
callq __ZN3b2b12b2b_compress17h36d71a90a69834d4E
vxorps %ymm0, %ymm0, %ymm0
vmovaps %ymm0, 64(%rsp)
vmovaps %ymm0, 32(%rsp)
xorl %eax, %eax
movl $24, %ecx
.p2align 4, 0x90
LBB1_8:
movq %rax, %rdx
andq $-8, %rdx
leal -24(%rcx), %esi
andb $32, %sil
shrxq %rsi, 96(%rsp,%rdx), %rsi
movb %sil, 32(%rsp,%rax)
leal -16(%rcx), %esi
andb $40, %sil
shrxq %rsi, 96(%rsp,%rdx), %rsi
movb %sil, 33(%rsp,%rax)
leal -8(%rcx), %esi
andb $48, %sil
shrxq %rsi, 96(%rsp,%rdx), %rsi
movb %sil, 34(%rsp,%rax)
movb %cl, %sil
andb $56, %sil
shrxq %rsi, 96(%rsp,%rdx), %rdx
movb %dl, 35(%rsp,%rax)
addq $4, %rax
addq $32, %rcx
cmpq $64, %rax
jne LBB1_8
vmovaps 32(%rsp), %ymm0
vmovaps 64(%rsp), %ymm1
vmovups %ymm1, 32(%rbx)
vmovups %ymm0, (%rbx)
movq %rbx, %rax
leaq -40(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
vzeroupper
retq
LBB1_12:
leaq _panic_bounds_check_loc.e(%rip), %rdi
movl $128, %edx
vzeroupper
callq __ZN4core9panicking18panic_bounds_check17h061ee2397a78277dE
.cfi_endproc
.section __TEXT,__const
.p2align 4
_str.0:
.ascii "src/libcore/slice.rs"
.section __DATA,__const
.p2align 3
_panic_bounds_check_loc.1:
.quad _str.0
.quad 20
.long 640
.space 4
.section __TEXT,__const
_str.2:
.ascii "b2b.rs"
.p2align 3
_const.4:
.quad 0
.quad 1
.quad 2
.quad 3
.quad 4
.quad 5
.quad 6
.quad 7
.quad 8
.quad 9
.quad 10
.quad 11
.quad 12
.quad 13
.quad 14
.quad 15
.quad 14
.quad 10
.quad 4
.quad 8
.quad 9
.quad 15
.quad 13
.quad 6
.quad 1
.quad 12
.quad 0
.quad 2
.quad 11
.quad 7
.quad 5
.quad 3
.quad 11
.quad 8
.quad 12
.quad 0
.quad 5
.quad 2
.quad 15
.quad 13
.quad 10
.quad 14
.quad 3
.quad 6
.quad 7
.quad 1
.quad 9
.quad 4
.quad 7
.quad 9
.quad 3
.quad 1
.quad 13
.quad 12
.quad 11
.quad 14
.quad 2
.quad 6
.quad 5
.quad 10
.quad 4
.quad 0
.quad 15
.quad 8
.quad 9
.quad 0
.quad 5
.quad 7
.quad 2
.quad 4
.quad 10
.quad 15
.quad 14
.quad 1
.quad 11
.quad 12
.quad 6
.quad 8
.quad 3
.quad 13
.quad 2
.quad 12
.quad 6
.quad 10
.quad 0
.quad 11
.quad 8
.quad 3
.quad 4
.quad 13
.quad 7
.quad 5
.quad 15
.quad 14
.quad 1
.quad 9
.quad 12
.quad 5
.quad 1
.quad 15
.quad 14
.quad 13
.quad 4
.quad 10
.quad 0
.quad 7
.quad 6
.quad 3
.quad 9
.quad 2
.quad 8
.quad 11
.quad 13
.quad 11
.quad 7
.quad 14
.quad 12
.quad 1
.quad 3
.quad 9
.quad 5
.quad 0
.quad 15
.quad 4
.quad 8
.quad 6
.quad 2
.quad 10
.quad 6
.quad 15
.quad 14
.quad 9
.quad 11
.quad 3
.quad 0
.quad 8
.quad 12
.quad 2
.quad 13
.quad 7
.quad 1
.quad 4
.quad 10
.quad 5
.quad 10
.quad 2
.quad 8
.quad 4
.quad 7
.quad 6
.quad 1
.quad 5
.quad 15
.quad 11
.quad 9
.quad 14
.quad 3
.quad 12
.quad 13
.quad 0
.quad 0
.quad 1
.quad 2
.quad 3
.quad 4
.quad 5
.quad 6
.quad 7
.quad 8
.quad 9
.quad 10
.quad 11
.quad 12
.quad 13
.quad 14
.quad 15
.quad 14
.quad 10
.quad 4
.quad 8
.quad 9
.quad 15
.quad 13
.quad 6
.quad 1
.quad 12
.quad 0
.quad 2
.quad 11
.quad 7
.quad 5
.quad 3
.section __DATA,__const
.p2align 3
_panic_bounds_check_loc.e:
.quad _str.2
.quad 6
.long 77
.space 4
.subsections_via_symbols
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment