-
Notifications
You must be signed in to change notification settings - Fork 287
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add specialized get_X impls for Bytes struct to reduce dead code #622
base: master
Are you sure you want to change the base?
Conversation
Updated for a more direct For the hot functions in one of my libraries, this change reduces code size by quite a decent amount. (All examples compiled via 1.73.0-x86_64-pc-windows-msvc in release mode) Simple exampleuse bytes::{Bytes, Buf};
use std::{fs::File, io::Read, hint::black_box};
fn main() {
let mut file = File::open(r"replace_with_file").unwrap();
let mut buf = Vec::new();
let len = file.read_to_end(&mut buf).unwrap();
let b: Bytes = Bytes::from(buf);
read_data(b, len);
}
#[inline(never)]
pub fn read_data(mut b: Bytes, len: usize) {
for _ in 0..len/4 {
black_box(b.get_i32());
}
} Before (175 lines)bytes::read_data:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 72
lea rbp, [rsp + 64]
mov qword ptr [rbp], -2
cmp rdx, 3
ja .LBB12_3
mov rbx, qword ptr [rcx + 8]
mov rsi, qword ptr [rcx + 16]
.LBB12_2:
mov rax, qword ptr [rcx]
add rcx, 24
mov rdx, rbx
mov r8, rsi
call qword ptr [rax + 16]
nop
add rsp, 72
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
.LBB12_3:
shr rdx, 2
mov rsi, qword ptr [rcx + 16]
xor r12d, r12d
lea rdi, [rbp - 8]
mov qword ptr [rbp - 16], rcx
mov qword ptr [rbp - 24], rdx
jmp .LBB12_4
.LBB12_6:
mov eax, dword ptr [rbx]
bswap eax
add rsi, -4
mov qword ptr [rcx + 16], rsi
add rbx, 4
mov qword ptr [rcx + 8], rbx
.LBB12_12:
inc r12
mov dword ptr [rbp - 8], eax
#APP
#NO_APP
cmp r12, rdx
je .LBB12_2
.LBB12_4:
cmp rsi, 4
jb .LBB12_7
mov rbx, qword ptr [rcx + 8]
test rbx, rbx
jne .LBB12_6
mov dword ptr [rbp - 4], 0
mov r13d, 4
xor ebx, ebx
lea r14, [rbp - 4]
.LBB12_10:
cmp rsi, r13
mov r15, r13
cmovb r15, rsi
mov rcx, r14
mov rdx, rbx
mov r8, r15
call memcpy
add r14, r15
sub rsi, r15
add rbx, r15
sub r13, r15
jne .LBB12_10
mov rcx, qword ptr [rbp - 16]
mov qword ptr [rcx + 16], rsi
mov qword ptr [rcx + 8], rbx
mov eax, dword ptr [rbp - 4]
bswap eax
mov rdx, qword ptr [rbp - 24]
jmp .LBB12_12
.LBB12_7:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
ud2
mov qword ptr [rsp + 16], rdx
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 40
lea rbp, [rdx + 64]
mov rcx, qword ptr [rbp - 16]
call core::ptr::drop_in_place<bytes::bytes::Bytes>
nop
add rsp, 40
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret After (53 lines)bytes::read_data:
push rbp
sub rsp, 64
lea rbp, [rsp + 64]
mov qword ptr [rbp - 8], -2
cmp rdx, 3
ja .LBB12_4
mov rax, qword ptr [rcx + 8]
mov r8, qword ptr [rcx + 16]
jmp .LBB12_2
.LBB12_4:
shr rdx, 2
mov r8, qword ptr [rcx + 16]
lea r10, [rbp - 12]
.LBB12_5:
sub r8, 4
jb .LBB12_6
mov rax, qword ptr [rcx + 8]
mov r9d, dword ptr [rax]
bswap r9d
mov qword ptr [rcx + 16], r8
add rax, 4
mov qword ptr [rcx + 8], rax
mov dword ptr [rbp - 12], r9d
#APP
#NO_APP
dec rdx
jne .LBB12_5
.LBB12_2:
mov r9, qword ptr [rcx]
add rcx, 24
mov rdx, rax
call qword ptr [r9 + 16]
nop
add rsp, 64
pop rbp
ret
.LBB12_6:
mov qword ptr [rbp - 24], rcx
lea rcx, [rip + __unnamed_7]
lea r8, [rip + __unnamed_8]
mov edx, 34
call core::panicking::panic
ud2
mov qword ptr [rsp + 16], rdx
push rbp
sub rsp, 32
lea rbp, [rdx + 64]
mov rcx, qword ptr [rbp - 24]
call core::ptr::drop_in_place<bytes::bytes::Bytes>
nop
add rsp, 32
pop rbp
ret In libraryBefore (1489 lines)slpprocess::events::post_frame::unpack_frames:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 1816
lea rbp, [rsp + 128]
movdqa xmmword ptr [rbp + 1664], xmm7
movdqa xmmword ptr [rbp + 1648], xmm6
mov qword ptr [rbp + 1640], -2
mov rbx, r9
mov r14, r8
mov qword ptr [rbp + 1632], rdx
mov rdi, rcx
mov r8d, dword ptr [rbp + 1808]
mov rdx, qword ptr [rbp + 1792]
lea rax, [rip + __unnamed_467]
mov qword ptr [rbp + 1544], rax
pxor xmm0, xmm0
movdqu xmmword ptr [rbp + 1552], xmm0
mov qword ptr [rbp + 1568], 0
lea rcx, [rbp - 88]
call slpprocess::events::post_frame::PostFrames::new
movzx esi, word ptr [rbp + 1800]
lea r12, [rbp + 712]
lea rdx, [rbp - 88]
mov r8d, 400
mov rcx, r12
call memcpy
mov qword ptr [rbp + 1112], 0
lea rcx, [rbp - 88]
lea rdx, [rbp + 1544]
mov r8d, esi
mov r9, r12
call hashbrown::map::HashMap<K,V,S,A>::insert
cmp qword ptr [rbp - 88], 0
je .LBB890_5
lea rcx, [rbp - 88]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
cmp qword ptr [rbp + 312], 0
je .LBB890_5
lea rcx, [rbp + 312]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
.LBB890_5:
lea rcx, [rbp - 88]
mov rdx, qword ptr [rbp + 1792]
mov r8d, dword ptr [rbp + 1808]
call slpprocess::events::post_frame::PostFrames::new
shr esi, 8
lea rdx, [rbp - 88]
mov r8d, 400
mov rcx, r12
call memcpy
mov qword ptr [rbp + 1112], 0
lea rcx, [rbp - 88]
lea rdx, [rbp + 1544]
mov r8d, esi
mov r9, r12
call hashbrown::map::HashMap<K,V,S,A>::insert
mov qword ptr [rbp + 1576], r14
and rbx, -2
cmp qword ptr [rbp - 88], 0
je .LBB890_10
lea rcx, [rbp - 88]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
cmp qword ptr [rbp + 312], 0
je .LBB890_10
lea rcx, [rbp + 312]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
.LBB890_10:
mov r15, qword ptr [rbp + 1632]
mov r13, qword ptr [r15 + 16]
mov rax, rbx
test rbx, rbx
je .LBB890_18
mov qword ptr [rbp + 1536], rdi
mov edx, dword ptr [rbp + 1808]
mov eax, edx
shr eax, 8
mov rcx, qword ptr [rbp + 1792]
inc rcx
mov qword ptr [rbp + 1520], rcx
mov ecx, edx
xor cl, 2
or cl, al
sete byte ptr [rbp + 1628]
cmp dl, 3
setb cl
sete dl
cmp al, 5
setb r8b
and r8b, dl
cmp al, 8
setb r9b
and r9b, dl
mov byte ptr [rbp + 1630], r9b
cmp al, 11
setb al
and al, dl
mov byte ptr [rbp + 1631], al
or r8b, cl
mov byte ptr [rbp + 1629], r8b
pxor xmm6, xmm6
pcmpeqd xmm7, xmm7
mov qword ptr [rbp + 1608], r13
jmp .LBB890_12
.LBB890_16:
mov rbx, qword ptr [rbp + 1528]
test rbx, rbx
je .LBB890_17
.LBB890_12:
mov rcx, qword ptr [rbp + 1576]
lea rax, [rcx + 16]
mov qword ptr [rbp + 1576], rax
add rbx, -2
mov qword ptr [rbp + 1528], rbx
mov qword ptr [rbp + 1512], rcx
mov rax, rcx
xor r14d, r14d
jmp .LBB890_13
.LBB890_231:
inc r14
mov rax, qword ptr [rbp + 1512]
lea rax, [rax + 8*r14]
cmp r14, 2
je .LBB890_16
.LBB890_13:
mov rcx, qword ptr [r15 + 16]
mov rsi, rcx
sub rsi, r13
add rsi, qword ptr [rax]
mov qword ptr [rbp + 1600], rsi
mov rdi, rcx
sub rdi, rsi
jb .LBB890_14
mov qword ptr [r15 + 16], rdi
mov rax, qword ptr [r15 + 8]
add rsi, rax
mov qword ptr [r15 + 8], rsi
test rax, rax
je .LBB890_26
cmp rdi, 4
jb .LBB890_26
mov eax, dword ptr [rsi]
bswap eax
add rdi, -4
mov qword ptr [r15 + 16], rdi
add rsi, 4
mov qword ptr [r15 + 8], rsi
lea ecx, [rax + 123]
movsxd r12, ecx
cmp r12, qword ptr [rbp + 1792]
jne .LBB890_23
jmp .LBB890_231
.LBB890_26:
mov dword ptr [rbp + 712], 0
cmp rdi, 4
jb .LBB890_30
xor ebx, ebx
.LBB890_28:
mov r12, rsi
mov esi, 4
sub rsi, rbx
cmp rdi, rsi
cmovb rsi, rdi
lea rcx, [rbx + rbp]
add rcx, 712
mov rdx, r12
mov r8, rsi
call memcpy
add rbx, rsi
sub rdi, rsi
add rsi, r12
cmp rbx, 4
jb .LBB890_28
mov qword ptr [r15 + 16], rdi
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
lea ecx, [rax + 123]
movsxd r12, ecx
cmp r12, qword ptr [rbp + 1792]
je .LBB890_231
.LBB890_23:
cmp qword ptr [rbp + 1520], r12
je .LBB890_231
test rdi, rdi
je .LBB890_25
movzx ecx, byte ptr [rsi]
lea rdx, [rsi + 1]
mov r8, rdi
mov qword ptr [rbp + 1600], 1
dec r8
mov qword ptr [r15 + 16], r8
mov qword ptr [r15 + 8], rdx
je .LBB890_32
add rdi, -2
mov qword ptr [r15 + 16], rdi
add rsi, 2
mov qword ptr [r15 + 8], rsi
cmp qword ptr [rbp + 1568], 0
je .LBB890_43
movzx edx, cl
mov rdi, qword ptr [rbp + 1544]
mov r8, qword ptr [rbp + 1552]
lea r9, [rdi - 808]
xor r10d, r10d
.LBB890_35:
and rdx, r8
movdqu xmm0, xmmword ptr [rdi + rdx]
movdqa xmm1, xmm0
pcmpeqb xmm1, xmm6
pmovmskb r11d, xmm1
.LBB890_36:
test r11w, r11w
je .LBB890_37
lea ebx, [r11 - 1]
and ebx, r11d
rep bsf r11d, r11d
add r11, rdx
and r11, r8
neg r11
imul rsi, r11, 808
mov r11d, ebx
cmp byte ptr [r9 + rsi], cl
jne .LBB890_36
jmp .LBB890_40
.LBB890_37:
pcmpeqb xmm0, xmm7
pmovmskb r11d, xmm0
test r11d, r11d
jne .LBB890_43
add rdx, r10
add rdx, 16
add r10, 16
jmp .LBB890_35
.LBB890_40:
mov rdx, qword ptr [rdi + rsi - 792]
cmp rdx, r12
jbe .LBB890_44
add rdi, rsi
mov rcx, qword ptr [rdi - 800]
mov dword ptr [rcx + 4*r12], eax
mov rax, qword ptr [r15 + 16]
test rax, rax
je .LBB890_42
mov qword ptr [rbp + 1616], r14
mov rcx, qword ptr [r15 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r15 + 16], rax
inc rcx
mov qword ptr [r15 + 8], rcx
mov rax, qword ptr [rdi - 784]
mov byte ptr [rax + r12], dl
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_65
cmp r14, 2
jb .LBB890_65
movzx eax, word ptr [rsi]
rol ax, 8
add r14, -2
mov qword ptr [r15 + 16], r14
add rsi, 2
mov qword ptr [r15 + 8], rsi
jmp .LBB890_48
.LBB890_65:
mov word ptr [rbp + 712], 0
cmp r14, 2
jb .LBB890_69
xor r13d, r13d
.LBB890_67:
mov rbx, rsi
mov esi, 2
sub rsi, r13
cmp r14, rsi
cmovb rsi, r14
lea rcx, [1*r13 + 712]
add rcx, rbp
mov rdx, rbx
mov r8, rsi
call memcpy
add r13, rsi
sub r14, rsi
add rsi, rbx
cmp r13, 2
jb .LBB890_67
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
movzx eax, word ptr [rbp + 712]
rol ax, 8
.LBB890_48:
mov rcx, qword ptr [rdi - 768]
mov word ptr [rcx + 2*r12], ax
mov rsi, qword ptr [r15 + 8]
mov r13, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_70
cmp r13, 4
jb .LBB890_70
mov r14d, dword ptr [rsi]
bswap r14d
add r13, -4
mov qword ptr [r15 + 16], r13
add rsi, 4
mov qword ptr [r15 + 8], rsi
cmp r13, 4
jae .LBB890_52
jmp .LBB890_75
.LBB890_70:
mov dword ptr [rbp + 712], 0
cmp r13, 4
jb .LBB890_74
xor r14d, r14d
.LBB890_72:
mov rbx, rsi
mov esi, 4
sub rsi, r14
cmp r13, rsi
cmovb rsi, r13
lea rcx, [r14 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r14, rsi
sub r13, rsi
add rsi, rbx
cmp r14, 4
jb .LBB890_72
mov qword ptr [r15 + 16], r13
mov qword ptr [r15 + 8], rsi
mov r14d, dword ptr [rbp + 712]
bswap r14d
cmp r13, 4
jb .LBB890_75
.LBB890_52:
test rsi, rsi
je .LBB890_75
mov eax, dword ptr [rsi]
bswap eax
add r13, -4
mov qword ptr [r15 + 16], r13
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_54
.LBB890_75:
mov dword ptr [rbp + 712], 0
cmp r13, 4
jb .LBB890_79
xor r15d, r15d
.LBB890_77:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r13, rsi
cmovb rsi, r13
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r13, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_77
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r13
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_54:
mov rcx, qword ptr [rdi - 752]
mov dword ptr [rcx + 8*r12], r14d
mov dword ptr [rcx + 8*r12 + 4], eax
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
mov r13, qword ptr [rbp + 1608]
je .LBB890_80
cmp r14, 4
jb .LBB890_80
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_57
.LBB890_80:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_84
xor r15d, r15d
.LBB890_82:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_82
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_57:
mov rcx, qword ptr [rdi - 736]
mov dword ptr [rcx + 4*r12], eax
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_85
cmp r14, 4
jb .LBB890_85
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_60
.LBB890_85:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_89
xor r15d, r15d
.LBB890_87:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_87
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_60:
mov rcx, qword ptr [rdi - 720]
mov dword ptr [rcx + 4*r12], eax
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_90
cmp r14, 4
jb .LBB890_90
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_63
.LBB890_90:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_94
xor r15d, r15d
.LBB890_92:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_92
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_63:
mov rcx, qword ptr [rdi - 704]
mov dword ptr [rcx + 4*r12], eax
mov rax, qword ptr [r15 + 16]
test rax, rax
mov r14, qword ptr [rbp + 1616]
je .LBB890_64
mov rcx, qword ptr [r15 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r15 + 16], rax
inc rcx
mov qword ptr [r15 + 8], rcx
mov rax, qword ptr [rdi - 688]
mov byte ptr [rax + r12], dl
mov rax, qword ptr [r15 + 16]
test rax, rax
je .LBB890_96
mov rcx, qword ptr [r15 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r15 + 16], rax
inc rcx
mov qword ptr [r15 + 8], rcx
mov rax, qword ptr [rdi - 672]
mov byte ptr [rax + r12], dl
mov rax, qword ptr [r15 + 16]
test rax, rax
je .LBB890_98
mov rcx, qword ptr [r15 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r15 + 16], rax
inc rcx
mov qword ptr [r15 + 8], rcx
mov rax, qword ptr [rdi - 656]
mov byte ptr [rax + r12], dl
mov rax, qword ptr [r15 + 16]
test rax, rax
je .LBB890_100
mov rcx, qword ptr [r15 + 8]
dec rax
lea rdx, [rcx + 1]
movzx ecx, byte ptr [rcx]
mov qword ptr [r15 + 16], rax
mov qword ptr [r15 + 8], rdx
mov rax, qword ptr [rdi - 640]
mov byte ptr [rax + r12], cl
mov eax, dword ptr [rbp + 1808]
cmp al, 2
jb .LBB890_231
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_107
cmp r14, 4
jb .LBB890_107
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_105
.LBB890_107:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_111
xor r15d, r15d
.LBB890_109:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_109
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_105:
mov rcx, qword ptr [rdi - 616]
test rcx, rcx
je .LBB890_106
mov dword ptr [rcx + 4*r12], eax
mov r8, qword ptr [r15 + 16]
test r8, r8
je .LBB890_113
mov r9, qword ptr [r15 + 8]
movzx eax, byte ptr [r9]
lea rcx, [r9 + 1]
mov rdx, r8
dec rdx
mov qword ptr [r15 + 16], rdx
mov qword ptr [r15 + 8], rcx
je .LBB890_115
movzx ecx, byte ptr [r9 + 1]
lea rdx, [r9 + 2]
mov r10, r8
add r10, -2
mov qword ptr [r15 + 16], r10
mov qword ptr [r15 + 8], rdx
je .LBB890_117
movzx edx, byte ptr [r9 + 2]
lea r10, [r9 + 3]
mov r11, r8
add r11, -3
mov qword ptr [r15 + 16], r11
mov qword ptr [r15 + 8], r10
je .LBB890_119
movzx r10d, byte ptr [r9 + 3]
lea r11, [r9 + 4]
mov rsi, r8
add rsi, -4
mov qword ptr [r15 + 16], rsi
mov qword ptr [r15 + 8], r11
je .LBB890_121
movzx r11d, byte ptr [r9 + 4]
add r8, -5
mov qword ptr [r15 + 16], r8
add r9, 5
mov qword ptr [r15 + 8], r9
mov r8, qword ptr [rdi - 600]
test r8, r8
je .LBB890_123
shl rcx, 8
or rcx, rax
shl rdx, 16
or rdx, rcx
shl r10, 24
or r10, rdx
shl r11, 32
or r11, r10
mov qword ptr [r8 + 8*r12], r11
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_129
cmp r14, 4
jb .LBB890_129
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_127
.LBB890_129:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_133
xor r15d, r15d
.LBB890_131:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_131
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_127:
mov rcx, qword ptr [rdi - 584]
test rcx, rcx
je .LBB890_128
mov dword ptr [rcx + 4*r12], eax
mov rcx, qword ptr [r15 + 16]
test rcx, rcx
je .LBB890_135
mov rdx, qword ptr [r15 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r15 + 16], rcx
inc rdx
mov qword ptr [r15 + 8], rdx
mov rcx, qword ptr [rdi - 568]
test rcx, rcx
je .LBB890_137
test al, al
sete byte ptr [rcx + r12]
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_143
cmp r14, 2
jb .LBB890_143
movzx eax, word ptr [rsi]
rol ax, 8
add r14, -2
mov qword ptr [r15 + 16], r14
add rsi, 2
mov qword ptr [r15 + 8], rsi
jmp .LBB890_141
.LBB890_143:
mov word ptr [rbp + 712], 0
cmp r14, 2
jb .LBB890_147
xor r15d, r15d
.LBB890_145:
mov rbx, rsi
mov esi, 2
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 2
jb .LBB890_145
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
movzx eax, word ptr [rbp + 712]
rol ax, 8
.LBB890_141:
mov rcx, qword ptr [rdi - 552]
test rcx, rcx
mov r14, qword ptr [rbp + 1616]
je .LBB890_142
mov word ptr [rcx + 2*r12], ax
mov rcx, qword ptr [r15 + 16]
test rcx, rcx
je .LBB890_149
mov rdx, qword ptr [r15 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r15 + 16], rcx
inc rdx
mov qword ptr [r15 + 8], rdx
mov rcx, qword ptr [rdi - 536]
test rcx, rcx
je .LBB890_151
mov byte ptr [rcx + r12], al
mov rcx, qword ptr [r15 + 16]
test rcx, rcx
je .LBB890_153
mov rdx, qword ptr [r15 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r15 + 16], rcx
inc rdx
mov qword ptr [r15 + 8], rdx
mov rcx, qword ptr [rdi - 520]
test rcx, rcx
je .LBB890_155
mov byte ptr [rcx + r12], al
cmp byte ptr [rbp + 1628], 0
jne .LBB890_231
mov rcx, qword ptr [r15 + 16]
test rcx, rcx
je .LBB890_158
mov rdx, qword ptr [r15 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r15 + 16], rcx
inc rdx
mov qword ptr [r15 + 8], rdx
mov rcx, qword ptr [rdi - 504]
test rcx, rcx
je .LBB890_160
mov byte ptr [rcx + r12], al
cmp byte ptr [rbp + 1629], 0
jne .LBB890_231
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_170
cmp r14, 4
jb .LBB890_170
mov r13d, dword ptr [rsi]
bswap r13d
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
cmp r14, 4
jae .LBB890_166
jmp .LBB890_175
.LBB890_170:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_174
xor r15d, r15d
.LBB890_172:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_172
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov r13d, dword ptr [rbp + 712]
bswap r13d
cmp r14, 4
jb .LBB890_175
.LBB890_166:
test rsi, rsi
je .LBB890_175
mov ecx, dword ptr [rsi]
bswap ecx
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_168
.LBB890_175:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_179
xor r15d, r15d
.LBB890_177:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_177
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov ecx, dword ptr [rbp + 712]
bswap ecx
.LBB890_168:
mov rax, qword ptr [rdi - 488]
test rax, rax
je .LBB890_169
mov dword ptr [rax + 8*r12], r13d
mov dword ptr [rax + 8*r12 + 4], ecx
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
mov dword ptr [rbp + 1588], ecx
je .LBB890_188
cmp r14, 4
jb .LBB890_188
mov r13d, dword ptr [rsi]
bswap r13d
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
cmp r14, 4
jae .LBB890_184
jmp .LBB890_193
.LBB890_188:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_192
xor r15d, r15d
.LBB890_190:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_190
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov r13d, dword ptr [rbp + 712]
bswap r13d
cmp r14, 4
jb .LBB890_193
.LBB890_184:
test rsi, rsi
je .LBB890_193
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_186
.LBB890_193:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_197
xor r15d, r15d
.LBB890_195:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_195
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_186:
mov rcx, qword ptr [rdi - 472]
test rcx, rcx
je .LBB890_187
mov dword ptr [rcx + 8*r12], r13d
mov dword ptr [rcx + 8*r12 + 4], eax
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_203
cmp r14, 4
jb .LBB890_203
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
mov r13, qword ptr [rbp + 1608]
jmp .LBB890_201
.LBB890_203:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_207
xor r15d, r15d
mov r13, qword ptr [rbp + 1608]
.LBB890_205:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_205
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_201:
mov rcx, qword ptr [rdi - 456]
test rcx, rcx
mov r14, qword ptr [rbp + 1616]
je .LBB890_202
mov dword ptr [rcx + 8*r12], eax
mov eax, dword ptr [rbp + 1588]
mov dword ptr [rcx + 8*r12 + 4], eax
cmp byte ptr [rbp + 1630], 0
jne .LBB890_231
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_211
cmp r14, 3
jbe .LBB890_211
mov eax, dword ptr [rsi]
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
mov rcx, qword ptr [rdi - 440]
test rcx, rcx
jne .LBB890_216
jmp .LBB890_224
.LBB890_211:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_222
xor r15d, r15d
.LBB890_213:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_213
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov rcx, qword ptr [rdi - 440]
test rcx, rcx
je .LBB890_224
mov eax, dword ptr [rbp + 712]
.LBB890_216:
bswap eax
mov dword ptr [rcx + 4*r12], eax
cmp byte ptr [rbp + 1631], 0
mov r14, qword ptr [rbp + 1616]
jne .LBB890_231
mov rsi, qword ptr [r15 + 8]
mov r14, qword ptr [r15 + 16]
test rsi, rsi
je .LBB890_225
cmp r14, 4
jb .LBB890_225
mov eax, dword ptr [rsi]
bswap eax
add r14, -4
mov qword ptr [r15 + 16], r14
add rsi, 4
mov qword ptr [r15 + 8], rsi
jmp .LBB890_220
.LBB890_225:
mov dword ptr [rbp + 712], 0
cmp r14, 4
jb .LBB890_229
xor r15d, r15d
.LBB890_227:
mov rbx, rsi
mov esi, 4
sub rsi, r15
cmp r14, rsi
cmovb rsi, r14
lea rcx, [r15 + rbp]
add rcx, 712
mov rdx, rbx
mov r8, rsi
call memcpy
add r15, rsi
sub r14, rsi
add rsi, rbx
cmp r15, 4
jb .LBB890_227
mov r15, qword ptr [rbp + 1632]
mov qword ptr [r15 + 16], r14
mov qword ptr [r15 + 8], rsi
mov eax, dword ptr [rbp + 712]
bswap eax
.LBB890_220:
mov rcx, qword ptr [rdi - 424]
test rcx, rcx
mov r14, qword ptr [rbp + 1616]
je .LBB890_221
mov dword ptr [rcx + 4*r12], eax
jmp .LBB890_231
.LBB890_17:
mov r13, qword ptr [r15 + 16]
mov rdi, qword ptr [rbp + 1536]
.LBB890_18:
movups xmm0, xmmword ptr [rbp + 1544]
movups xmm1, xmmword ptr [rbp + 1560]
movups xmmword ptr [rdi + 16], xmm1
movups xmmword ptr [rdi], xmm0
lea rcx, [r15 + 24]
mov rax, qword ptr [r15]
mov rdx, qword ptr [r15 + 8]
mov r8, r13
call qword ptr [rax + 16]
mov rax, rdi
movaps xmm6, xmmword ptr [rbp + 1648]
movaps xmm7, xmmword ptr [rbp + 1664]
add rsp, 1816
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
.LBB890_44:
lea r8, [rip + __unnamed_468]
mov rcx, r12
call core::panicking::panic_bounds_check
jmp .LBB890_15
.LBB890_43:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_469]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_14:
mov qword ptr [rbp + 1592], rcx
lea rax, [rbp + 1600]
mov qword ptr [rbp - 88], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp - 80], rax
lea rcx, [rbp + 1592]
mov qword ptr [rbp - 72], rcx
mov qword ptr [rbp - 64], rax
lea rax, [rip + __unnamed_268]
mov qword ptr [rbp + 712], rax
mov qword ptr [rbp + 720], 2
mov qword ptr [rbp + 744], 0
lea rax, [rbp - 88]
mov qword ptr [rbp + 728], rax
mov qword ptr [rbp + 736], 2
lea rdx, [rip + __unnamed_269]
lea rcx, [rbp + 712]
call core::panicking::panic_fmt
jmp .LBB890_15
.LBB890_25:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_32:
mov qword ptr [rbp + 1592], 0
lea rax, [rbp + 1600]
mov qword ptr [rbp - 88], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp - 80], rax
lea rcx, [rbp + 1592]
mov qword ptr [rbp - 72], rcx
mov qword ptr [rbp - 64], rax
lea rax, [rip + __unnamed_268]
mov qword ptr [rbp + 712], rax
mov qword ptr [rbp + 720], 2
mov qword ptr [rbp + 744], 0
lea rax, [rbp - 88]
mov qword ptr [rbp + 728], rax
mov qword ptr [rbp + 736], 2
lea rdx, [rip + __unnamed_269]
lea rcx, [rbp + 712]
call core::panicking::panic_fmt
jmp .LBB890_15
.LBB890_30:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_64:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_42:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_98:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_96:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_100:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_94:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_153:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_123:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_470]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_89:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_121:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_151:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_471]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_84:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_149:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_119:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_79:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_142:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_472]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_117:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_74:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_115:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_137:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_473]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_69:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_113:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_135:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_106:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_474]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_128:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_475]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_155:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_476]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_147:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_133:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_160:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_477]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_158:
lea rcx, [rip + __unnamed_246]
lea r8, [rip + __unnamed_247]
mov edx, 39
call core::panicking::panic
jmp .LBB890_15
.LBB890_111:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_187:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_478]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_202:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_479]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_169:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_480]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_207:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_224:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_481]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_174:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_179:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_192:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_197:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_222:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
jmp .LBB890_15
.LBB890_221:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_482]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_229:
lea rcx, [rip + __unnamed_244]
lea r8, [rip + __unnamed_245]
mov edx, 47
call core::panicking::panic
.LBB890_15:
ud2
mov qword ptr [rsp + 16], rdx
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 72
lea rbp, [rdx + 128]
movdqa xmmword ptr [rsp + 32], xmm7
movdqa xmmword ptr [rsp + 48], xmm6
lea rcx, [rbp + 1544]
call core::ptr::drop_in_place<std::collections::hash::map::HashMap<u8,(slpprocess::events::post_frame::PostFrames,core::option::Option<slpprocess::events::post_frame::PostFrames>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u8>>>>
mov rcx, qword ptr [rbp + 1632]
call core::ptr::drop_in_place<bytes::bytes::Bytes>
movaps xmm6, xmmword ptr [rsp + 48]
movaps xmm7, xmmword ptr [rsp + 32]
add rsp, 72
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret After (986 lines)slpprocess::events::post_frame::unpack_frames:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 1784
lea rbp, [rsp + 128]
movdqa xmmword ptr [rbp + 1632], xmm7
movdqa xmmword ptr [rbp + 1616], xmm6
mov qword ptr [rbp + 1608], -2
mov r14, r9
mov r15, r8
mov qword ptr [rbp + 1592], rdx
mov rbx, rcx
mov r8d, dword ptr [rbp + 1776]
mov rdx, qword ptr [rbp + 1760]
lea rax, [rip + __unnamed_467]
mov qword ptr [rbp + 1544], rax
pxor xmm0, xmm0
movdqu xmmword ptr [rbp + 1552], xmm0
mov qword ptr [rbp + 1568], 0
lea rcx, [rbp + 704]
call slpprocess::events::post_frame::PostFrames::new
movzx esi, word ptr [rbp + 1768]
lea rdi, [rbp - 96]
lea rdx, [rbp + 704]
mov r8d, 400
mov rcx, rdi
call memcpy
mov qword ptr [rbp + 304], 0
lea rcx, [rbp + 704]
lea rdx, [rbp + 1544]
mov r8d, esi
mov r9, rdi
call hashbrown::map::HashMap<K,V,S,A>::insert
cmp qword ptr [rbp + 704], 0
je .LBB890_5
lea rcx, [rbp + 704]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
cmp qword ptr [rbp + 1104], 0
je .LBB890_5
lea rcx, [rbp + 1104]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
.LBB890_5:
lea rcx, [rbp + 704]
mov rdx, qword ptr [rbp + 1760]
mov r8d, dword ptr [rbp + 1776]
call slpprocess::events::post_frame::PostFrames::new
shr esi, 8
lea rdx, [rbp + 704]
mov r8d, 400
mov rcx, rdi
call memcpy
mov qword ptr [rbp + 304], 0
lea rcx, [rbp + 704]
lea rdx, [rbp + 1544]
mov r8d, esi
mov r9, rdi
call hashbrown::map::HashMap<K,V,S,A>::insert
and r14, -2
cmp qword ptr [rbp + 704], 0
je .LBB890_10
lea rcx, [rbp + 704]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
cmp qword ptr [rbp + 1104], 0
je .LBB890_10
lea rcx, [rbp + 1104]
call core::ptr::drop_in_place<slpprocess::events::post_frame::PostFrames>
.LBB890_10:
mov r13, qword ptr [rbp + 1592]
mov r8, qword ptr [r13 + 16]
test r14, r14
je .LBB890_18
mov qword ptr [rbp + 1536], rbx
mov edx, dword ptr [rbp + 1776]
mov eax, edx
shr eax, 8
mov rcx, qword ptr [rbp + 1760]
inc rcx
mov qword ptr [rbp + 1512], rcx
mov ecx, edx
xor cl, 2
or cl, al
sete byte ptr [rbp + 1604]
cmp dl, 3
setb cl
sete dl
cmp al, 5
setb r9b
and r9b, dl
cmp al, 8
setb r10b
and r10b, dl
mov byte ptr [rbp + 1606], r10b
cmp al, 11
setb al
and al, dl
mov byte ptr [rbp + 1607], al
or r9b, cl
mov byte ptr [rbp + 1605], r9b
pxor xmm6, xmm6
pcmpeqd xmm7, xmm7
jmp .LBB890_12
.LBB890_16:
mov r14, qword ptr [rbp + 1520]
test r14, r14
mov r15, qword ptr [rbp + 1528]
je .LBB890_17
.LBB890_12:
lea rax, [r15 + 16]
mov qword ptr [rbp + 1528], rax
add r14, -2
mov qword ptr [rbp + 1520], r14
mov qword ptr [rbp + 1504], r15
mov rax, r15
xor r14d, r14d
jmp .LBB890_13
.LBB890_133:
bswap edx
mov dword ptr [rax + 4*rcx], edx
.LBB890_134:
inc r14
mov rax, qword ptr [rbp + 1504]
lea rax, [rax + 8*r14]
cmp r14, 2
mov r8, r15
je .LBB890_16
.LBB890_13:
mov rcx, qword ptr [r13 + 16]
mov rbx, rcx
sub rbx, r8
add rbx, qword ptr [rax]
mov qword ptr [rbp + 1584], rbx
mov rsi, rcx
sub rsi, rbx
jb .LBB890_14
mov qword ptr [r13 + 16], rsi
mov rax, qword ptr [r13 + 8]
add rbx, rax
mov qword ptr [r13 + 8], rbx
cmp rsi, 4
jb .LBB890_22
mov r15, r8
test rax, rax
je .LBB890_23
mov r8d, dword ptr [rbx]
bswap r8d
add rsi, -4
mov qword ptr [r13 + 16], rsi
add rbx, 4
mov qword ptr [r13 + 8], rbx
lea eax, [r8 + 123]
movsxd rcx, eax
cmp rcx, qword ptr [rbp + 1760]
jne .LBB890_27
jmp .LBB890_134
.LBB890_23:
mov dword ptr [rbp - 96], 0
mov r12d, 4
xor ebx, ebx
lea r13, [rbp - 96]
.LBB890_24:
cmp rsi, r12
mov rdi, r12
cmovb rdi, rsi
mov rcx, r13
mov rdx, rbx
mov r8, rdi
call memcpy
add r13, rdi
sub rsi, rdi
add rbx, rdi
sub r12, rdi
jne .LBB890_24
mov r13, qword ptr [rbp + 1592]
mov qword ptr [r13 + 16], rsi
mov qword ptr [r13 + 8], rbx
mov r8d, dword ptr [rbp - 96]
bswap r8d
lea eax, [r8 + 123]
movsxd rcx, eax
cmp rcx, qword ptr [rbp + 1760]
je .LBB890_134
.LBB890_27:
cmp qword ptr [rbp + 1512], rcx
je .LBB890_134
test rsi, rsi
je .LBB890_29
movzx edx, byte ptr [rbx]
lea rax, [rbx + 1]
mov r9, rsi
mov qword ptr [rbp + 1584], 1
dec r9
mov qword ptr [r13 + 16], r9
mov qword ptr [r13 + 8], rax
je .LBB890_31
add rsi, -2
mov qword ptr [r13 + 16], rsi
add rbx, 2
mov qword ptr [r13 + 8], rbx
cmp qword ptr [rbp + 1568], 0
je .LBB890_42
movzx r9d, dl
mov rax, qword ptr [rbp + 1544]
mov r10, qword ptr [rbp + 1552]
lea r11, [rax - 808]
xor esi, esi
.LBB890_34:
and r9, r10
movdqu xmm0, xmmword ptr [rax + r9]
movdqa xmm1, xmm0
pcmpeqb xmm1, xmm6
pmovmskb edi, xmm1
.LBB890_35:
test di, di
je .LBB890_36
lea r12d, [rdi - 1]
and r12d, edi
rep bsf edi, edi
add rdi, r9
and rdi, r10
neg rdi
imul rbx, rdi, 808
mov edi, r12d
cmp byte ptr [r11 + rbx], dl
jne .LBB890_35
jmp .LBB890_39
.LBB890_36:
pcmpeqb xmm0, xmm7
pmovmskb edi, xmm0
test edi, edi
jne .LBB890_42
add r9, rsi
add r9, 16
add rsi, 16
jmp .LBB890_34
.LBB890_39:
mov rdx, qword ptr [rax + rbx - 792]
cmp rdx, rcx
jbe .LBB890_43
add rax, rbx
mov rdx, qword ptr [rax - 800]
mov dword ptr [rdx + 4*rcx], r8d
mov rdx, qword ptr [r13 + 16]
test rdx, rdx
je .LBB890_41
mov r8, qword ptr [r13 + 8]
movzx r9d, byte ptr [r8]
dec rdx
mov qword ptr [r13 + 16], rdx
inc r8
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 784]
mov byte ptr [rdx + rcx], r9b
mov rdx, qword ptr [r13 + 16]
cmp rdx, 1
jbe .LBB890_45
mov r8, qword ptr [r13 + 8]
movzx r9d, word ptr [r8]
rol r9w, 8
add rdx, -2
mov qword ptr [r13 + 16], rdx
add r8, 2
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 768]
mov word ptr [rdx + 2*rcx], r9w
mov rdx, qword ptr [r13 + 16]
cmp rdx, 3
jbe .LBB890_47
mov r9, qword ptr [r13 + 8]
mov r8d, dword ptr [r9]
lea r10, [rdx - 4]
mov qword ptr [r13 + 16], r10
lea r11, [r9 + 4]
mov qword ptr [r13 + 8], r11
cmp r10, 3
jbe .LBB890_49
bswap r8d
mov r10d, dword ptr [r9 + 4]
bswap r10d
add rdx, -8
mov qword ptr [r13 + 16], rdx
add r9, 8
mov qword ptr [r13 + 8], r9
mov rdx, qword ptr [rax - 752]
mov dword ptr [rdx + 8*rcx], r8d
mov dword ptr [rdx + 8*rcx + 4], r10d
mov rdx, qword ptr [r13 + 16]
cmp rdx, 3
jbe .LBB890_51
mov r8, qword ptr [r13 + 8]
mov r9d, dword ptr [r8]
bswap r9d
add rdx, -4
mov qword ptr [r13 + 16], rdx
add r8, 4
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 736]
mov dword ptr [rdx + 4*rcx], r9d
mov rdx, qword ptr [r13 + 16]
cmp rdx, 3
jbe .LBB890_53
mov r8, qword ptr [r13 + 8]
mov r9d, dword ptr [r8]
bswap r9d
add rdx, -4
mov qword ptr [r13 + 16], rdx
add r8, 4
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 720]
mov dword ptr [rdx + 4*rcx], r9d
mov rdx, qword ptr [r13 + 16]
cmp rdx, 3
jbe .LBB890_55
mov r8, qword ptr [r13 + 8]
mov r9d, dword ptr [r8]
bswap r9d
add rdx, -4
mov qword ptr [r13 + 16], rdx
add r8, 4
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 704]
mov dword ptr [rdx + 4*rcx], r9d
mov rdx, qword ptr [r13 + 16]
test rdx, rdx
je .LBB890_57
mov r8, qword ptr [r13 + 8]
movzx r9d, byte ptr [r8]
dec rdx
mov qword ptr [r13 + 16], rdx
inc r8
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 688]
mov byte ptr [rdx + rcx], r9b
mov rdx, qword ptr [r13 + 16]
test rdx, rdx
je .LBB890_59
mov r8, qword ptr [r13 + 8]
movzx r9d, byte ptr [r8]
dec rdx
mov qword ptr [r13 + 16], rdx
inc r8
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 672]
mov byte ptr [rdx + rcx], r9b
mov rdx, qword ptr [r13 + 16]
test rdx, rdx
je .LBB890_61
mov r8, qword ptr [r13 + 8]
movzx r9d, byte ptr [r8]
dec rdx
mov qword ptr [r13 + 16], rdx
inc r8
mov qword ptr [r13 + 8], r8
mov rdx, qword ptr [rax - 656]
mov byte ptr [rdx + rcx], r9b
mov rdx, qword ptr [r13 + 16]
test rdx, rdx
je .LBB890_63
mov r8, qword ptr [r13 + 8]
dec rdx
lea r9, [r8 + 1]
movzx r8d, byte ptr [r8]
mov qword ptr [r13 + 16], rdx
mov qword ptr [r13 + 8], r9
mov rdx, qword ptr [rax - 640]
mov byte ptr [rdx + rcx], r8b
mov edx, dword ptr [rbp + 1776]
cmp dl, 2
jb .LBB890_134
mov r8, qword ptr [r13 + 16]
cmp r8, 3
jbe .LBB890_66
mov r9, qword ptr [r13 + 8]
mov edx, dword ptr [r9]
add r8, -4
mov qword ptr [r13 + 16], r8
add r9, 4
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 616]
test r8, r8
je .LBB890_68
bswap edx
mov dword ptr [r8 + 4*rcx], edx
mov r10, qword ptr [r13 + 16]
test r10, r10
je .LBB890_70
mov r11, qword ptr [r13 + 8]
movzx edx, byte ptr [r11]
lea r8, [r11 + 1]
mov r9, r10
dec r9
mov qword ptr [r13 + 16], r9
mov qword ptr [r13 + 8], r8
je .LBB890_72
movzx r8d, byte ptr [r11 + 1]
lea r9, [r11 + 2]
mov rsi, r10
add rsi, -2
mov qword ptr [r13 + 16], rsi
mov qword ptr [r13 + 8], r9
je .LBB890_74
movzx r9d, byte ptr [r11 + 2]
lea rsi, [r11 + 3]
mov rdi, r10
add rdi, -3
mov qword ptr [r13 + 16], rdi
mov qword ptr [r13 + 8], rsi
je .LBB890_76
movzx esi, byte ptr [r11 + 3]
lea rdi, [r11 + 4]
mov rbx, r10
add rbx, -4
mov qword ptr [r13 + 16], rbx
mov qword ptr [r13 + 8], rdi
je .LBB890_78
movzx edi, byte ptr [r11 + 4]
add r10, -5
mov qword ptr [r13 + 16], r10
add r11, 5
mov qword ptr [r13 + 8], r11
mov r10, qword ptr [rax - 600]
test r10, r10
je .LBB890_80
shl r8, 8
or r8, rdx
shl r9, 16
or r9, r8
shl rsi, 24
or rsi, r9
shl rdi, 32
or rdi, rsi
mov qword ptr [r10 + 8*rcx], rdi
mov r8, qword ptr [r13 + 16]
cmp r8, 3
jbe .LBB890_82
mov r9, qword ptr [r13 + 8]
mov edx, dword ptr [r9]
add r8, -4
mov qword ptr [r13 + 16], r8
add r9, 4
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 584]
test r8, r8
je .LBB890_84
bswap edx
mov dword ptr [r8 + 4*rcx], edx
mov r8, qword ptr [r13 + 16]
test r8, r8
je .LBB890_86
mov r9, qword ptr [r13 + 8]
movzx edx, byte ptr [r9]
dec r8
mov qword ptr [r13 + 16], r8
inc r9
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 568]
test r8, r8
je .LBB890_88
test dl, dl
sete byte ptr [r8 + rcx]
mov r8, qword ptr [r13 + 16]
cmp r8, 1
jbe .LBB890_90
mov r9, qword ptr [r13 + 8]
movzx edx, word ptr [r9]
add r8, -2
mov qword ptr [r13 + 16], r8
add r9, 2
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 552]
test r8, r8
je .LBB890_92
rol dx, 8
mov word ptr [r8 + 2*rcx], dx
mov r8, qword ptr [r13 + 16]
test r8, r8
je .LBB890_94
mov r9, qword ptr [r13 + 8]
movzx edx, byte ptr [r9]
dec r8
mov qword ptr [r13 + 16], r8
inc r9
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 536]
test r8, r8
je .LBB890_96
mov byte ptr [r8 + rcx], dl
mov r8, qword ptr [r13 + 16]
test r8, r8
je .LBB890_98
mov r9, qword ptr [r13 + 8]
movzx edx, byte ptr [r9]
dec r8
mov qword ptr [r13 + 16], r8
inc r9
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 520]
test r8, r8
je .LBB890_100
mov byte ptr [r8 + rcx], dl
cmp byte ptr [rbp + 1604], 0
jne .LBB890_134
mov r8, qword ptr [r13 + 16]
test r8, r8
je .LBB890_103
mov r9, qword ptr [r13 + 8]
movzx edx, byte ptr [r9]
dec r8
mov qword ptr [r13 + 16], r8
inc r9
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 504]
test r8, r8
je .LBB890_105
mov byte ptr [r8 + rcx], dl
cmp byte ptr [rbp + 1605], 0
jne .LBB890_134
mov r9, qword ptr [r13 + 16]
cmp r9, 3
jbe .LBB890_108
mov r10, qword ptr [r13 + 8]
mov r8d, dword ptr [r10]
lea rdx, [r9 - 4]
mov qword ptr [r13 + 16], rdx
lea r11, [r10 + 4]
mov qword ptr [r13 + 8], r11
cmp rdx, 3
jbe .LBB890_110
mov edx, dword ptr [r10 + 4]
add r9, -8
mov qword ptr [r13 + 16], r9
add r10, 8
mov qword ptr [r13 + 8], r10
mov r9, qword ptr [rax - 488]
test r9, r9
je .LBB890_112
bswap r8d
bswap edx
mov dword ptr [r9 + 8*rcx], r8d
mov dword ptr [r9 + 8*rcx + 4], edx
mov r9, qword ptr [r13 + 16]
cmp r9, 3
jbe .LBB890_114
mov r11, qword ptr [r13 + 8]
mov r8d, dword ptr [r11]
lea r10, [r9 - 4]
mov qword ptr [r13 + 16], r10
lea rsi, [r11 + 4]
mov qword ptr [r13 + 8], rsi
cmp r10, 3
jbe .LBB890_116
mov r10d, dword ptr [r11 + 4]
add r9, -8
mov qword ptr [r13 + 16], r9
add r11, 8
mov qword ptr [r13 + 8], r11
mov r9, qword ptr [rax - 472]
test r9, r9
je .LBB890_118
bswap r8d
bswap r10d
mov dword ptr [r9 + 8*rcx], r8d
mov dword ptr [r9 + 8*rcx + 4], r10d
mov r9, qword ptr [r13 + 16]
cmp r9, 3
jbe .LBB890_120
mov r10, qword ptr [r13 + 8]
mov r8d, dword ptr [r10]
add r9, -4
mov qword ptr [r13 + 16], r9
add r10, 4
mov qword ptr [r13 + 8], r10
mov r9, qword ptr [rax - 456]
test r9, r9
je .LBB890_122
bswap r8d
mov dword ptr [r9 + 8*rcx], r8d
mov dword ptr [r9 + 8*rcx + 4], edx
cmp byte ptr [rbp + 1606], 0
jne .LBB890_134
mov r8, qword ptr [r13 + 16]
cmp r8, 3
jbe .LBB890_125
mov r9, qword ptr [r13 + 8]
mov edx, dword ptr [r9]
add r8, -4
mov qword ptr [r13 + 16], r8
add r9, 4
mov qword ptr [r13 + 8], r9
mov r8, qword ptr [rax - 440]
test r8, r8
je .LBB890_127
bswap edx
mov dword ptr [r8 + 4*rcx], edx
cmp byte ptr [rbp + 1607], 0
jne .LBB890_134
mov r8, qword ptr [r13 + 16]
cmp r8, 3
jbe .LBB890_130
mov r9, qword ptr [r13 + 8]
mov edx, dword ptr [r9]
add r8, -4
mov qword ptr [r13 + 16], r8
add r9, 4
mov qword ptr [r13 + 8], r9
mov rax, qword ptr [rax - 424]
test rax, rax
jne .LBB890_133
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_468]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_17:
mov r8, qword ptr [r13 + 16]
mov rbx, qword ptr [rbp + 1536]
.LBB890_18:
movups xmm0, xmmword ptr [rbp + 1544]
movups xmm1, xmmword ptr [rbp + 1560]
movups xmmword ptr [rbx + 16], xmm1
movups xmmword ptr [rbx], xmm0
lea rcx, [r13 + 24]
mov rax, qword ptr [r13]
mov rdx, qword ptr [r13 + 8]
call qword ptr [rax + 16]
mov rax, rbx
movaps xmm6, xmmword ptr [rbp + 1616]
movaps xmm7, xmmword ptr [rbp + 1632]
add rsp, 1784
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
.LBB890_43:
lea r8, [rip + __unnamed_469]
call core::panicking::panic_bounds_check
jmp .LBB890_15
.LBB890_42:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_470]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_14:
mov qword ptr [rbp + 1576], rcx
lea rax, [rbp + 1584]
mov qword ptr [rbp + 704], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp + 712], rax
lea rcx, [rbp + 1576]
mov qword ptr [rbp + 720], rcx
mov qword ptr [rbp + 728], rax
lea rax, [rip + __unnamed_266]
mov qword ptr [rbp - 96], rax
mov qword ptr [rbp - 88], 2
mov qword ptr [rbp - 64], 0
lea rax, [rbp + 704]
mov qword ptr [rbp - 80], rax
mov qword ptr [rbp - 72], 2
lea rdx, [rip + __unnamed_267]
lea rcx, [rbp - 96]
call core::panicking::panic_fmt
jmp .LBB890_15
.LBB890_22:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB890_15
.LBB890_31:
mov qword ptr [rbp + 1576], 0
lea rax, [rbp + 1584]
mov qword ptr [rbp + 704], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp + 712], rax
lea rcx, [rbp + 1576]
mov qword ptr [rbp + 720], rcx
mov qword ptr [rbp + 728], rax
lea rax, [rip + __unnamed_266]
mov qword ptr [rbp - 96], rax
mov qword ptr [rbp - 88], 2
mov qword ptr [rbp - 64], 0
lea rax, [rbp + 704]
mov qword ptr [rbp - 80], rax
mov qword ptr [rbp - 72], 2
lea rdx, [rip + __unnamed_267]
lea rcx, [rbp - 96]
call core::panicking::panic_fmt
jmp .LBB890_15
.LBB890_29:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_61:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_49:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_53:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_45:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_354]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_57:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_55:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_47:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_59:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_63:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_51:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_41:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_80:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_471]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_96:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_472]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_78:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_94:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_76:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_92:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_473]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_90:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_354]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_74:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_72:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_88:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_474]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_86:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_70:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_68:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_475]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_84:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_476]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_100:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_477]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_82:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_66:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_98:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_105:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_478]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_103:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_265]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_122:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_479]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_114:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_116:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_108:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_118:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_480]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_110:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_120:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_112:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_481]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_125:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
jmp .LBB890_15
.LBB890_127:
lea rcx, [rip + __unnamed_28]
lea r8, [rip + __unnamed_482]
mov edx, 43
call core::panicking::panic
jmp .LBB890_15
.LBB890_130:
lea rcx, [rip + __unnamed_264]
lea r8, [rip + __unnamed_268]
mov edx, 34
call core::panicking::panic
.LBB890_15:
ud2
mov qword ptr [rsp + 16], rdx
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 72
lea rbp, [rdx + 128]
movdqa xmmword ptr [rsp + 32], xmm7
movdqa xmmword ptr [rsp + 48], xmm6
lea rcx, [rbp + 1544]
call core::ptr::drop_in_place<std::collections::hash::map::HashMap<u8,(slpprocess::events::post_frame::PostFrames,core::option::Option<slpprocess::events::post_frame::PostFrames>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u8>>>>
mov rcx, qword ptr [rbp + 1592]
call core::ptr::drop_in_place<bytes::bytes::Bytes>
movaps xmm6, xmmword ptr [rsp + 48]
movaps xmm7, xmmword ptr [rsp + 32]
add rsp, 72
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret |
This reworks `UninitSlice::as_uninit_slice_mut()` using equivalent simpler logic.
I was a little confused about these calls using `Self::` instead of `self.` here. Is there a reason to use the former instead of the latter?
Back in tokio-rs#362, an assertion was added to ensure that the alignment of bytes::Shared is even so we can use the least significant bit as a flag. bytes_mut::Shared uses the same technique but has no such assertion so I've added one here.
Instead of re-declaring `vec`, we can just use a mut parameter.
These seem to have been commented by accident in tokio-rs#298, and are still passing.
We're always subtracting here, and we already have a usize, so `sub` seems like a more appropriate usage to me.
We don't need the original capacity if the shared data is unique, so let's not calculate it until after that check.
The second argument to `set_vec_pos` always contains the value of `self.data`. Let's just use `self.data` and remove the second parameter altogether.
I can't see any reason that get_vec_pos needs a &mut self.
* set len a little more concisely * inline set_end * remove kind assertions * remove a duplicate assertion * remove redundant assertion and min * rename set_start to advance_unchecked
CI is [failing][failure] due to unused_imports because Iterator is already in the prelude. Removing it fixes things up. [failure]: https://github.com/tokio-rs/bytes/actions/runs/8034858583/job/21946873895
Bytes doesn't have an unsplit method anymore. We can always retrieve these from git history if necessary.
* use checked_sub * return when additional == 0 * move safe operation out of unsafe block * use spare_capacity_mut instead of chunk_mut We don't need to check capacity because it's already been reserved above. * Add safety comments * refactor to use guard clauses This would be better written with let-else, but we won't get that until `MSRV >= 1.65.x`. * use if-let instead of unwrap * reduce scope of unsafe blocks Co-authored-by: Alice Ryhl <[email protected]> --------- Co-authored-by: Alice Ryhl <[email protected]>
Follow up to tokio-rs#689 * If `at == self.len()`, we already know `at <= self.len()`. * If `at == 0`, we already know `at <= self.len()`.
…-rs#709) (tokio-rs#710) <Arc<T>>::make_mut returns a &mut T, such an API is doable for Bytes too and thus we should reserve Bytes::make_mut for that. Furthermore, it would be helpful to use From<Bytes> as a trait bound in some cases with other traits such as Hyper's body trait, where Hyper gives you Bytes values. Finally, making it impl From<Bytes> for BytesMut means the API is more easily discoverable as it appears on both Bytes and BytesMut.
…pl" (tokio-rs#726) This reverts commit baa5053.
Is this still applicable? I'm trying to reproduce this with master vs this branch rebased on top of itcargo asm --llvm --bin bytes bytes::read_data master; bytes::read_data
; Function Attrs: noinline nonlazybind uwtable
define internal fastcc void @bytes::read_data(ptr noalias nocapture noundef align 8 dereferenceable(32) %b, i64 noundef %len) unnamed_addr #2 personality ptr @rust_eh_personality {
start:
%0 = alloca [4 x i8], align 4
%iter13 = lshr i64 %len, 2
%_79.not = icmp ult i64 %len, 4
br i1 %_79.not, label %bb8, label %bb7.lr.ph
bb7.lr.ph: ; preds = %start
%1 = getelementptr inbounds i8, ptr %b, i64 16
%2 = getelementptr inbounds i8, ptr %b, i64 8
br label %bb7
bb8: ; preds = %bb2, %start
call void @llvm.experimental.noalias.scope.decl(metadata !20)
call void @llvm.experimental.noalias.scope.decl(metadata !23)
%_6.i.i = load ptr, ptr %b, align 8, !alias.scope !26, !nonnull !4, !align !9, !noundef !4
%3 = getelementptr inbounds i8, ptr %_6.i.i, i64 32
%_2.i.i = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4
%_3.i.i = getelementptr inbounds i8, ptr %b, i64 24
%4 = getelementptr inbounds i8, ptr %b, i64 8
%_4.i.i = load ptr, ptr %4, align 8, !alias.scope !26, !noundef !4
%5 = getelementptr inbounds i8, ptr %b, i64 16
%_5.i.i = load i64, ptr %5, align 8, !alias.scope !26, !noundef !4
call void %_2.i.i(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i, ptr noundef %_4.i.i, i64 noundef %_5.i.i)
ret void
cleanup: ; preds = %bb1.i
%6 = landingpad { ptr, i32 }
cleanup
call void @llvm.experimental.noalias.scope.decl(metadata !27)
call void @llvm.experimental.noalias.scope.decl(metadata !30)
%_6.i.i4 = load ptr, ptr %b, align 8, !alias.scope !33, !nonnull !4, !align !9, !noundef !4
%7 = getelementptr inbounds i8, ptr %_6.i.i4, i64 32
%_2.i.i5 = load ptr, ptr %7, align 8, !noalias !33, !nonnull !4, !noundef !4
%_3.i.i6 = getelementptr inbounds i8, ptr %b, i64 24
%_4.i.i7 = load ptr, ptr %2, align 8, !alias.scope !33, !noundef !4
%_5.i.i8 = load i64, ptr %1, align 8, !alias.scope !33, !noundef !4
invoke void %_2.i.i5(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i6, ptr noundef %_4.i.i7, i64 noundef %_5.i.i8)
to label %bb5 unwind label %terminate
bb7: ; preds = %bb7.lr.ph, %bb2
%iter.sroa.0.010 = phi i64 [ 0, %bb7.lr.ph ], [ %_0.i, %bb2 ]
call void @llvm.experimental.noalias.scope.decl(metadata !34)
%self.val3.i = load i64, ptr %1, align 8, !alias.scope !34, !noundef !4
%_2.i = icmp ult i64 %self.val3.i, 4
br i1 %_2.i, label %bb1.i, label %bb2
bb1.i: ; preds = %bb7
; invoke bytes::panic_advance
invoke void @bytes::panic_advance(i64 noundef 4, i64 noundef %self.val3.i) #16
to label %.noexc unwind label %cleanup
.noexc: ; preds = %bb1.i
unreachable
bb2: ; preds = %bb7
%_0.i = add nuw nsw i64 %iter.sroa.0.010, 1
%self.val4.i = load ptr, ptr %2, align 8, !alias.scope !34, !nonnull !4, !noundef !4
%_27.sroa.0.0.copyload.i = load i32, ptr %self.val4.i, align 1, !noalias !34
%8 = call noundef i32 @llvm.bswap.i32(i32 %_27.sroa.0.0.copyload.i)
%9 = add i64 %self.val3.i, -4
store i64 %9, ptr %1, align 8, !alias.scope !37
%_14.i.i = getelementptr inbounds i8, ptr %self.val4.i, i64 4
store ptr %_14.i.i, ptr %2, align 8, !alias.scope !37
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %0)
store i32 %8, ptr %0, align 4
call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #15, !srcloc !5
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %0)
%exitcond.not = icmp eq i64 %_0.i, %iter13
br i1 %exitcond.not, label %bb8, label %bb7
terminate: ; preds = %cleanup
%10 = landingpad { ptr, i32 }
filter [0 x ptr] zeroinitializer
; call core::panicking::panic_in_cleanup
call void @core::panicking::panic_in_cleanup() #18
unreachable
bb5: ; preds = %cleanup
resume { ptr, i32 } %6
} this branch; bytes::read_data
; Function Attrs: noinline nonlazybind uwtable
define internal fastcc void @bytes::read_data(ptr noalias nocapture noundef align 8 dereferenceable(32) %b, i64 noundef %len) unnamed_addr #2 personality ptr @rust_eh_personality {
start:
%0 = alloca [4 x i8], align 4
%iter13 = lshr i64 %len, 2
%_79.not = icmp ult i64 %len, 4
br i1 %_79.not, label %bb8, label %bb7.lr.ph
bb7.lr.ph: ; preds = %start
%1 = getelementptr inbounds i8, ptr %b, i64 16
%2 = getelementptr inbounds i8, ptr %b, i64 8
br label %bb7
bb8: ; preds = %bb2, %start
call void @llvm.experimental.noalias.scope.decl(metadata !20)
call void @llvm.experimental.noalias.scope.decl(metadata !23)
%_6.i.i = load ptr, ptr %b, align 8, !alias.scope !26, !nonnull !4, !align !9, !noundef !4
%3 = getelementptr inbounds i8, ptr %_6.i.i, i64 32
%_2.i.i = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4
%_3.i.i = getelementptr inbounds i8, ptr %b, i64 24
%4 = getelementptr inbounds i8, ptr %b, i64 8
%_4.i.i = load ptr, ptr %4, align 8, !alias.scope !26, !noundef !4
%5 = getelementptr inbounds i8, ptr %b, i64 16
%_5.i.i = load i64, ptr %5, align 8, !alias.scope !26, !noundef !4
call void %_2.i.i(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i, ptr noundef %_4.i.i, i64 noundef %_5.i.i)
ret void
cleanup: ; preds = %bb2.i
%6 = landingpad { ptr, i32 }
cleanup
call void @llvm.experimental.noalias.scope.decl(metadata !27)
call void @llvm.experimental.noalias.scope.decl(metadata !30)
%_6.i.i4 = load ptr, ptr %b, align 8, !alias.scope !33, !nonnull !4, !align !9, !noundef !4
%7 = getelementptr inbounds i8, ptr %_6.i.i4, i64 32
%_2.i.i5 = load ptr, ptr %7, align 8, !noalias !33, !nonnull !4, !noundef !4
%_3.i.i6 = getelementptr inbounds i8, ptr %b, i64 24
%_4.i.i7 = load ptr, ptr %2, align 8, !alias.scope !33, !noundef !4
%_5.i.i8 = load i64, ptr %1, align 8, !alias.scope !33, !noundef !4
invoke void %_2.i.i5(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i6, ptr noundef %_4.i.i7, i64 noundef %_5.i.i8)
to label %bb5 unwind label %terminate
bb7: ; preds = %bb7.lr.ph, %bb2
%iter.sroa.0.010 = phi i64 [ 0, %bb7.lr.ph ], [ %_0.i, %bb2 ]
call void @llvm.experimental.noalias.scope.decl(metadata !34)
%_3.i = load i64, ptr %1, align 8, !alias.scope !34, !noundef !4
%_2.i = icmp ugt i64 %_3.i, 3
br i1 %_2.i, label %bb2, label %bb2.i
bb2.i: ; preds = %bb7
; invoke core::panicking::panic
invoke void @core::panicking::panic(ptr noalias noundef nonnull readonly align 1 @alloc_41be8e6fb102229d5ede1d827b9ab09a, i64 noundef 34, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @alloc_4931790459b81903b108e1ddf6950308) #15
to label %.noexc unwind label %cleanup
.noexc: ; preds = %bb2.i
unreachable
bb2: ; preds = %bb7
%_0.i = add nuw nsw i64 %iter.sroa.0.010, 1
%_5.i = load ptr, ptr %2, align 8, !alias.scope !34, !noundef !4
%_7.sroa.0.0.copyload.i = load i32, ptr %_5.i, align 1, !noalias !34
%8 = call noundef i32 @llvm.bswap.i32(i32 %_7.sroa.0.0.copyload.i)
%9 = add i64 %_3.i, -4
store i64 %9, ptr %1, align 8, !alias.scope !37
%_14.i.i = getelementptr inbounds i8, ptr %_5.i, i64 4
store ptr %_14.i.i, ptr %2, align 8, !alias.scope !37
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %0)
store i32 %8, ptr %0, align 4
call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #14, !srcloc !5
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %0)
%exitcond.not = icmp eq i64 %_0.i, %iter13
br i1 %exitcond.not, label %bb8, label %bb7
terminate: ; preds = %cleanup
%10 = landingpad { ptr, i32 }
filter [0 x ptr] zeroinitializer
; call core::panicking::panic_in_cleanup
call void @core::panicking::panic_in_cleanup() #17
unreachable
bb5: ; preds = %cleanup
resume { ptr, i32 } %6
} master on Rust 1.68.2; bytes::read_data
; Function Attrs: noinline nonlazybind uwtable
define internal fastcc void @bytes::read_data(ptr noalias nocapture noundef dereferenceable(32) %b, i64 noundef %len) unnamed_addr #0 personality ptr @rust_eh_personality {
start:
%buf.i = alloca [4 x i8], align 4
%0 = alloca i32, align 4
%.not = icmp ult i64 %len, 4
br i1 %.not, label %start.bb4_crit_edge, label %bb2.lr.ph
start.bb4_crit_edge: ; preds = %start
%_5.i.i.pre = load ptr, ptr %b, align 8, !alias.scope !26
%.phi.trans.insert = getelementptr inbounds %"bytes::bytes::Bytes", ptr %b, i64 0, i32 1
%_6.i.i.pre = load i64, ptr %.phi.trans.insert, align 8, !alias.scope !26
br label %bb4
bb2.lr.ph: ; preds = %start
%_51 = lshr i64 %len, 2
%1 = getelementptr i8, ptr %b, i64 8
%.val6.i.pre = load i64, ptr %1, align 8, !alias.scope !29
br label %bb2
cleanup: ; preds = %bb1.i
%2 = landingpad { ptr, i32 }
cleanup
; invoke core::ptr::drop_in_place<bytes::bytes::Bytes>
invoke fastcc void @"core::ptr::drop_in_place<bytes::bytes::Bytes>"(ptr noundef nonnull %b) #17
to label %bb8 unwind label %abort
bb4: ; preds = %bb5, %start.bb4_crit_edge
%_6.i.i = phi i64 [ %_6.i.i.pre, %start.bb4_crit_edge ], [ %.val6.i11, %bb5 ]
%_5.i.i = phi ptr [ %_5.i.i.pre, %start.bb4_crit_edge ], [ %_5.i.i13, %bb5 ]
call void @llvm.experimental.noalias.scope.decl(metadata !26)
%3 = getelementptr inbounds %"bytes::bytes::Bytes", ptr %b, i64 0, i32 3
%_7.i.i = load ptr, ptr %3, align 8, !alias.scope !26, !nonnull !4, !align !11, !noundef !4
%4 = getelementptr inbounds %"bytes::bytes::Vtable", ptr %_7.i.i, i64 0, i32 4
%_2.i.i = load ptr, ptr %4, align 8, !noalias !26, !nonnull !4, !noundef !4
%_4.i.i = getelementptr inbounds %"bytes::bytes::Bytes", ptr %b, i64 0, i32 2
call void %_2.i.i(ptr noalias noundef nonnull align 8 dereferenceable(8) %_4.i.i, ptr noundef %_5.i.i, i64 noundef %_6.i.i)
ret void
bb2: ; preds = %bb2.lr.ph, %bb5
%.val6.i = phi i64 [ %.val6.i.pre, %bb2.lr.ph ], [ %.val6.i11, %bb5 ]
%iter.sroa.0.07 = phi i64 [ 0, %bb2.lr.ph ], [ %5, %bb5 ]
%5 = add nuw nsw i64 %iter.sroa.0.07, 1
call void @llvm.experimental.noalias.scope.decl(metadata !29)
%_2.i = icmp ult i64 %.val6.i, 4
br i1 %_2.i, label %bb1.i, label %bb2.i2
bb2.i2: ; preds = %bb2
%.val7.i = load ptr, ptr %b, align 8, !alias.scope !29, !noundef !4
%6 = icmp eq ptr %.val7.i, null
br i1 %6, label %bb3.preheader.i.i, label %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i"
bb1.i: ; preds = %bb2
; invoke bytes::panic_advance
invoke void @bytes::panic_advance(i64 noundef 4, i64 noundef %.val6.i) #18
to label %.noexc unwind label %cleanup
.noexc: ; preds = %bb1.i
unreachable
"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i": ; preds = %bb2.i2
%.val.i.i = load i32, ptr %.val7.i, align 1, !alias.scope !32, !noalias !29
%7 = call i32 @llvm.bswap.i32(i32 %.val.i.i)
%8 = add i64 %.val6.i, -4
store i64 %8, ptr %1, align 8, !alias.scope !35
%9 = getelementptr inbounds i8, ptr %.val7.i, i64 4
store ptr %9, ptr %b, align 8, !alias.scope !35
br label %bb5
bb3.preheader.i.i: ; preds = %bb2.i2
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %buf.i), !noalias !29
store i32 0, ptr %buf.i, align 4, !noalias !29
call void @llvm.experimental.noalias.scope.decl(metadata !38)
br label %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i"
"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i": ; preds = %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i", %bb3.preheader.i.i
%dst.sroa.8.09.i.i = phi i64 [ 4, %bb3.preheader.i.i ], [ %len.i.i.i.i, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
%dst.sroa.0.08.i.i = phi ptr [ %buf.i, %bb3.preheader.i.i ], [ %12, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
%10 = phi ptr [ null, %bb3.preheader.i.i ], [ %14, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
%.val367.i.i = phi i64 [ %.val6.i, %bb3.preheader.i.i ], [ %13, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
%11 = call i64 @llvm.umin.i64(i64 %.val367.i.i, i64 %dst.sroa.8.09.i.i)
call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %dst.sroa.0.08.i.i, ptr nonnull align 1 %10, i64 %11, i1 false), !alias.scope !41, !noalias !45
%len.i.i.i.i = sub i64 %dst.sroa.8.09.i.i, %11
%12 = getelementptr inbounds i8, ptr %dst.sroa.0.08.i.i, i64 %11
%13 = sub i64 %.val367.i.i, %11
%14 = getelementptr inbounds i8, ptr %10, i64 %11
%_14.not.i.i = icmp eq i64 %len.i.i.i.i, 0
br i1 %_14.not.i.i, label %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i, label %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i"
bytes::buf::buf_impl::Buf::copy_to_slice.exit.i: ; preds = %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i"
store i64 %13, ptr %1, align 8, !alias.scope !46, !noalias !49
store ptr %14, ptr %b, align 8, !alias.scope !46, !noalias !49
%bytes.sroa.0.0.copyload.i = load i32, ptr %buf.i, align 4, !noalias !29
%15 = call i32 @llvm.bswap.i32(i32 %bytes.sroa.0.0.copyload.i)
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %buf.i), !noalias !29
br label %bb5
bb5: ; preds = %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i"
%_5.i.i13 = phi ptr [ %9, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i" ], [ %14, %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i ]
%.val6.i11 = phi i64 [ %8, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i" ], [ %13, %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i ]
%.0.i = phi i32 [ %7, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i" ], [ %15, %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i ]
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %0)
store i32 %.0.i, ptr %0, align 4
call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #16, !srcloc !3
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %0)
%exitcond.not = icmp eq i64 %5, %_51
br i1 %exitcond.not, label %bb4, label %bb2
abort: ; preds = %cleanup
%16 = landingpad { ptr, i32 }
cleanup
; call core::panicking::panic_cannot_unwind
call void @core::panicking::panic_cannot_unwind() #19
unreachable
bb8: ; preds = %cleanup
resume { ptr, i32 } %2
} diff between master and this branchdiff -u --color master.ll bytes_get.ll
--- master.ll 2024-09-01 10:45:00.005321680 +0200
+++ bytes_get.ll 2024-09-01 10:44:52.155315422 +0200
@@ -26,7 +26,7 @@
call void %_2.i.i(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i, ptr noundef %_4.i.i, i64 noundef %_5.i.i)
ret void
-cleanup: ; preds = %bb1.i
+cleanup: ; preds = %bb2.i
%6 = landingpad { ptr, i32 }
cleanup
call void @llvm.experimental.noalias.scope.decl(metadata !27)
@@ -43,30 +43,30 @@
bb7: ; preds = %bb7.lr.ph, %bb2
%iter.sroa.0.010 = phi i64 [ 0, %bb7.lr.ph ], [ %_0.i, %bb2 ]
call void @llvm.experimental.noalias.scope.decl(metadata !34)
- %self.val3.i = load i64, ptr %1, align 8, !alias.scope !34, !noundef !4
- %_2.i = icmp ult i64 %self.val3.i, 4
- br i1 %_2.i, label %bb1.i, label %bb2
-
-bb1.i: ; preds = %bb7
-; invoke bytes::panic_advance
- invoke void @bytes::panic_advance(i64 noundef 4, i64 noundef %self.val3.i) #16
+ %_3.i = load i64, ptr %1, align 8, !alias.scope !34, !noundef !4
+ %_2.i = icmp ugt i64 %_3.i, 3
+ br i1 %_2.i, label %bb2, label %bb2.i
+
+bb2.i: ; preds = %bb7
+; invoke core::panicking::panic
+ invoke void @core::panicking::panic(ptr noalias noundef nonnull readonly align 1 @alloc_41be8e6fb102229d5ede1d827b9ab09a, i64 noundef 34, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @alloc_4931790459b81903b108e1ddf6950308) #15
to label %.noexc unwind label %cleanup
-.noexc: ; preds = %bb1.i
+.noexc: ; preds = %bb2.i
unreachable
bb2: ; preds = %bb7
%_0.i = add nuw nsw i64 %iter.sroa.0.010, 1
- %self.val4.i = load ptr, ptr %2, align 8, !alias.scope !34, !nonnull !4, !noundef !4
- %_27.sroa.0.0.copyload.i = load i32, ptr %self.val4.i, align 1, !noalias !34
- %8 = call noundef i32 @llvm.bswap.i32(i32 %_27.sroa.0.0.copyload.i)
- %9 = add i64 %self.val3.i, -4
+ %_5.i = load ptr, ptr %2, align 8, !alias.scope !34, !noundef !4
+ %_7.sroa.0.0.copyload.i = load i32, ptr %_5.i, align 1, !noalias !34
+ %8 = call noundef i32 @llvm.bswap.i32(i32 %_7.sroa.0.0.copyload.i)
+ %9 = add i64 %_3.i, -4
store i64 %9, ptr %1, align 8, !alias.scope !37
- %_14.i.i = getelementptr inbounds i8, ptr %self.val4.i, i64 4
+ %_14.i.i = getelementptr inbounds i8, ptr %_5.i, i64 4
store ptr %_14.i.i, ptr %2, align 8, !alias.scope !37
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %0)
store i32 %8, ptr %0, align 4
- call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #15, !srcloc !5
+ call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #14, !srcloc !5
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %0)
%exitcond.not = icmp eq i64 %_0.i, %iter13
br i1 %exitcond.not, label %bb8, label %bb7
@@ -75,7 +75,7 @@
%10 = landingpad { ptr, i32 }
filter [0 x ptr] zeroinitializer
; call core::panicking::panic_in_cleanup
- call void @core::panicking::panic_in_cleanup() #18
+ call void @core::panicking::panic_in_cleanup() #17
unreachable
bb5: ; preds = %cleanup diff between master on 1.68.2 and master on current nightlydiff -u --color master.1.68.2.ll master.ll
--- master.1.68.2.ll 2024-09-01 10:45:44.418690781 +0200
+++ master.ll 2024-09-01 10:45:00.005321680 +0200
@@ -1,119 +1,83 @@
; bytes::read_data
; Function Attrs: noinline nonlazybind uwtable
-define internal fastcc void @bytes::read_data(ptr noalias nocapture noundef dereferenceable(32) %b, i64 noundef %len) unnamed_addr #0 personality ptr @rust_eh_personality {
+define internal fastcc void @bytes::read_data(ptr noalias nocapture noundef align 8 dereferenceable(32) %b, i64 noundef %len) unnamed_addr #2 personality ptr @rust_eh_personality {
start:
- %buf.i = alloca [4 x i8], align 4
- %0 = alloca i32, align 4
- %.not = icmp ult i64 %len, 4
- br i1 %.not, label %start.bb4_crit_edge, label %bb2.lr.ph
-
-start.bb4_crit_edge: ; preds = %start
- %_5.i.i.pre = load ptr, ptr %b, align 8, !alias.scope !26
- %.phi.trans.insert = getelementptr inbounds %"bytes::bytes::Bytes", ptr %b, i64 0, i32 1
- %_6.i.i.pre = load i64, ptr %.phi.trans.insert, align 8, !alias.scope !26
- br label %bb4
-
-bb2.lr.ph: ; preds = %start
- %_51 = lshr i64 %len, 2
- %1 = getelementptr i8, ptr %b, i64 8
- %.val6.i.pre = load i64, ptr %1, align 8, !alias.scope !29
- br label %bb2
+ %0 = alloca [4 x i8], align 4
+ %iter13 = lshr i64 %len, 2
+ %_79.not = icmp ult i64 %len, 4
+ br i1 %_79.not, label %bb8, label %bb7.lr.ph
+
+bb7.lr.ph: ; preds = %start
+ %1 = getelementptr inbounds i8, ptr %b, i64 16
+ %2 = getelementptr inbounds i8, ptr %b, i64 8
+ br label %bb7
+
+bb8: ; preds = %bb2, %start
+ call void @llvm.experimental.noalias.scope.decl(metadata !20)
+ call void @llvm.experimental.noalias.scope.decl(metadata !23)
+ %_6.i.i = load ptr, ptr %b, align 8, !alias.scope !26, !nonnull !4, !align !9, !noundef !4
+ %3 = getelementptr inbounds i8, ptr %_6.i.i, i64 32
+ %_2.i.i = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4
+ %_3.i.i = getelementptr inbounds i8, ptr %b, i64 24
+ %4 = getelementptr inbounds i8, ptr %b, i64 8
+ %_4.i.i = load ptr, ptr %4, align 8, !alias.scope !26, !noundef !4
+ %5 = getelementptr inbounds i8, ptr %b, i64 16
+ %_5.i.i = load i64, ptr %5, align 8, !alias.scope !26, !noundef !4
+ call void %_2.i.i(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i, ptr noundef %_4.i.i, i64 noundef %_5.i.i)
+ ret void
cleanup: ; preds = %bb1.i
- %2 = landingpad { ptr, i32 }
+ %6 = landingpad { ptr, i32 }
cleanup
-; invoke core::ptr::drop_in_place<bytes::bytes::Bytes>
- invoke fastcc void @"core::ptr::drop_in_place<bytes::bytes::Bytes>"(ptr noundef nonnull %b) #17
- to label %bb8 unwind label %abort
-
-bb4: ; preds = %bb5, %start.bb4_crit_edge
- %_6.i.i = phi i64 [ %_6.i.i.pre, %start.bb4_crit_edge ], [ %.val6.i11, %bb5 ]
- %_5.i.i = phi ptr [ %_5.i.i.pre, %start.bb4_crit_edge ], [ %_5.i.i13, %bb5 ]
- call void @llvm.experimental.noalias.scope.decl(metadata !26)
- %3 = getelementptr inbounds %"bytes::bytes::Bytes", ptr %b, i64 0, i32 3
- %_7.i.i = load ptr, ptr %3, align 8, !alias.scope !26, !nonnull !4, !align !11, !noundef !4
- %4 = getelementptr inbounds %"bytes::bytes::Vtable", ptr %_7.i.i, i64 0, i32 4
- %_2.i.i = load ptr, ptr %4, align 8, !noalias !26, !nonnull !4, !noundef !4
- %_4.i.i = getelementptr inbounds %"bytes::bytes::Bytes", ptr %b, i64 0, i32 2
- call void %_2.i.i(ptr noalias noundef nonnull align 8 dereferenceable(8) %_4.i.i, ptr noundef %_5.i.i, i64 noundef %_6.i.i)
- ret void
+ call void @llvm.experimental.noalias.scope.decl(metadata !27)
+ call void @llvm.experimental.noalias.scope.decl(metadata !30)
+ %_6.i.i4 = load ptr, ptr %b, align 8, !alias.scope !33, !nonnull !4, !align !9, !noundef !4
+ %7 = getelementptr inbounds i8, ptr %_6.i.i4, i64 32
+ %_2.i.i5 = load ptr, ptr %7, align 8, !noalias !33, !nonnull !4, !noundef !4
+ %_3.i.i6 = getelementptr inbounds i8, ptr %b, i64 24
+ %_4.i.i7 = load ptr, ptr %2, align 8, !alias.scope !33, !noundef !4
+ %_5.i.i8 = load i64, ptr %1, align 8, !alias.scope !33, !noundef !4
+ invoke void %_2.i.i5(ptr noalias noundef nonnull align 8 dereferenceable(8) %_3.i.i6, ptr noundef %_4.i.i7, i64 noundef %_5.i.i8)
+ to label %bb5 unwind label %terminate
+
+bb7: ; preds = %bb7.lr.ph, %bb2
+ %iter.sroa.0.010 = phi i64 [ 0, %bb7.lr.ph ], [ %_0.i, %bb2 ]
+ call void @llvm.experimental.noalias.scope.decl(metadata !34)
+ %self.val3.i = load i64, ptr %1, align 8, !alias.scope !34, !noundef !4
+ %_2.i = icmp ult i64 %self.val3.i, 4
+ br i1 %_2.i, label %bb1.i, label %bb2
-bb2: ; preds = %bb2.lr.ph, %bb5
- %.val6.i = phi i64 [ %.val6.i.pre, %bb2.lr.ph ], [ %.val6.i11, %bb5 ]
- %iter.sroa.0.07 = phi i64 [ 0, %bb2.lr.ph ], [ %5, %bb5 ]
- %5 = add nuw nsw i64 %iter.sroa.0.07, 1
- call void @llvm.experimental.noalias.scope.decl(metadata !29)
- %_2.i = icmp ult i64 %.val6.i, 4
- br i1 %_2.i, label %bb1.i, label %bb2.i2
-
-bb2.i2: ; preds = %bb2
- %.val7.i = load ptr, ptr %b, align 8, !alias.scope !29, !noundef !4
- %6 = icmp eq ptr %.val7.i, null
- br i1 %6, label %bb3.preheader.i.i, label %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i"
-
-bb1.i: ; preds = %bb2
+bb1.i: ; preds = %bb7
; invoke bytes::panic_advance
- invoke void @bytes::panic_advance(i64 noundef 4, i64 noundef %.val6.i) #18
+ invoke void @bytes::panic_advance(i64 noundef 4, i64 noundef %self.val3.i) #16
to label %.noexc unwind label %cleanup
.noexc: ; preds = %bb1.i
unreachable
-"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i": ; preds = %bb2.i2
- %.val.i.i = load i32, ptr %.val7.i, align 1, !alias.scope !32, !noalias !29
- %7 = call i32 @llvm.bswap.i32(i32 %.val.i.i)
- %8 = add i64 %.val6.i, -4
- store i64 %8, ptr %1, align 8, !alias.scope !35
- %9 = getelementptr inbounds i8, ptr %.val7.i, i64 4
- store ptr %9, ptr %b, align 8, !alias.scope !35
- br label %bb5
-
-bb3.preheader.i.i: ; preds = %bb2.i2
- call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %buf.i), !noalias !29
- store i32 0, ptr %buf.i, align 4, !noalias !29
- call void @llvm.experimental.noalias.scope.decl(metadata !38)
- br label %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i"
-
-"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i": ; preds = %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i", %bb3.preheader.i.i
- %dst.sroa.8.09.i.i = phi i64 [ 4, %bb3.preheader.i.i ], [ %len.i.i.i.i, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
- %dst.sroa.0.08.i.i = phi ptr [ %buf.i, %bb3.preheader.i.i ], [ %12, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
- %10 = phi ptr [ null, %bb3.preheader.i.i ], [ %14, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
- %.val367.i.i = phi i64 [ %.val6.i, %bb3.preheader.i.i ], [ %13, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i" ]
- %11 = call i64 @llvm.umin.i64(i64 %.val367.i.i, i64 %dst.sroa.8.09.i.i)
- call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %dst.sroa.0.08.i.i, ptr nonnull align 1 %10, i64 %11, i1 false), !alias.scope !41, !noalias !45
- %len.i.i.i.i = sub i64 %dst.sroa.8.09.i.i, %11
- %12 = getelementptr inbounds i8, ptr %dst.sroa.0.08.i.i, i64 %11
- %13 = sub i64 %.val367.i.i, %11
- %14 = getelementptr inbounds i8, ptr %10, i64 %11
- %_14.not.i.i = icmp eq i64 %len.i.i.i.i, 0
- br i1 %_14.not.i.i, label %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i, label %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i"
-
-bytes::buf::buf_impl::Buf::copy_to_slice.exit.i: ; preds = %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i.i"
- store i64 %13, ptr %1, align 8, !alias.scope !46, !noalias !49
- store ptr %14, ptr %b, align 8, !alias.scope !46, !noalias !49
- %bytes.sroa.0.0.copyload.i = load i32, ptr %buf.i, align 4, !noalias !29
- %15 = call i32 @llvm.bswap.i32(i32 %bytes.sroa.0.0.copyload.i)
- call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %buf.i), !noalias !29
- br label %bb5
-
-bb5: ; preds = %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i"
- %_5.i.i13 = phi ptr [ %9, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i" ], [ %14, %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i ]
- %.val6.i11 = phi i64 [ %8, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i" ], [ %13, %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i ]
- %.0.i = phi i32 [ %7, %"<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::advance.exit.i" ], [ %15, %bytes::buf::buf_impl::Buf::copy_to_slice.exit.i ]
+bb2: ; preds = %bb7
+ %_0.i = add nuw nsw i64 %iter.sroa.0.010, 1
+ %self.val4.i = load ptr, ptr %2, align 8, !alias.scope !34, !nonnull !4, !noundef !4
+ %_27.sroa.0.0.copyload.i = load i32, ptr %self.val4.i, align 1, !noalias !34
+ %8 = call noundef i32 @llvm.bswap.i32(i32 %_27.sroa.0.0.copyload.i)
+ %9 = add i64 %self.val3.i, -4
+ store i64 %9, ptr %1, align 8, !alias.scope !37
+ %_14.i.i = getelementptr inbounds i8, ptr %self.val4.i, i64 4
+ store ptr %_14.i.i, ptr %2, align 8, !alias.scope !37
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %0)
- store i32 %.0.i, ptr %0, align 4
- call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #16, !srcloc !3
+ store i32 %8, ptr %0, align 4
+ call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0) #15, !srcloc !5
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %0)
- %exitcond.not = icmp eq i64 %5, %_51
- br i1 %exitcond.not, label %bb4, label %bb2
+ %exitcond.not = icmp eq i64 %_0.i, %iter13
+ br i1 %exitcond.not, label %bb8, label %bb7
-abort: ; preds = %cleanup
- %16 = landingpad { ptr, i32 }
- cleanup
-; call core::panicking::panic_cannot_unwind
- call void @core::panicking::panic_cannot_unwind() #19
+terminate: ; preds = %cleanup
+ %10 = landingpad { ptr, i32 }
+ filter [0 x ptr] zeroinitializer
+; call core::panicking::panic_in_cleanup
+ call void @core::panicking::panic_in_cleanup() #18
unreachable
-bb8: ; preds = %cleanup
- resume { ptr, i32 } %2
+bb5: ; preds = %cleanup
+ resume { ptr, i32 } %6
} Tested on:
and on:
I guess the newer LLVM version is already smart enough to optimize it? |
I think so. It mostly has to do with how things get inlined when The major points of interest are the branch codegen still being 33% less instructions than current master, and the section between Current masterslp_parse::events::post_frame::unpack_frames:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 1944
lea rbp, [rsp + 128]
movdqa xmmword ptr [rbp + 1792], xmm7
movdqa xmmword ptr [rbp + 1776], xmm6
mov qword ptr [rbp + 1768], -2
mov qword ptr [rbp + 1696], r8
mov qword ptr [rbp + 1736], rdx
mov qword ptr [rbp + 1712], rcx
mov rdx, qword ptr [rbp + 1920]
movups xmm0, xmmword ptr [rip + __unnamed_637+16]
movaps xmmword ptr [rbp + 1632], xmm0
movdqu xmm0, xmmword ptr [rip + __unnamed_637]
movdqa xmmword ptr [rbp + 1616], xmm0
lock inc qword ptr [rdx]
jle .LBB472_1
mov r13, r9
lea rcx, [rbp - 96]
mov qword ptr [rbp + 1704], rdx
call slp_parse::events::post_frame::PostFrames::new
movzx esi, word ptr [rbp + 1928]
lea rdi, [rbp + 752]
lea rdx, [rbp - 96]
mov r8d, 424
mov rcx, rdi
call memcpy
mov qword ptr [rbp + 1176], 0
lea rcx, [rbp - 96]
lea rdx, [rbp + 1616]
mov r8d, esi
mov r9, rdi
call hashbrown::map::HashMap<K,V,S,A>::insert
cmp qword ptr [rbp - 96], 0
je .LBB472_10
lea rcx, [rbp - 96]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
cmp qword ptr [rbp + 328], 0
je .LBB472_10
lea rcx, [rbp + 328]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
.LBB472_10:
mov rdx, qword ptr [rbp + 1704]
lock inc qword ptr [rdx]
jle .LBB472_1
lea rcx, [rbp - 96]
call slp_parse::events::post_frame::PostFrames::new
shr esi, 8
lea rdx, [rbp - 96]
mov r8d, 424
mov rcx, rdi
call memcpy
mov qword ptr [rbp + 1176], 0
lea rcx, [rbp - 96]
lea rdx, [rbp + 1616]
mov r8d, esi
mov r9, rdi
call hashbrown::map::HashMap<K,V,S,A>::insert
cmp qword ptr [rbp - 96], 0
je .LBB472_16
lea rcx, [rbp - 96]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
cmp qword ptr [rbp + 328], 0
je .LBB472_16
lea rcx, [rbp + 328]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
.LBB472_16:
and r13, -2
mov rcx, qword ptr [rbp + 1704]
mov rax, qword ptr [rcx + 184]
mov qword ptr [rbp + 1656], rax
movzx edx, byte ptr [rcx + 192]
movzx ecx, byte ptr [rcx + 193]
xor eax, eax
cmp dl, 2
sete al
test cl, cl
sete r8b
xor r9d, r9d
cmp cl, 5
setb r9b
xor r10d, r10d
cmp cl, 8
setb r10b
xor r11d, r11d
cmp cl, 11
setb r11b
xor esi, esi
cmp cl, 16
setb sil
and r8b, al
mov byte ptr [rbp + 1751], r8b
mov byte ptr [rbp + 1750], dl
cmp dl, 3
cmovne r9d, eax
mov dword ptr [rbp + 1672], r9d
cmovne r10d, eax
mov dword ptr [rbp + 1676], r10d
cmovne r11d, eax
mov dword ptr [rbp + 1680], r11d
cmovne esi, eax
mov dword ptr [rbp + 1684], esi
mov r14, qword ptr [rbp + 1736]
mov rax, qword ptr [r14 + 16]
mov qword ptr [rbp + 1600], rax
pxor xmm6, xmm6
pcmpeqd xmm7, xmm7
jmp .LBB472_17
.LBB472_23:
mov rax, qword ptr [rbp + 1608]
mov qword ptr [rbp + 1696], rax
.LBB472_17:
test r13, r13
je .LBB472_18
mov rax, qword ptr [rbp + 1696]
add rax, 16
mov qword ptr [rbp + 1608], rax
add r13, -2
xor eax, eax
mov qword ptr [rbp + 1664], rax
mov qword ptr [rbp + 1752], r13
.LBB472_22:
mov r15, qword ptr [rbp + 1664]
cmp r15, 16
je .LBB472_23
mov rax, qword ptr [r14 + 16]
mov rdi, rax
sub rdi, qword ptr [rbp + 1600]
mov rcx, qword ptr [rbp + 1696]
add rdi, qword ptr [rcx + r15]
mov qword ptr [rbp + 1688], rdi
mov rsi, rax
sub rsi, rdi
jb .LBB472_25
mov qword ptr [r14 + 16], rsi
mov rax, qword ptr [r14 + 8]
add rdi, rax
mov qword ptr [r14 + 8], rdi
cmp rsi, 4
jb .LBB472_31
test rax, rax
je .LBB472_28
mov ebx, dword ptr [rdi]
bswap ebx
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
jmp .LBB472_33
.LBB472_28:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_29:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_29
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov ebx, dword ptr [rbp + 752]
bswap ebx
mov r13, qword ptr [rbp + 1752]
.LBB472_33:
add r15, 8
mov qword ptr [rbp + 1664], r15
lea eax, [rbx + 123]
movsxd r12, eax
mov qword ptr [rbp + 1760], r12
mov rax, qword ptr [rbp + 1656]
cmp rax, r12
je .LBB472_22
inc rax
cmp rax, r12
je .LBB472_22
test rsi, rsi
je .LBB472_36
movzx eax, byte ptr [rdi]
lea rcx, [rdi + 1]
mov rdx, rsi
mov qword ptr [rbp + 1688], 1
dec rdx
mov qword ptr [r14 + 16], rdx
mov qword ptr [r14 + 8], rcx
je .LBB472_38
add rsi, -2
mov qword ptr [r14 + 16], rsi
add rdi, 2
mov qword ptr [r14 + 8], rdi
cmp qword ptr [rbp + 1640], 0
je .LBB472_45
movzx ecx, al
mov r15, qword ptr [rbp + 1616]
mov rdx, qword ptr [rbp + 1624]
lea r8, [r15 - 856]
xor r9d, r9d
.LBB472_41:
and rcx, rdx
movdqu xmm0, xmmword ptr [r15 + rcx]
movdqa xmm1, xmm0
pcmpeqb xmm1, xmm6
pmovmskb r10d, xmm1
.LBB472_42:
test r10w, r10w
je .LBB472_43
rep bsf r11d, r10d
lea edi, [r10 - 1]
and edi, r10d
add r11, rcx
and r11, rdx
neg r11
imul rsi, r11, 856
mov r10d, edi
cmp byte ptr [r8 + rsi], al
jne .LBB472_42
jmp .LBB472_47
.LBB472_43:
pcmpeqb xmm0, xmm7
pmovmskb r10d, xmm0
test r10d, r10d
jne .LBB472_45
add rcx, r9
add rcx, 16
add r9, 16
jmp .LBB472_41
.LBB472_47:
mov rdi, qword ptr [r15 + rsi - 840]
mov r14, qword ptr [r15 + rsi - 832]
lea rax, [rbp + 1760]
mov qword ptr [rbp - 96], rax
lea rax, [rip + core::fmt::num::imp::<impl core::fmt::Display for usize>::fmt]
mov qword ptr [rbp - 88], rax
lea rcx, [rbp + 1656]
mov qword ptr [rbp - 80], rcx
mov qword ptr [rbp - 72], rax
lea rax, [rip + __unnamed_711]
mov qword ptr [rbp + 752], rax
mov qword ptr [rbp + 760], 2
mov qword ptr [rbp + 784], 0
lea rax, [rbp - 96]
mov qword ptr [rbp + 768], rax
mov qword ptr [rbp + 776], 2
lea rcx, [rbp + 752]
call anyhow::__private::format_err
mov qword ptr [rbp + 1720], rax
cmp r14, r12
jbe .LBB472_49
lea rcx, [rbp + 1720]
call anyhow::error::<impl core::ops::drop::Drop for anyhow::Error>::drop
mov dword ptr [rdi + 4*r12], ebx
mov r14, qword ptr [rbp + 1736]
mov rax, qword ptr [r14 + 16]
test rax, rax
je .LBB472_52
add r15, rsi
mov rcx, qword ptr [r14 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r14 + 16], rax
inc rcx
mov qword ptr [r14 + 8], rcx
mov rax, qword ptr [r15 - 824]
mov rcx, qword ptr [rbp + 1760]
mov byte ptr [rax + rcx], dl
mov rsi, qword ptr [r14 + 16]
cmp rsi, 2
jb .LBB472_58
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_55
movzx eax, word ptr [rcx]
rol ax, 8
add rsi, -2
mov qword ptr [r14 + 16], rsi
add rcx, 2
mov qword ptr [r14 + 8], rcx
jmp .LBB472_60
.LBB472_55:
mov word ptr [rbp + 752], 0
mov ebx, 2
xor edi, edi
lea r12, [rbp + 752]
.LBB472_56:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_56
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
movzx eax, word ptr [rbp + 752]
rol ax, 8
mov r13, qword ptr [rbp + 1752]
.LBB472_60:
mov rcx, qword ptr [r15 - 808]
mov rdx, qword ptr [rbp + 1760]
mov word ptr [rcx + 2*rdx], ax
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_65
mov rdi, qword ptr [r14 + 8]
test rdi, rdi
je .LBB472_62
mov ebx, dword ptr [rdi]
bswap ebx
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
cmp rsi, 4
jae .LBB472_68
jmp .LBB472_72
.LBB472_62:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_63:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_63
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov ebx, dword ptr [rbp + 752]
bswap ebx
mov r13, qword ptr [rbp + 1752]
cmp rsi, 4
jb .LBB472_72
.LBB472_68:
test rdi, rdi
je .LBB472_69
mov eax, dword ptr [rdi]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
jmp .LBB472_74
.LBB472_69:
mov dword ptr [rbp + 752], 0
mov r14d, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_70:
cmp rsi, r14
mov r13, r14
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub r14, r13
jne .LBB472_70
mov r14, qword ptr [rbp + 1736]
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
.LBB472_74:
mov rcx, qword ptr [r15 - 792]
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 8*rdx], ebx
mov dword ptr [rcx + 8*rdx + 4], eax
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_79
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_76
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
jmp .LBB472_81
.LBB472_76:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_77:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_77
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
.LBB472_81:
mov rcx, qword ptr [r15 - 776]
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_86
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_83
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
jmp .LBB472_88
.LBB472_83:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_84:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_84
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
.LBB472_88:
mov rcx, qword ptr [r15 - 760]
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_93
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_90
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
jmp .LBB472_95
.LBB472_90:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_91:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_91
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
.LBB472_95:
mov rcx, qword ptr [r15 - 744]
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
mov rax, qword ptr [r14 + 16]
test rax, rax
je .LBB472_96
mov rcx, qword ptr [r14 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r14 + 16], rax
inc rcx
mov qword ptr [r14 + 8], rcx
mov rax, qword ptr [r15 - 728]
mov rcx, qword ptr [rbp + 1760]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [r14 + 16]
test rax, rax
je .LBB472_98
mov rcx, qword ptr [r14 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r14 + 16], rax
inc rcx
mov qword ptr [r14 + 8], rcx
mov rax, qword ptr [r15 - 712]
mov rcx, qword ptr [rbp + 1760]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [r14 + 16]
test rax, rax
je .LBB472_100
mov rcx, qword ptr [r14 + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [r14 + 16], rax
inc rcx
mov qword ptr [r14 + 8], rcx
mov rax, qword ptr [r15 - 696]
mov rcx, qword ptr [rbp + 1760]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [r14 + 16]
test rax, rax
je .LBB472_102
mov rcx, qword ptr [r14 + 8]
dec rax
lea rdx, [rcx + 1]
movzx ecx, byte ptr [rcx]
mov qword ptr [r14 + 16], rax
mov qword ptr [r14 + 8], rdx
mov rax, qword ptr [r15 - 680]
mov rdx, qword ptr [rbp + 1760]
mov byte ptr [rax + rdx], cl
cmp byte ptr [rbp + 1750], 2
jb .LBB472_22
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_109
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_106
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 664]
test rcx, rcx
jne .LBB472_113
jmp .LBB472_112
.LBB472_106:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_107:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_107
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 664]
test rcx, rcx
je .LBB472_112
.LBB472_113:
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
mov r9, qword ptr [r14 + 16]
test r9, r9
je .LBB472_114
mov r10, qword ptr [r14 + 8]
movzx eax, byte ptr [r10]
lea rcx, [r10 + 1]
mov rdx, r9
dec rdx
mov qword ptr [r14 + 16], rdx
mov qword ptr [r14 + 8], rcx
je .LBB472_116
movzx ecx, byte ptr [r10 + 1]
lea rdx, [r10 + 2]
mov r8, r9
add r8, -2
mov qword ptr [r14 + 16], r8
mov qword ptr [r14 + 8], rdx
je .LBB472_118
movzx edx, byte ptr [r10 + 2]
lea r8, [r10 + 3]
mov r11, r9
add r11, -3
mov qword ptr [r14 + 16], r11
mov qword ptr [r14 + 8], r8
je .LBB472_120
movzx r8d, byte ptr [r10 + 3]
lea r11, [r10 + 4]
mov rsi, r9
add rsi, -4
mov qword ptr [r14 + 16], rsi
mov qword ptr [r14 + 8], r11
je .LBB472_122
movzx r11d, byte ptr [r10 + 4]
add r9, -5
mov qword ptr [r14 + 16], r9
add r10, 5
mov qword ptr [r14 + 8], r10
mov r9, qword ptr [r15 - 648]
test r9, r9
je .LBB472_124
shl ecx, 8
or rcx, rax
shl edx, 16
or rdx, rcx
shl r8d, 24
or r8, rdx
shl r11, 32
or r11, r8
mov rax, qword ptr [rbp + 1760]
mov qword ptr [r9 + 8*rax], r11
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_130
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_127
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 632]
test rcx, rcx
jne .LBB472_134
jmp .LBB472_133
.LBB472_127:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_128:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_128
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 632]
test rcx, rcx
je .LBB472_133
.LBB472_134:
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
mov rcx, qword ptr [r14 + 16]
test rcx, rcx
je .LBB472_135
mov rdx, qword ptr [r14 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r14 + 16], rcx
inc rdx
mov qword ptr [r14 + 8], rdx
mov rcx, qword ptr [r15 - 616]
test rcx, rcx
je .LBB472_137
mov rdx, qword ptr [rbp + 1760]
test al, al
sete byte ptr [rcx + rdx]
mov rsi, qword ptr [r14 + 16]
cmp rsi, 2
jb .LBB472_143
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_140
movzx eax, word ptr [rcx]
rol ax, 8
add rsi, -2
mov qword ptr [r14 + 16], rsi
add rcx, 2
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 600]
test rcx, rcx
jne .LBB472_147
jmp .LBB472_146
.LBB472_140:
mov word ptr [rbp + 752], 0
mov ebx, 2
xor edi, edi
lea r12, [rbp + 752]
.LBB472_141:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_141
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
movzx eax, word ptr [rbp + 752]
rol ax, 8
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 600]
test rcx, rcx
je .LBB472_146
.LBB472_147:
mov rdx, qword ptr [rbp + 1760]
mov word ptr [rcx + 2*rdx], ax
mov rcx, qword ptr [r14 + 16]
test rcx, rcx
je .LBB472_148
mov rdx, qword ptr [r14 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r14 + 16], rcx
inc rdx
mov qword ptr [r14 + 8], rdx
mov rcx, qword ptr [r15 - 584]
test rcx, rcx
je .LBB472_150
mov rdx, qword ptr [rbp + 1760]
mov byte ptr [rcx + rdx], al
mov rcx, qword ptr [r14 + 16]
test rcx, rcx
je .LBB472_152
mov rdx, qword ptr [r14 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r14 + 16], rcx
inc rdx
mov qword ptr [r14 + 8], rdx
mov rcx, qword ptr [r15 - 568]
test rcx, rcx
je .LBB472_154
mov rdx, qword ptr [rbp + 1760]
mov byte ptr [rcx + rdx], al
cmp byte ptr [rbp + 1751], 0
jne .LBB472_22
mov rcx, qword ptr [r14 + 16]
test rcx, rcx
je .LBB472_157
mov rdx, qword ptr [r14 + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [r14 + 16], rcx
inc rdx
mov qword ptr [r14 + 8], rdx
mov rcx, qword ptr [r15 - 552]
test rcx, rcx
je .LBB472_159
mov rdx, qword ptr [rbp + 1760]
mov byte ptr [rcx + rdx], al
cmp byte ptr [rbp + 1672], 0
jne .LBB472_22
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_166
mov rdi, qword ptr [r14 + 8]
test rdi, rdi
je .LBB472_163
mov ebx, dword ptr [rdi]
bswap ebx
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
cmp rsi, 4
jae .LBB472_169
jmp .LBB472_173
.LBB472_163:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_164:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_164
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov ebx, dword ptr [rbp + 752]
bswap ebx
mov r13, qword ptr [rbp + 1752]
cmp rsi, 4
jb .LBB472_173
.LBB472_169:
test rdi, rdi
je .LBB472_170
mov r8d, dword ptr [rdi]
bswap r8d
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
mov rax, qword ptr [r15 - 536]
test rax, rax
jne .LBB472_177
jmp .LBB472_176
.LBB472_170:
mov dword ptr [rbp + 752], 0
mov r14d, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_171:
cmp rsi, r14
mov r13, r14
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub r14, r13
jne .LBB472_171
mov r14, qword ptr [rbp + 1736]
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov r8d, dword ptr [rbp + 752]
bswap r8d
mov r13, qword ptr [rbp + 1752]
mov rax, qword ptr [r15 - 536]
test rax, rax
je .LBB472_176
.LBB472_177:
mov rcx, qword ptr [rbp + 1760]
mov dword ptr [rax + 8*rcx], ebx
mov dword ptr [rax + 8*rcx + 4], r8d
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_182
mov rdi, qword ptr [r14 + 8]
test rdi, rdi
mov dword ptr [rbp + 1732], r8d
je .LBB472_179
mov ebx, dword ptr [rdi]
bswap ebx
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
cmp rsi, 4
jae .LBB472_185
jmp .LBB472_189
.LBB472_179:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_180:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_180
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov ebx, dword ptr [rbp + 752]
bswap ebx
mov r13, qword ptr [rbp + 1752]
mov r8d, dword ptr [rbp + 1732]
cmp rsi, 4
jb .LBB472_189
.LBB472_185:
test rdi, rdi
je .LBB472_186
mov eax, dword ptr [rdi]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rdi, 4
mov qword ptr [r14 + 8], rdi
mov rcx, qword ptr [r15 - 520]
test rcx, rcx
jne .LBB472_193
jmp .LBB472_192
.LBB472_186:
mov dword ptr [rbp + 752], 0
mov r14d, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_187:
cmp rsi, r14
mov r13, r14
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub r14, r13
jne .LBB472_187
mov r14, qword ptr [rbp + 1736]
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
mov r8d, dword ptr [rbp + 1732]
mov rcx, qword ptr [r15 - 520]
test rcx, rcx
je .LBB472_192
.LBB472_193:
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 8*rdx], ebx
mov dword ptr [rcx + 8*rdx + 4], eax
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_198
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_195
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 504]
test rcx, rcx
jne .LBB472_202
jmp .LBB472_201
.LBB472_195:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_196:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_196
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
mov r8d, dword ptr [rbp + 1732]
mov rcx, qword ptr [r15 - 504]
test rcx, rcx
je .LBB472_201
.LBB472_202:
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 8*rdx], eax
mov dword ptr [rcx + 8*rdx + 4], r8d
cmp byte ptr [rbp + 1676], 0
jne .LBB472_22
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_208
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_205
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 488]
test rcx, rcx
jne .LBB472_212
jmp .LBB472_211
.LBB472_205:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_206:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_206
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 488]
test rcx, rcx
je .LBB472_211
.LBB472_212:
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
cmp byte ptr [rbp + 1680], 0
jne .LBB472_22
mov rsi, qword ptr [r14 + 16]
cmp rsi, 4
jb .LBB472_218
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_215
mov eax, dword ptr [rcx]
bswap eax
add rsi, -4
mov qword ptr [r14 + 16], rsi
add rcx, 4
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 472]
test rcx, rcx
jne .LBB472_222
jmp .LBB472_221
.LBB472_215:
mov dword ptr [rbp + 752], 0
mov ebx, 4
xor edi, edi
lea r12, [rbp + 752]
.LBB472_216:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_216
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
mov eax, dword ptr [rbp + 752]
bswap eax
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 472]
test rcx, rcx
je .LBB472_221
.LBB472_222:
mov rdx, qword ptr [rbp + 1760]
mov dword ptr [rcx + 4*rdx], eax
cmp byte ptr [rbp + 1684], 0
jne .LBB472_22
mov rsi, qword ptr [r14 + 16]
cmp rsi, 2
jb .LBB472_228
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_225
movzx eax, word ptr [rcx]
rol ax, 8
add rsi, -2
mov qword ptr [r14 + 16], rsi
add rcx, 2
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 456]
test rcx, rcx
jne .LBB472_232
jmp .LBB472_231
.LBB472_225:
mov word ptr [rbp + 752], 0
mov ebx, 2
xor edi, edi
lea r12, [rbp + 752]
.LBB472_226:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_226
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
movzx eax, word ptr [rbp + 752]
rol ax, 8
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 456]
test rcx, rcx
je .LBB472_231
.LBB472_232:
mov rdx, qword ptr [rbp + 1760]
mov word ptr [rcx + 2*rdx], ax
mov rsi, qword ptr [r14 + 16]
cmp rsi, 2
jb .LBB472_237
mov rcx, qword ptr [r14 + 8]
test rcx, rcx
je .LBB472_234
movzx eax, word ptr [rcx]
rol ax, 8
add rsi, -2
mov qword ptr [r14 + 16], rsi
add rcx, 2
mov qword ptr [r14 + 8], rcx
mov rcx, qword ptr [r15 - 440]
test rcx, rcx
jne .LBB472_241
jmp .LBB472_240
.LBB472_234:
mov word ptr [rbp + 752], 0
mov ebx, 2
xor edi, edi
lea r12, [rbp + 752]
.LBB472_235:
cmp rsi, rbx
mov r13, rbx
cmovb r13, rsi
mov rcx, r12
mov rdx, rdi
mov r8, r13
call memcpy
add r12, r13
sub rsi, r13
add rdi, r13
sub rbx, r13
jne .LBB472_235
mov qword ptr [r14 + 8], rdi
mov qword ptr [r14 + 16], rsi
movzx eax, word ptr [rbp + 752]
rol ax, 8
mov r13, qword ptr [rbp + 1752]
mov rcx, qword ptr [r15 - 440]
test rcx, rcx
je .LBB472_240
.LBB472_241:
mov rdx, qword ptr [rbp + 1760]
mov word ptr [rcx + 2*rdx], ax
jmp .LBB472_22
.LBB472_49:
mov rcx, qword ptr [rbp + 1712]
mov qword ptr [rcx + 8], rax
mov qword ptr [rcx], 0
lea rcx, [rbp + 1616]
call core::ptr::drop_in_place<std::collections::hash::map::HashMap<u8,(slp_parse::events::post_frame::PostFrames,core::option::Option<slp_parse::events::post_frame::PostFrames>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u8>>>>
mov rax, qword ptr [rbp + 1704]
lock dec qword ptr [rax]
mov r14, qword ptr [rbp + 1736]
jne .LBB472_20
.LBB472_19:
#MEMBARRIER
lea rcx, [rbp + 1920]
call alloc::sync::Arc<T,A>::drop_slow
.LBB472_20:
lea rcx, [r14 + 24]
mov rax, qword ptr [r14]
mov rdx, qword ptr [r14 + 8]
mov r8, qword ptr [r14 + 16]
call qword ptr [rax + 32]
mov rax, qword ptr [rbp + 1712]
movaps xmm6, xmmword ptr [rbp + 1776]
movaps xmm7, xmmword ptr [rbp + 1792]
add rsp, 1944
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
.LBB472_18:
movdqa xmm0, xmmword ptr [rbp + 1616]
movdqa xmm1, xmmword ptr [rbp + 1632]
mov rax, qword ptr [rbp + 1712]
movdqu xmmword ptr [rax + 16], xmm1
movdqu xmmword ptr [rax], xmm0
mov rax, qword ptr [rbp + 1920]
lock dec qword ptr [rax]
je .LBB472_19
jmp .LBB472_20
.LBB472_45:
lea rcx, [rip + __unnamed_712]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_25:
mov qword ptr [rbp + 1720], rax
lea rax, [rbp + 1688]
mov qword ptr [rbp - 96], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp - 88], rax
lea rcx, [rbp + 1720]
mov qword ptr [rbp - 80], rcx
mov qword ptr [rbp - 72], rax
lea rax, [rip + __unnamed_466]
mov qword ptr [rbp + 752], rax
mov qword ptr [rbp + 760], 2
mov qword ptr [rbp + 784], 0
lea rax, [rbp - 96]
mov qword ptr [rbp + 768], rax
mov qword ptr [rbp + 776], 2
lea rdx, [rip + __unnamed_467]
lea rcx, [rbp + 752]
call core::panicking::panic_fmt
jmp .LBB472_1
.LBB472_31:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_36:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_38:
mov qword ptr [rbp + 1720], 0
lea rax, [rbp + 1688]
mov qword ptr [rbp - 96], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp - 88], rax
lea rcx, [rbp + 1720]
mov qword ptr [rbp - 80], rcx
mov qword ptr [rbp - 72], rax
lea rax, [rip + __unnamed_466]
mov qword ptr [rbp + 752], rax
mov qword ptr [rbp + 760], 2
mov qword ptr [rbp + 784], 0
lea rax, [rbp - 96]
mov qword ptr [rbp + 768], rax
mov qword ptr [rbp + 776], 2
lea rdx, [rip + __unnamed_467]
lea rcx, [rbp + 752]
call core::panicking::panic_fmt
jmp .LBB472_1
.LBB472_102:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_58:
mov ecx, 2
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_72:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_65:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_52:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_93:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_86:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_96:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_79:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_100:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_98:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_143:
mov ecx, 2
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_118:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_137:
lea rcx, [rip + __unnamed_713]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_116:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_122:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_150:
lea rcx, [rip + __unnamed_714]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_148:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_114:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_120:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_146:
lea rcx, [rip + __unnamed_715]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_130:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_112:
lea rcx, [rip + __unnamed_716]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_124:
lea rcx, [rip + __unnamed_717]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_154:
lea rcx, [rip + __unnamed_718]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_152:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_109:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_135:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_133:
lea rcx, [rip + __unnamed_719]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_157:
mov ecx, 1
xor edx, edx
call bytes::panic_advance
jmp .LBB472_1
.LBB472_159:
lea rcx, [rip + __unnamed_720]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_198:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_201:
lea rcx, [rip + __unnamed_721]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_166:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_173:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_176:
lea rcx, [rip + __unnamed_722]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_182:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_189:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_192:
lea rcx, [rip + __unnamed_723]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_208:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_211:
lea rcx, [rip + __unnamed_724]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_221:
lea rcx, [rip + __unnamed_725]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_218:
mov ecx, 4
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_240:
lea rcx, [rip + __unnamed_726]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_237:
mov ecx, 2
mov rdx, rsi
call bytes::panic_advance
jmp .LBB472_1
.LBB472_231:
lea rcx, [rip + __unnamed_727]
call core::option::unwrap_failed
jmp .LBB472_1
.LBB472_228:
mov ecx, 2
mov rdx, rsi
call bytes::panic_advance
.LBB472_1:
ud2
.long ($cppxdata$slp_parse::events::post_frame::unpack_frames)@IMGREL
mov qword ptr [rsp + 16], rdx
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 72
lea rbp, [rdx + 128]
movdqa xmmword ptr [rsp + 32], xmm7
movdqa xmmword ptr [rsp + 48], xmm6
lea rcx, [rbp + 1616]
call core::ptr::drop_in_place<std::collections::hash::map::HashMap<u8,(slp_parse::events::post_frame::PostFrames,core::option::Option<slp_parse::events::post_frame::PostFrames>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u8>>>>
mov rax, qword ptr [rbp + 1920]
lock dec qword ptr [rax]
jne .LBB472_4
#MEMBARRIER
lea rcx, [rbp + 1920]
call alloc::sync::Arc<T,A>::drop_slow
.LBB472_4:
mov r8, qword ptr [rbp + 1736]
lea rcx, [r8 + 24]
mov rax, qword ptr [r8]
mov rdx, qword ptr [r8 + 8]
mov r8, qword ptr [r8 + 16]
call qword ptr [rax + 32]
movaps xmm6, xmmword ptr [rsp + 48]
movaps xmm7, xmmword ptr [rsp + 32]
add rsp, 72
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret Branch after rebaseslp_parse::events::post_frame::unpack_frames:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 1928
lea rbp, [rsp + 128]
movdqa xmmword ptr [rbp + 1776], xmm7
movdqa xmmword ptr [rbp + 1760], xmm6
mov qword ptr [rbp + 1752], -2
mov qword ptr [rbp + 1712], rdx
mov qword ptr [rbp + 1704], rcx
mov rdx, qword ptr [rbp + 1904]
movups xmm0, xmmword ptr [rip + __unnamed_639+16]
movaps xmmword ptr [rbp + 1648], xmm0
movdqu xmm0, xmmword ptr [rip + __unnamed_639]
movdqa xmmword ptr [rbp + 1632], xmm0
lock inc qword ptr [rdx]
jle .LBB471_1
mov rsi, r9
mov rdi, r8
lea rcx, [rbp + 760]
mov qword ptr [rbp + 1728], rdx
call slp_parse::events::post_frame::PostFrames::new
movzx r15d, word ptr [rbp + 1912]
lea r14, [rbp - 88]
lea rdx, [rbp + 760]
mov r8d, 424
mov rcx, r14
call memcpy
mov qword ptr [rbp + 336], 0
lea rcx, [rbp + 760]
lea rdx, [rbp + 1632]
mov r8d, r15d
mov r9, r14
call hashbrown::map::HashMap<K,V,S,A>::insert
cmp qword ptr [rbp + 760], 0
je .LBB471_10
lea rcx, [rbp + 760]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
cmp qword ptr [rbp + 1184], 0
je .LBB471_10
lea rcx, [rbp + 1184]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
.LBB471_10:
mov rdx, qword ptr [rbp + 1728]
lock inc qword ptr [rdx]
jle .LBB471_1
lea rcx, [rbp + 760]
call slp_parse::events::post_frame::PostFrames::new
shr r15d, 8
lea r12, [rbp - 88]
lea rdx, [rbp + 760]
mov r8d, 424
mov rcx, r12
call memcpy
mov qword ptr [rbp + 336], 0
lea rcx, [rbp + 760]
lea rdx, [rbp + 1632]
mov r8d, r15d
mov r9, r12
call hashbrown::map::HashMap<K,V,S,A>::insert
cmp qword ptr [rbp + 760], 0
je .LBB471_16
lea rcx, [rbp + 760]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
cmp qword ptr [rbp + 1184], 0
je .LBB471_16
lea rcx, [rbp + 1184]
call core::ptr::drop_in_place<slp_parse::events::post_frame::PostFrames>
.LBB471_16:
mov r15, rsi
and r15, -2
mov rbx, qword ptr [rbp + 1712]
mov r13, qword ptr [rbx + 16]
mov rcx, qword ptr [rbp + 1728]
mov rax, qword ptr [rcx + 184]
mov qword ptr [rbp + 1664], rax
movzx edx, byte ptr [rcx + 192]
movzx ecx, byte ptr [rcx + 193]
xor eax, eax
cmp dl, 2
sete al
test cl, cl
sete r8b
xor r9d, r9d
cmp cl, 5
setb r9b
xor r10d, r10d
cmp cl, 8
setb r10b
xor r11d, r11d
cmp cl, 11
setb r11b
xor esi, esi
cmp cl, 16
setb sil
and r8b, al
mov byte ptr [rbp + 1743], r8b
mov byte ptr [rbp + 1742], dl
cmp dl, 3
cmovne r9d, eax
mov dword ptr [rbp + 1672], r9d
cmovne r10d, eax
mov dword ptr [rbp + 1676], r10d
cmovne r11d, eax
mov dword ptr [rbp + 1680], r11d
cmovne esi, eax
mov dword ptr [rbp + 1684], esi
pxor xmm6, xmm6
pcmpeqd xmm7, xmm7
mov r14, rdi
jmp .LBB471_17
.LBB471_23:
mov r14, qword ptr [rbp + 1624]
.LBB471_17:
test r15, r15
je .LBB471_18
lea rax, [r14 + 16]
mov qword ptr [rbp + 1624], rax
add r15, -2
xor r9d, r9d
mov qword ptr [rbp + 1608], r14
mov qword ptr [rbp + 1616], r15
.LBB471_22:
cmp r9, 16
je .LBB471_23
mov rax, qword ptr [rbx + 16]
mov rcx, rax
sub rcx, r13
add rcx, qword ptr [r14 + r9]
mov qword ptr [rbp + 1688], rcx
mov rdx, rax
sub rdx, rcx
jb .LBB471_25
mov qword ptr [rbx + 16], rdx
add rcx, qword ptr [rbx + 8]
mov qword ptr [rbx + 8], rcx
cmp rdx, 3
jbe .LBB471_27
add r9, 8
mov edi, dword ptr [rcx]
bswap edi
lea rax, [rdx - 4]
mov qword ptr [rbx + 16], rax
lea r8, [rcx + 4]
mov qword ptr [rbx + 8], r8
lea r8d, [rdi + 123]
movsxd rsi, r8d
mov qword ptr [rbp + 1744], rsi
mov r8, qword ptr [rbp + 1664]
cmp r8, rsi
je .LBB471_22
inc r8
cmp r8, rsi
je .LBB471_22
mov qword ptr [rbp + 1696], r9
test rax, rax
je .LBB471_31
movzx eax, byte ptr [rcx + 4]
lea r8, [rcx + 5]
mov r9, rdx
mov qword ptr [rbp + 1688], 1
add r9, -5
mov qword ptr [rbx + 16], r9
mov qword ptr [rbx + 8], r8
je .LBB471_33
add rdx, -6
mov qword ptr [rbx + 16], rdx
add rcx, 6
mov qword ptr [rbx + 8], rcx
cmp qword ptr [rbp + 1656], 0
je .LBB471_40
movzx ecx, al
mov r12, qword ptr [rbp + 1632]
mov rdx, qword ptr [rbp + 1640]
lea r8, [r12 - 856]
xor r9d, r9d
.LBB471_36:
and rcx, rdx
movdqu xmm0, xmmword ptr [r12 + rcx]
movdqa xmm1, xmm0
pcmpeqb xmm1, xmm6
pmovmskb r10d, xmm1
.LBB471_37:
test r10w, r10w
je .LBB471_38
rep bsf r11d, r10d
lea ebx, [r10 - 1]
and ebx, r10d
add r11, rcx
and r11, rdx
neg r11
imul r15, r11, 856
mov r10d, ebx
cmp byte ptr [r8 + r15], al
jne .LBB471_37
jmp .LBB471_42
.LBB471_38:
pcmpeqb xmm0, xmm7
pmovmskb r10d, xmm0
test r10d, r10d
jne .LBB471_40
add rcx, r9
add rcx, 16
add r9, 16
jmp .LBB471_36
.LBB471_42:
mov r14, r13
mov rbx, qword ptr [r12 + r15 - 840]
mov r13, qword ptr [r12 + r15 - 832]
lea rax, [rbp + 1744]
mov qword ptr [rbp + 760], rax
lea rax, [rip + core::fmt::num::imp::<impl core::fmt::Display for usize>::fmt]
mov qword ptr [rbp + 768], rax
lea rcx, [rbp + 1664]
mov qword ptr [rbp + 776], rcx
mov qword ptr [rbp + 784], rax
lea rax, [rip + __unnamed_717]
mov qword ptr [rbp - 88], rax
mov qword ptr [rbp - 80], 2
mov qword ptr [rbp - 56], 0
lea rax, [rbp + 760]
mov qword ptr [rbp - 72], rax
mov qword ptr [rbp - 64], 2
lea rcx, [rbp - 88]
call anyhow::__private::format_err
mov qword ptr [rbp + 1720], rax
cmp r13, rsi
jbe .LBB471_44
lea rcx, [rbp + 1720]
call anyhow::error::<impl core::ops::drop::Drop for anyhow::Error>::drop
mov dword ptr [rbx + 4*rsi], edi
mov rbx, qword ptr [rbp + 1712]
mov rax, qword ptr [rbx + 16]
test rax, rax
je .LBB471_47
add r12, r15
mov rcx, qword ptr [rbx + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [rbx + 16], rax
inc rcx
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 824]
mov rcx, qword ptr [rbp + 1744]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [rbx + 16]
cmp rax, 1
jbe .LBB471_49
mov rcx, qword ptr [rbx + 8]
movzx edx, word ptr [rcx]
rol dx, 8
add rax, -2
mov qword ptr [rbx + 16], rax
add rcx, 2
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 808]
mov rcx, qword ptr [rbp + 1744]
mov word ptr [rax + 2*rcx], dx
mov rax, qword ptr [rbx + 16]
cmp rax, 3
jbe .LBB471_51
mov r13, r14
mov rdx, qword ptr [rbx + 8]
mov ecx, dword ptr [rdx]
lea r8, [rax - 4]
mov qword ptr [rbx + 16], r8
lea r9, [rdx + 4]
mov qword ptr [rbx + 8], r9
cmp r8, 3
mov r15, qword ptr [rbp + 1616]
mov r14, qword ptr [rbp + 1608]
jbe .LBB471_53
bswap ecx
mov r8d, dword ptr [rdx + 4]
bswap r8d
add rax, -8
mov qword ptr [rbx + 16], rax
add rdx, 8
mov qword ptr [rbx + 8], rdx
mov rax, qword ptr [r12 - 792]
mov rdx, qword ptr [rbp + 1744]
mov dword ptr [rax + 8*rdx], ecx
mov dword ptr [rax + 8*rdx + 4], r8d
mov rax, qword ptr [rbx + 16]
cmp rax, 3
mov r9, qword ptr [rbp + 1696]
jbe .LBB471_55
mov rcx, qword ptr [rbx + 8]
mov edx, dword ptr [rcx]
bswap edx
add rax, -4
mov qword ptr [rbx + 16], rax
add rcx, 4
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 776]
mov rcx, qword ptr [rbp + 1744]
mov dword ptr [rax + 4*rcx], edx
mov rax, qword ptr [rbx + 16]
cmp rax, 3
jbe .LBB471_57
mov rcx, qword ptr [rbx + 8]
mov edx, dword ptr [rcx]
bswap edx
add rax, -4
mov qword ptr [rbx + 16], rax
add rcx, 4
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 760]
mov rcx, qword ptr [rbp + 1744]
mov dword ptr [rax + 4*rcx], edx
mov rax, qword ptr [rbx + 16]
cmp rax, 3
jbe .LBB471_59
mov rcx, qword ptr [rbx + 8]
mov edx, dword ptr [rcx]
bswap edx
add rax, -4
mov qword ptr [rbx + 16], rax
add rcx, 4
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 744]
mov rcx, qword ptr [rbp + 1744]
mov dword ptr [rax + 4*rcx], edx
mov rax, qword ptr [rbx + 16]
test rax, rax
je .LBB471_61
mov rcx, qword ptr [rbx + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [rbx + 16], rax
inc rcx
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 728]
mov rcx, qword ptr [rbp + 1744]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [rbx + 16]
test rax, rax
je .LBB471_63
mov rcx, qword ptr [rbx + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [rbx + 16], rax
inc rcx
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 712]
mov rcx, qword ptr [rbp + 1744]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [rbx + 16]
test rax, rax
je .LBB471_65
mov rcx, qword ptr [rbx + 8]
movzx edx, byte ptr [rcx]
dec rax
mov qword ptr [rbx + 16], rax
inc rcx
mov qword ptr [rbx + 8], rcx
mov rax, qword ptr [r12 - 696]
mov rcx, qword ptr [rbp + 1744]
mov byte ptr [rax + rcx], dl
mov rax, qword ptr [rbx + 16]
test rax, rax
je .LBB471_67
mov rcx, qword ptr [rbx + 8]
dec rax
lea rdx, [rcx + 1]
movzx ecx, byte ptr [rcx]
mov qword ptr [rbx + 16], rax
mov qword ptr [rbx + 8], rdx
mov rax, qword ptr [r12 - 680]
mov rdx, qword ptr [rbp + 1744]
mov byte ptr [rax + rdx], cl
cmp byte ptr [rbp + 1742], 2
jb .LBB471_22
mov rcx, qword ptr [rbx + 16]
cmp rcx, 3
jbe .LBB471_70
mov rdx, qword ptr [rbx + 8]
mov eax, dword ptr [rdx]
add rcx, -4
mov qword ptr [rbx + 16], rcx
add rdx, 4
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 664]
test rcx, rcx
je .LBB471_72
bswap eax
mov rdx, qword ptr [rbp + 1744]
mov dword ptr [rcx + 4*rdx], eax
mov r9, qword ptr [rbx + 16]
test r9, r9
je .LBB471_74
mov r10, qword ptr [rbx + 8]
movzx eax, byte ptr [r10]
lea rcx, [r10 + 1]
mov rdx, r9
dec rdx
mov qword ptr [rbx + 16], rdx
mov qword ptr [rbx + 8], rcx
je .LBB471_76
movzx ecx, byte ptr [r10 + 1]
lea rdx, [r10 + 2]
mov r8, r9
add r8, -2
mov qword ptr [rbx + 16], r8
mov qword ptr [rbx + 8], rdx
je .LBB471_78
movzx edx, byte ptr [r10 + 2]
lea r8, [r10 + 3]
mov r11, r9
add r11, -3
mov qword ptr [rbx + 16], r11
mov qword ptr [rbx + 8], r8
je .LBB471_80
movzx r8d, byte ptr [r10 + 3]
lea r11, [r10 + 4]
mov rsi, r9
add rsi, -4
mov qword ptr [rbx + 16], rsi
mov qword ptr [rbx + 8], r11
je .LBB471_82
movzx r11d, byte ptr [r10 + 4]
add r9, -5
mov qword ptr [rbx + 16], r9
add r10, 5
mov qword ptr [rbx + 8], r10
mov r9, qword ptr [r12 - 648]
test r9, r9
je .LBB471_84
shl ecx, 8
or rcx, rax
shl edx, 16
or rdx, rcx
shl r8d, 24
or r8, rdx
shl r11, 32
or r11, r8
mov rax, qword ptr [rbp + 1744]
mov qword ptr [r9 + 8*rax], r11
mov rcx, qword ptr [rbx + 16]
cmp rcx, 3
jbe .LBB471_86
mov rdx, qword ptr [rbx + 8]
mov eax, dword ptr [rdx]
add rcx, -4
mov qword ptr [rbx + 16], rcx
add rdx, 4
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 632]
test rcx, rcx
mov r9, qword ptr [rbp + 1696]
je .LBB471_88
bswap eax
mov rdx, qword ptr [rbp + 1744]
mov dword ptr [rcx + 4*rdx], eax
mov rcx, qword ptr [rbx + 16]
test rcx, rcx
je .LBB471_90
mov rdx, qword ptr [rbx + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [rbx + 16], rcx
inc rdx
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 616]
test rcx, rcx
je .LBB471_92
mov rdx, qword ptr [rbp + 1744]
test al, al
sete byte ptr [rcx + rdx]
mov rcx, qword ptr [rbx + 16]
cmp rcx, 1
jbe .LBB471_94
mov rdx, qword ptr [rbx + 8]
movzx eax, word ptr [rdx]
add rcx, -2
mov qword ptr [rbx + 16], rcx
add rdx, 2
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 600]
test rcx, rcx
je .LBB471_96
rol ax, 8
mov rdx, qword ptr [rbp + 1744]
mov word ptr [rcx + 2*rdx], ax
mov rcx, qword ptr [rbx + 16]
test rcx, rcx
je .LBB471_98
mov rdx, qword ptr [rbx + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [rbx + 16], rcx
inc rdx
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 584]
test rcx, rcx
je .LBB471_100
mov rdx, qword ptr [rbp + 1744]
mov byte ptr [rcx + rdx], al
mov rcx, qword ptr [rbx + 16]
test rcx, rcx
je .LBB471_102
mov rdx, qword ptr [rbx + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [rbx + 16], rcx
inc rdx
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 568]
test rcx, rcx
je .LBB471_104
mov rdx, qword ptr [rbp + 1744]
mov byte ptr [rcx + rdx], al
cmp byte ptr [rbp + 1743], 0
jne .LBB471_22
mov rcx, qword ptr [rbx + 16]
test rcx, rcx
je .LBB471_107
mov rdx, qword ptr [rbx + 8]
movzx eax, byte ptr [rdx]
dec rcx
mov qword ptr [rbx + 16], rcx
inc rdx
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 552]
test rcx, rcx
je .LBB471_109
mov rdx, qword ptr [rbp + 1744]
mov byte ptr [rcx + rdx], al
cmp byte ptr [rbp + 1672], 0
jne .LBB471_22
mov rdx, qword ptr [rbx + 16]
cmp rdx, 3
jbe .LBB471_112
mov r8, qword ptr [rbx + 8]
mov ecx, dword ptr [r8]
lea rax, [rdx - 4]
mov qword ptr [rbx + 16], rax
lea r9, [r8 + 4]
mov qword ptr [rbx + 8], r9
cmp rax, 3
jbe .LBB471_114
mov eax, dword ptr [r8 + 4]
add rdx, -8
mov qword ptr [rbx + 16], rdx
add r8, 8
mov qword ptr [rbx + 8], r8
mov rdx, qword ptr [r12 - 536]
test rdx, rdx
je .LBB471_116
bswap ecx
bswap eax
mov r8, qword ptr [rbp + 1744]
mov dword ptr [rdx + 8*r8], ecx
mov dword ptr [rdx + 8*r8 + 4], eax
mov rdx, qword ptr [rbx + 16]
cmp rdx, 3
jbe .LBB471_118
mov r9, qword ptr [rbx + 8]
mov ecx, dword ptr [r9]
lea r8, [rdx - 4]
mov qword ptr [rbx + 16], r8
lea r10, [r9 + 4]
mov qword ptr [rbx + 8], r10
cmp r8, 3
jbe .LBB471_120
mov r8d, dword ptr [r9 + 4]
add rdx, -8
mov qword ptr [rbx + 16], rdx
add r9, 8
mov qword ptr [rbx + 8], r9
mov rdx, qword ptr [r12 - 520]
test rdx, rdx
je .LBB471_122
bswap ecx
bswap r8d
mov r9, qword ptr [rbp + 1744]
mov dword ptr [rdx + 8*r9], ecx
mov dword ptr [rdx + 8*r9 + 4], r8d
mov rdx, qword ptr [rbx + 16]
cmp rdx, 3
jbe .LBB471_124
mov r8, qword ptr [rbx + 8]
mov ecx, dword ptr [r8]
add rdx, -4
mov qword ptr [rbx + 16], rdx
add r8, 4
mov qword ptr [rbx + 8], r8
mov rdx, qword ptr [r12 - 504]
test rdx, rdx
mov r9, qword ptr [rbp + 1696]
je .LBB471_126
bswap ecx
mov r8, qword ptr [rbp + 1744]
mov dword ptr [rdx + 8*r8], ecx
mov dword ptr [rdx + 8*r8 + 4], eax
cmp byte ptr [rbp + 1676], 0
jne .LBB471_22
mov rcx, qword ptr [rbx + 16]
cmp rcx, 3
jbe .LBB471_129
mov rdx, qword ptr [rbx + 8]
mov eax, dword ptr [rdx]
add rcx, -4
mov qword ptr [rbx + 16], rcx
add rdx, 4
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 488]
test rcx, rcx
je .LBB471_131
bswap eax
mov rdx, qword ptr [rbp + 1744]
mov dword ptr [rcx + 4*rdx], eax
cmp byte ptr [rbp + 1680], 0
jne .LBB471_22
mov rcx, qword ptr [rbx + 16]
cmp rcx, 3
jbe .LBB471_134
mov rdx, qword ptr [rbx + 8]
mov eax, dword ptr [rdx]
add rcx, -4
mov qword ptr [rbx + 16], rcx
add rdx, 4
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 472]
test rcx, rcx
je .LBB471_136
bswap eax
mov rdx, qword ptr [rbp + 1744]
mov dword ptr [rcx + 4*rdx], eax
cmp byte ptr [rbp + 1684], 0
jne .LBB471_22
mov rcx, qword ptr [rbx + 16]
cmp rcx, 1
jbe .LBB471_139
mov rdx, qword ptr [rbx + 8]
movzx eax, word ptr [rdx]
add rcx, -2
mov qword ptr [rbx + 16], rcx
add rdx, 2
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 456]
test rcx, rcx
je .LBB471_141
rol ax, 8
mov rdx, qword ptr [rbp + 1744]
mov word ptr [rcx + 2*rdx], ax
mov rcx, qword ptr [rbx + 16]
cmp rcx, 1
jbe .LBB471_143
mov rdx, qword ptr [rbx + 8]
movzx eax, word ptr [rdx]
add rcx, -2
mov qword ptr [rbx + 16], rcx
add rdx, 2
mov qword ptr [rbx + 8], rdx
mov rcx, qword ptr [r12 - 440]
test rcx, rcx
je .LBB471_145
rol ax, 8
mov rdx, qword ptr [rbp + 1744]
mov word ptr [rcx + 2*rdx], ax
jmp .LBB471_22
.LBB471_44:
mov rcx, qword ptr [rbp + 1704]
mov qword ptr [rcx + 8], rax
mov qword ptr [rcx], 0
lea rcx, [rbp + 1632]
call core::ptr::drop_in_place<std::collections::hash::map::HashMap<u8,(slp_parse::events::post_frame::PostFrames,core::option::Option<slp_parse::events::post_frame::PostFrames>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u8>>>>
mov rax, qword ptr [rbp + 1728]
lock dec qword ptr [rax]
mov rbx, qword ptr [rbp + 1712]
jne .LBB471_20
.LBB471_19:
#MEMBARRIER
lea rcx, [rbp + 1904]
call alloc::sync::Arc<T,A>::drop_slow
.LBB471_20:
lea rcx, [rbx + 24]
mov rax, qword ptr [rbx]
mov rdx, qword ptr [rbx + 8]
mov r8, qword ptr [rbx + 16]
call qword ptr [rax + 32]
mov rax, qword ptr [rbp + 1704]
movaps xmm6, xmmword ptr [rbp + 1760]
movaps xmm7, xmmword ptr [rbp + 1776]
add rsp, 1928
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
.LBB471_18:
movdqa xmm0, xmmword ptr [rbp + 1632]
movdqa xmm1, xmmword ptr [rbp + 1648]
mov rax, qword ptr [rbp + 1704]
movdqu xmmword ptr [rax + 16], xmm1
movdqu xmmword ptr [rax], xmm0
mov rax, qword ptr [rbp + 1728]
lock dec qword ptr [rax]
je .LBB471_19
jmp .LBB471_20
.LBB471_40:
lea rcx, [rip + __unnamed_718]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_27:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_682]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_25:
mov qword ptr [rbp + 1720], rax
lea rax, [rbp + 1688]
mov qword ptr [rbp + 760], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp + 768], rax
lea rcx, [rbp + 1720]
mov qword ptr [rbp + 776], rcx
mov qword ptr [rbp + 784], rax
lea rax, [rip + __unnamed_466]
mov qword ptr [rbp - 88], rax
mov qword ptr [rbp - 80], 2
mov qword ptr [rbp - 56], 0
lea rax, [rbp + 760]
mov qword ptr [rbp - 72], rax
mov qword ptr [rbp - 64], 2
lea rdx, [rip + __unnamed_467]
lea rcx, [rbp - 88]
call core::panicking::panic_fmt
jmp .LBB471_1
.LBB471_31:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_33:
mov qword ptr [rbp + 1720], 0
lea rax, [rbp + 1688]
mov qword ptr [rbp + 760], rax
lea rax, [rip + core::fmt::num::<impl core::fmt::Debug for usize>::fmt]
mov qword ptr [rbp + 768], rax
lea rcx, [rbp + 1720]
mov qword ptr [rbp + 776], rcx
mov qword ptr [rbp + 784], rax
lea rax, [rip + __unnamed_466]
mov qword ptr [rbp - 88], rax
mov qword ptr [rbp - 80], 2
mov qword ptr [rbp - 56], 0
lea rax, [rbp + 760]
mov qword ptr [rbp - 72], rax
mov qword ptr [rbp - 64], 2
lea rdx, [rip + __unnamed_467]
lea rcx, [rbp - 88]
call core::panicking::panic_fmt
jmp .LBB471_1
.LBB471_57:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_53:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_65:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_51:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_47:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_67:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_49:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_648]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_63:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_59:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_55:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_61:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_80:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_96:
lea rcx, [rip + __unnamed_719]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_76:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_100:
lea rcx, [rip + __unnamed_720]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_94:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_648]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_72:
lea rcx, [rip + __unnamed_721]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_92:
lea rcx, [rip + __unnamed_722]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_70:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_78:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_98:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_74:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_102:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_86:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_84:
lea rcx, [rip + __unnamed_723]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_90:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_104:
lea rcx, [rip + __unnamed_724]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_88:
lea rcx, [rip + __unnamed_725]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_82:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_107:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_642]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_109:
lea rcx, [rip + __unnamed_726]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_112:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_116:
lea rcx, [rip + __unnamed_727]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_122:
lea rcx, [rip + __unnamed_728]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_126:
lea rcx, [rip + __unnamed_729]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_124:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_120:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_118:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_114:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_129:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_131:
lea rcx, [rip + __unnamed_730]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_136:
lea rcx, [rip + __unnamed_731]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_134:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_469]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_139:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_648]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_143:
lea rcx, [rip + __unnamed_468]
lea r8, [rip + __unnamed_648]
mov edx, 34
call core::panicking::panic
jmp .LBB471_1
.LBB471_145:
lea rcx, [rip + __unnamed_732]
call core::option::unwrap_failed
jmp .LBB471_1
.LBB471_141:
lea rcx, [rip + __unnamed_733]
call core::option::unwrap_failed
.LBB471_1:
ud2
.long ($cppxdata$slp_parse::events::post_frame::unpack_frames)@IMGREL
mov qword ptr [rsp + 16], rdx
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 72
lea rbp, [rdx + 128]
movdqa xmmword ptr [rsp + 32], xmm7
movdqa xmmword ptr [rsp + 48], xmm6
lea rcx, [rbp + 1632]
call core::ptr::drop_in_place<std::collections::hash::map::HashMap<u8,(slp_parse::events::post_frame::PostFrames,core::option::Option<slp_parse::events::post_frame::PostFrames>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u8>>>>
mov rax, qword ptr [rbp + 1728]
lock dec qword ptr [rax]
jne .LBB471_4
#MEMBARRIER
lea rcx, [rbp + 1904]
call alloc::sync::Arc<T,A>::drop_slow
.LBB471_4:
mov r8, qword ptr [rbp + 1712]
lea rcx, [r8 + 24]
mov rax, qword ptr [r8]
mov rdx, qword ptr [r8 + 8]
mov r8, qword ptr [r8 + 16]
call qword ptr [rax + 32]
movaps xmm6, xmmword ptr [rsp + 48]
movaps xmm7, xmmword ptr [rsp + 32]
add rsp, 72
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret |
Without this change, there's quite a bit of dead code generated when using these functions with a Bytes object. This is because:
These functions are nearly always inlined in their entirety (including the call to
self.copy_to_slice
)The entire conditional:
seems to be meant to handle non-contiguous memory. Bytes is guaranteed to be contiguous, so whenever the
else
block is triggered it immediately panics onself.copy_to_slice
's first assert statement:assert!(self.remaining() >= dst.len());
Due to the above, the generated assembly for multiple sequential
bytes.get_x
calls is pretty messy and it doesn't look like the compiler is having a fun time with it. This simple change removes the conditional and just has a raw panic on aNone
being returned fromslice.get
, cleaning up the generated code a lot and allowing for a lot more optimizations (from what i observed).I also copied the
Buf
get_u16
tests over to the bytes tests to confirm the behavior still works as expected.