Function at 0x408ce0
Capabilities:
Check if file exists
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57bc18
mov eax, dword fs:[0]
push eax
sub esp, 0xa54
mov eax, dword [0x5ef220]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0xa5c], ebx
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x830], ax
lea eax, [ebp - 0x82e]
push eax
call fcn.0055c960
add esp, 0xc
lea eax, [ebp - 0x830]
mov ecx, ebx
push eax
call fcn.00402a30
lea eax, [ebp - 0x830]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea eax, [ebp - 0x830]
push eax
lea ecx, [ebp - 0xa48]
call fcn.0040f690
mov dword [ebp - 4], 0
mov dword [ebp - 0xa50], 0
mov dword [ebp - 0xa4c], 0
call fcn.0040dff0
mov dword [ebp - 0xa50], eax
push str.CSIDL_APPDATA
lea eax, [ebp - 0xa48]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa3c]
or edi, 0xffffffff
add esi, 0xfffffff0
mov dword [ebp - 0xa40], eax
mov ecx, edi
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x408dde
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa40]
test eax, eax
je 0x408e8f
push str.CSIDL_APPDATA
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x1a
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 3
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 2
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x408e6c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x408e8f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_ALTSTARTUP
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x408ed9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x408f8a
push str.CSIDL_ALTSTARTUP
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x1d
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 5
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 4
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x408f67
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x408f8a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_ALTSTARTUP
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x408fd4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409085
push str.CSIDL_COMMON_ALTSTARTUP
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x1e
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 6
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 7
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 6
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409062
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409085
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_APPDATA
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4090cf
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409180
push str.CSIDL_COMMON_APPDATA
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x23
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 9
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 8
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40915d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409180
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_DOCUMENTS
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091ca
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40927b
push str.CSIDL_COMMON_DOCUMENTS
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x2e
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0xb
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0xa
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409258
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40927b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_FAVORITES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4092c5
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409376
push str.CSIDL_COMMON_FAVORITES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x1f
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0xd
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0xc
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409353
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409376
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_PROGRAMS
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4093c0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409471
push str.CSIDL_COMMON_PROGRAMS
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x17
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0xf
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0xe
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40944e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409471
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_STARTMENU
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4094bb
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40956c
push str.CSIDL_COMMON_STARTMENU
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x16
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x11
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x10
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409549
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40956c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COOKIES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4095b6
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409667
push str.CSIDL_COOKIES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x21
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x12
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x13
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x12
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409644
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409667
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_DESKTOPDIRECTORY
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4096b1
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409762
push str.CSIDL_DESKTOPDIRECTORY
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x10
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x15
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x14
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40973f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409762
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_FAVORITES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4097ac
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40985d
push str.CSIDL_FAVORITES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 6
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x17
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x16
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40983a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40985d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_FONTS
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4098a7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409958
push str.CSIDL_FONTS
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x14
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x18
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x19
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x18
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409935
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409958
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_HISTORY
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4099a2
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409a53
push str.CSIDL_HISTORY
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x22
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x1b
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x1a
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409a30
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409a53
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_LOCAL_APPDATA
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409a9d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409b4e
push str.CSIDL_LOCAL_APPDATA
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x1c
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x1c
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x1d
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x1c
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409b2b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409b4e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_MYDOCUMENTS
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409b98
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409c49
push str.CSIDL_MYDOCUMENTS
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 5
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x1f
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x1e
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409c26
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409c49
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PERSONAL
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409c93
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409d44
push str.CSIDL_PERSONAL
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 5
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x20
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x21
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x20
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409d21
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409d44
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PROFILE
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409d8e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409e3f
push str.CSIDL_PROFILE
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x28
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x22
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x23
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x22
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409e1c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409e3f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PROGRAM_FILES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409e89
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x409f3a
push str.CSIDL_PROGRAM_FILES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x26
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x24
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x25
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x24
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409f17
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409f3a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PROGRAM_FILESX86
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409f84
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a035
push str.CSIDL_PROGRAM_FILESX86
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x2a
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x27
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x26
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a012
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a035
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PROGRAM_FILES_COMMON
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a07f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a130
push str.CSIDL_PROGRAM_FILES_COMMON
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x2b
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x28
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x29
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x28
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a10d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a130
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PROGRAM_FILES_COMMONX86
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a17a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a22b
push str.CSIDL_PROGRAM_FILES_COMMONX86
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x2c
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x2a
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x2b
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x2a
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a208
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a22b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_DESKTOPDIRECTORY
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a275
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a326
push str.CSIDL_COMMON_DESKTOPDIRECTORY
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x19
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x2c
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x2d
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x2c
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a303
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a326
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_PROGRAMS
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a370
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a421
push str.CSIDL_PROGRAMS
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 2
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x2e
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x2f
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x2e
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a3fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a421
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_RESOURCES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a46b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a51c
push str.CSIDL_RESOURCES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x38
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x30
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x31
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x30
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a4f9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a51c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_STARTMENU
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a566
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a617
push str.CSIDL_STARTMENU
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0xb
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x32
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x33
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x32
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a5f4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a617
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_STARTUP
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a661
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a712
push str.CSIDL_STARTUP
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 7
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x34
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x35
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x34
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a6ef
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a712
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_SYSTEM
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a75c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a80d
push str.CSIDL_SYSTEM
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x25
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x36
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x37
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x36
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a7ea
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a80d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_SYSTEMX86
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a857
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40a908
push str.CSIDL_SYSTEMX86
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x29
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x38
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x39
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x38
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a8e5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a908
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_WINDOWS
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a952
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40aa03
push str.CSIDL_WINDOWS
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x24
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x3a
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x3b
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x3a
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a9e0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40aa03
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_MUSIC
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40aa4d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40aafe
push str.CSIDL_COMMON_MUSIC
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x35
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x3c
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x3d
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x3c
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40aadb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40aafe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_PICTURES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ab48
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40abf9
push str.CSIDL_COMMON_PICTURES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x36
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x3e
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x3f
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x3e
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40abd6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40abf9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_COMMON_VIDEO
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ac43
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40acf4
push str.CSIDL_COMMON_VIDEO
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x37
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x40
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x41
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x40
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40acd1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40acf4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_MYMUSIC
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ad3e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40adef
push str.CSIDL_MYMUSIC
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0xd
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x42
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x43
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x42
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40adcc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40adef
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_MYPICTURES
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ae39
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40aeea
push str.CSIDL_MYPICTURES
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0x27
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x45
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x44
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40aec7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40aeea
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.CSIDL_MYVIDEO
lea eax, [ebp - 0xa48]
push eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040f190
add esp, 0xc
push dword [eax]
call ebx
mov esi, dword [ebp - 0xa40]
mov edx, edi
add esi, 0xfffffff0
mov dword [ebp - 0xa3c], eax
lea ecx, [esi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40af34
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa3c]
test eax, eax
je 0x40afe5
push str.CSIDL_MYVIDEO
lea eax, [ebp - 0xa48]
mov dword [ebp - 0xa40], 0xe
push eax
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040f190
push eax
lea edx, [ebp - 0xa40]
mov byte [ebp - 4], 0x46
lea ecx, [ebp - 0xa58]
call fcn.0040e0d0
add esp, 0x10
push eax
lea ecx, [ebp - 0xa50]
mov byte [ebp - 4], 0x47
call fcn.0040e380
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040e420
mov byte [ebp - 4], 0x46
mov ecx, edi
mov edx, dword [ebp - 0xa54]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40afc2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, edi
mov edx, dword [ebp - 0xa3c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40afe5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa50]
mov esi, dword [eax]
cmp esi, eax
je 0x40b1d8
mov edi, dword [ebp - 0xa5c]
jmp 0x40b000
push dword [esi + 0x14]
push str.MSG:_DIR_SOURCE___s
call fcn.0042abd0
add esp, 8
push dword [esi + 0x14]
call ebx
test eax, eax
je 0x40b185
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x420], ax
lea eax, [ebp - 0x41e]
push eax
call fcn.0055c960
mov edx, dword [esi + 0x10]
lea ecx, [ebp - 0x420]
call fcn.00402390
lea eax, [ebp - 0x420]
push eax
push str.MSG:_DIR_TARGETDIR___s
call fcn.0042abd0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0xa38], ax
lea eax, [ebp - 0xa36]
push eax
call fcn.0055c960
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x628], ax
lea eax, [ebp - 0x626]
push eax
call fcn.0055c960
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call fcn.0055c960
lea eax, [edi + 4]
push eax
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.00558864
add esp, 0x44
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
push str.GamePatch
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCatW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x628]
push 0x104
push eax
call fcn.00558864
add esp, 0xc
lea eax, [ebp - 0x628]
push str.Config.ini
push eax
call dword [sym.imp.SHLWAPI.dll_StrCatW]
lea eax, [ebp - 0x628]
push eax
lea eax, [ebp - 0xa38]
push 0x104
push eax
call fcn.00558864
add esp, 0xc
lea eax, [ebp - 0xa38]
push eax
push 0
push str.overwrite
push str.personalization
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
lea edx, [ebp - 0x420]
sete al
movzx eax, al
push eax
mov ecx, dword [esi + 0x14]
call fcn.00429bb0
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x420]
push eax
push dword [esi + 0x14]
push str.MSG:_Copy_succeed___s____s__code_d
call fcn.0042abd0
add esp, 0x10
cmp byte [esi + 0xd], 0
jne 0x40b1c7
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
jne 0x40b1ac
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0xd], 0
jne 0x40b1c7
mov edi, edi
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0xd], 0
je 0x40b1a0
jmp 0x40b1c7
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x40b1c5
cmp esi, dword [eax + 8]
jne 0x40b1c5
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x40b1b5
mov esi, eax
mov eax, dword [ebp - 0xa50]
cmp esi, eax
jne 0x40b000
or edi, 0xffffffff
push eax
push dword [eax]
lea eax, [ebp - 0xa5c]
push eax
lea ecx, [ebp - 0xa50]
call fcn.0040d730
push dword [ebp - 0xa50]
call fcn.00430ec0
mov dword [ebp - 4], 0xffffffff
add esp, 4
mov edx, dword [ebp - 0xa48]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x40b21f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00557f7f
mov esp, ebp
pop ebp
ret