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

Disassembly:
push 0xffffffffffffffff
push 0x4d8bc9
mov eax, dword fs:[0]
push eax
sub esp, 0x134
mov eax, dword [0x54d158]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x54d158]
xor eax, esp
push eax
lea eax, [esp + 0x148]
mov dword fs:[0], eax
mov eax, dword [esp + 0x15c]
mov esi, dword [esp + 0x158]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x160]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x164]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
call fcn.004a08e6
xor ecx, ecx
xor ebp, ebp
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x4371d7
push 0x80004005
call fcn.004103e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
push 0x51cd44
lea ecx, [esp + 0x1c]
mov dword [esp + 0x154], ebp
call fcn.00410140
push 0x521684
lea ecx, [esp + 0x20]
mov byte [esp + 0x154], 1
call fcn.00410140
push 0x51ba20
lea ecx, [esp + 0x28]
mov byte [esp + 0x154], 2
call fcn.0040fd30
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x28]
push edx
mov bl, 3
push esi
xor edx, edx
lea ecx, [esp + 0x28]
mov byte [esp + 0x160], bl
call fcn.0042be80
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x154], 4
call fcn.0040fdf0
mov byte [esp + 0x150], bl
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x437281
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x150], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4372a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x150], 1
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4372d1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x150], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4372f9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 9
push str.XPLATFORM
lea ecx, [esp + 0x1c]
call fcn.0040ee60
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.0042ddf0
mov edx, dword [esp + 0x14]
mov ecx, dword [edx - 0xc]
lea eax, [ecx - 1]
cmp eax, ebp
jl 0x437938
cmp eax, ecx
jg 0x437938
movzx eax, word [edx + eax*2]
cmp ax, 0x5c
je 0x437344
push 0x5c
lea ecx, [esp + 0x18]
call fcn.00431d70
push 0xf
push str.xpsetupinfo.xml
lea ecx, [esp + 0x1c]
call fcn.0040ee60
mov edx, dword [esp + 0x14]
push edx
mov dword [esp + 0x20], ebp
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x43742e
mov eax, 0x520258
call fcn.004385b0
cmp eax, ebp
mov dword [esp + 0x18], eax
jne 0x4373d5
mov dword [esp + 0x150], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4373a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x148]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x130]
xor ecx, esp
call fcn.004ac89d
add esp, 0x140
ret 0x10
mov eax, dword [eax + 0x50]
cmp eax, ebp
je 0x4373f7
push str.xplatform
push eax
or eax, 0xffffffff
call fcn.0045c370
push ebp
mov edi, eax
call fcn.00439800
add esp, 0xc
jmp 0x437405
push ebp
mov edi, str.xplatform
call fcn.00439750
add esp, 4
mov edi, eax
cmp edi, ebp
je 0x437412
mov ecx, dword [esp + 0x18]
mov dword [edi + 0x20], ecx
mov ebx, dword [esp + 0x18]
mov eax, edi
call fcn.0043b340
mov eax, str.shortcuts
call fcn.00439ec0
mov edi, eax
jmp 0x4376f6
mov eax, dword [esp + 0x14]
push ebp
push ebp
push 0xff
lea edx, [esp + 0x50]
push edx
push 0xffffffffffffffff
push eax
push ebp
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea ebx, [esp + 0x44]
call fcn.00450d60
test eax, eax
mov dword [esp + 0x18], eax
je 0x4374bf
mov ecx, eax
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x437474
cmp dword [eax + 4], 1
je 0x437474
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x437467
test eax, eax
mov edi, eax
jne 0x437481
mov edx, dword [esp + 0x18]
push edx
jmp 0x4374b7
mov edx, dword [eax + 8]
mov esi, str.xplatform
cmp edx, esi
je 0x437542
test edx, edx
je 0x4374b2
mov cl, byte [esi]
movzx eax, byte [edx]
movzx ebx, cl
sub eax, ebx
add edx, 1
test eax, eax
jne 0x4374b2
add esi, 1
test cl, cl
jne 0x437495
jmp 0x437542
mov eax, dword [esp + 0x18]
push eax
call fcn.004386a0
add esp, 4
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x4374f2
mov dword [esp + 0x150], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x43739d
mov eax, 0x520258
call fcn.004385b0
test eax, eax
mov dword [esp + 0x18], eax
jne 0x43751d
lea ecx, [esp + 0x14]
mov dword [esp + 0x150], 0xffffffff
call fcn.00410230
jmp 0x4373a9
mov ebx, dword [esp + 0x18]
mov eax, str.xplatform
xor esi, esi
call fcn.00439890
mov edi, eax
call fcn.0043b340
mov eax, str.shortcuts
call fcn.00439ec0
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], 0
mov esi, dword [edi + 0xc]
jne 0x43758f
test esi, esi
je 0x437581
mov ebx, 1
jmp 0x437560
mov eax, dword [esi + 8]
mov edx, str.shortcuts
call fcn.00452850
test eax, eax
jne 0x43757a
cmp dword [esi + 4], ebx
je 0x437677
mov esi, dword [esi + 0x18]
test esi, esi
jne 0x437560
mov eax, str.shortcuts
call fcn.00439ec0
mov dword [esp + 0x1c], eax
xor eax, eax
push ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov dword [esp + 0x44], eax
mov eax, dword [ecx]
sub eax, 0x10
mov ebx, esp
mov dword [esp + 0x28], esp
push eax
lea esi, [esp + 0x28]
lea edi, [esp + 0x2c]
mov dword [esp + 0x34], ebx
call fcn.0040ff10
add eax, 0x10
add esp, 4
mov dword [ebx], eax
mov byte [esp + 0x154], 6
mov byte [esp + 0x154], 0
call fcn.0042a070
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
sub eax, 0x10
mov ebx, esp
mov dword [esp + 0x30], esp
push eax
lea esi, [esp + 0x48]
lea edi, [esp + 0x28]
mov dword [esp + 0x28], ebx
call fcn.0040ff10
add eax, 0x10
add esp, 4
mov dword [ebx], eax
mov byte [esp + 0x154], 8
mov byte [esp + 0x154], 0
call fcn.0042a070
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xc]
add esp, 4
test ebx, ebx
je 0x4376d4
jmp 0x437630
mov edx, dword [ebx + 8]
mov esi, str.shortcut
cmp edx, esi
je 0x43765c
test edx, edx
je 0x4376c5
mov cl, byte [esi]
movzx eax, byte [edx]
movzx edi, cl
sub eax, edi
add edx, 1
test eax, eax
jne 0x4376c5
add esi, 1
test cl, cl
jne 0x437644
cmp dword [ebx + 4], 1
jne 0x4376c5
push 0x51c5b0
call fcn.0043c1b0
add esp, 4
test eax, eax
jne 0x437680
xor edi, edi
jmp 0x437689
mov dword [esp + 0x1c], esi
jmp 0x43758f
mov ecx, eax
call fcn.0043c110
mov edi, eax
push str.location
call fcn.0043c1b0
add esp, 4
test eax, eax
jne 0x43769e
xor esi, esi
jmp 0x4376a7
mov ecx, eax
call fcn.0043c110
mov esi, eax
mov edx, dword [esp + 0x24]
mov eax, edi
call fcn.00452850
test eax, eax
jne 0x4376c5
mov edx, dword [esp + 0x20]
mov eax, esi
call fcn.00452850
test eax, eax
je 0x4376d2
mov ebx, dword [ebx + 0x18]
test ebx, ebx
jne 0x437630
jmp 0x4376d4
mov ebp, ebx
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004a08dc
mov edx, dword [esp + 0x24]
add esp, 4
push edx
call fcn.004a08dc
add esp, 4
test ebp, ebp
jne 0x43770a
mov edi, dword [esp + 0x1c]
mov eax, str.shortcut
call fcn.00439ec0
mov ebp, eax
test ebp, ebp
je 0x437907
push 0x51c5b0
mov ebx, ebp
call fcn.0043c1b0
add esp, 4
test eax, eax
je 0x437724
mov ecx, eax
call fcn.00439620
mov eax, dword [esp + 0x30]
push 0x51c5b0
push eax
push ebp
call fcn.0042a130
add esp, 0xc
test ebp, ebp
je 0x437755
push str.location
mov ebx, ebp
call fcn.0043c1b0
add esp, 4
test eax, eax
je 0x437755
mov ecx, eax
call fcn.00439620
mov ecx, dword [esp + 0x28]
push str.location
push ecx
push ebp
call fcn.0042a130
add esp, 0xc
test ebp, ebp
je 0x437786
push str.icon
mov ebx, ebp
call fcn.0043c1b0
add esp, 4
test eax, eax
je 0x437786
mov ecx, eax
call fcn.00439620
mov edx, dword [esp + 0x3c]
push str.icon
push edx
push ebp
call fcn.0042a130
add esp, 0xc
test ebp, ebp
je 0x4377b7
push str.target
mov ebx, ebp
call fcn.0043c1b0
add esp, 4
test eax, eax
je 0x4377b7
mov ecx, eax
call fcn.00439620
mov eax, dword [esp + 0x34]
push str.target
push eax
push ebp
call fcn.0042a130
add esp, 0xc
test ebp, ebp
je 0x4377e8
push str.command
mov ebx, ebp
call fcn.0043c1b0
add esp, 4
test eax, eax
je 0x4377e8
mov ecx, eax
call fcn.00439620
mov ecx, dword [esp + 0x38]
push str.command
push ecx
push ebp
call fcn.0042a130
add esp, 0xc
call fcn.004a08e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x437815
push 0x80004005
call fcn.004103e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x150], 9
call fcn.004a08e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x437847
push 0x80004005
call fcn.004103e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x2c], esi
mov byte [esp + 0x150], 0xa
mov edi, dword [esp + 0x18]
push edi
lea ebx, [esp + 0x20]
call fcn.00429520
add esp, 4
lea ecx, [esp + 0x14]
push ecx
mov edx, ebx
push edx
call fcn.00429cb0
push edi
call fcn.004386a0
lea eax, [esi - 0x10]
add esp, 0xc
mov byte [esp + 0x150], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4378aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x150], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4378d2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x150], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4378fd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
jmp 0x4373ab
mov ecx, dword [esp + 0x18]
push ecx
call fcn.004386a0
mov dword [esp + 0x154], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x43739d
push 0x80070057
call fcn.004103e0
int3