Function at 0x40fe66
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov edi, dword [ebp + 0x10]
lea esi, [esp + 0x40]
push 6
push str..llvm._home_hagb_.cargo_registry_src_index.crates.io_6f17d22bba15001f_rustc_demangle_0.1.23_src_lib.rs
push edi
push dword [ebp + 0xc]
push esi
call fcn.0041a162
add esp, 0x14
cmp dword [esi], 0
je 0x4100ed
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xc], eax
sub eax, 1
jb 0x4105d0
mov esi, dword [esp + 0x5c]
mov ecx, esi
add ecx, eax
jb 0x410594
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x50]
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
sub edx, ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x28], edx
mov edx, edi
neg edx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x70]
mov dword [esp], ebx
xor ebx, ebx
inc ebx
mov dword [esp + 4], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x38], edx
lea edx, [edi - 1]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
cmp ecx, dword [esp]
jae 0x4102f2
mov eax, dword [esp + 4]
mov edx, ebx
mov cl, byte [eax + ecx]
xor eax, eax
shld eax, ebx, cl
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edx
cmovne edx, ecx
and eax, dword [esp + 0x38]
and edx, dword [esp + 0x3c]
or edx, eax
je 0x40fff3
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov edi, ebx
mov dword [esp + 8], esi
cmp eax, ecx
cmova ecx, eax
cmp dword [esp + 0x10], 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], ecx
cmp ecx, eax
cmova eax, ecx
sub edi, ecx
cmp eax, ecx
je 0x410014
mov ebx, dword [esp + 8]
add ebx, ecx
jb 0x410546
cmp ebx, dword [esp]
jae 0x410550
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 4]
dec edi
mov dl, byte [edx + ecx]
inc ecx
cmp dl, byte [esi + ebx]
mov ebx, 1
je 0x40ff83
mov eax, edi
neg eax
cmp eax, dword [esp + 0x24]
jb 0x4105b2
mov eax, dword [esp + 0x2c]
sub eax, edi
inc eax
je 0x4105bc
mov esi, dword [esp + 8]
add esi, eax
jb 0x4105c6
xor eax, eax
cmp dword [esp + 0x10], 0xffffffff
mov edi, dword [ebp + 0x10]
jne 0x410097
jmp 0x41009b
add esi, dword [esp + 0xc]
jb 0x4105a8
xor eax, eax
cmp dword [esp + 0x10], 0xffffffff
mov ebx, 1
jne 0x410097
jmp 0x41009b
cmp dword [esp + 0x10], 0xffffffff
mov ecx, dword [esp + 0x1c]
mov eax, 0
mov esi, dword [esp + 8]
mov edi, dword [ebp + 0x10]
cmove ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], ecx
lea edx, [eax + 1]
cmp dword [esp + 0x14], edx
jae 0x4100b3
cmp eax, dword [esp + 0xc]
jae 0x41056c
mov edx, esi
add edx, eax
jb 0x41057b
cmp edx, dword [esp]
jae 0x410585
mov ecx, dword [esp + 0x18]
mov bl, byte [ecx + eax]
mov ecx, esi
mov esi, dword [esp + 4]
dec eax
cmp bl, byte [esi + edx]
mov esi, ecx
je 0x410034
add esi, dword [esp + 0x20]
jb 0x4105ee
cmp dword [esp + 0x10], 0xffffffff
je 0x4100ae
mov eax, dword [esp + 0x20]
mov ebx, 1
cmp dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
jb 0x4105f8
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
mov ecx, esi
add ecx, eax
jae 0x40ff22
jmp 0x410594
xor ebx, ebx
inc ebx
jmp 0x41009b
add dword [esp + 0xc], esi
jb 0x4105e4
mov eax, esi
add eax, 6
jb 0x4105da
cmp eax, edi
jae 0x410216
mov ecx, dword [ebp + 0xc]
cmp byte [ecx + eax], 0xc0
jge 0x41021c
push 0x4339c8
push edi
push eax
push edi
push dword [ebp + 0xc]
call fcn.0042b12d
cmp byte [esp + 0x4e], 0
jne 0x4102f2
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x44]
mov bl, byte [esp + 0x4c]
mov dword [esp], ecx
add ecx, esi
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
test eax, eax
je 0x410131
cmp eax, esi
jae 0x41012b
mov ecx, dword [esp]
cmp byte [ecx + eax], 0xc0
jge 0x410131
jmp 0x41061f
jne 0x41061f
cmp esi, eax
jb 0x410613
je 0x410532
mov ecx, dword [esp]
lea edx, [ecx + eax]
mov bh, byte [edx]
movzx esi, bh
test bh, bh
jns 0x4101b9
lea ecx, [edx + 1]
cmp ecx, dword [esp + 4]
je 0x41060e
movzx ecx, byte [edx + 1]
and esi, 0x1f
and ecx, 0x3f
cmp bh, 0xdf
jbe 0x4101aa
lea edi, [edx + 2]
cmp edi, dword [esp + 4]
je 0x41060e
movzx edi, byte [edx + 2]
shl ecx, 6
and edi, 0x3f
or edi, ecx
cmp bh, 0xf0
jb 0x4101b1
add edx, 3
cmp edx, dword [esp + 4]
je 0x41060e
movzx ecx, byte [edx]
and esi, 7
shl edi, 6
shl esi, 0x12
and ecx, 0x3f
or ecx, edi
or esi, ecx
jmp 0x4101b6
shl esi, 6
or esi, ecx
jmp 0x4101b9
shl esi, 0xc
or esi, edi
mov edi, dword [ebp + 0x10]
mov ecx, esi
xor ecx, 0xd800
add ecx, 0xffef0000
cmp ecx, 0xffef07ff
jbe 0x410602
test bl, bl
jne 0x41053f
cmp esi, 0x80
mov ecx, 1
jb 0x410203
mov ecx, 2
cmp esi, 0x800
jb 0x410203
cmp esi, 0x10000
mov ecx, 4
sbb ecx, 0
add eax, ecx
jb 0x41059e
mov esi, dword [esp + 8]
mov bl, 1
jmp 0x410115
jne 0x4100dd
cmp eax, edi
ja 0x410613
mov ecx, dword [ebp + 0xc]
add eax, ecx
add ecx, edi
mov dword [esp], ecx
cmp eax, dword [esp]
je 0x4102f9
mov bl, byte [eax]
mov ecx, esi
lea esi, [eax + 1]
movzx edx, bl
test bl, bl
js 0x410249
mov eax, esi
jmp 0x4102be
cmp esi, dword [esp]
je 0x41060e
movzx edi, byte [eax + 1]
and edx, 0x1f
lea esi, [eax + 2]
and edi, 0x3f
cmp bl, 0xdf
jbe 0x4102a9
cmp esi, dword [esp]
je 0x41060e
lea esi, [eax + 3]
shl edi, 6
mov dword [esp + 4], esi
movzx esi, byte [eax + 2]
and esi, 0x3f
or esi, edi
cmp bl, 0xf0
jb 0x4102b2
mov edi, dword [esp + 4]
cmp edi, dword [esp]
je 0x41060e
movzx edi, byte [eax + 3]
and edx, 7
shl esi, 6
add eax, 4
shl edx, 0x12
and edi, 0x3f
or edi, esi
jmp 0x4102ae
shl edx, 6
mov eax, esi
or edx, edi
jmp 0x4102bb
mov eax, dword [esp + 4]
shl edx, 0xc
or edx, esi
mov edi, dword [ebp + 0x10]
mov esi, edx
xor esi, 0xd800
add esi, 0xffef0000
cmp esi, 0xffef07ff
jbe 0x410602
lea esi, [edx - 0x40]
cmp esi, 7
mov esi, ecx
jb 0x41022e
add edx, 0xffffffd0
cmp edx, 0xa
jb 0x41022e
mov eax, dword [ebp + 0xc]
mov esi, edi
jmp 0x410323
mov eax, dword [ebp + 0xc]
test esi, esi
je 0x41031b
cmp esi, edi
jae 0x410319
cmp byte [eax + esi], 0xc0
jge 0x41031b
push 0x4339d8
push esi
push 0
push edi
push eax
call fcn.0042b12d
jne 0x41030a
cmp esi, edi
ja 0x410613
push esi
push eax
lea ecx, [esp + 0x48]
push ecx
mov edi, eax
call fcn.00410899
add esp, 0xc
mov ecx, dword [esp + 0x40]
test ecx, ecx
mov dword [esp + 0x18], ecx
je 0x410359
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x50]
xor edi, edi
inc edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x4c]
jmp 0x4103a6
mov eax, esi
lea esi, [esp + 0x84]
mov dword [esp + 8], eax
push eax
push edi
push esi
call fcn.004121c3
add esp, 0xc
mov edx, dword [esi]
test edx, edx
je 0x410395
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x90]
xor edi, edi
inc edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x8c]
jmp 0x41039e
xor ebx, ebx
mov eax, str.unsafe_precondition_s__violated:_str::get_unchecked_requires_that_the_range_is_within_the_string_slice_home_hagb_.rustup_toolchains_nightly_2024_04_15_x86_64_unknown_linux_gnu_lib_rustlib_src_rust_library_core_src_str_pattern.rs.7C
xor edi, edi
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 4], eax
je 0x4104d9
xor eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], edx
mov dword [esp + 0x40], 0x2e
inc eax
push eax
mov edi, dword [esp + 8]
push edi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.00418278
add esp, 0x10
xor ebx, ebx
test al, al
je 0x4104dd
mov eax, dword [esp + 0x10]
mov dword [esp + 8], esi
mov esi, edi
add eax, edi
mov cl, byte [esi]
lea edi, [esi + 1]
movzx edx, cl
test cl, cl
js 0x410403
mov esi, edi
jmp 0x410478
cmp edi, eax
je 0x41060e
movzx ebx, byte [esi + 1]
and edx, 0x1f
lea edi, [esi + 2]
and ebx, 0x3f
cmp cl, 0xdf
jbe 0x410463
cmp edi, eax
je 0x41060e
lea edi, [esi + 3]
shl ebx, 6
mov dword [esp], edi
movzx edi, byte [esi + 2]
and edi, 0x3f
or edi, ebx
cmp cl, 0xf0
jb 0x41046e
cmp dword [esp], eax
mov ebx, 0
je 0x41060e
movzx ecx, byte [esi + 3]
and edx, 7
shl edi, 6
add esi, 4
shl edx, 0x12
and ecx, 0x3f
or ecx, edi
or edx, ecx
jmp 0x410478
shl edx, 6
mov esi, edi
or edx, ebx
xor ebx, ebx
jmp 0x410478
mov esi, dword [esp]
shl edx, 0xc
xor ebx, ebx
or edx, edi
mov ecx, edx
xor ecx, 0xd800
add ecx, 0xffef0000
cmp ecx, 0xffef07ff
jbe 0x410602
lea ecx, [edx - 0x21]
cmp ecx, 0x19
jb 0x4104b7
mov ecx, edx
and ecx, 0xffffffdf
add ecx, 0xffffffbf
cmp ecx, 0x1a
jb 0x4104b7
lea ecx, [edx - 0x3a]
cmp ecx, 7
jb 0x4104b7
lea ecx, [edx - 0x5b]
cmp ecx, 6
jae 0x4104c1
cmp esi, eax
jne 0x4103f3
jmp 0x4104f1
add edx, 0xffffff81
cmp edx, 0xfffffffc
jae 0x4104b7
mov esi, dword [esp + 8]
mov dword [esp + 4], str.unsafe_precondition_s__violated:_str::get_unchecked_requires_that_the_range_is_within_the_string_slice_home_hagb_.rustup_toolchains_nightly_2024_04_15_x86_64_unknown_linux_gnu_lib_rustlib_src_rust_library_core_src_str_pattern.rs.7C
xor edi, edi
jmp 0x4104e7
xor ebx, ebx
jmp 0x410505
xor edi, edi
mov dword [esp + 4], str.unsafe_precondition_s__violated:_str::get_unchecked_requires_that_the_range_is_within_the_string_slice_home_hagb_.rustup_toolchains_nightly_2024_04_15_x86_64_unknown_linux_gnu_lib_rustlib_src_rust_library_core_src_str_pattern.rs.7C
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
jmp 0x410505
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov eax, dword [ebp + 8]
mov dword [eax], edi
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov edx, dword [esp + 0xc]
mov edi, dword [ebp + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 4]
mov dword [eax + 0x10], edi
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], edx
mov dword [eax + 0x1c], ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
test bl, bl
jne 0x4100bd
jmp 0x4102f2
mov esi, eax
jmp 0x4100bd
push 0x43383c
call fcn.0042b1ad
mov ecx, dword [esp + 0x14]
mov eax, dword [esp]
add ecx, dword [esp + 8]
cmp eax, ecx
cmova ecx, eax
push 0x43384c
push eax
push ecx
call fcn.0042af69
push 0x4337ec
push dword [esp + 0x10]
push eax
call fcn.0042af69
push 0x4337fc
call fcn.0042b1ad
push 0x43380c
push dword [esp + 4]
push edx
call fcn.0042af69
push 0x4337bc
call fcn.0042b1ad
push 0x433940
call fcn.0042b1ad
push 0x4337cc
call fcn.0042b1ad
push 0x43385c
call fcn.0042b1d9
push 0x43385c
call fcn.0042b1ad
push 0x43386c
call fcn.0042b1ad
push 0x4337ac
call fcn.0042b1d9
push 0x4339b8
call fcn.0042b1ad
push 0x4337dc
call fcn.0042b1ad
push 0x43381c
call fcn.0042b1ad
push 0x43382c
call fcn.0042b1d9
push 0x39
push str.unsafe_precondition_s__violated:_invalid_value_for__char_unsafe_precondition_s__violated:_hint::unreachable_unchecked_must_never_be_reached
call fcn.0042af2f
call fcn.0040fe55
push 0x66
push str.unsafe_precondition_s__violated:_str::get_unchecked_requires_that_the_range_is_within_the_string_slice_home_hagb_.rustup_toolchains_nightly_2024_04_15_x86_64_unknown_linux_gnu_lib_rustlib_src_rust_library_core_src_str_pattern.rs.7C
call fcn.0042af2f
push 0x433930
push esi
push eax
push esi
push dword [esp + 0x10]
call fcn.0042b12d