Function at 0x5213b0
Capabilities:
Create process on windows
Encode data using base64
Get common file path
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x4f0
call 0x5213c1
pop eax
mov dword [ebp - 0x8c], ecx
mov ecx, dword [edx + 0x30]
mov esi, edx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x88], eax
movzx eax, byte [edx + 0x34]
test al, al
jne 0x5213f8
test ecx, ecx
jne 0x5213f8
mov dword [ebp - 0xec], 0
mov dword [ebp - 0x28], 0
jmp 0x521ec4
test al, al
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x7c], 0
jne 0x521632
mov dword [ebp - 0x20], ecx
call sub.kernel32.dll_GetEnvironmentStringsW
test eax, eax
je 0x5242e3
mov esi, eax
mov dword [ebp - 0x28], eax
nop word cs:[eax + eax]
cmp word [esi], 0
mov dword [ebp - 0x14], esi
jne 0x52144d
jmp 0x521624
mov eax, dword [ebp - 0x14]
cmp word [eax], 0
je 0x521624
mov ebx, dword [ebp - 0x14]
mov esi, 0x7ffffffe
mov edi, 0xfffffffd
mov ecx, 0xfffffffe
mov edx, ebx
nop word cs:[eax + eax]
nop dword [eax + eax]
inc esi
inc edi
cmp word [ebx], 0
mov eax, ecx
lea ebx, [ebx + 2]
lea ecx, [ecx + 2]
jne 0x521470
add esi, 0x80000001
mov dword [ebp - 0x14], ebx
cmp esi, 1
je 0x521440
test esi, esi
je 0x524233
lea ecx, [edx + 4]
xor ebx, ebx
nop dword [eax + eax]
cmp word [ecx - 2], 0x3d
je 0x5214c0
inc ebx
add ecx, 2
add eax, 0xfffffffe
jne 0x5214a0
jmp 0x521440
lea eax, [ebx + 1]
cmp ebx, esi
mov dword [ebp - 0x24], ecx
mov ecx, ebx
jae 0x52424c
lea ecx, [ebp - 0x60]
push eax
call dbg.from_wide
add esp, 4
lea ecx, [ebx + 2]
cmp esi, ecx
jb 0x524262
sub edi, ebx
mov edx, dword [ebp - 0x24]
lea ecx, [ebp - 0x4fc]
push edi
call dbg.from_wide
add esp, 4
lea ecx, [ebp - 0x53]
movzx ebx, byte [ebp - 0x54]
movsd xmm0, qword [ebp - 0x4f4]
mov esi, dword [ebp - 0x60]
mov edx, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x58]
movzx eax, word [ecx]
cmp bl, 2
movsd qword [ebp - 0x78], xmm0
mov word [ebp - 0x98], ax
movzx eax, byte [ecx + 2]
mov ecx, dword [ebp - 0x4f8]
mov byte [ebp - 0x96], al
mov eax, dword [ebp - 0x4fc]
je 0x521624
mov dword [ebp - 0x24], eax
lea eax, [esi + edi]
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x5c], eax
mov word [ebp - 0x58], 0
lea ecx, [ebp - 0xc8]
lea edx, [ebp - 0x60]
call dbg.from_iter<u16, std::sys_common::wtf8::EncodeWide>
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x4f0], esi
lea ecx, [ebp - 0x4e3]
movsd xmm0, qword [ebp - 0xc8]
mov dword [ebp - 0x4ec], eax
movzx eax, byte [ebp - 0x96]
mov dword [ebp - 0x4e8], edi
mov byte [ebp - 0x4e4], bl
mov byte [ecx + 2], al
movzx eax, word [ebp - 0x98]
mov word [ecx], ax
mov eax, dword [ebp - 0xc0]
movsd qword [ebp - 0x4fc], xmm0
mov dword [ebp - 0x4f4], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x58], eax
lea edx, [ebp - 0x84]
lea eax, [ebp - 0x60]
lea ecx, [ebp - 0xc8]
push eax
lea eax, [ebp - 0x4fc]
push eax
call dbg.insert<std::sys::windows::process::EnvKey, std::ffi::os_str::OsString, alloc::alloc::Global>
add esp, 8
cmp byte [ebp - 0xbc], 2
mov esi, dword [ebp - 0x14]
je 0x521430
cmp dword [ebp - 0xc4], 0
je 0x521430
push dword [ebp - 0xc8]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x521430
push dword [ebp - 0x28]
call sub.kernel32.dll_FreeEnvironmentStringsW
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x20]
mov ebx, dword [esi + 0x28]
mov esi, dword [esi + 0x2c]
xor edx, edx
mov dword [ebp - 0x24], 0
test ebx, ebx
setne dl
cmove ecx, ebx
jmp 0x521658
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
xor ebx, ebx
test ecx, ecx
je 0x521ce4
mov edi, dword [ebp - 0x24]
test edx, edx
je 0x521690
test edi, edi
jne 0x521690
mov edx, 1
mov edi, ebx
test esi, esi
je 0x521689
nop word cs:[eax + eax]
mov edi, dword [edi + 0x1ec]
dec esi
jne 0x521680
xor esi, esi
xor ebx, ebx
jmp 0x521698
test edx, edx
je 0x5241cc
movzx eax, word [edi + 0x1ea]
cmp esi, eax
jb 0x5216d1
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [edi + 0xb0]
test eax, eax
je 0x523fc2
movzx esi, word [edi + 0x1e8]
inc ebx
mov edi, eax
cmp si, word [eax + 0x1ea]
jae 0x5216b0
test ebx, ebx
je 0x521700
mov eax, dword [edi + esi*4 + 0x1f0]
mov dword [ebp - 0x14], 0
dec ebx
je 0x5216f9
nop word cs:[eax + eax]
mov eax, dword [eax + 0x1ec]
dec ebx
jne 0x5216f0
mov dword [ebp - 0x24], eax
jmp 0x521709
lea eax, [esi + 1]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x14], eax
lea eax, [esi + esi*8]
dec ecx
lea eax, [eax + eax*2]
add eax, esi
shl esi, 4
cmp byte [edi + esi + 0xc], 2
lea eax, [edi + eax + 0xb4]
jne 0x521770
mov edi, dword [ebp - 0x84]
mov esi, dword [ebp - 0x14]
xor ebx, ebx
test edi, edi
je 0x521658
mov esi, dword [ebp - 0x80]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ecx
mov edx, edi
lea ecx, [ebp - 0x78]
push dword [eax + 8]
push dword [eax]
push esi
call dbg.search_tree<alloc::collections::btree::node::marker::Mut, std::sys::windows::process::EnvKey, core::option::Option<std::ffi::os_str::OsString>, std::sys::windows::process::EnvKey>
add esp, 0xc
cmp dword [ebp - 0x78], 0
je 0x521847
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
jmp 0x521658
mov ebx, dword [eax + 0xc]
mov dword [ebp - 0x28], eax
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edx
test eax, eax
mov dword [ebp - 0x18], eax
je 0x5217c2
js 0x524229
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x5217ae
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x5241e8
mov dword [0x5da100], eax
push dword [ebp - 0x18]
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
jne 0x5217c7
jmp 0x5241e8
mov eax, 1
push dword [ebp - 0x18]
push ebx
mov dword [ebp - 0x2c], eax
push eax
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 8]
movzx edx, byte [eax + 0x18]
mov ebx, dword [eax]
test ecx, ecx
mov dword [ebp - 0x28], ecx
mov byte [ebp - 0x34], dl
mov dword [ebp - 0x10], ebx
je 0x52183b
xor ebx, ebx
cmp ecx, 0x40000000
setb al
jae 0x524215
mov bl, al
lea edx, [ecx + ecx]
add ebx, ebx
test edx, edx
mov dword [ebp - 0x64], edx
js 0x524215
mov dword [ebp - 0x9c], ebx
je 0x521948
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
je 0x521952
mov edx, dword [ebp - 0x64]
jmp 0x52196d
mov ebx, 2
xor edx, edx
jmp 0x521989
mov ecx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x74]
mov edx, dword [ebp - 0x6c]
mov byte [ebp - 0x65], 0
test ecx, ecx
jne 0x521887
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], edx
lea edx, [ebp - 0x60]
lea eax, [ebp - 0x65]
lea ecx, [ebp - 0x4fc]
push eax
call sym.__ZN5alloc11collections5btree6remove259__LT_impl_u20_alloc..collections..btree..node..Handle_LT_alloc..collections..btree..nod
add esp, 4
jmp 0x521bd0
movzx edx, word [eax + 0x1ea]
mov eax, dword [eax + edx*4 + 0x1ec]
dec ecx
jne 0x521880
movzx ecx, word [eax + 0x1ea]
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], 0
dec ecx
mov dword [ebp - 0x90], ecx
lea edx, [ebp - 0x98]
lea eax, [ebp - 0x65]
lea ecx, [ebp - 0x4fc]
push eax
call sym.__ZN5alloc11collections5btree6remove259__LT_impl_u20_alloc..collections..btree..node..Handle_LT_alloc..collections..btree..nod
add esp, 4
movsd xmm2, qword [ebp - 0x4e4]
movsd xmm1, qword [ebp - 0x4ec]
mov eax, dword [ebp - 0x4d4]
movsd xmm0, qword [ebp - 0x4dc]
mov edx, dword [ebp - 0x4d0]
mov dword [ebp - 0x18], edi
movsd qword [ebp - 0xb0], xmm2
movsd qword [ebp - 0xb8], xmm1
movsd xmm2, qword [ebp - 0x4fc]
movsd xmm1, qword [ebp - 0x4f4]
mov dword [ebp - 0xa0], eax
movsd qword [ebp - 0xa8], xmm0
mov eax, dword [ebp - 0x4c8]
movsd qword [ebp - 0xc0], xmm1
movsd qword [ebp - 0xc8], xmm2
movzx ecx, word [edx + 0x1ea]
cmp eax, ecx
jae 0x521aa8
mov ecx, edx
jmp 0x521ad3
mov ecx, dword [ebp - 0x9c]
mov ebx, ecx
jmp 0x52197e
call sub.kernel32.dll_GetProcessHeap
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x9c]
test eax, eax
je 0x52420b
mov dword [0x5da100], eax
push edx
push 0
push eax
call sub.kernel32.dll_HeapAlloc
mov ecx, dword [ebp - 0x9c]
mov ebx, eax
mov edx, dword [ebp - 0x64]
test ebx, ebx
je 0x52420b
add edi, esi
push edx
push dword [ebp - 0x10]
push ebx
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp - 0x2c]
mov dh, byte [ebp - 0x34]
movzx esi, word [ebp - 0x60]
mov dl, byte [ebp - 0x5e]
lea ecx, [ebp - 0x4e3]
mov dword [ebp - 0x4f0], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x4ec], eax
mov dword [ebp - 0x4e8], eax
mov byte [ebp - 0x4e4], dh
mov word [ecx], si
mov byte [ecx + 2], dl
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x4fc], ebx
mov dword [ebp - 0x4f8], ecx
mov dword [ebp - 0x4f4], ecx
mov ecx, dword [edi + 8]
mov edx, dword [edi]
test ecx, ecx
je 0x521a32
js 0x52421f
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
mov dword [ebp - 0x18], edx
test eax, eax
jne 0x521a19
mov esi, ecx
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x5241fa
mov ecx, esi
mov dword [0x5da100], eax
mov esi, ecx
push ecx
push 0
push eax
call sub.kernel32.dll_HeapAlloc
mov edx, dword [ebp - 0x18]
mov ebx, eax
test eax, eax
jne 0x521a39
jmp 0x5241fa
mov esi, ecx
mov ebx, 1
push esi
push edx
push ebx
call sym._memcpy
add esp, 0xc
movzx eax, byte [edi + 0xc]
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x58], esi
mov byte [ebp - 0x54], al
lea edx, [ebp - 0x84]
lea eax, [ebp - 0x60]
lea ecx, [ebp - 0xc8]
push eax
lea eax, [ebp - 0x4fc]
push eax
call dbg.insert<std::sys::windows::process::EnvKey, std::ffi::os_str::OsString, alloc::alloc::Global>
add esp, 8
cmp byte [ebp - 0xbc], 2
mov esi, dword [ebp - 0x14]
je 0x521650
cmp dword [ebp - 0xc4], 0
je 0x521650
push dword [ebp - 0xc8]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x521650
mov edi, dword [ebp - 0x4cc]
nop
mov ecx, dword [edx + 0xb0]
test ecx, ecx
je 0x521acf
movzx eax, word [edx + 0x1e8]
inc edi
mov edx, ecx
cmp ax, word [ecx + 0x1ea]
jae 0x521ab0
jmp 0x521ad3
xor ecx, ecx
mov eax, edi
lea edx, [eax + eax*8]
lea edx, [edx + edx*2]
add edx, eax
shl eax, 4
mov edi, dword [ecx + edx + 0xcc]
mov dword [ebp - 0x48], edi
mov edi, dword [ebp - 0xb0]
movsd xmm0, qword [ecx + edx + 0xc4]
movsd qword [ebp - 0x50], xmm0
movsd xmm0, qword [ecx + edx + 0xb4]
movsd xmm1, qword [ecx + edx + 0xbc]
movsd qword [ebp - 0x58], xmm1
movsd qword [ebp - 0x60], xmm0
mov dword [ecx + edx + 0xcc], edi
lea edi, [ebp - 0xac]
movsd xmm0, qword [ebp - 0xb8]
movsd qword [ecx + edx + 0xc4], xmm0
movsd xmm0, qword [ebp - 0xc8]
movsd xmm1, qword [ebp - 0xc0]
movsd qword [ecx + edx + 0xbc], xmm1
movsd qword [ecx + edx + 0xb4], xmm0
lea edx, [ebp - 0x44]
movsd xmm0, qword [ecx + eax]
movsd xmm1, qword [ecx + eax + 8]
movsd qword [edx + 8], xmm1
movsd qword [edx], xmm0
movsd xmm0, qword [edi]
movsd xmm1, qword [edi + 8]
mov edi, dword [ebp - 0x18]
movsd qword [ecx + eax], xmm0
movsd qword [ecx + eax + 8], xmm1
movsd xmm2, qword [ebp - 0x48]
movsd xmm1, qword [ebp - 0x50]
mov eax, dword [ebp - 0x38]
movsd xmm0, qword [ebp - 0x40]
movsd qword [ebp - 0x4e4], xmm2
movsd qword [ebp - 0x4ec], xmm1
movsd xmm2, qword [ebp - 0x60]
movsd xmm1, qword [ebp - 0x58]
mov dword [ebp - 0x4d4], eax
movsd qword [ebp - 0x4dc], xmm0
movsd qword [ebp - 0x4f4], xmm1
movsd qword [ebp - 0x4fc], xmm2
movsd xmm2, qword [ebp - 0x4e4]
movsd xmm1, qword [ebp - 0x4ec]
mov eax, dword [ebp - 0x4d4]
movsd xmm0, qword [ebp - 0x4dc]
dec dword [ebp - 0x7c]
cmp byte [ebp - 0x65], 0
movsd qword [ebp - 0x48], xmm2
movsd qword [ebp - 0x50], xmm1
movsd xmm2, qword [ebp - 0x4fc]
movsd xmm1, qword [ebp - 0x4f4]
mov dword [ebp - 0x38], eax
movsd qword [ebp - 0x40], xmm0
movsd qword [ebp - 0x58], xmm1
movsd qword [ebp - 0x60], xmm2
je 0x521c53
test esi, esi
je 0x524276
mov eax, dword [edi + 0x1ec]
dec esi
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], esi
mov dword [eax + 0xb0], 0
push edi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp byte [ebp - 0x48], 2
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
je 0x521658
mov eax, dword [ebp - 0x44]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x5c]
cmp dword [ebp - 0x50], 0
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x28], eax
mov ah, byte [ebp - 0x38]
mov byte [ebp - 0x18], ah
je 0x521c9a
push dword [ebp - 0x54]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
test edi, edi
je 0x521cb2
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
cmp byte [ebp - 0x18], 2
mov esi, dword [ebp - 0x14]
je 0x521658
cmp dword [ebp - 0x28], 0
je 0x521658
push dword [ebp - 0x2c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
jmp 0x521658
mov eax, dword [ebp - 0x7c]
movsd xmm0, qword [ebp - 0x84]
mov dword [ebp - 0xe0], eax
movsd qword [ebp - 0xe8], xmm0
mov dword [ebp - 0xec], 1
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x521d29
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x524292
mov dword [0x5da100], eax
push 4
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x524292
mov ebx, eax
mov dword [eax], 0x48544150
add eax, 4
mov dword [ebp - 0x4fc], ebx
mov dword [ebp - 0x4f8], eax
mov word [ebp - 0x4f4], 0
lea ecx, [ebp - 0x60]
lea edx, [ebp - 0x4fc]
call dbg.from_iter<u16, std::sys_common::wtf8::EncodeWide>
movzx eax, word [ebp - 0xc8]
mov dword [ebp - 0x4f0], ebx
mov dword [ebp - 0x4ec], 4
mov dword [ebp - 0x4e8], 4
mov byte [ebp - 0x4e4], 0
mov edx, dword [ebp - 0x58]
movsd xmm0, qword [ebp - 0x60]
mov word [ebp - 0x4e3], ax
movzx eax, byte [ebp - 0xc6]
mov dword [ebp - 0x18], edx
mov byte [ebp - 0x4e1], al
movsd qword [ebp - 0x4fc], xmm0
mov dword [ebp - 0x4f4], edx
mov edx, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x4fc]
test edx, edx
mov dword [ebp - 0x24], ecx
je 0x521e90
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x1c], eax
movzx edi, word [edx + 0x1ea]
lea ecx, [edx + 0xb4]
mov ebx, 0xffffffff
mov dword [ebp - 0x20], edx
lea eax, [edi + edi*8]
mov dword [ebp - 0x2c], edi
lea esi, [eax + eax*2]
add esi, edi
lea edi, [edx - 8]
nop dword [eax + eax]
test esi, esi
je 0x521e50
lea eax, [ecx + 0x1c]
mov dword [ebp - 0x14], eax
push 1
push dword [ecx + 8]
push dword [ecx]
push dword [ebp - 0x18]
push dword [ebp - 0x24]
call sub.kernel32.dll_CompareStringOrdinal
mov ecx, dword [ebp - 0x14]
add esi, 0xffffffe4
add edi, 0x10
inc ebx
cmp eax, 3
je 0x521e10
cmp eax, 1
jne 0x521e71
jmp 0x521e53
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
sub eax, 1
jb 0x522346
mov edx, dword [edx + ebx*4 + 0x1ec]
mov dword [ebp - 0x1c], eax
jmp 0x521de8
cmp eax, 2
jne 0x524176
cmp dword [ebp - 0x20], 0
mov esi, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x34]
je 0x521e9a
mov eax, dword [edi - 8]
mov ecx, dword [edi]
mov dword [ebp - 0x28], eax
jmp 0x521e9a
mov esi, dword [ebp - 0x30]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], ecx
push ebx
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x4f8], 0
je 0x521ec4
push dword [ebp - 0x24]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edi, dword [esi + 0x20]
test edi, edi
je 0x521efb
mov eax, dword [ebp - 0x30]
mov ecx, dbg.is_sep_byte
cmp edi, 4
mov edx, dword [eax + 0x18]
jb 0x521ee9
cmp dword [edx], 0x5c3f5c5c
mov eax, sym.std::sys::windows::path::is_verbatim_sep::h0a3c90f83ee1934c
cmove ecx, eax
movzx ebx, byte [edi + edx - 1]
mov dword [ebp - 0x14], edx
push ebx
call ecx
add esp, 4
test al, al
je 0x521f78
mov byte [ebp - 0x80], 2
mov dword [ebp - 0x7c], 0x5bbdac
mov esi, dword [ebp - 0x80]
mov edi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x8c]
mov dword [eax], esi
mov dword [eax + 4], edi
mov dword [eax + 8], 2
cmp dword [ebp - 0xec], 0
je 0x522012
mov ecx, dword [ebp - 0xe8]
test ecx, ecx
je 0x521ff1
mov edx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0x4f8], 0
mov dword [ebp - 0x4f4], ecx
mov dword [ebp - 0x4f0], edx
mov dword [ebp - 0x4e8], 0
mov dword [ebp - 0x4e4], ecx
mov ecx, 1
mov dword [ebp - 0x4e0], edx
jmp 0x521ff5
xor eax, eax
cmp edi, 3
mov ecx, 0
jbe 0x52201f
mov esi, dword [ebp - 0x14]
movzx ecx, byte [edi + esi - 4]
mov edx, ecx
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, cl
cmp dl, 0x2e
jne 0x52201d
movzx ecx, byte [esi + edi - 3]
mov edx, ecx
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, cl
cmp dl, 0x65
jne 0x52201d
movzx ecx, byte [esi + edi - 2]
mov edx, ecx
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, cl
cmp dl, 0x78
jne 0x52201d
mov ecx, ebx
add cl, 0xbf
cmp cl, 0x1a
setb cl
shl cl, 5
or cl, bl
cmp cl, 0x65
sete cl
jmp 0x52201f
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x4fc], ecx
mov dword [ebp - 0x4ec], ecx
mov dword [ebp - 0x4dc], eax
lea ecx, [ebp - 0x4fc]
call dbg.drop_in_place<alloc::collections::btree::map::IntoIter<std::sys::windows::process::EnvKey, std::ffi::os_str::OsString, alloc::alloc::Global>>
add esp, 0x4f0
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x24], edi
lea ebx, [edx + edi]
mov dword [ebp - 0x18], ebx
nop dword [eax + eax]
cmp edi, eax
je 0x5220a2
mov edx, dword [ebp - 0x14]
movzx edx, byte [edx + eax]
cmp edx, 0x2f
je 0x522046
inc eax
cmp edx, 0x5c
jne 0x522030
test cl, cl
je 0x52215d
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x4fc]
push edi
call dbg.inner
add esp, 4
mov edx, dword [ebp - 0x4fc]
mov eax, dword [ebp - 0x4f8]
mov ecx, dword [ebp - 0x4f4]
test edx, edx
je 0x522260
mov dword [ebp - 0x4fc], edx
mov dword [ebp - 0x4f8], eax
mov dword [ebp - 0x4f4], ecx
lea ecx, [ebp - 0x84]
lea edx, [ebp - 0x4fc]
call dbg.from_wide_to_user_path
jmp 0x522270
mov eax, dword [ebp - 0x14]
xor esi, esi
jmp 0x5220bb
xor esi, esi
test cx, cx
je 0x52224d
mov cx, 1
test si, si
jne 0x5220b0
cmp eax, ebx
je 0x52231c
movzx edx, byte [eax]
test dl, dl
js 0x5220d6
inc eax
jmp 0x52212c
movzx ebx, byte [eax + 1]
mov esi, edx
and esi, 0x1f
and ebx, 0x3f
cmp dl, 0xdf
jbe 0x52211f
movzx edi, byte [eax + 2]
shl ebx, 6
and edi, 0x3f
or edi, ebx
cmp dl, 0xf0
jb 0x522132
movzx edx, byte [eax + 3]
and esi, 7
shl edi, 6
add eax, 4
shl esi, 0x12
and edx, 0x3f
or edx, edi
or edx, esi
mov ebx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x24]
cmp edx, 0xffff
jbe 0x52212c
jmp 0x52214a
shl esi, 6
add eax, 2
or esi, ebx
mov ebx, dword [ebp - 0x18]
mov edx, esi
xor esi, esi
mov ecx, edx
jmp 0x5220b2
shl esi, 0xc
add eax, 3
or edi, esi
mov edx, edi
mov ebx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x24]
cmp edx, 0xffff
jbe 0x52212c
and edx, 0x3ff
or edx, 0xdc00
mov esi, edx
jmp 0x5220b2
mov ebx, dword [ebp - 0x30]
test edi, edi
js 0x52434b
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x52218a
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x524299
mov dword [0x5da100], eax
push edi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x524299
mov esi, eax
push edi
push dword [ebp - 0x14]
push eax
call sym._memcpy
add esp, 0xc
movzx eax, word [ebp - 0xc8]
mov dword [ebp - 0x4fc], esi
mov dword [ebp - 0x4f8], edi
mov dword [ebp - 0x4f4], edi
mov byte [ebp - 0x4f0], 0
mov word [ebp - 0x4ef], ax
mov ah, byte [ebp - 0xc6]
mov byte [ebp - 0x4ed], ah
mov edx, str..exeprogram_not_found
lea ecx, [ebp - 0x4fc]
push 4
call dbg.push_slice
add esp, 4
mov ecx, dword [ebp - 0x4f8]
lea eax, [ebp - 0x4ef]
mov esi, dword [ebp - 0x4fc]
mov edi, dword [ebp - 0x4f4]
mov dword [ebp - 0x24], ecx
movzx ecx, word [eax]
movzx eax, byte [eax + 2]
mov word [ebp - 0xc8], cx
mov byte [ebp - 0xc6], al
mov edx, esi
lea ecx, [ebp - 0x60]
push edi
call dbg.program_exists
add esp, 4
cmp dword [ebp - 0x60], 0
je 0x522278
mov eax, dword [ebp - 0x58]
movsd xmm0, qword [ebp - 0x60]
mov dword [ebp - 0x7c], eax
movsd qword [ebp - 0x84], xmm0
jmp 0x522595
mov dword [ebp - 0x80], 2
mov dword [ebp - 0x7c], 0x5bbd80
jmp 0x521f06
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x84], 0
mov ebx, dword [ebp - 0x30]
jmp 0x5225a9
mov ecx, esi
mov edx, edi
call dbg.file_name
test eax, eax
je 0x5222c9
cmp edx, 2
jne 0x52229a
movzx ebx, word [eax]
mov ecx, 2
cmp ebx, 0x2e2e
je 0x5222bd
mov ebx, edx
nop dword [eax]
test ebx, ebx
je 0x5222bb
mov ecx, ebx
dec ebx
cmp byte [eax + ecx - 1], 0x2e
jne 0x5222a0
cmp edx, ecx
jb 0x52437c
test ebx, ebx
cmovne edx, ebx
mov ecx, edx
add eax, ecx
mov ebx, dword [ebp - 0x30]
sub eax, esi
cmp edi, eax
cmovae edi, eax
mov edx, esi
lea ecx, [ebp - 0x4fc]
push edi
call dbg.inner
add esp, 4
mov edx, dword [ebp - 0x4fc]
mov eax, dword [ebp - 0x4f8]
mov ecx, dword [ebp - 0x4f4]
test edx, edx
je 0x522585
mov dword [ebp - 0x4fc], edx
mov dword [ebp - 0x4f8], eax
mov dword [ebp - 0x4f4], ecx
lea ecx, [ebp - 0x84]
lea edx, [ebp - 0x4fc]
call dbg.from_wide_to_user_path
jmp 0x522595
cmp edi, 7
ja 0x522351
mov ecx, dword [ebp - 0x14]
lea eax, [edi - 1]
nop word [eax + eax]
sub eax, 1
setb dl
cmp byte [ecx], 0x2e
sete byte [ebp - 0x34]
je 0x522369
inc ecx
test dl, dl
je 0x522330
jmp 0x522369
mov esi, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x34]
jmp 0x521e9a
mov edx, dword [ebp - 0x14]
mov ecx, 0x2e
push edi
call sym.core::slice::memchr::memchr_aligned::h6e8085337fe448d4
add esp, 4
cmp eax, 1
sete byte [ebp - 0x34]
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x5223b1
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0xc8], eax
add ecx, eax
mov dword [ebp - 0xc4], ecx
mov word [ebp - 0xc0], 0
mov byte [ebp - 0xbc], 1
lea ecx, [ebp - 0x4fc]
lea edx, [ebp - 0xc8]
call sym.__LT_std..sys..windows..os..SplitPaths_u20_as_u20_core..iter..traits..iterator..Iterator_GT_::next::h54cca34ef753caac
movzx eax, byte [ebp - 0x4f0]
cmp al, 2
jne 0x522fd0
lea ecx, [ebp - 0x60]
call dbg.current_exe
cmp byte [ebp - 0x54], 2
jne 0x5223cc
lea ecx, [ebp - 0x60]
call dbg.drop_in_place<core::result::Result<std::path::PathBuf, std::io::error::Error>>
jmp 0x522479
mov edi, dword [ebp - 0x60]
mov esi, dword [ebp - 0x5c]
mov ebx, dword [ebp - 0x58]
mov ecx, edi
mov edx, ebx
call dbg.parent
mov dword [ebp - 0x4fc], edi
mov dword [ebp - 0x4f8], esi
mov esi, dword [ebp - 0x54]
cmp ebx, edx
cmovb edx, ebx
test eax, eax
cmove edx, ebx
mov dword [ebp - 0x4f4], edx
mov dword [ebp - 0x4f0], esi
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x4fc]
push dword [ebp - 0x24]
call dbg._push
add esp, 4
cmp byte [ebp - 0x34], 0
jne 0x522428
lea ecx, [ebp - 0x4fc]
call sym.std::path::PathBuf::_set_extension::h28031192919265e7
mov esi, dword [ebp - 0x4fc]
mov edx, esi
lea ecx, [ebp - 0xc8]
push dword [ebp - 0x4f4]
call dbg.program_exists
add esp, 4
cmp dword [ebp - 0x4f8], 0
mov ebx, dword [ebp - 0x30]
je 0x52245e
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x522479
mov esi, dword [ebp - 0xc4]
mov edi, dword [ebp - 0xc0]
jmp 0x5225bd
mov ebx, 0x200
mov dword [ebp - 0x98], 2
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x2c], 2
mov dword [ebp - 0x1c], 0
cmp ebx, 0x201
jb 0x5224d1
jmp 0x5224f0
mov edi, dword [ebp - 0x24]
jbe 0x522ed6
cmp ebx, 0x201
jae 0x5224f0
lea esi, [ebp - 0x4fc]
mov dword [ebp - 0x28], 0x200
mov edi, ebx
jmp 0x522530
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
sub ebx, edi
sub eax, edi
cmp eax, ebx
jae 0x52251e
mov edx, edi
lea ecx, [ebp - 0x98]
push ebx
call dbg.do_reserve_and_handle<core::mem::maybe_uninit::MaybeUninit<u16>, alloc::alloc::Global>
add esp, 4
mov eax, dword [ebp - 0x98]
mov edi, dword [ebp - 0x94]
mov dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x90], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x20], edi
push 0
call sub.kernel32.dll_SetLastError
push edi
push esi
call sub.kernel32.dll_GetSystemDirectoryW
mov ebx, eax
test eax, eax
jne 0x522551
call sub.kernel32.dll_GetLastError
test eax, eax
jne 0x5230bb
cmp ebx, edi
jne 0x5224c0
call sub.kernel32.dll_GetLastError
cmp eax, 0x7a
jne 0x5242ab
lea ebx, [edi + edi]
test edi, edi
mov eax, 0xffffffff
cmovs ebx, eax
cmp ebx, 0x201
jae 0x5224f0
jmp 0x5224d1
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x84], 0
cmp dword [ebp - 0x24], 0
je 0x5225a9
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x84]
mov esi, dword [ebp - 0x80]
mov edi, dword [ebp - 0x7c]
test eax, eax
je 0x521f0c
mov dword [ebp - 0x24], eax
cmp edi, 5
mov dword [ebp - 0x20], esi
jb 0x5225e2
mov eax, dword [ebp - 0x24]
cmp word [eax + edi*2 - 0xa], 0x2e
jne 0x5225e2
mov eax, dword [ebp - 0x24]
cmp word [eax + edi*2 - 2], 0
je 0x522d83
mov eax, ebx
mov ebx, dword [ebx + 0x48]
mov dword [ebp - 0x60], 2
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
mov esi, dword [eax + 0x50]
movzx eax, byte [eax + 0x59]
mov byte [ebp - 0x1c], al
lea ecx, [ebp - 0x60]
xor edx, edx
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x18]
mov word [eax + ecx*2], 0x22
mov eax, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x4fc], eax
mov dword [ebp - 0x4f8], edi
mov word [ebp - 0x4f4], 0
lea ecx, [ebp - 0x60]
lea edx, [ebp - 0x4fc]
call dbg.spec_extend<u16, std::sys_common::wtf8::EncodeWide, alloc::alloc::Global>
mov edx, dword [ebp - 0x58]
cmp edx, dword [ebp - 0x5c]
jne 0x52265c
lea ecx, [ebp - 0x60]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x60]
mov word [eax + edx*2], 0x22
inc edx
test esi, esi
mov dword [ebp - 0x58], edx
je 0x5226e9
shl esi, 2
lea edi, [esi + esi*4]
movzx esi, byte [ebp - 0x1c]
nop word [eax + eax]
mov edx, dword [ebp - 0x58]
cmp edx, dword [ebp - 0x5c]
jne 0x522693
lea ecx, [ebp - 0x60]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x60]
mov word [eax + edx*2], 0x20
inc edx
mov dword [ebp - 0x58], edx
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0xc8]
push esi
push ebx
call dbg.append_arg
add esp, 8
movzx eax, byte [ebp - 0xc8]
cmp al, 4
jne 0x52272f
add ebx, 0x14
add edi, 0xffffffec
jne 0x522680
mov eax, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x58]
mov cl, 1
mov dword [ebp - 0x2c], ecx
test eax, eax
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x34], edx
jne 0x522700
jmp 0x522772
mov ebx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x58]
mov cl, 1
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x34], edx
cmp esi, edi
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x7c], esi
jne 0x522796
lea ecx, [ebp - 0x84]
mov edx, esi
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov ebx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x84]
mov esi, dword [ebp - 0x7c]
jmp 0x522799
movzx ecx, byte [ebp - 0xc1]
mov ebx, dword [ebp - 0xc7]
movzx esi, word [ebp - 0xc3]
movzx eax, al
mov edi, ebx
shl ecx, 0x10
or esi, ecx
shl edi, 8
cmp dword [ebp - 0x5c], 0
je 0x52276c
push dword [ebp - 0x60]
push 0
push dword [0x5da100]
mov dword [ebp - 0x14], eax
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x14]
shld esi, ebx, 8
or edi, eax
mov eax, dword [ebp - 0x8c]
mov dword [eax], edi
mov dword [eax + 4], esi
mov dword [eax + 8], 2
mov edi, dword [ebp - 0x20]
xor ebx, ebx
test edi, edi
jne 0x523a86
jmp 0x523a96
mov ebx, dword [ebp - 0x30]
mov word [eax + esi*2], 0
inc esi
mov eax, 0x400
mov ecx, 0x608
cmp byte [ebx + 0x58], 0
mov dword [ebp - 0x7c], esi
cmove ecx, eax
or ecx, dword [ebx + 0x54]
cmp dword [ebp - 0xec], 0
mov dword [ebp - 0xfc], ecx
je 0x522c6b
mov esi, dword [ebp - 0xe0]
movsd xmm0, qword [ebp - 0xe8]
mov ebx, 2
mov ecx, 0
mov dword [ebp - 0x78], 2
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x18], 0
test esi, esi
mov dword [ebp - 0x90], esi
movsd qword [ebp - 0x98], xmm0
jne 0x52282e
mov bl, 1
lea ecx, [ebp - 0x78]
xor edx, edx
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x70]
mov word [eax + ecx*2], 0
inc ecx
mov ebx, eax
mov dword [ebp - 0x70], ecx
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0xdc], ecx
mov ecx, dword [ebp - 0x94]
xor edx, edx
lea edi, [ebp - 0x60]
mov dword [ebp - 0xf0], 0
test eax, eax
setne dl
cmove esi, eax
mov dword [ebp - 0x4fc], edx
mov dword [ebp - 0x4f8], 0
mov dword [ebp - 0x4f4], eax
mov dword [ebp - 0x4f0], ecx
mov dword [ebp - 0x4ec], edx
mov dword [ebp - 0x4e8], 0
mov dword [ebp - 0x4e4], eax
mov dword [ebp - 0x4e0], ecx
mov dword [ebp - 0x4dc], esi
lea edx, [ebp - 0x4fc]
mov esi, ebx
mov ecx, edi
call dbg.dying_next<std::sys::windows::process::EnvKey, core::option::Option<std::ffi::os_str::OsString>, alloc::alloc::Global>
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x52387c
mov edx, dword [ebp - 0x58]
lea ecx, [edx + edx*8]
lea ecx, [ecx + ecx*2]
add ecx, edx
cmp byte [eax + ecx + 0xcc], 2
je 0x52387c
shl edx, 4
mov dword [ebp - 0x10], esi
mov esi, dword [eax + edx]
movzx ebx, byte [eax + edx + 0xc]
mov dword [ebp - 0x64], esi
mov esi, dword [eax + edx + 4]
mov edx, dword [eax + edx + 8]
mov byte [ebp - 0xc9], bl
mov dword [ebp - 0x28], edx
mov edx, dword [eax + ecx + 0xb4]
mov dword [ebp - 0x88], esi
mov esi, dword [eax + ecx + 0xc4]
mov dword [ebp - 0xd4], edx
mov edx, dword [eax + ecx + 0xb8]
mov dword [ebp - 0x9c], esi
mov dword [ebp - 0xd0], edx
mov edx, dword [eax + ecx + 0xbc]
mov dword [ebp - 0xf4], edx
mov edx, dword [eax + ecx + 0xc0]
mov ecx, dword [eax + ecx + 0xc8]
xor eax, eax
add ecx, edx
mov dword [ebp - 0xd8], edx
mov dword [ebp - 0x1c], ecx
jmp 0x52295b
xor eax, eax
test si, si
je 0x522c06
mov si, 1
test ax, ax
jne 0x522950
cmp edx, ecx
je 0x522a0e
movzx ebx, byte [edx]
test bl, bl
js 0x522976
inc edx
jmp 0x5229c9
movzx ecx, byte [edx + 1]
mov eax, ebx
and eax, 0x1f
and ecx, 0x3f
cmp bl, 0xdf
jbe 0x5229bc
movzx edi, byte [edx + 2]
shl ecx, 6
and edi, 0x3f
or edi, ecx
cmp bl, 0xf0
jb 0x5229da
movzx ebx, byte [edx + 3]
and eax, 7
shl edi, 6
add edx, 4
shl eax, 0x12
and ebx, 0x3f
or ebx, edi
or ebx, eax
mov ecx, dword [ebp - 0x1c]
cmp ebx, 0xffff
jbe 0x5229c9
jmp 0x5229ef
shl eax, 6
add edx, 2
or eax, ecx
mov ecx, dword [ebp - 0x1c]
mov ebx, eax
xor eax, eax
mov esi, ebx
lea edi, [ebp - 0x60]
test si, si
jne 0x52295b
jmp 0x522c06
shl eax, 0xc
add edx, 3
or edi, eax
mov ebx, edi
mov ecx, dword [ebp - 0x1c]
cmp ebx, 0xffff
jbe 0x5229c9
and ebx, 0x3ff
or ebx, 0xdc00
mov eax, ebx
lea edi, [ebp - 0x60]
test si, si
jne 0x52295b
jmp 0x522c06
cmp dword [ebp - 0x9c], 0
je 0x522a2a
push dword [ebp - 0xd8]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x74]
mov edx, dword [ebp - 0xdc]
mov esi, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0x10]
sub eax, edx
cmp eax, esi
jae 0x522a54
lea ecx, [ebp - 0x78]
push esi
call dbg.do_reserve_and_handle<core::mem::maybe_uninit::MaybeUninit<u16>, alloc::alloc::Global>
add esp, 4
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x10], ecx
lea eax, [esi + esi]
lea ecx, [ecx + edx*2]
push eax
mov esi, dword [ebp - 0xd4]
push esi
push ecx
mov ebx, edx
call sym._memcpy
mov edx, ebx
add esp, 0xc
add edx, dword [ebp - 0xf4]
cmp dword [ebp - 0xd0], 0
mov dword [ebp - 0x70], edx
je 0x522a96
push esi
push 0
push dword [0x5da100]
mov ebx, edx
call sub.kernel32.dll_HeapFree
mov edx, ebx
cmp edx, dword [ebp - 0x74]
jne 0x522aab
lea ecx, [ebp - 0x78]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov eax, dword [ebp - 0x78]
mov edx, dword [ebp - 0x70]
jmp 0x522aae
mov eax, dword [ebp - 0x10]
mov word [eax + edx*2], 0x3d
mov eax, dword [ebp - 0x64]
and dword [ebp - 0xd8], 0xffffff00
inc edx
xor esi, esi
mov dword [ebp - 0x70], edx
add dword [ebp - 0x28], eax
jmp 0x522adb
xor esi, esi
test cx, cx
je 0x522f5a
mov cx, 1
test si, si
jne 0x522ad0
cmp eax, dword [ebp - 0x28]
je 0x522b72
movzx edx, byte [eax]
test dl, dl
js 0x522af7
inc eax
jmp 0x522b56
movzx ebx, byte [eax + 1]
mov esi, edx
and esi, 0x1f
and ebx, 0x3f
cmp dl, 0xdf
jbe 0x522b32
movzx edi, byte [eax + 2]
shl ebx, 6
and edi, 0x3f
or edi, ebx
cmp dl, 0xf0
jb 0x522b41
movzx edx, byte [eax + 3]
and esi, 7
shl edi, 6
add eax, 4
shl esi, 0x12
and edx, 0x3f
or edx, edi
or edx, esi
jmp 0x522b4b
shl esi, 6
add eax, 2
lea edi, [ebp - 0x60]
or esi, ebx
mov edx, esi
jmp 0x522b56
shl esi, 0xc
add eax, 3
or edi, esi
mov edx, edi
lea edi, [ebp - 0x60]
cmp edx, 0xffff
ja 0x522b5f
xor esi, esi
mov ecx, edx
jmp 0x522ad2
and edx, 0x3ff
or edx, 0xdc00
mov esi, edx
jmp 0x522ad2
mov eax, dword [ebp - 0x64]
mov esi, eax
shr esi, 8
cmp byte [ebp - 0xc9], 2
mov dword [ebp - 0xf0], esi
je 0x524086
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0xc8], eax
mov dword [ebp - 0xc4], esi
mov word [ebp - 0xc0], 0
lea ecx, [ebp - 0x78]
lea edx, [ebp - 0xc8]
call dbg.spec_extend<u16, std::sys_common::wtf8::EncodeWide, alloc::alloc::Global>
cmp dword [ebp - 0x88], 0
je 0x522bcc
push dword [ebp - 0x64]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, dword [ebp - 0x70]
cmp edx, dword [ebp - 0x74]
jne 0x522bdf
lea ecx, [ebp - 0x78]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov edx, dword [ebp - 0x70]
mov esi, dword [ebp - 0x78]
mov eax, dword [ebp - 0xd8]
mov word [esi + edx*2], 0
inc edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0xdc], edx
mov dword [ebp - 0x70], edx
lea edx, [ebp - 0x4fc]
jmp 0x52289d
cmp dword [ebp - 0x9c], 0
je 0x522c22
push dword [ebp - 0xd8]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x88], 0
mov eax, dword [ebp - 0x64]
je 0x522c3c
push eax
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
or dword [ebp - 0x18], 2
cmp dword [ebp - 0xd0], 0
mov eax, dword [ebp - 0xd4]
mov edi, 0x5bbd80
je 0x522f8b
push eax
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x522f8b
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 2
mov dword [ebp - 0x10], 0
cmp byte [ebx + 0x44], 2
jne 0x522c9b
xor esi, esi
mov dword [ebp - 0x88], 2
xor ecx, ecx
xor eax, eax
jmp 0x52347d
mov edx, dword [ebx + 0x38]
mov eax, dword [ebx + 0x40]
xor edi, edi
add eax, edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x28], eax
jmp 0x522cbb
xor edi, edi
test si, si
je 0x522d5e
mov si, 1
test di, di
jne 0x522cb0
cmp edx, eax
je 0x523427
movzx ebx, byte [edx]
test bl, bl
js 0x522cd6
inc edx
jmp 0x522d32
movzx ecx, byte [edx + 1]
mov edi, ebx
and edi, 0x1f
and ecx, 0x3f
cmp bl, 0xdf
jbe 0x522d11
movzx eax, byte [edx + 2]
shl ecx, 6
and eax, 0x3f
or eax, ecx
cmp bl, 0xf0
jb 0x522d1d
movzx ebx, byte [edx + 3]
and edi, 7
shl eax, 6
add edx, 4
shl edi, 0x12
and ebx, 0x3f
or ebx, eax
or ebx, edi
jmp 0x522d27
shl edi, 6
add edx, 2
or edi, ecx
mov ebx, edi
jmp 0x522d32
shl edi, 0xc
add edx, 3
or eax, edi
mov ebx, eax
mov eax, dword [ebp - 0x28]
cmp ebx, 0xffff
ja 0x522d44
xor edi, edi
mov esi, ebx
mov ebx, dword [ebp - 0x30]
test si, si
jne 0x522cbb
jmp 0x522d5e
and ebx, 0x3ff
or ebx, 0xdc00
mov edi, ebx
mov ebx, dword [ebp - 0x30]
test si, si
jne 0x522cbb
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
mov dword [eax + 4], 0x5bbd80
mov dword [eax], 2
mov dword [eax + 8], 2
jmp 0x523a33
mov eax, dword [ebp - 0x24]
movzx eax, word [eax + edi*2 - 8]
lea ecx, [eax - 0x42]
cmp ecx, 0x21
ja 0x5225e2
mov edx, dword [ebp - 0x88]
add edx, dword [ecx*4 + 0x524758]
jmp edx
mov edx, dword [ebp - 0x28]
cmp ebx, edx
ja 0x52436b
mov edx, esi
lea ecx, [ebp - 0x60]
push ebx
call dbg.from_wide
add esp, 4
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x60]
push edi
call dbg._push
add esp, 4
cmp byte [ebp - 0x34], 0
jne 0x522f0c
lea ecx, [ebp - 0x60]
call sym.std::path::PathBuf::_set_extension::h28031192919265e7
mov esi, dword [ebp - 0x60]
mov edx, esi
lea ecx, [ebp - 0x78]
push dword [ebp - 0x58]
call dbg.program_exists
add esp, 4
cmp dword [ebp - 0x5c], 0
je 0x522f33
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
movsd xmm0, qword [ebp - 0x78]
mov eax, dword [ebp - 0x70]
mov bl, 1
movsd qword [ebp - 0xc4], xmm0
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xc8], 0
jmp 0x5230d9
cmp dword [ebp - 0x88], 0
mov edi, 0x5bbd80
mov esi, 2
je 0x522f7d
push dword [ebp - 0x64]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0xf0]
shl eax, 8
or eax, esi
mov dword [ebp - 0x18], eax
xor ebx, ebx
lea ecx, [ebp - 0x4fc]
call dbg.drop_in_place<alloc::collections::btree::map::IntoIter<std::sys::windows::process::EnvKey, std::ffi::os_str::OsString, alloc::alloc::Global>>
cmp dword [ebp - 0x74], 0
je 0x522fae
push dword [ebp - 0x78]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, edi
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x18]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 8], 2
jmp 0x523a49
lea edi, [ebp - 0x4fc]
jmp 0x522ffc
mov ecx, edi
lea edx, [ebp - 0xc8]
call sym.__LT_std..sys..windows..os..SplitPaths_u20_as_u20_core..iter..traits..iterator..Iterator_GT_::next::h54cca34ef753caac
movzx eax, byte [ebp - 0x4f0]
cmp al, 2
je 0x5223b1
mov esi, dword [ebp - 0x4f4]
mov ecx, dword [ebp - 0x4fc]
mov edx, dword [ebp - 0x4f8]
test esi, esi
jne 0x523026
test edx, edx
je 0x522fe0
push ecx
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x522fe0
lea ebx, [ebp - 0x4ef]
lea edi, [ebp - 0x53]
movzx ebx, word [ebx]
mov word [edi], bx
lea ebx, [ebp - 0x4ef]
mov ah, byte [ebx + 2]
mov byte [edi + 2], ah
lea edi, [ebp - 0x4fc]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x58], esi
mov byte [ebp - 0x54], al
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x60]
push dword [ebp - 0x24]
call dbg._push
add esp, 4
cmp byte [ebp - 0x34], 0
jne 0x523072
lea ecx, [ebp - 0x60]
call sym.std::path::PathBuf::_set_extension::h28031192919265e7
mov esi, dword [ebp - 0x60]
mov edx, esi
mov ecx, edi
push dword [ebp - 0x58]
call dbg.program_exists
add esp, 4
cmp dword [ebp - 0x5c], 0
mov ebx, dword [ebp - 0x30]
je 0x52309b
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x4fc]
test eax, eax
jne 0x523aa3
mov ecx, edi
lea edx, [ebp - 0xc8]
call sym.__LT_std..sys..windows..os..SplitPaths_u20_as_u20_core..iter..traits..iterator..Iterator_GT_::next::h54cca34ef753caac
jmp 0x522fed
call sub.kernel32.dll_GetLastError
xor ebx, ebx
mov byte [ebp - 0xc4], 0
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0xc8], 1
cmp dword [ebp - 0x20], 0
je 0x5230ef
push dword [ebp - 0x2c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
test bl, bl
je 0x523101
mov eax, dword [ebp - 0xc4]
test eax, eax
jne 0x5232d8
lea ecx, [ebp - 0xc8]
call dbg.drop_in_place<core::result::Result<core::option::Option<alloc::vec::Vec<u16, alloc::alloc::Global>>, std::io::error::Error>>
mov ebx, 0x200
mov dword [ebp - 0x98], 2
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x2c], 2
mov dword [ebp - 0x1c], 0
cmp ebx, 0x201
jb 0x523161
jmp 0x523180
mov edi, dword [ebp - 0x24]
jbe 0x523215
cmp ebx, 0x201
jae 0x523180
lea esi, [ebp - 0x4fc]
mov dword [ebp - 0x28], 0x200
mov edi, ebx
jmp 0x5231c0
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
sub ebx, edi
sub eax, edi
cmp eax, ebx
jae 0x5231ae
mov edx, edi
lea ecx, [ebp - 0x98]
push ebx
call dbg.do_reserve_and_handle<core::mem::maybe_uninit::MaybeUninit<u16>, alloc::alloc::Global>
add esp, 4
mov eax, dword [ebp - 0x98]
mov edi, dword [ebp - 0x94]
mov dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x90], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x20], edi
push 0
call sub.kernel32.dll_SetLastError
push edi
push esi
call sub.kernel32.dll_GetWindowsDirectoryW
mov ebx, eax
test eax, eax
jne 0x5231e1
call sub.kernel32.dll_GetLastError
test eax, eax
jne 0x523296
cmp ebx, edi
jne 0x523150
call sub.kernel32.dll_GetLastError
cmp eax, 0x7a
jne 0x5242c7
lea ebx, [edi + edi]
test edi, edi
mov eax, 0xffffffff
cmovs ebx, eax
cmp ebx, 0x201
jae 0x523180
jmp 0x523161
mov edx, dword [ebp - 0x28]
cmp ebx, edx
ja 0x52438b
mov edx, esi
lea ecx, [ebp - 0x60]
push ebx
call dbg.from_wide
add esp, 4
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x60]
push edi
call dbg._push
add esp, 4
cmp byte [ebp - 0x34], 0
jne 0x52324b
lea ecx, [ebp - 0x60]
call sym.std::path::PathBuf::_set_extension::h28031192919265e7
mov esi, dword [ebp - 0x60]
mov edx, esi
lea ecx, [ebp - 0x78]
push dword [ebp - 0x58]
call dbg.program_exists
add esp, 4
cmp dword [ebp - 0x5c], 0
je 0x523272
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
movsd xmm0, qword [ebp - 0x78]
mov eax, dword [ebp - 0x70]
mov bl, 1
movsd qword [ebp - 0xc4], xmm0
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xc8], 0
jmp 0x5232b4
call sub.kernel32.dll_GetLastError
xor ebx, ebx
mov byte [ebp - 0xc4], 0
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0xc8], 1
cmp dword [ebp - 0x20], 0
je 0x5232ca
push dword [ebp - 0x2c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
test bl, bl
je 0x5232ec
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x5232ec
mov esi, dword [ebp - 0xc0]
mov edi, dword [ebp - 0xbc]
mov ebx, dword [ebp - 0x30]
jmp 0x5225bd
lea ecx, [ebp - 0xc8]
call dbg.drop_in_place<core::result::Result<core::option::Option<alloc::vec::Vec<u16, alloc::alloc::Global>>, std::io::error::Error>>
mov edx, str.PATHlibrary_std_src_sys_commonprocess.rs
lea ecx, [ebp - 0x78]
push 4
call dbg._var_os
add esp, 4
cmp byte [ebp - 0x6c], 2
je 0x52386c
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x74]
lea edi, [ebp - 0x4fc]
add edx, ecx
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0xc4], edx
mov word [ebp - 0xc0], 0
mov byte [ebp - 0xbc], 1
jmp 0x523356
mov eax, dword [ebp - 0x4fc]
test eax, eax
jne 0x523f51
lea ebx, [ebp - 0xc8]
mov ecx, edi
mov edx, ebx
call sym.__LT_std..sys..windows..os..SplitPaths_u20_as_u20_core..iter..traits..iterator..Iterator_GT_::next::h54cca34ef753caac
jmp 0x523370
mov ecx, edi
mov edx, ebx
call sym.__LT_std..sys..windows..os..SplitPaths_u20_as_u20_core..iter..traits..iterator..Iterator_GT_::next::h54cca34ef753caac
movzx eax, byte [ebp - 0x4f0]
cmp al, 2
je 0x523856
mov esi, dword [ebp - 0x4f4]
mov ecx, dword [ebp - 0x4fc]
mov edx, dword [ebp - 0x4f8]
test esi, esi
jne 0x5233a9
test edx, edx
je 0x523367
push ecx
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x523367
lea ebx, [ebp - 0x4ef]
lea edi, [ebp - 0x53]
movzx ebx, word [ebx]
mov word [edi], bx
lea ebx, [ebp - 0x4ef]
mov ah, byte [ebx + 2]
mov byte [edi + 2], ah
lea edi, [ebp - 0x4fc]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x58], esi
mov byte [ebp - 0x54], al
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x60]
push dword [ebp - 0x24]
call dbg._push
add esp, 4
cmp byte [ebp - 0x34], 0
jne 0x5233f5
lea ecx, [ebp - 0x60]
call sym.std::path::PathBuf::_set_extension::h28031192919265e7
mov esi, dword [ebp - 0x60]
mov edx, esi
mov ecx, edi
push dword [ebp - 0x58]
call dbg.program_exists
add esp, 4
cmp dword [ebp - 0x5c], 0
mov ebx, dword [ebp - 0x30]
je 0x523348
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x523348
mov esi, dword [ebp - 0x64]
mov ecx, eax
mov dword [ebp - 0x4fc], esi
mov dword [ebp - 0x4f8], ecx
mov word [ebp - 0x4f4], 0
lea ecx, [ebp - 0x60]
lea edx, [ebp - 0x4fc]
call dbg.from_iter<u16, std::sys_common::wtf8::EncodeWide>
mov ecx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
cmp edx, ecx
jne 0x523467
lea ecx, [ebp - 0x60]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov ecx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x60]
mov eax, ecx
and eax, 0xffffff00
mov word [esi + edx*2], 0
mov dword [ebp - 0x88], esi
movzx ecx, cl
xorps xmm0, xmm0
or ecx, eax
movups xmmword [ebp - 0xc8], xmm0
mov dword [ebp - 0x28], ecx
push 0x5da108
call sub.kernel32.dll_AcquireSRWLockExclusive
mov eax, dword [0x5da168]
xor edi, edi
mov dword [ebp - 0xd0], esi
test eax, 0x7fffffff
je 0x5234b6
call dbg.is_zero_slow_path
xor al, 1
jmp 0x5234b8
xor eax, eax
movzx edx, byte [0x5da10c]
xor ecx, ecx
mov dword [ebp - 0x74], 0x5da108
mov byte [ebp - 0x70], al
mov dword [ebp - 0x64], eax
mov eax, ebx
lea esi, [ebp - 0x98]
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x50], 0
test dl, dl
mov byte [ebp - 0x9c], dl
mov edx, 1
setne cl
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebx]
cmp ecx, 5
cmove eax, edi
cmp byte [ebp + 0xc], 0
lea edi, [ebp - 0xf8]
cmovne esi, edi
cmovne edx, dword [ebp + 8]
add eax, 4
cmp ecx, 5
lea edi, [ebx + 8]
cmove eax, esi
mov esi, dword [ebx + 8]
cmovne edx, ecx
mov ecx, 0
cmp esi, 5
cmove edi, ecx
mov ecx, dword [ebx + 0x10]
add ebx, 0x10
mov dword [ebp - 0xd4], ecx
cmp ecx, 5
mov ecx, 0
cmove ebx, ecx
mov dword [ebp - 0x30], ebx
lea ebx, [ebp - 0x60]
lea ecx, [ebp - 0x4fc]
push ebx
push 0xfffffffffffffff6
push dword [eax]
call dbg.to_handle
add esp, 0xc
movzx eax, byte [ebp - 0x4fc]
cmp al, 4
jne 0x5237e6
add edi, 4
cmp esi, 5
mov ebx, dword [ebp - 0x4f8]
lea ecx, [ebp - 0xf8]
lea eax, [ebp - 0x58]
cmove esi, dword [ebp + 8]
cmove edi, ecx
mov edx, esi
lea ecx, [ebp - 0x4fc]
push eax
push 0xfffffffffffffff5
push dword [edi]
call dbg.to_handle
add esp, 0xc
movzx eax, byte [ebp - 0x4fc]
mov esi, dword [ebp - 0x30]
cmp al, 4
jne 0x52381e
mov eax, dword [ebp - 0xd4]
add esi, 4
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0xf8]
cmp eax, 5
cmove esi, ecx
mov ecx, dword [ebp - 0x4f8]
cmovne edx, eax
lea eax, [ebp - 0x50]
mov dword [ebp - 0x30], ecx
lea ecx, [ebp - 0x4fc]
push eax
push 0xfffffffffffffff4
push dword [esi]
mov edi, dword [ebp - 0x20]
call dbg.to_handle
add esp, 0xc
movzx eax, byte [ebp - 0x4fc]
cmp al, 4
jne 0x5238d0
mov edi, dword [ebp - 0x4f8]
test ebx, ebx
mov dword [ebp - 0x4f4], 0
mov dword [ebp - 0x4f8], 0
mov dword [ebp - 0x4ec], 0
mov dword [ebp - 0x4f0], 0
mov dword [ebp - 0x4e4], 0
mov dword [ebp - 0x4e8], 0
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4e0], 0
mov dword [ebp - 0x4d4], 0
mov dword [ebp - 0x4d8], 0
mov dword [ebp - 0x4cc], 0
mov dword [ebp - 0x4d0], 0
mov dword [ebp - 0x4c4], 0
mov dword [ebp - 0x4c8], 0
mov dword [ebp - 0x4bc], 0
mov dword [ebp - 0x4c0], 0
mov dword [ebp - 0x4fc], 0x44
jne 0x5236c0
cmp dword [ebp - 0x30], 0
jne 0x5236c0
test edi, edi
je 0x5236df
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x4d0], 0x100
mov dword [ebp - 0x4c4], ebx
mov dword [ebp - 0x4c0], eax
mov dword [ebp - 0x4bc], edi
mov esi, dword [ebp - 0x84]
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0x4fc]
push eax
push dword [ebp - 0xd0]
push dword [ebp - 0x10]
push dword [ebp - 0xfc]
push 1
push 0
push 0
push esi
push dword [ebp - 0x34]
call sub.kernel32.dll_CreateProcessW
test eax, eax
je 0x52396d
mov eax, dword [ebp - 0x8c]
movsd xmm1, qword [ebp - 0x58]
movsd xmm0, qword [ebp - 0x50]
movsd xmm2, qword [ebp - 0x60]
movsd qword [eax + 0x10], xmm1
movsd xmm1, qword [ebp - 0xc8]
movsd qword [eax + 0x18], xmm0
movsd qword [eax + 8], xmm2
movsd qword [eax], xmm1
push edi
call sub.kernel32.dll_CloseHandle
push dword [ebp - 0x30]
call sub.kernel32.dll_CloseHandle
push ebx
call sub.kernel32.dll_CloseHandle
mov edi, dword [ebp - 0x20]
lea ecx, [ebp - 0x78]
call sym.__ZN4core3ptr178drop_in_place_LT_core..result..Result_LT_std..sync..mutex..MutexGuard_LT__LP__RP__GT__C_std..sync..poison..Poi
cmp dword [ebp - 0x28], 0
je 0x523781
push dword [ebp - 0x88]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x18], 0
je 0x523797
push dword [ebp - 0x1c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x80], 0
je 0x5237ab
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x14], 0
je 0x5237c1
push dword [ebp - 0x34]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov ecx, dword [ebp - 0x2c]
test edi, edi
sete al
or cl, al
jne 0x522012
push dword [ebp - 0x24]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x522012
movzx ecx, byte [ebp - 0x4f9]
mov edx, dword [ebp - 0x8c]
movzx edi, word [ebp - 0x4fb]
mov esi, dword [ebp - 0x4f8]
mov word [edx + 1], di
mov byte [edx + 3], cl
mov byte [edx], al
mov dword [edx + 4], esi
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
mov dword [edx + 8], 2
jmp 0x52399f
movzx ecx, byte [ebp - 0x4f9]
mov edx, dword [ebp - 0x8c]
movzx edi, word [ebp - 0x4fb]
mov esi, dword [ebp - 0x4f8]
mov word [edx + 1], di
mov byte [edx + 3], cl
mov byte [edx], al
mov dword [edx + 4], esi
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
mov dword [edx + 8], 2
jmp 0x523999
cmp dword [ebp - 0x20], 0
je 0x52386c
push dword [ebp - 0x1c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov byte [ebp - 0x80], 2
mov dword [ebp - 0x7c], 0x5bbdd0
jmp 0x521f06
mov edi, dword [ebp - 0x20]
xor ebx, ebx
lea ecx, [ebp - 0x4fc]
call dbg.drop_in_place<alloc::collections::btree::map::IntoIter<std::sys::windows::process::EnvKey, std::ffi::os_str::OsString, alloc::alloc::Global>>
mov edx, dword [ebp - 0xdc]
cmp edx, dword [ebp - 0x74]
jne 0x5238a7
xor ebx, ebx
lea ecx, [ebp - 0x78]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov esi, dword [ebp - 0x78]
mov edx, dword [ebp - 0x70]
mov word [esi + edx*2], 0
mov dword [ebp - 0x10], esi
mov ebx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x74]
test ecx, ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], ecx
jne 0x522c80
inc edx
jmp 0x522fb6
movzx ecx, byte [ebp - 0x4f9]
mov edx, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x4f8]
mov byte [edx + 3], cl
movzx ecx, word [ebp - 0x4fb]
mov word [edx + 1], cx
mov byte [edx], al
mov dword [edx + 4], esi
mov dword [edx + 8], 2
jmp 0x52398e
call sub.kernel32.dll_GetLastError
mov ecx, dword [ebp - 0x8c]
mov byte [ecx], 0
mov dword [ecx + 4], eax
mov dword [ecx + 8], 2
push edi
call sub.kernel32.dll_CloseHandle
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
push dword [ebp - 0x30]
call sub.kernel32.dll_CloseHandle
push ebx
call sub.kernel32.dll_CloseHandle
cmp dword [ebp - 0x60], 0
je 0x5239ad
push dword [ebp - 0x5c]
call sub.kernel32.dll_CloseHandle
cmp dword [ebp - 0x58], 0
je 0x5239bb
push dword [ebp - 0x54]
call sub.kernel32.dll_CloseHandle
cmp dword [ebp - 0x50], 0
je 0x5239c9
push dword [ebp - 0x4c]
call sub.kernel32.dll_CloseHandle
cmp byte [ebp - 0x9c], 0
je 0x5239eb
cmp byte [ebp - 0x64], 0
jne 0x523a10
mov eax, dword [0x5da168]
test eax, 0x7fffffff
je 0x523a10
call dbg.is_zero_slow_path
jmp 0x523a02
cmp byte [ebp - 0x64], 0
jne 0x523a10
mov eax, dword [0x5da168]
test eax, 0x7fffffff
je 0x523a10
call dbg.is_zero_slow_path
mov esi, dword [ebp - 0x14]
test al, al
jne 0x523a10
mov byte [0x5da10c], 1
push 0x5da108
call sub.kernel32.dll_ReleaseSRWLockExclusive
cmp dword [ebp - 0x28], 0
je 0x523a33
push dword [ebp - 0x88]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x18], 0
je 0x523a49
push dword [ebp - 0x1c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x80], 0
je 0x523a62
push dword [ebp - 0x84]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
test esi, esi
je 0x523a76
push dword [ebp - 0x34]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp byte [ebp - 0x2c], 0
mov bl, 1
jne 0x522012
test edi, edi
je 0x523a96
push dword [ebp - 0x24]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
test bl, bl
je 0x521f1e
jmp 0x522012
mov esi, dword [ebp - 0x4f8]
mov edi, dword [ebp - 0x4f4]
jmp 0x5225bd
mov esi, dword [ebp - 0x4f8]
mov edi, dword [ebp - 0x4f4]
cmp dword [ebp - 0x20], 0
mov dword [ebp - 0x24], eax
je 0x5225c0
push dword [ebp - 0x1c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x5225c0
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:UsersTEST.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.5_srcwin.rs
push 0x5ba300
call dbg.panic
add esp, 4
jmp 0x5243d0
mov edi, dword [ebp - 0x88]
movzx esi, al
jmp 0x522f7d
call sub.kernel32.dll_GetLastError
lea edi, [ebp - 0xc8]
lea esi, [ebp - 0x78]
mov byte [ebp - 0xc8], 0
mov dword [ebp - 0x60], 0x5bbd20
mov dword [ebp - 0x5c], 1
mov dword [ebp - 0x50], 0
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x74], sym.__LT_std..io..error..Error_u20_as_u20_core..fmt..Display_GT_::fmt::hf47b077536b8d29b
mov dword [ebp - 0x54], 1
lea ecx, [ebp - 0x60]
mov edx, 0x5bbd50
call dbg.panic_fmt
jmp 0x5243d0
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:UsersTEST.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.5_srcwin.rs
push 0x5b99d4
call dbg.panic
add esp, 4
jmp 0x5243d0
mov edx, dword [ebp - 0x18]
mov ecx, 1
call dbg.handle_alloc_error
jmp 0x5243d0
mov ecx, 1
mov edx, esi
call dbg.handle_alloc_error
jmp 0x5243d0
call dbg.handle_alloc_error
jmp 0x5243d0
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
jmp 0x5243d0
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
jmp 0x5243d0
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
jmp 0x5243d0
xor edx, edx
mov ecx, 1
push 0x5bbb58
call dbg.slice_start_index_len_fail
add esp, 4
jmp 0x5243d0
mov edx, esi
mov ecx, eax
push 0x5bbb68
call dbg.slice_end_index_len_fail
add esp, 4
jmp 0x5243d0
mov edx, esi
push 0x5bbb78
call dbg.slice_start_index_len_fail
add esp, 4
jmp 0x5243d0
mov edx, 0x21
mov ecx, str.assertion_failed:_self.height___0
push 0x5ba058
call dbg.panic
add esp, 4
jmp 0x5243d0
mov dword [ebp - 0x24], 4
mov edx, dword [ebp - 0x24]
mov ecx, 1
call dbg.handle_alloc_error
jmp 0x5243d0
mov edx, 0x28
mov ecx, str.internal_error:_entered_unreachable_codeC:UsersTEST.cargo_registry_srcindex.crates.io_6f17d22bba15001f_rayon_core_1.11.0_srcjob.rs
push 0x5bc2ac
call dbg.panic
add esp, 4
jmp 0x5243d0
mov edx, 0x28
mov ecx, str.internal_error:_entered_unreachable_codeC:UsersTEST.cargo_registry_srcindex.crates.io_6f17d22bba15001f_rayon_core_1.11.0_srcjob.rs
push 0x5bc2ac
call dbg.panic
add esp, 4
jmp 0x5243d0
call sub.kernel32.dll_GetLastError
mov byte [ebp - 0x60], 0
mov dword [ebp - 0x5c], eax
lea esi, [ebp - 0x60]
lea eax, [ebp - 0xc8]
mov dword [ebp - 0x4fc], 0x5bbbac
mov dword [ebp - 0x4f8], 1
mov dword [ebp - 0x4ec], 0
mov dword [ebp - 0xc8], esi
mov dword [ebp - 0x4f4], eax
mov dword [ebp - 0xc4], sym.__LT_std..io..error..Error_u20_as_u20_core..fmt..Display_GT_::fmt::hf47b077536b8d29b
mov dword [ebp - 0x4f0], 1
lea ecx, [ebp - 0x4fc]
mov edx, 0x5bbbb4
call dbg.panic_fmt
jmp 0x5243d0
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
jmp 0x5243d0
mov ecx, ebx
push 0x5bc2bc
call dbg.slice_end_index_len_fail
add esp, 4
jmp 0x5243d0
push 0x5b99ec
call dbg.slice_start_index_len_fail
add esp, 4
jmp 0x5243d0
mov ecx, ebx
push 0x5bc2bc
call dbg.slice_end_index_len_fail
add esp, 4
jmp 0x5243d0
ud2