Skip to content

Commit

Permalink
feat/refactor(rlp): improve implementations
Browse files Browse the repository at this point in the history
  • Loading branch information
DaniPopes committed Jul 9, 2023
1 parent 1c2373e commit e25552c
Show file tree
Hide file tree
Showing 12 changed files with 922 additions and 446 deletions.
218 changes: 218 additions & 0 deletions a.asm
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

Loading

0 comments on commit e25552c

Please sign in to comment.