-
Notifications
You must be signed in to change notification settings - Fork 171
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat/refactor(rlp): improve implementations
- Loading branch information
Showing
12 changed files
with
922 additions
and
446 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,218 @@ | ||
.section .text.alloy_rlp::header::Header::decode_bytes,"ax",@progbits | ||
.globl alloy_rlp::header::Header::decode_bytes | ||
.p2align 4, 0x90 | ||
.type alloy_rlp::header::Header::decode_bytes,@function | ||
alloy_rlp::header::Header::decode_bytes: | ||
|
||
.cfi_startproc | ||
push rbp | ||
.cfi_def_cfa_offset 16 | ||
push r15 | ||
.cfi_def_cfa_offset 24 | ||
push r14 | ||
.cfi_def_cfa_offset 32 | ||
push r13 | ||
.cfi_def_cfa_offset 40 | ||
push r12 | ||
.cfi_def_cfa_offset 48 | ||
push rbx | ||
.cfi_def_cfa_offset 56 | ||
push rax | ||
.cfi_def_cfa_offset 64 | ||
.cfi_offset rbx, -56 | ||
.cfi_offset r12, -48 | ||
.cfi_offset r13, -40 | ||
.cfi_offset r14, -32 | ||
.cfi_offset r15, -24 | ||
.cfi_offset rbp, -16 | ||
|
||
mov r14, qword ptr [rsi + 8] | ||
|
||
mov eax, 2 | ||
|
||
mov rbx, rdi | ||
|
||
test r14, r14 | ||
je .LBB12_20 | ||
|
||
mov r15, rsi | ||
mov rsi, qword ptr [rsi] | ||
|
||
mov ebp, edx | ||
|
||
movzx r12d, byte ptr [rsi] | ||
|
||
test r12b, r12b | ||
js .LBB12_2 | ||
|
||
.LBB12_17: | ||
mov edi, 1 | ||
|
||
test bpl, bpl | ||
je .LBB12_8 | ||
|
||
.LBB12_18: | ||
movzx eax, bpl | ||
xor rax, 7 | ||
mov qword ptr [rbx], rax | ||
jmp .LBB12_21 | ||
|
||
.LBB12_2: | ||
cmp r12b, -72 | ||
jae .LBB12_3 | ||
|
||
inc rsi | ||
|
||
dec r14 | ||
|
||
xor r12, 128 | ||
|
||
mov qword ptr [r15], rsi | ||
mov qword ptr [r15 + 8], r14 | ||
|
||
cmp r12b, 1 | ||
jne .LBB12_14 | ||
|
||
test r14, r14 | ||
je .LBB12_20 | ||
|
||
cmp byte ptr [rsi], 0 | ||
mov eax, 3 | ||
jns .LBB12_20 | ||
jmp .LBB12_17 | ||
|
||
.LBB12_3: | ||
inc rsi | ||
lea ecx, [r12 + 8] | ||
dec r14 | ||
mov qword ptr [r15], rsi | ||
mov qword ptr [r15 + 8], r14 | ||
cmp cl, -56 | ||
jae .LBB12_4 | ||
|
||
cmp r12b, -8 | ||
|
||
mov edx, r12d | ||
setae cl | ||
|
||
shl cl, 6 | ||
|
||
sub dl, cl | ||
add dl, 73 | ||
|
||
movzx edx, dl | ||
|
||
sub r14, rdx | ||
|
||
jb .LBB12_20 | ||
|
||
lea r13, [rsi + rdx] | ||
|
||
mov qword ptr [rsp], 0 | ||
|
||
mov qword ptr [r15], r13 | ||
mov qword ptr [r15 + 8], r14 | ||
|
||
cmp byte ptr [rsi], 0 | ||
je .LBB12_19 | ||
|
||
mov rdi, rsp | ||
|
||
sub rdi, rdx | ||
add rdi, 8 | ||
|
||
call qword ptr [rip + memcpy@GOTPCREL] | ||
|
||
movbe rdi, qword ptr [rsp] | ||
|
||
mov eax, 4 | ||
|
||
cmp rdi, 56 | ||
jb .LBB12_20 | ||
|
||
cmp r12b, -8 | ||
mov rsi, r13 | ||
setae cl | ||
|
||
mov eax, 2 | ||
cmp r14, rdi | ||
jae .LBB12_6 | ||
jmp .LBB12_20 | ||
|
||
.LBB12_14: | ||
xor ecx, ecx | ||
mov rdi, r12 | ||
|
||
mov eax, 2 | ||
cmp r14, rdi | ||
jae .LBB12_6 | ||
jmp .LBB12_20 | ||
|
||
.LBB12_4: | ||
add r12b, 64 | ||
|
||
mov cl, 1 | ||
movzx edi, r12b | ||
|
||
mov eax, 2 | ||
|
||
cmp r14, rdi | ||
jb .LBB12_20 | ||
|
||
.LBB12_6: | ||
test cl, cl | ||
setne al | ||
|
||
xor al, bpl | ||
|
||
jne .LBB12_18 | ||
|
||
cmp r14, rdi | ||
jb .LBB12_22 | ||
|
||
.LBB12_8: | ||
lea rax, [rsi + rdi] | ||
|
||
sub r14, rdi | ||
|
||
mov qword ptr [rbx + 8], rsi | ||
mov qword ptr [rbx + 16], rdi | ||
mov qword ptr [rbx], 10 | ||
|
||
mov qword ptr [r15], rax | ||
mov qword ptr [r15 + 8], r14 | ||
jmp .LBB12_21 | ||
|
||
.LBB12_19: | ||
mov eax, 1 | ||
|
||
.LBB12_20: | ||
mov qword ptr [rbx], rax | ||
mov qword ptr [rbx + 8], 0 | ||
|
||
.LBB12_21: | ||
mov rax, rbx | ||
add rsp, 8 | ||
.cfi_def_cfa_offset 56 | ||
pop rbx | ||
.cfi_def_cfa_offset 48 | ||
pop r12 | ||
.cfi_def_cfa_offset 40 | ||
pop r13 | ||
.cfi_def_cfa_offset 32 | ||
pop r14 | ||
.cfi_def_cfa_offset 24 | ||
pop r15 | ||
.cfi_def_cfa_offset 16 | ||
pop rbp | ||
.cfi_def_cfa_offset 8 | ||
ret | ||
|
||
.LBB12_22: | ||
.cfi_def_cfa_offset 64 | ||
lea rdx, [rip + .Lanon.46cbeb1407b6e7c335190fff0c774a14.13] | ||
mov rsi, r14 | ||
call qword ptr [rip + core::slice::index::slice_start_index_len_fail@GOTPCREL] | ||
|
||
ud2 | ||
|
Oops, something went wrong.