Function at 0x405350
Capabilities:
Accept command line arguments
Extract resource via kernel32 functions
Query environment variable

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x10064
call fcn.0041bfa0
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x10060], eax
push ebx
push esi
xorps xmm0, xmm0
mov dword [esp + 0xc], 0
push edi
push 0x10000
lea eax, [esp + 0x6c]
movlpd qword [esp + 0x28], xmm0
mov ebx, edx
movlpd qword [esp + 0x30], xmm0
push 0
push eax
mov dword [esp + 0x20], ebx
movlpd qword [esp + 0x40], xmm0
movlpd qword [esp + 0x48], xmm0
movlpd qword [esp + 0x50], xmm0
movlpd qword [esp + 0x58], xmm0
movlpd qword [esp + 0x60], xmm0
movlpd qword [esp + 0x68], xmm0
mov dword [esp + 0x28], 0
call fcn.00407080
add esp, 0xc
push 0
push 0
push str.PYLAUNCHER_DEBUG
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
cmp eax, 2
jb 0x405418
push 0
push 4
push 0
push 2
call fcn.0040e96d
add esp, 4
push eax
call fcn.0040f390
push 2
call fcn.0040e96d
push 0x424e10
push dword [ebx]
mov dword [0x428548], eax
push str.argv0:__s_nversion:__S_n
call fcn.004010f0
add esp, 0x20
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea edx, [esp + 0x10]
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x20]
call fcn.00405230
mov edi, eax
test edi, edi
jne 0x405f2c
cmp byte [esp + 0x5c], al
je 0x405531
push eax
push 1
push 0x422b90
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
mov esi, eax
test esi, esi
je 0x405545
push esi
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x405545
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
test ebx, ebx
je 0x405545
push esi
push edi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push edi
push edi
push eax
push ebx
push edi
push 0xfde9
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
test edi, edi
jne 0x4054b4
push str.Unable_to_preprocess_usage_text
push eax
call fcn.004011c0
mov edi, 0x6d
jmp 0x405f29
inc edi
lea eax, [edi + edi]
push eax
call fcn.0040f4ae
add esp, 4
mov esi, eax
push edi
push esi
push dword [esp + 0x20]
push ebx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x4054f9
push str.Unable_to_preprocess_usage_text
push eax
call fcn.004011c0
push esi
call fcn.0040f3ca
add esp, 0xc
mov edi, 0x6d
jmp 0x405f2c
xor ecx, ecx
mov word [esi + eax*2], cx
mov eax, dword [esp + 0x14]
push dword [eax]
push 0x422c10
push esi
push 1
call fcn.0040e96d
add esp, 4
push eax
call fcn.00401010
push 1
call fcn.0040e96d
push eax
call fcn.0040ed01
push esi
call fcn.0040f3ca
add esp, 0x1c
mov edi, dword [esp + 0x10]
test edi, edi
jne 0x40555b
mov dword [esp + 0x1c], edi
lea ebx, [edi + 0x70]
jmp 0x4056ea
push str.Unable_to_load_usage_text
push 0
call fcn.004011c0
mov edi, 0x6d
jmp 0x405f29
cmp dword [edi + 4], 0
jne 0x405571
cmp dword [edi], 0
jne 0x405571
mov dword [esp + 0x1c], edi
xor ebx, ebx
jmp 0x4056ea
mov dword [esp + 0x18], 0
mov esi, edi
nop dword [eax + eax]
mov edx, dword [esi]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x24]
call fcn.00404640
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x4055a4
cmp ebx, 0x67
jne 0x4056e6
jmp 0x4055b0
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4056e0
cmp byte [esi + 0x2c], 0
je 0x4055c1
cmp byte [esp + 0x55], 0
jne 0x4056de
cmp byte [esp + 0x54], 0
jne 0x405748
mov edi, dword [esp + 0x44]
test edi, edi
je 0x405638
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x405638
mov eax, dword [esi + 0xc]
mov dword [esp + 0x14], eax
test eax, eax
je 0x40562d
push 0
push 0
push 0
push ebx
push edi
push 0xffffffffffffffff
push eax
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x40562d
sub eax, 1
je 0x40573d
sub eax, 1
je 0x405733
push edi
push ebx
push dword [esp + 0x1c]
push 0xffffffffffffffff
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
or eax, 0xffffffff
test eax, eax
jne 0x405944
mov ebx, dword [esp + 0x4c]
test ebx, ebx
je 0x4056de
mov edi, dword [esp + 0x50]
test edi, edi
je 0x4056de
mov eax, dword [esi + 0x10]
mov dword [esp + 0x14], eax
test eax, eax
je 0x405944
test edi, edi
jns 0x405677
push 0x8000
push ebx
call fcn.00409554
mov edi, eax
add esp, 8
mov eax, dword [esp + 0x14]
push 0x8000
push eax
call fcn.00409554
add esp, 8
cmp eax, edi
jl 0x4056d4
test edi, edi
je 0x405744
push 0
push 0
push 0
push edi
push ebx
push edi
push dword [esp + 0x2c]
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x4056d4
sub eax, 1
je 0x405744
sub eax, 1
je 0x4056d4
push ebx
push edi
push dword [esp + 0x1c]
push edi
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
xor al, al
test al, al
je 0x405944
mov eax, esi
xor ebx, ebx
mov dword [esp + 0x1c], eax
mov edi, dword [esp + 0x10]
cmp byte [esp + 0x5a], 0
jne 0x405eb1
cmp byte [esp + 0x5b], 0
jne 0x405eb1
mov esi, dword [0x428548]
test esi, esi
je 0x4059aa
test edi, edi
jne 0x405957
push str.No_installed_Pythons_found__n
push 1
call fcn.0040e96d
add esp, 4
push eax
call fcn.00401040
add esp, 8
jmp 0x4059aa
mov eax, 1
jmp 0x405630
xor eax, eax
jmp 0x405630
mov al, 1
jmp 0x4056d6
mov edi, dword [esi + 0xc]
test edi, edi
je 0x405944
push 0
push 0
push 0
push 0xffffffffffffffff
push str.PythonCore
push 0xffffffffffffffff
push edi
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405944
sub eax, 1
je 0x4057a5
sub eax, 1
je 0x405944
push str.PythonCore
push 0xffffffffffffffff
push edi
push 0xffffffffffffffff
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
jmp 0x405944
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov byte [esp + 0xe], 0
mov byte [esp + 0xf], 0
cmp edi, 3
jle 0x405872
lea eax, [edi - 3]
lea ebx, [ecx + eax*2]
mov dword [esp + 0x14], eax
test ebx, ebx
je 0x405872
push 0
push 0
push 0
push 3
push 0x424860
push 3
push ebx
push 0
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405817
sub eax, 1
je 0x40585e
sub eax, 1
je 0x405817
push 0x424860
push 3
push ebx
push 3
push str.Error_comparing__.s_and__.s__compareArgument_
push 0
call fcn.004011c0
add esp, 0x18
push 0
push 0
push 0
push 3
push 0x424868
push 3
push ebx
push 0
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x40586e
sub eax, 1
je 0x405865
sub eax, 1
je 0x40586e
push 0x424868
push 3
push ebx
push 3
push str.Error_comparing__.s_and__.s__compareArgument_
push 0
call fcn.004011c0
add esp, 0x18
jmp 0x40586e
mov byte [esp + 0xe], 1
jmp 0x40586a
mov byte [esp + 0xf], 1
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esi + 0x10]
test ebx, ebx
je 0x405944
test ecx, ecx
je 0x405944
test edi, edi
jns 0x405899
push 0x8000
push ecx
call fcn.00409554
add esp, 8
mov edi, eax
push 0x8000
push ebx
call fcn.00409554
add esp, 8
cmp eax, edi
jl 0x4058ee
test edi, edi
je 0x405913
push 0
push 0
push 0
push edi
push dword [esp + 0x5c]
push edi
push ebx
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x4058ee
sub eax, 1
je 0x405913
sub eax, 1
je 0x4058ee
push dword [esp + 0x4c]
push edi
push ebx
push edi
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
xor al, al
test al, al
je 0x405944
cmp byte [esp + 0xe], 0
je 0x405917
mov ecx, esi
call fcn.004045d0
test al, al
je 0x405917
push dword [esi + 0x10]
push dword [esi + 0xc]
push str._Excluding__s__s_because_it_looks_like_32bit_n
jmp 0x40593c
mov al, 1
jmp 0x4058f0
cmp byte [esp + 0xf], 0
je 0x4056de
mov ecx, esi
call fcn.004045d0
test al, al
jne 0x4056de
push dword [esi + 0x10]
push dword [esi + 0xc]
push str._Excluding__s__s_because_it_doesnt_look_32bit_n
call fcn.004010f0
add esp, 0xc
mov esi, dword [esi + 4]
test esi, esi
jne 0x405580
lea ebx, [esi + 0x67]
jmp 0x4056e6
push 0x40000
push esi
call fcn.0040f1a5
add esp, 4
push eax
call fcn.0040efb6
push 0
push 1
mov edx, esi
mov dword [esp + 0x28], eax
mov ecx, edi
call fcn.00404a20
push esi
mov edi, eax
call fcn.0040ed01
mov eax, dword [esp + 0x2c]
add esp, 0x14
test eax, eax
js 0x4059a2
push eax
push esi
call fcn.0040f1a5
add esp, 4
push eax
call fcn.0040efb6
add esp, 8
test edi, edi
jne 0x405f2c
mov edi, ebx
cmp ebx, 0x67
mov ebx, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
jne 0x4059c7
push 0
push 0
push str.PYLAUNCHER_ALLOW_INSTALL
call ebx
cmp eax, 2
jae 0x4059db
push 0
push 0
push str.PYLAUNCHER_ALWAYS_INSTALL
call ebx
cmp eax, 2
jb 0x405ba1
lea ecx, [esp + 0x20]
call fcn.004042c0
mov edi, eax
test edi, edi
jne 0x405ba1
lea edx, [esp + 0x10]
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x20]
call fcn.00405230
mov edi, eax
test edi, edi
jne 0x405f2c
mov ecx, dword [esp + 0x10]
test ecx, ecx
jne 0x405a19
lea edi, [eax + 0x70]
jmp 0x405e36
cmp dword [ecx + 4], 0
jne 0x405a2b
cmp dword [ecx], 0
jne 0x405a2b
mov ebx, ecx
jmp 0x405e5c
mov dword [esp + 0x18], 0
mov esi, ecx
mov edx, dword [esi]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x24]
call fcn.00404640
mov edi, eax
add esp, 4
test edi, edi
je 0x405a59
cmp edi, 0x67
jne 0x405b9b
jmp 0x405a65
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x405b95
cmp byte [esi + 0x2c], 0
je 0x405a76
cmp byte [esp + 0x55], 0
jne 0x405b93
cmp byte [esp + 0x54], 0
jne 0x405c22
mov edi, dword [esp + 0x44]
test edi, edi
je 0x405aed
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x405aed
mov eax, dword [esi + 0xc]
mov dword [esp + 0x14], eax
test eax, eax
je 0x405ae2
push 0
push 0
push 0
push ebx
push edi
push 0xffffffffffffffff
push eax
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405ae2
sub eax, 1
je 0x405c14
sub eax, 1
je 0x405c0a
push edi
push ebx
push dword [esp + 0x1c]
push 0xffffffffffffffff
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
or eax, 0xffffffff
test eax, eax
jne 0x405e1e
mov ebx, dword [esp + 0x4c]
test ebx, ebx
je 0x405b93
mov edi, dword [esp + 0x50]
test edi, edi
je 0x405b93
mov eax, dword [esi + 0x10]
mov dword [esp + 0x14], eax
test eax, eax
je 0x405e1e
test edi, edi
jns 0x405b2c
push 0x8000
push ebx
call fcn.00409554
mov edi, eax
add esp, 8
mov eax, dword [esp + 0x14]
push 0x8000
push eax
call fcn.00409554
add esp, 8
cmp eax, edi
jl 0x405b89
test edi, edi
je 0x405c1b
push 0
push 0
push 0
push edi
push ebx
push edi
push dword [esp + 0x2c]
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405b89
sub eax, 1
je 0x405c1b
sub eax, 1
je 0x405b89
push ebx
push edi
push dword [esp + 0x1c]
push edi
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
xor al, al
test al, al
je 0x405e1e
mov eax, esi
xor edi, edi
mov dword [esp + 0x1c], eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
cmp edi, 0x67
jne 0x405e31
push 2
call fcn.0040e96d
push eax
push str.No_suitable_Python_runtime_found_n
call fcn.0040ee22
push 2
call fcn.0040e96d
push eax
push str.Pass___list___0__to_see_all_detected_environments_on_your_machine_n
call fcn.0040ee22
add esp, 0x18
push 0
push 0
push str.PYLAUNCHER_ALLOW_INSTALL
call ebx
cmp eax, 2
jae 0x405f2c
cmp byte [esp + 0x54], 0
je 0x405f2c
push 2
call fcn.0040e96d
push eax
push str.or_set_environment_variable_PYLAUNCHER_ALLOW_INSTALL_to_use_winget_nor_open_the_Microsoft_Store_to_the_requested_version._n
call fcn.0040ee22
add esp, 0xc
jmp 0x405f2c
mov eax, 1
jmp 0x405ae5
xor eax, eax
jmp 0x405ae5
mov al, 1
jmp 0x405b8b
mov edi, dword [esi + 0xc]
test edi, edi
je 0x405e1e
push 0
push 0
push 0
push 0xffffffffffffffff
push str.PythonCore
push 0xffffffffffffffff
push edi
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405e1e
sub eax, 1
je 0x405c7f
sub eax, 1
je 0x405e1e
push str.PythonCore
push 0xffffffffffffffff
push edi
push 0xffffffffffffffff
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
jmp 0x405e1e
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov byte [esp + 0xf], 0
mov byte [esp + 0xe], 0
cmp edi, 3
jle 0x405d4c
lea eax, [edi - 3]
lea ebx, [ecx + eax*2]
mov dword [esp + 0x14], eax
test ebx, ebx
je 0x405d4c
push 0
push 0
push 0
push 3
push 0x424860
push 3
push ebx
push 0
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405cf1
sub eax, 1
je 0x405d38
sub eax, 1
je 0x405cf1
push 0x424860
push 3
push ebx
push 3
push str.Error_comparing__.s_and__.s__compareArgument_
push 0
call fcn.004011c0
add esp, 0x18
push 0
push 0
push 0
push 3
push 0x424868
push 3
push ebx
push 0
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405d48
sub eax, 1
je 0x405d3f
sub eax, 1
je 0x405d48
push 0x424868
push 3
push ebx
push 3
push str.Error_comparing__.s_and__.s__compareArgument_
push 0
call fcn.004011c0
add esp, 0x18
jmp 0x405d48
mov byte [esp + 0xf], 1
jmp 0x405d44
mov byte [esp + 0xe], 1
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esi + 0x10]
test ebx, ebx
je 0x405e1e
test ecx, ecx
je 0x405e1e
test edi, edi
jns 0x405d73
push 0x8000
push ecx
call fcn.00409554
add esp, 8
mov edi, eax
push 0x8000
push ebx
call fcn.00409554
add esp, 8
cmp eax, edi
jl 0x405dc8
test edi, edi
je 0x405ded
push 0
push 0
push 0
push edi
push dword [esp + 0x5c]
push edi
push ebx
push 9
push 0x422a6c
call dword [sym.imp.KERNEL32.dll_CompareStringEx]
sub eax, 1
je 0x405dc8
sub eax, 1
je 0x405ded
sub eax, 1
je 0x405dc8
push dword [esp + 0x4c]
push edi
push ebx
push edi
push str.Error_comparing__.s_and__.s__compare_
push 0
call fcn.004011c0
add esp, 0x18
xor al, al
test al, al
je 0x405e1e
cmp byte [esp + 0xf], 0
je 0x405df1
mov ecx, esi
call fcn.004045d0
test al, al
je 0x405df1
push dword [esi + 0x10]
push dword [esi + 0xc]
push str._Excluding__s__s_because_it_looks_like_32bit_n
jmp 0x405e16
mov al, 1
jmp 0x405dca
cmp byte [esp + 0xe], 0
je 0x405b93
mov ecx, esi
call fcn.004045d0
test al, al
jne 0x405b93
push dword [esi + 0x10]
push dword [esi + 0xc]
push str._Excluding__s__s_because_it_doesnt_look_32bit_n
call fcn.004010f0
add esp, 0xc
mov esi, dword [esi + 4]
test esi, esi
jne 0x405a35
lea edi, [esi + 0x67]
jmp 0x405b9b
cmp edi, 0x70
jne 0x405e50
push 2
call fcn.0040e96d
push eax
push str.No_installed_Python_found__n
call fcn.0040ee22
add esp, 0xc
jmp 0x405f2c
test edi, edi
jne 0x405f2c
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x405e75
push dword [ebx + 0x10]
push dword [ebx + 0xc]
push str.env.company:__s_nenv.tag:__s_n
call fcn.004010f0
add esp, 0xc
jmp 0x405e82
push str.env.company:__null__nenv.tag:__null__n
call fcn.004010f0
add esp, 4
push ecx
lea eax, [esp + 0x6c]
mov edx, ebx
push eax
lea ecx, [esp + 0x28]
call fcn.00404bd0
mov edi, eax
add esp, 8
test edi, edi
jne 0x405f2c
lea eax, [esp + 0x68]
push eax
call fcn.00404f20
add esp, 4
mov edi, eax
jmp 0x405f2c
push 1
call fcn.0040e96d
mov ebx, dword [esp + 0x14]
add esp, 4
mov esi, eax
test ebx, ebx
jne 0x405ee1
push str.No_installed_Pythons_found__n
push 1
call fcn.0040e96d
add esp, 4
push eax
call fcn.00401040
add esp, 8
xor edi, edi
jmp 0x405f30
push 0x40000
push esi
call fcn.0040f1a5
add esp, 4
push eax
call fcn.0040efb6
push dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov edx, esi
push dword [esp + 0x67]
mov ebx, eax
call fcn.00404a20
push esi
mov edi, eax
call fcn.0040ed01
add esp, 0x14
test ebx, ebx
js 0x405f2c
push ebx
push esi
call fcn.0040f1a5
add esp, 4
push eax
call fcn.0040efb6
add esp, 8
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x60]
test eax, eax
je 0x405f49
mov esi, dword [eax]
push eax
call fcn.0040f3ca
add esp, 4
mov eax, esi
test esi, esi
jne 0x405f38
test ebx, ebx
je 0x405fa2
push dword [ebx + 0xc]
call fcn.0040f3ca
push dword [ebx + 0x10]
call fcn.0040f3ca
push dword [ebx + 0x18]
call fcn.0040f3ca
push dword [ebx + 0x1c]
call fcn.0040f3ca
push dword [ebx + 0x20]
call fcn.0040f3ca
push dword [ebx + 0x28]
call fcn.0040f3ca
mov ecx, dword [ebx]
call fcn.00402fb0
mov ecx, dword [ebx + 4]
mov dword [ebx], 0
call fcn.00402fb0
push ebx
mov dword [ebx + 4], 0
call fcn.0040f3ca
add esp, 0x1c
mov ecx, dword [esp + 0x1006c]
mov eax, edi
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00405fcc
mov esp, ebp
pop ebp
ret