Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save petar-dambovaliev/e7d4867e2483b3aab427232915b9c3e6 to your computer and use it in GitHub Desktop.
Save petar-dambovaliev/e7d4867e2483b3aab427232915b9c3e6 to your computer and use it in GitHub Desktop.
matchit::foo
matchit::foo:
push rbp
mov rbp, rsp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 360
mov rax, qword, ptr, [rip, +, L___unnamed_27]
mov qword, ptr, [rbp, -, 272], 0
mov qword, ptr, [rbp, -, 280], 0
mov qword, ptr, [rbp, -, 256], 0
mov qword, ptr, [rbp, -, 248], 0
mov rcx, qword, ptr, [rip, +, L___unnamed_28]
mov qword, ptr, [rbp, -, 232], 0
mov qword, ptr, [rbp, -, 224], 0
mov qword, ptr, [rbp, -, 288], rax
mov word, ptr, [rbp, -, 212], 768
mov qword, ptr, [rbp, -, 264], rax
mov qword, ptr, [rbp, -, 240], rcx
mov byte, ptr, [rbp, -, 210], 0
mov dword, ptr, [rbp, -, 216], 0
mov qword, ptr, [rbp, -, 208], 0
lea rax, [rip, +, l___unnamed_11]
mov qword, ptr, [rbp, -, 200], rax
mov qword, ptr, [rbp, -, 192], 0
mov qword, ptr, [rbp, -, 184], rax
mov qword, ptr, [rbp, -, 176], 0
mov qword, ptr, [rbp, -, 168], rax
mov qword, ptr, [rbp, -, 160], 0
mov qword, ptr, [rbp, -, 152], rax
mov qword, ptr, [rbp, -, 144], 0
mov qword, ptr, [rbp, -, 136], rax
mov qword, ptr, [rbp, -, 128], 0
mov qword, ptr, [rbp, -, 120], rax
mov qword, ptr, [rbp, -, 112], 0
mov qword, ptr, [rbp, -, 104], 0
mov r15d, 12
lea r9, [rip, +, l___unnamed_29]
lea r12, [rbp, -, 288]
xor r13d, r13d
jmp LBB31_3
LBB31_1:
add r12, 48
add r9, rbx
xor edi, edi
LBB31_2:
mov rbx, qword, ptr, [r12]
lea r14, [rdi, +, 4*rdi]
shl r14, 4
lea r12, [rbx, +, r14]
mov r13, qword, ptr, [rbx, +, r14, +, 16]
cmp r15, r13
jbe LBB31_44
LBB31_3:
mov rdi, qword, ptr, [r12]
mov qword, ptr, [rbp, -, 48], r9
mov rsi, r9
mov rdx, r13
call _memcmp
test eax, eax
jne LBB31_73
test r13, r13
mov r9, qword, ptr, [rbp, -, 48]
je LBB31_7
cmp r15, r13
je LBB31_7
cmp byte, ptr, [r9, +, r13], -65
jle LBB31_71
LBB31_7:
add r9, r13
mov r14, r15
sub r14, r13
cmp byte, ptr, [r12, +, 76], 0
je LBB31_27
cmp qword, ptr, [r12, +, 64], 0
je LBB31_63
mov r12, qword, ptr, [r12, +, 48]
movzx eax, byte, ptr, [r12, +, 77]
cmp rax, 1
jne LBB31_48
mov rbx, r14
cmp r15, r13
je LBB31_15
xor ebx, ebx
LBB31_12:
cmp byte, ptr, [r9, +, rbx], 47
je LBB31_15
inc rbx
cmp r14, rbx
jne LBB31_12
mov rbx, r14
LBB31_15:
mov qword, ptr, [rbp, -, 48], r9
mov rdx, qword, ptr, [r12, +, 16]
test rdx, rdx
je LBB31_68
mov rsi, qword, ptr, [r12]
inc rsi
dec rdx
lea rdi, [rbp, -, 72]
call core::str::converts::from_utf8
cmp dword, ptr, [rbp, -, 72], 1
je LBB31_69
mov rsi, qword, ptr, [rbp, -, 64]
mov rdx, qword, ptr, [rbp, -, 56]
test rbx, rbx
sete al
cmp r14, rbx
sete r13b
or r13b, al
mov rcx, qword, ptr, [rbp, -, 48]
jne LBB31_21
cmp r14, rbx
jbe LBB31_66
cmp byte, ptr, [rcx, +, rbx], -65
jle LBB31_66
LBB31_21:
lea rdi, [rbp, -, 208]
mov r8, rbx
call matchit::params::Params::push
mov r15, r14
sub r15, rbx
jbe LBB31_54
cmp qword, ptr, [r12, +, 64], 0
je LBB31_70
test r13b, r13b
mov r9, qword, ptr, [rbp, -, 48]
jne LBB31_1
cmp byte, ptr, [r9, +, rbx], -65
jg LBB31_1
jmp LBB31_26
LBB31_27:
test r14, r14
je LBB31_64
mov al, byte, ptr, [r9]
mov rcx, qword, ptr, [r12, +, 40]
test rcx, rcx
je LBB31_32
mov rdx, qword, ptr, [r12, +, 24]
xor edi, edi
LBB31_30:
cmp byte, ptr, [rdx, +, rdi], al
je LBB31_42
inc rdi
cmp rcx, rdi
jne LBB31_30
jmp LBB31_32
LBB31_42:
mov rsi, qword, ptr, [r12, +, 64]
cmp rsi, rdi
jbe LBB31_65
add r12, 48
mov r15, r14
jmp LBB31_2
LBB31_44:
mov qword, ptr, [rbp, -, 48], r9
jne LBB31_73
mov rsi, qword, ptr, [r12]
mov rdi, r9
mov rdx, r15
call _memcmp
test eax, eax
jne LBB31_72
cmp byte, ptr, [rbx, +, r14, +, 78], 1
jne LBB31_81
lea r12, [rbx, +, r14, +, 79]
jmp LBB31_56
LBB31_48:
cmp eax, 2
jne LBB31_67
mov rdx, qword, ptr, [r12, +, 16]
cmp rdx, 1
jbe LBB31_89
mov rbx, r9
mov rsi, qword, ptr, [r12]
add rsi, 2
add rdx, -2
lea rdi, [rbp, -, 72]
call core::str::converts::from_utf8
cmp dword, ptr, [rbp, -, 72], 1
je LBB31_90
mov rcx, rbx
mov rsi, qword, ptr, [rbp, -, 64]
mov rdx, qword, ptr, [rbp, -, 56]
lea rdi, [rbp, -, 208]
mov r8, r14
call matchit::params::Params::push
cmp byte, ptr, [r12, +, 78], 1
je LBB31_55
jmp LBB31_35
LBB31_54:
cmp byte, ptr, [r12, +, 78], 1
jne LBB31_91
LBB31_55:
add r12, 79
LBB31_56:
lea rax, [rbp, -, 400]
lea rsi, [rbp, -, 208]
mov ecx, 14
mov rdi, rax
rep movsq, es:[rdi], [rsi]
lea rdi, [rbp, -, 200]
mov ecx, 14
mov rsi, rax
rep movsq, es:[rdi], [rsi]
mov qword, ptr, [rbp, -, 208], r12
mov bl, byte, ptr, [r12]
lea rdi, [rbp, -, 288]
call core::ptr::drop_in_place<matchit::tree::Node<bool>>
cmp qword, ptr, [rbp, -, 200], 0
je LBB31_62
mov rsi, qword, ptr, [rbp, -, 184]
test rsi, rsi
je LBB31_62
mov rdi, qword, ptr, [rbp, -, 192]
test rdi, rdi
je LBB31_62
shl rsi, 5
je LBB31_62
mov edx, 8
call ___rust_dealloc
LBB31_62:
mov eax, ebx
add rsp, 360
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
LBB31_63:
lea rdx, [rip, +, l___unnamed_30]
xor edi, edi
xor esi, esi
call core::panicking::panic_bounds_check
jmp LBB31_107
LBB31_64:
lea rdx, [rip, +, l___unnamed_31]
xor edi, edi
xor esi, esi
call core::panicking::panic_bounds_check
jmp LBB31_107
LBB31_65:
lea rdx, [rip, +, l___unnamed_32]
call core::panicking::panic_bounds_check
jmp LBB31_107
LBB31_32:
cmp r14, 1
jne LBB31_35
cmp al, 47
jne LBB31_35
LBB31_34:
mov dl, 1
cmp byte, ptr, [r12, +, 78], 0
jne LBB31_36
LBB31_35:
xor edx, edx
LBB31_36:
cmp qword, ptr, [rbp, -, 208], 0
je LBB31_41
mov rsi, qword, ptr, [rbp, -, 192]
test rsi, rsi
je LBB31_41
mov rdi, qword, ptr, [rbp, -, 200]
test rdi, rdi
je LBB31_41
shl rsi, 5
je LBB31_41
mov ebx, edx
mov edx, 8
call ___rust_dealloc
mov edx, ebx
LBB31_41:
mov byte, ptr, [rbp, -, 208], dl
lea rdi, [rip, +, l___unnamed_33]
lea rcx, [rip, +, l___unnamed_34]
lea r8, [rip, +, l___unnamed_35]
lea rdx, [rbp, -, 208]
mov esi, 43
call core::result::unwrap_failed
jmp LBB31_107
LBB31_66:
lea r8, [rip, +, l___unnamed_36]
mov rdi, rcx
mov rsi, r14
xor edx, edx
mov rcx, rbx
call core::str::slice_error_fail
jmp LBB31_107
LBB31_67:
lea rdi, [rip, +, l___unnamed_37]
lea rdx, [rip, +, l___unnamed_38]
mov esi, 40
call core::panicking::panic
jmp LBB31_107
LBB31_68:
lea rdx, [rip, +, l___unnamed_39]
mov edi, 1
xor esi, esi
call core::slice::index::slice_start_index_len_fail
jmp LBB31_107
LBB31_69:
lea rcx, [rbp, -, 64]
mov rax, qword, ptr, [rcx]
mov rcx, qword, ptr, [rcx, +, 8]
mov qword, ptr, [rbp, -, 80], rcx
mov qword, ptr, [rbp, -, 88], rax
lea rdi, [rip, +, l___unnamed_33]
lea rcx, [rip, +, l___unnamed_40]
lea r8, [rip, +, l___unnamed_41]
lea rdx, [rbp, -, 88]
mov esi, 43
call core::result::unwrap_failed
jmp LBB31_107
LBB31_70:
inc rbx
cmp r14, rbx
sete dl
jmp LBB31_36
LBB31_71:
lea r8, [rip, +, l___unnamed_42]
mov rdi, r9
mov rsi, r15
mov rdx, r13
mov rcx, r15
call core::str::slice_error_fail
jmp LBB31_107
LBB31_26:
lea r8, [rip, +, l___unnamed_43]
mov rdi, r9
mov rsi, r14
mov rdx, rbx
mov rcx, r14
call core::str::slice_error_fail
jmp LBB31_107
LBB31_72:
mov r13, r15
LBB31_73:
cmp r15, 1
jne LBB31_75
mov dl, 1
mov rax, qword, ptr, [rbp, -, 48]
cmp byte, ptr, [rax], 47
je LBB31_36
LBB31_75:
lea rax, [r15, +, 1]
cmp r13, rax
jne LBB31_35
cmp r15, r13
jae LBB31_104
dec r13
cmp r15, r13
jne LBB31_35
mov rsi, qword, ptr, [r12]
cmp byte, ptr, [rsi, +, r15], 47
jne LBB31_35
mov rdi, qword, ptr, [rbp, -, 48]
mov rdx, r15
call _memcmp
test eax, eax
je LBB31_34
jmp LBB31_35
LBB31_81:
cmp r15, 1
jne LBB31_85
mov rax, qword, ptr, [rbp, -, 48]
cmp byte, ptr, [rax], 47
jne LBB31_85
cmp byte, ptr, [rbx, +, r14, +, 76], 0
je LBB31_85
mov dl, 1
cmp byte, ptr, [rbx, +, r14, +, 77], 0
jne LBB31_36
LBB31_85:
mov rcx, qword, ptr, [rbx, +, r14, +, 40]
test rcx, rcx
je LBB31_35
mov rdx, qword, ptr, [rbx, +, r14, +, 24]
mov eax, 78
xor edi, edi
LBB31_87:
cmp byte, ptr, [rdx, +, rdi], 47
je LBB31_96
inc rdi
add rax, 80
cmp rcx, rdi
jne LBB31_87
jmp LBB31_35
LBB31_89:
lea rax, [rip, +, l___unnamed_44]
mov edi, 2
mov rsi, rdx
mov rdx, rax
call core::slice::index::slice_start_index_len_fail
jmp LBB31_107
LBB31_90:
mov rax, qword, ptr, [rbp, -, 64]
mov rcx, qword, ptr, [rbp, -, 56]
mov qword, ptr, [rbp, -, 80], rcx
mov qword, ptr, [rbp, -, 88], rax
lea rdi, [rip, +, l___unnamed_33]
lea rcx, [rip, +, l___unnamed_40]
lea r8, [rip, +, l___unnamed_45]
lea rdx, [rbp, -, 88]
mov esi, 43
call core::result::unwrap_failed
jmp LBB31_107
LBB31_91:
cmp qword, ptr, [r12, +, 64], 1
jne LBB31_35
mov rax, qword, ptr, [r12, +, 48]
mov rcx, qword, ptr, [rax, +, 16]
test rcx, rcx
je LBB31_102
cmp rcx, 1
jne LBB31_35
mov rcx, qword, ptr, [rax]
cmp byte, ptr, [rcx], 47
jne LBB31_35
mov dl, 1
cmp byte, ptr, [rax, +, 78], 0
je LBB31_35
jmp LBB31_36
LBB31_96:
mov rsi, qword, ptr, [rbx, +, r14, +, 64]
cmp rsi, rdi
jbe LBB31_105
mov rcx, qword, ptr, [rbx, +, r14, +, 48]
cmp qword, ptr, [rcx, +, rax, -, 62], 1
jne LBB31_99
mov dl, 1
cmp byte, ptr, [rcx, +, rax], 0
jne LBB31_36
LBB31_99:
cmp byte, ptr, [rcx, +, rax, -, 1], 2
jne LBB31_35
cmp qword, ptr, [rcx, +, rax, -, 14], 0
je LBB31_106
mov rax, qword, ptr, [rcx, +, rax, -, 30]
mov dl, 1
cmp byte, ptr, [rax, +, 78], 0
je LBB31_35
jmp LBB31_36
LBB31_102:
cmp qword, ptr, [rax, +, 40], 1
jne LBB31_35
mov rax, qword, ptr, [rax, +, 24]
mov dl, 1
cmp byte, ptr, [rax], 47
jne LBB31_35
jmp LBB31_36
LBB31_104:
lea rdx, [rip, +, l___unnamed_46]
mov rdi, r15
mov rsi, r13
call core::panicking::panic_bounds_check
jmp LBB31_107
LBB31_105:
lea rdx, [rip, +, l___unnamed_47]
call core::panicking::panic_bounds_check
jmp LBB31_107
LBB31_106:
lea rdx, [rip, +, l___unnamed_48]
xor edi, edi
xor esi, esi
call core::panicking::panic_bounds_check
LBB31_107:
ud2
LBB31_108:
mov rbx, rax
lea rdi, [rbp, -, 208]
call core::ptr::drop_in_place<matchit::tree::Match<&bool>>
mov rdi, rbx
call __Unwind_Resume
LBB31_109:
jmp LBB31_112
LBB31_110:
mov rbx, rax
jmp LBB31_113
LBB31_111:
LBB31_112:
mov rbx, rax
lea rdi, [rbp, -, 208]
call core::ptr::drop_in_place<matchit::params::Params>
LBB31_113:
lea rdi, [rbp, -, 288]
call core::ptr::drop_in_place<matchit::tree::Node<bool>>
mov rdi, rbx
call __Unwind_Resume
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment