Function at 0x401000
Capabilities:
Encode data using xor
Get common file path
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x224
mov eax, dword [0x41f024]
xor eax, ebp
mov dword [ebp - 4], eax
lea eax, [ebp - 0x20c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x4012ab
push str.SteamtoolsUI.vdf
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.004084ec
add esp, 0xc
mov dword [ebp - 0x220], 0
push ebx
push esi
push edi
push 0x41cbec
lea eax, [ebp - 0x20c]
mov dword [ebp - 0x210], 0
push eax
lea eax, [ebp - 0x210]
push eax
call fcn.0040802d
add esp, 0xc
test eax, eax
jne 0x401292
mov eax, dword [ebp - 0x210]
test eax, eax
je 0x401292
push 2
push 0
push eax
call fcn.004084b2
add esp, 0xc
push dword [ebp - 0x210]
test eax, eax
je 0x4010b2
call fcn.00408199
add esp, 4
jmp 0x401292
call fcn.00407f3c
add esp, 4
mov esi, eax
push dword [ebp - 0x210]
cmp esi, 0xffffffff
jne 0x4010d4
call fcn.00408199
add esp, 4
jmp 0x401292
call fcn.00408641
lea eax, [esi + 1]
add esp, 4
test eax, eax
jne 0x4010f6
push dword [ebp - 0x210]
call fcn.00408199
add esp, 4
jmp 0x401292
xor ecx, ecx
mov eax, esi
add eax, 1
push 1
setb cl
neg ecx
or ecx, eax
push ecx
call fcn.00407f6c
add esp, 8
mov ebx, eax
push dword [ebp - 0x210]
test ebx, ebx
jne 0x401128
call fcn.00408199
add esp, 4
jmp 0x401292
push esi
push 1
push ebx
call fcn.0040885f
add esp, 0x10
cmp eax, esi
je 0x401151
push ebx
call fcn.0040866b
push dword [ebp - 0x210]
call fcn.00408199
add esp, 8
jmp 0x401292
mov byte [ebx + esi], 0
push dword [ebp - 0x210]
call fcn.00408199
add esp, 4
test esi, esi
jle 0x401292
cmp esi, 0xd
jb 0x401292
mov eax, dword [ebx]
mov edi, dword [ebx + 4]
xor eax, 0xfaac85f0
mov dword [ebp - 0x21c], eax
mov eax, dword [ebp - 0x220]
xor eax, 0xffffffff
mov dword [ebp - 0x214], eax
mov eax, dword [ebx + 8]
xor eax, 0xfaac85f0
add eax, 0x78752c
mov dword [ebp - 0x214], eax
lea eax, [esi - 0xc]
cmp eax, edi
jne 0x401292
push edi
call fcn.0040471f
push edi
lea ecx, [ebx + 0xc]
mov esi, eax
push ecx
push esi
call fcn.00405590
add esp, 0x10
xor ecx, ecx
test edi, edi
je 0x401239
mov eax, dword [ebp - 0x21c]
cmp edi, 0x40
jb 0x40122d
movsx edx, al
mov ebx, edi
and ebx, 0xffffffc0
movd xmm0, edx
lea edx, [esi + 0x20]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
movups xmm0, xmmword [edx - 0x20]
lea edx, [edx + 0x40]
add ecx, 0x40
movaps xmm1, xmm2
xorps xmm0, xmm2
movups xmmword [edx - 0x60], xmm0
movups xmm0, xmmword [edx - 0x50]
xorps xmm0, xmm2
movups xmmword [edx - 0x50], xmm0
movups xmm0, xmmword [edx - 0x40]
xorps xmm0, xmm2
movups xmmword [edx - 0x40], xmm0
movups xmm0, xmmword [edx - 0x30]
xorps xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp ecx, ebx
jb 0x4011f4
cmp ecx, edi
jae 0x401239
xor byte [ecx + esi], al
inc ecx
cmp ecx, edi
jb 0x401231
push dword [ebp - 0x214]
call fcn.0040471f
push edi
mov ebx, eax
lea eax, [ebp - 0x214]
push esi
push eax
push ebx
call fcn.00401bc0
add esp, 0x14
test eax, eax
je 0x40126d
push ebx
call fcn.0040471a
push esi
call fcn.0040471a
add esp, 8
jmp 0x401292
push esi
call fcn.0040471a
mov eax, dword [ebp - 0x214]
add esp, 4
test eax, eax
je 0x401292
test ebx, ebx
je 0x401292
push eax
push ebx
call fcn.00401700
add esp, 8
test eax, eax
jne 0x4012a8
mov eax, dword [ebp - 0x220]
inc eax
mov dword [ebp - 0x220], eax
cmp eax, 5
jl 0x401053
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040470c
mov esp, ebp
pop ebp
ret