Function at 0x140027bbd
Capabilities:
Get common file path

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x168
mov qword [rsp + 0x118], rcx
movabs rdi, 0x8000000000000000
mov r12, qword [r8 + 8]
mov qword [rsp + 0x110], r8
imul r14, qword [r8 + 0x10], 0x48
add r14, r12
lea r15, [rsp + 0x50]
lea r13, [0x14032c26c]
lea rbp, [0x1402a7b48]
mov qword [rsp + 0x120], r14
mov rsi, r12
cmp r12, r14
je 0x14002816d
lea r12, [rsi + 0x48]
mov rcx, rsi
call sym.serde_json::value::Value::as_str::hef493f4595156a10
test rax, rax
je 0x140027c11
mov r8, rdx
mov rcx, r15
mov rdx, rax
call sym.__str_as_alloc::string::ToString_::to_string::h4fd2808e4692ca2e
mov rbx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x60]
cmp rax, 2
mov qword [rsp + 0x28], rax
jb 0x140027c66
mov cl, 0x7e
mov rdx, rbx
mov r8, rax
cmp rax, 0x10
jae 0x140027c86
call sym.core::slice::memchr::memchr_naive::he074fe7c18637b67
jmp 0x140027c8b
mov edx, 1
lea rcx, str._root_.cargo_registry_src_index.crates.io_6f17d22bba15001f_percent_encoding_2.3.1_src_lib.rs_00_01_02_03_04_05_06_07_08_09_0A_0B_0C_0D_0E_0F_10_11_12_13_14_15_16_17_18_19_1A_1B_1C_1D_1E_1F_20_21_22_23_24_25_26_27_28_29_2A_2B_2C_2D_2E_2F_30_31_32_33_34_35_36_37_38_39_3A_3B_3C_3D_3E_3F_40_41_42_43_44_45_46_47_48_49_4A_4B_4C_4D_4E_4F_50_51_52_53_54_55_56_57_58_59_5A_5B_5C_5D_5E_5F_60_61_62_63_64_65_66_67_68_69_6A_6B_6C_6D_6E_6F_70_71_72_73_74_75_76_77_78_79_7A_7B_7C_7D_7E_7F_80_81_82_83_84_85_86_87_88_89_8A_8B_8C_8D_8E_8F_90_91_92_93_94_95_96_97_98_99_9A_9B_9C_9D_9E_9F_A0_A1_A2_A3_A4_A5_A6_A7_A8_A9_AA_AB_AC_AD_AE_AF_B0_B1_B2_B3_B4_B5_B6_B7_B8_B9_BA_BB_BC_BD_BE_BF_C0_C1_C2_C3_C4_C5_C6_C7_C8_C9_CA_CB_CC_CD_CE_CF_D0_D1_D2_D3_D4_D5_D6_D7_D8_D9_DA_DB_DC_DD_DE_DF_E0_E1_E2_E3_E4_E5_E6_E7_E8_E9_EA_EB_EC_ED_EE_EF_F0_F1_F2_F3_F4_F5_F6_F7_F8_F9_FA_FB_FC_FD_FE_FF
mov r8, rbx
mov r9, rax
call sym.___A__as_core::slice::cmp::SlicePartialEq_B__::equal::h1b23c7b2f07cde81
test al, al
jne 0x140027c95
jmp 0x140027d49
call sym.core::slice::memchr::memchr_aligned::h7294fcda4d260def
cmp rax, 1
jne 0x140027d49
mov r8d, 0xb
lea rcx, [rsp + 0xa0]
mov rdx, r13
call dbg._var_os
mov rax, qword [rsp + 0xa0]
cmp rax, rdi
mov qword [rsp + 0x40], rsi
jne 0x140027ceb
and qword [rsp + 0x70], 0
mov rcx, rbp
mov edx, 0x4000
xor r8d, r8d
lea r9, [rsp + 0x70]
call sub.shell32.dll_SHGetKnownFolderPath
mov rsi, qword [rsp + 0x70]
test eax, eax
je 0x140027d12
mov rcx, rsi
call sub.ole32.dll_CoTaskMemFree
jmp 0x140027d44
mov rcx, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0xb0]
test rdx, rdx
je 0x140027d53
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x90], r12
jmp 0x140027d8b
mov rcx, rsi
call sub.msvcrt.dll_wcslen
lea rcx, [rsp + 0xa0]
mov rdx, rsi
mov r8, rax
call dbg.from_wide
mov rcx, qword [rsp + 0x70]
call sub.ole32.dll_CoTaskMemFree
mov rax, qword [rsp + 0xa0]
cmp rax, rdi
jne 0x140027d6b
mov rsi, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x28]
jmp 0x14002814e
test rax, rax
je 0x140027cbd
mov edx, 1
call sym.__rust_dealloc
jmp 0x140027cbd
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x90], r12
mov rcx, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0xb0]
mov qword [rsp + 0x128], rcx
call sym.std::ffi::os_str::OsStr::to_str::h74e40cc70f583e3e
mov r14, rdx
test rax, rax
cmove r14, rax
mov r12, rax
lea rax, str.Malformed_XML.
cmove r12, rax
and qword [rsp + 0x70], 0
mov eax, 1
mov qword [rsp + 0x78], rax
and qword [rsp + 0x80], 0
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0xa0]
mov qword [rsp + 0x98], rbx
mov rdx, rbx
mov r8, qword [rsp + 0x28]
lea r9, str._root_.cargo_registry_src_index.crates.io_6f17d22bba15001f_percent_encoding_2.3.1_src_lib.rs_00_01_02_03_04_05_06_07_08_09_0A_0B_0C_0D_0E_0F_10_11_12_13_14_15_16_17_18_19_1A_1B_1C_1D_1E_1F_20_21_22_23_24_25_26_27_28_29_2A_2B_2C_2D_2E_2F_30_31_32_33_34_35_36_37_38_39_3A_3B_3C_3D_3E_3F_40_41_42_43_44_45_46_47_48_49_4A_4B_4C_4D_4E_4F_50_51_52_53_54_55_56_57_58_59_5A_5B_5C_5D_5E_5F_60_61_62_63_64_65_66_67_68_69_6A_6B_6C_6D_6E_6F_70_71_72_73_74_75_76_77_78_79_7A_7B_7C_7D_7E_7F_80_81_82_83_84_85_86_87_88_89_8A_8B_8C_8D_8E_8F_90_91_92_93_94_95_96_97_98_99_9A_9B_9C_9D_9E_9F_A0_A1_A2_A3_A4_A5_A6_A7_A8_A9_AA_AB_AC_AD_AE_AF_B0_B1_B2_B3_B4_B5_B6_B7_B8_B9_BA_BB_BC_BD_BE_BF_C0_C1_C2_C3_C4_C5_C6_C7_C8_C9_CA_CB_CC_CD_CE_CF_D0_D1_D2_D3_D4_D5_D6_D7_D8_D9_DA_DB_DC_DD_DE_DF_E0_E1_E2_E3_E4_E5_E6_E7_E8_E9_EA_EB_EC_ED_EE_EF_F0_F1_F2_F3_F4_F5_F6_F7_F8_F9_FA_FB_FC_FD_FE_FF
call sym.core::str::pattern::StrSearcher::new::hc2f55a5c81d6fab4
mov rax, qword [rsp + 0xa0]
mov qword [rsp + 0x150], rax
mov rbp, qword [rsp + 0xa8]
mov rax, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xc0]
mov qword [rsp + 0x158], rcx
mov rsi, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0xd8]
mov qword [rsp + 0x30], rcx
mov rbx, qword [rsp + 0xe8]
mov r13, qword [rsp + 0xf0]
mov rdi, qword [rsp + 0xf8]
mov r15, qword [rsp + 0x100]
lea rcx, [r15 - 1]
mov qword [rsp + 0x160], rcx
mov rcx, rax
and rcx, 0xffffffffffffff00
mov qword [rsp + 0x138], rcx
mov qword [rsp + 0x140], r12
add r14, r12
mov qword [rsp + 0x148], r14
mov qword [rsp + 0x130], rax
mov r14d, eax
xor eax, eax
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x150], 0
je 0x140027fc5
movzx r8d, r14b
or r8, qword [rsp + 0x138]
mov rax, r15
sub rax, r8
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x30]
mov r9, rax
cmp rbp, r9
mov rcx, r9
cmova rcx, rbp
cmp rax, 0xffffffffffffffff
cmove rcx, rbp
mov r11d, 0
cmovne r11, r9
mov rax, qword [rsp + 0x160]
add rax, rsi
cmp rax, r13
jae 0x140028095
movzx eax, byte [rbx + rax]
mov rdx, qword [rsp + 0x158]
bt rdx, rax
jae 0x140027f3e
lea rdx, [rbx + rsi]
mov r12, rcx
cmp r12, r15
jae 0x140027f4e
mov rax, r12
add r12, rsi
cmp r12, r13
jae 0x1400281e3
lea r12, [rax + 1]
mov r10b, byte [rdi + rax]
cmp r10b, byte [rdx + rax]
je 0x140027f11
sub rsi, rbp
add rsi, rax
inc rsi
jmp 0x140027f41
add rsi, r15
mov rax, qword [rsp + 0x30]
cmp rax, 0xffffffffffffffff
je 0x140027ee4
jmp 0x140027f95
mov rax, rbp
cmp r11, rax
jae 0x140027f9d
dec rax
cmp rax, r15
jae 0x1400281f6
lea rdx, [rax + rsi]
cmp rdx, r13
jae 0x140028208
mov r12b, byte [rdi + rax]
cmp r12b, byte [rbx + rdx]
je 0x140027f51
add rsi, r8
mov rax, qword [rsp + 0x30]
cmp rax, 0xffffffffffffffff
je 0x140027ee4
mov r9, qword [rsp + 0x38]
jmp 0x140027ec8
xor r9d, r9d
jmp 0x140027ec8
cmp qword [rsp + 0x30], 0xffffffffffffffff
mov eax, 0
cmovne r9, rax
lea rax, [rsi + r15]
mov r8, rsi
mov qword [rsp + 0x38], rax
mov rsi, rax
mov qword [rsp + 0x30], r9
jmp 0x140028053
test dword [rsp + 0x130], 0xff0000
jne 0x140028095
mov rcx, rbp
mov rdx, rbx
mov r8, r13
call fcn.14000ea97
test rax, rax
je 0x14002821a
add rdx, rax
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], rdx
lea rcx, [rsp + 0xa0]
call sym.__core::str::iter::Chars_as_core::iter::traits::iterator::Iterator_::next::hc9b7db9927d9bde0
test r14b, r14b
jne 0x140028047
cmp eax, 0x110000
je 0x140028095
mov ecx, 1
cmp eax, 0x80
jb 0x14002803f
mov ecx, 2
cmp eax, 0x800
jb 0x14002803f
cmp eax, 0x10000
mov ecx, 4
sbb rcx, 0
add rbp, rcx
mov r14b, 1
jmp 0x140027fd6
xor r14b, 1
mov qword [rsp + 0x38], rbp
mov r8, rbp
mov rax, qword [rsp + 0x98]
mov rdx, qword [rsp + 0x48]
add rdx, rax
add r8, rax
lea r12, [rsp + 0x70]
mov rcx, r12
call fcn.14008a023
mov rcx, r12
mov rdx, qword [rsp + 0x140]
mov r8, qword [rsp + 0x148]
call fcn.14008a023
mov rax, qword [rsp + 0x38]
jmp 0x140027e95
mov rax, qword [rsp + 0x98]
mov rdx, qword [rsp + 0x48]
add rdx, rax
mov r8, qword [rsp + 0x28]
add r8, rax
lea rcx, [rsp + 0x70]
call fcn.14008a023
mov rax, qword [rsp + 0x80]
mov qword [rsp + 0xb0], rax
movups xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0xa0], xmm0
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x58]
call sym.core::ptr::drop_in_place_alloc::string::String_::h77266e31bfd0fd80
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0x60], rax
movaps xmm0, xmmword [rsp + 0xa0]
movaps xmmword [rsp + 0x50], xmm0
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x128]
call sym.core::ptr::drop_in_place_alloc::string::String_::h77266e31bfd0fd80
mov rbx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
movabs rdi, 0x8000000000000000
mov r14, qword [rsp + 0x120]
lea r15, [rsp + 0x50]
mov r12, qword [rsp + 0x90]
lea r13, [0x14032c26c]
lea rbp, [0x1402a7b48]
mov rsi, qword [rsp + 0x40]
mov rcx, rbx
call sym.std::path::Path::exists::haa65cc8677def73a
mov rdx, rbx
mov ebx, eax
mov rcx, qword [rsp + 0x50]
call sym.core::ptr::drop_in_place_alloc::string::String_::h77266e31bfd0fd80
test bl, bl
jne 0x140027c11
xor eax, eax
cmp rsi, r14
sete al
inc rdi
mov rsi, qword [rsp + 0x118]
mov qword [rsi + 8], rdi
mov qword [rsi + 0x10], rax
movups xmm0, xmmword [rsp + 0xa0]
movups xmm1, xmmword [rsp + 0xb0]
movups xmm2, xmmword [rsp + 0xc0]
movups xmmword [rsi + 0x18], xmm0
movups xmmword [rsi + 0x28], xmm1
movups xmmword [rsi + 0x38], xmm2
mov rax, qword [rsp + 0xd0]
mov qword [rsi + 0x48], rax
mov qword [rsi], 0x15
mov rcx, qword [rsp + 0x110]
call sym.core::ptr::drop_in_place_alloc::vec::Vec_serde_json::value::Value__::h482c6a110ab3b52c
mov rax, rsi
add rsp, 0x168
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add rcx, rsi
cmp r13, rcx
cmova rcx, r13
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_strpattern.rs
jmp 0x140028212
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_strpattern.rs
mov rcx, rax
mov rdx, r15
call dbg.panic_bounds_check
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_strpattern.rs
mov rcx, rdx
mov rdx, r13
call dbg.panic_bounds_check
lea rax, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_strpattern.rs
mov qword [rsp + 0x20], rax
mov rcx, rbx
mov rdx, r13
mov r8, rbp
mov r9, r13
call dbg.slice_error_fail
int3