Function at 0x454290
Capabilities:
Check if file exists
Delete directory
Get file attributes

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x6d4d4d
push eax
mov eax, dword [ebp + 0xc]
mov dword fs:[0], esp
sub esp, 0x210
mov eax, dword [eax]
push esi
mov esi, dword [eax]
push esi
push str.Relaunching__s_via_junction_n
call fcn.005372f0
lea eax, [ebp - 0x118]
push 0x104
push eax
call fcn.0046b4d0
add esp, 0x10
test al, al
je 0x45447a
mov al, byte [ebp - 0x118]
lea ecx, [ebp - 0x118]
test al, al
je 0x4542fb
js 0x454466
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x4542ed
push edi
lea eax, [ebp - 0x118]
push 0x104
push eax
call fcn.00545920
push 0xffffffffffffffff
push 0x104
lea eax, [ebp - 0x118]
push 0x6e4e88
push eax
call fcn.00547420
push 0x104
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.00547600
lea eax, [ebp - 0x21c]
push 0x104
push eax
call fcn.00545920
add esp, 0x2c
push 0xffffffffffffffff
push 0x104
push esi
call fcn.005469f0
add esp, 4
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.00547420
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
lea eax, [ebp - 0x118]
add esp, 0x10
push eax
call edi
cmp eax, 0xffffffff
je 0x4543af
lea eax, [ebp - 0x21c]
push eax
call edi
cmp eax, 0xffffffff
je 0x4543af
call fcn.00548b50
push dword [0x7d7cb0]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x20]
mov ecx, eax
call edx
test eax, eax
jle 0x4544a3
push str.Decided_to_rebuild_junction_n
call fcn.005372f0
add esp, 4
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0x10]
push esi
call fcn.0049f660
mov dword [ebp - 4], 0
push dword [ebp - 0x10]
call fcn.00546650
push str.Removing_directory_n
call fcn.005372f0
add esp, 8
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
push str.Creating_junction_n
call fcn.005372f0
mov eax, dword [ebp - 0x10]
mov ecx, 0x6e2a60
test eax, eax
cmovne ecx, eax
lea eax, [ebp - 0x118]
push ecx
push eax
call fcn.0046b550
add esp, 0xc
test al, al
jne 0x45448b
push str.Junction_creation_failed__bailing_on_launch_n
push 0x36d
push str.c:_buildslave_steam_rel_client_hotfix_win32_build_src_steamexemain.cpp
call fcn.00536b70
add esp, 0xc
test al, al
jne 0x45443c
int3
mov dword [ebp - 4], 0xffffffff
call fcn.00536730
push 0
push dword [ebp - 0x10]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x118]
push eax
push str.Bad_ProgramData_folder__contains_non_ascii:__s_n
call fcn.005372f0
add esp, 8
xor al, al
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], 0xffffffff
call fcn.00536730
push 0
push dword [ebp - 0x10]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
lea ecx, [ebp - 0x21c]
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4544b0
sub ecx, edx
lea esi, [ecx + 1]
call fcn.00536730
push 0
push 0
push 0x373
mov ecx, dword [eax]
push str.c:_buildslave_steam_rel_client_hotfix_win32_build_src_steamexemain.cpp
push esi
mov edx, dword [ecx + 8]
mov ecx, eax
call edx
test eax, eax
je 0x4544f2
push esi
lea ecx, [ebp - 0x21c]
push ecx
push eax
call fcn.0054f300
add esp, 0xc
mov edx, eax
jmp 0x4544f4
xor edx, edx
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
push ebx
mov ebx, 1
mov eax, dword [ecx]
mov dword [ebp - 0x14], ebx
mov dword [eax], edx
cmp dword [edi], ebx
jle 0x454579
mov dword [ebp - 0x10], 2
mov eax, dword [ecx]
lea esi, [ebx*4]
push closesocket
push str._forcejunction
push dword [esi + eax]
call fcn.00547680
mov edx, dword [ebp - 0x10]
add esp, 0xc
test eax, eax
jne 0x45456a
mov ecx, dword [edi]
cmp edx, ecx
jge 0x454559
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebx]
lea esi, [esi + 4]
inc edx
mov eax, dword [ecx + esi]
mov dword [ecx + esi - 4], eax
mov ecx, dword [edi]
cmp edx, ecx
jl 0x454540
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp + 0xc]
dec ebx
dec edx
dec ecx
mov dword [edi], ecx
mov eax, dword [eax]
mov dword [eax + ecx*4], 0
mov ecx, dword [ebp + 0xc]
inc ebx
inc edx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], edx
cmp ebx, dword [edi]
jl 0x454512
mov ecx, dword [ebp - 0xc]
mov al, 1
pop ebx
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret