Function at 0x462160
Capabilities:
Check if file exists
Check os version
Create shortcut via ishelllink
Get file attributes
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x526430
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push esi
push edi
mov eax, dword [0x595cb8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x30], ecx
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4621a0
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x34], eax
mov dword [ebp - 4], 0
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4621c7
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x48], eax
mov byte [ebp - 4], 1
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4621eb
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 2
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x46220f
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x40], edi
mov byte [ebp - 4], 3
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462233
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x2c], eax
mov byte [ebp - 4], 4
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462257
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 5
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x46227b
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 6
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x46229f
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x4c], ebx
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
mov ecx, esi
push str.filePath
mov byte [ebp - 0xe], 0
call fcn.00438d70
cmp eax, 0x59c858
je 0x463cb4
mov al, byte [esi + 8]
test al, al
je 0x4622ee
cmp al, 7
je 0x4622ee
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov al, byte [esi + 8]
mov byte [ebp - 0xd], al
test al, al
jne 0x4622ff
mov ecx, 0x59c858
jmp 0x462338
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.filePath
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x46232b
mov ecx, 0x59c858
jmp 0x46232e
lea ecx, [eax + 0x18]
mov al, byte [ebp - 0xd]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [ecx + 8], 4
jne 0x463cb4
test al, al
je 0x462361
cmp al, 7
je 0x462361
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x46236e
mov edi, 0x59c858
jmp 0x4623a4
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.filePath
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x46239a
mov edi, 0x59c858
jmp 0x46239d
lea edi, [eax + 0x18]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [edi + 8], 4
je 0x4623c1
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x4623cb
xor ecx, ecx
jmp 0x4623d9
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4623d0
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.0042cb10
lea edx, [ebp - 0x40]
lea ecx, [ebp - 0x34]
call fcn.0042c0f0
push str.type
mov ecx, esi
call fcn.00438d70
cmp eax, 0x59c858
je 0x463b1e
mov al, byte [esi + 8]
test al, al
je 0x462427
cmp al, 7
je 0x462427
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov cl, byte [esi + 8]
mov byte [ebp - 0xd], cl
test cl, cl
jne 0x462438
mov eax, 0x59c858
jmp 0x462471
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.type
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x462464
mov eax, 0x59c858
jmp 0x462467
add eax, 0x18
mov cl, byte [ebp - 0xd]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
mov al, byte [eax + 8]
cmp al, 1
je 0x462488
cmp al, 2
je 0x462488
cmp al, 5
je 0x462488
cmp al, 3
jne 0x463b1e
test cl, cl
je 0x4624a8
cmp cl, 7
je 0x4624a8
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x4624b5
mov ecx, 0x59c858
jmp 0x4624eb
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.type
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x4624e1
mov ecx, 0x59c858
jmp 0x4624e4
lea ecx, [eax + 0x18]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
call fcn.00438670
push 0x572690
mov ecx, esi
mov dword [ebp - 0x3c], eax
call fcn.00438d70
cmp eax, 0x59c858
je 0x463988
mov cl, byte [esi + 8]
test cl, cl
je 0x46252d
cmp cl, 7
je 0x46252d
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov al, byte [esi + 8]
mov byte [ebp - 0xd], al
test al, al
jne 0x46253e
mov ecx, 0x59c858
jmp 0x462577
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], 0x572690
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x46256a
mov ecx, 0x59c858
jmp 0x46256d
lea ecx, [eax + 0x18]
mov al, byte [ebp - 0xd]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [ecx + 8], 4
jne 0x463988
test al, al
je 0x4625a0
cmp al, 7
je 0x4625a0
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x4625ad
mov edi, 0x59c858
jmp 0x4625e3
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], 0x572690
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x4625d9
mov edi, 0x59c858
jmp 0x4625dc
lea edi, [eax + 0x18]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [edi + 8], 4
je 0x462600
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x46260a
xor ecx, ecx
jmp 0x462619
mov ecx, edx
lea edi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x462610
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.0042cb10
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x34]
call fcn.0042c0f0
push str.description
mov ecx, esi
call fcn.00438d70
cmp eax, 0x59c858
je 0x462762
mov al, byte [esi + 8]
test al, al
je 0x462667
cmp al, 7
je 0x462667
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov bl, byte [esi + 8]
test bl, bl
jne 0x462675
mov eax, 0x59c858
jmp 0x4626ab
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.description
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x4626a1
mov eax, 0x59c858
jmp 0x4626a4
add eax, 0x18
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [eax + 8], 4
jne 0x462762
test bl, bl
je 0x4626d5
cmp bl, 7
je 0x4626d5
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x4626e2
mov edi, 0x59c858
jmp 0x462718
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.description
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x46270e
mov edi, 0x59c858
jmp 0x462711
lea edi, [eax + 0x18]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [edi + 8], 4
je 0x462735
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x46273f
xor ecx, ecx
jmp 0x46274d
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x462744
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.0042cb10
lea edx, [ebp - 0x2c]
lea ecx, [ebp - 0x34]
call fcn.0042c0f0
push str.iconPath
mov ecx, esi
call fcn.00438d70
cmp eax, 0x59c858
je 0x462896
mov al, byte [esi + 8]
test al, al
je 0x46279b
cmp al, 7
je 0x46279b
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov bl, byte [esi + 8]
test bl, bl
jne 0x4627a9
mov eax, 0x59c858
jmp 0x4627df
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.iconPath
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x4627d5
mov eax, 0x59c858
jmp 0x4627d8
add eax, 0x18
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [eax + 8], 4
jne 0x462896
test bl, bl
je 0x462809
cmp bl, 7
je 0x462809
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x462816
mov edi, 0x59c858
jmp 0x46284c
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.iconPath
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x462842
mov edi, 0x59c858
jmp 0x462845
lea edi, [eax + 0x18]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [edi + 8], 4
je 0x462869
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x462873
xor ecx, ecx
jmp 0x462881
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x462878
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.0042cb10
lea edx, [ebp - 0x28]
lea ecx, [ebp - 0x34]
call fcn.0042c0f0
push str.commandLine
mov ecx, esi
call fcn.00438d70
cmp eax, 0x59c858
je 0x4629ce
mov al, byte [esi + 8]
test al, al
je 0x4628cf
cmp al, 7
je 0x4628cf
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov bl, byte [esi + 8]
test bl, bl
jne 0x4628dd
mov eax, 0x59c858
jmp 0x462913
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.commandLine
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x462909
mov eax, 0x59c858
jmp 0x46290c
add eax, 0x18
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [eax + 8], 4
jne 0x4629ce
test bl, bl
je 0x46293d
cmp bl, 7
je 0x46293d
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x46294a
mov edi, 0x59c858
jmp 0x462980
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.commandLine
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x462976
mov edi, 0x59c858
jmp 0x462979
lea edi, [eax + 0x18]
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [edi + 8], 4
je 0x46299d
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x4629a7
xor ecx, ecx
jmp 0x4629b9
mov ecx, edx
lea edi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4629b0
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.0042cb10
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0x34]
call fcn.0042c0f0
push str.public
mov ecx, esi
call fcn.00438d70
cmp eax, 0x59c858
je 0x462acc
mov al, byte [esi + 8]
test al, al
je 0x462a07
cmp al, 7
je 0x462a07
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov bl, byte [esi + 8]
test bl, bl
jne 0x462a15
mov eax, 0x59c858
jmp 0x462a4b
mov esi, dword [esi]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], str.public
push eax
mov ecx, esi
mov dword [ebp - 0x50], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x462a41
mov eax, 0x59c858
jmp 0x462a44
add eax, 0x18
mov byte [ebp - 4], 7
mov esi, dword [ebp + 8]
cmp byte [eax + 8], 5
jne 0x462acc
test bl, bl
je 0x462a71
cmp bl, 7
je 0x462a71
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x462a85
mov ecx, 0x59c858
call fcn.004388a0
mov bh, al
jmp 0x462acf
mov esi, dword [esi]
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp + 8]
mov dword [ebp - 0x5c], str.public
push eax
mov ecx, esi
mov dword [ebp - 0x58], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x462abc
mov ecx, 0x59c858
mov byte [ebp - 4], 7
call fcn.004388a0
mov bh, al
jmp 0x462acf
lea ecx, [eax + 0x18]
mov byte [ebp - 4], 7
call fcn.004388a0
mov bh, al
jmp 0x462acf
mov bh, byte [ebp - 0xe]
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462ae4
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 0x30
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp al, 5
setbe bl
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462b13
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x18], esi
mov byte [ebp - 4], 0x31
test bh, bh
je 0x462cf4
mov eax, dword [ebp - 0x3c]
or edi, 0xffffffff
test eax, eax
jne 0x462ba8
call fcn.0040f350
mov ecx, eax
test bl, bl
jne 0x462b81
test ecx, ecx
jne 0x462b4d
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x32
push str.PUBLIC
lea esi, [ebp + 8]
call fcn.0041f910
mov ecx, esi
call fcn.0042b130
mov esi, dword [ebp + 8]
push esi
push str._sDesktop
jmp 0x462cd0
test ecx, ecx
jne 0x462b8f
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x33
push str.ALLUSERSPROFILE
jmp 0x462b64
cmp eax, 1
jne 0x462c40
call fcn.0040f350
mov ecx, eax
test bl, bl
jne 0x462bfe
test ecx, ecx
jne 0x462bca
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x34
push str.PROGRAMDATA
lea esi, [ebp + 8]
call fcn.0041f910
mov ecx, esi
call fcn.0042b130
mov esi, dword [ebp + 8]
push esi
push str._sMicrosoftWindowsStart_MenuPrograms
jmp 0x462cd0
test ecx, ecx
jne 0x462c0c
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x35
push str.ALLUSERSPROFILE
lea esi, [ebp + 8]
call fcn.0041f910
mov ecx, esi
call fcn.0042b130
mov esi, dword [ebp + 8]
push esi
push str._sStart_MenuPrograms
jmp 0x462cd0
cmp eax, 2
jne 0x462d34
call fcn.0040f350
mov ecx, eax
test bl, bl
jne 0x462c93
test ecx, ecx
jne 0x462c62
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x36
push str.PROGRAMDATA
lea esi, [ebp + 8]
call fcn.0041f910
mov ecx, esi
call fcn.0042b130
mov esi, dword [ebp + 8]
push esi
push str._sMicrosoftWindowsStart_MenuProgramsStartup
jmp 0x462cd0
test ecx, ecx
jne 0x462ca1
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x37
push str.ALLUSERSPROFILE
lea esi, [ebp + 8]
call fcn.0041f910
mov ecx, esi
call fcn.0042b130
mov esi, dword [ebp + 8]
push esi
push str._sStart_MenuProgramsStartup
lea eax, [ebp - 0x18]
push eax
call fcn.00420c20
add esp, 0x10
mov byte [ebp - 4], 0x31
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x462d31
mov ecx, dword [esi]
push esi
jmp 0x462d2c
push dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x30]
lea eax, [ebp + 8]
push eax
call fcn.0046b760
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0x38
call fcn.00421a50
mov byte [ebp - 4], 0x31
or edi, 0xffffffff
mov edx, dword [ebp + 8]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x462d31
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x4c]
lea eax, [ebp - 0x20]
push ebx
push esi
push str._s_s.lnk
push eax
call fcn.00420c20
add esp, 0x10
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462d5f
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x38], eax
mov eax, str.Shortcut_link:
mov byte [ebp - 4], 0x39
test eax, 0xffff0000
jne 0x462d94
movzx edi, ax
mov ecx, edi
call fcn.0041f3d0
test eax, eax
je 0x462da1
push edi
push eax
lea ecx, [ebp - 0x38]
call fcn.0041fbd0
jmp 0x462da1
push str.Shortcut_link:
lea ecx, [ebp - 0x38]
call fcn.0041fa30
mov byte [ebp - 4], 0x3a
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462dba
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov eax, str.createShortcut
mov byte [ebp - 4], 0x3b
test eax, 0xffff0000
jne 0x462def
movzx edi, ax
mov ecx, edi
call fcn.0041f3d0
test eax, eax
je 0x462dfe
push edi
push eax
lea ecx, [ebp + 8]
call fcn.0041fbd0
jmp 0x462dfe
push 0xe
push str.createShortcut
lea ecx, [ebp + 8]
call fcn.0041fd40
mov byte [ebp - 4], 0x3c
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462e17
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x44], edi
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0x3d
push eax
lea edx, [ebp - 0x44]
lea ecx, [ebp - 0x58]
call fcn.00420f70
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0x3e
push ecx
mov edx, eax
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 8
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x3f
cmp dword [eax + 0xc], 0
je 0x462e69
push 0
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x3e
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x462e88
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3d
or eax, 0xffffffff
mov edx, dword [ebp - 0x58]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x462ea7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x3c
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x462ec5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3a
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x462ee3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x31
mov eax, edi
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x462f01
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
mov byte [ebp - 0x38], 0
mov byte [ebp + 0xb], 0
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov edi, 1
cmp eax, 0xffffffff
je 0x462f28
test al, 0x10
mov eax, dword [ebp - 0x38]
movzx eax, al
cmovne eax, edi
mov dword [ebp - 0x38], eax
lea ecx, [ebp - 0x40]
call fcn.004259c0
movzx ecx, byte [ebp + 0xb]
test al, al
mov dword [ebp - 0x1c], 0
cmovne ecx, edi
mov dword [ebp + 8], ecx
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 0x40
push eax
push 0x55e91c
push 0x17
push 0
push 0x55ea5c
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov edx, eax
test edx, edx
js 0x4637c3
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x40]
push edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
test eax, eax
jns 0x46314a
mov ecx, dword [ebp + 8]
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x38]
movzx ecx, cl
push ecx
push edi
push eax
push dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
push str.createShortcut_SetPath__d__d__s__d__d
push eax
call fcn.00420c20
add esp, 0x1c
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x41
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x462fc8
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3c], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x42
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x43
cmp dword [eax + 0xc], 0
je 0x46300b
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x42
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46302a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x41
mov edx, dword [ebp - 0x3c]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463046
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x40
or eax, 0xffffffff
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463065
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x31
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x463076
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x30
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463094
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4630b2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x4630cd
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4630eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463109
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, esi
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463127
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x463142
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
or esi, 0xffffffff
jmp 0x463e43
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x2c]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
test eax, eax
jns 0x463216
mov ecx, dword [ebp + 8]
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x38]
movzx ecx, cl
push ecx
push dword [ebp - 0x2c]
push eax
push dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
push str.createShortcut_SetDescription__d__d__s__d__d
push eax
call fcn.00420c20
add esp, 0x1c
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x44
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4631ab
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3c], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x45
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x46
cmp dword [eax + 0xc], 0
je 0x4631ee
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x45
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46320d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x44
jmp 0x46302e
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x1c]
push 0
cmp dword [ecx - 0xc], 0
jne 0x4632ec
mov ecx, dword [eax]
push edi
push eax
call dword [ecx + 0x44]
test eax, eax
jns 0x4633b5
mov ecx, dword [ebp + 8]
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x38]
movzx ecx, cl
push ecx
push edi
push eax
push dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
push str.createShortcut_SetIconLocation_Exec__d__d__s__d__d
push eax
call fcn.00420c20
add esp, 0x1c
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x47
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x463281
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3c], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x48
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x49
cmp dword [eax + 0xc], 0
je 0x4632c4
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x48
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4632e3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x47
jmp 0x46302e
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x44]
mov edx, eax
test edx, edx
jns 0x4633b5
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x28]
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x38]
movzx ecx, cl
push ecx
push eax
push edx
push dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
push str.createShortcut_SetIconLocation_Icon__d__d__s__d__d
push eax
call fcn.00420c20
add esp, 0x1c
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x4a
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x46334a
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3c], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x4b
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x4c
cmp dword [eax + 0xc], 0
je 0x46338d
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x4b
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4633ac
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x4a
jmp 0x46302e
mov ecx, dword [ebp - 0x24]
cmp dword [ecx - 0xc], 0
je 0x46348e
mov eax, dword [ebp - 0x1c]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x2c]
mov edx, eax
test edx, edx
jns 0x46348e
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x24]
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x38]
movzx ecx, cl
push ecx
push eax
push edx
push dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
push str.createShortcut_SetArguments__d__d__s__d__d
push eax
call fcn.00420c20
add esp, 0x1c
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x4d
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x463423
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3c], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x4e
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x4f
cmp dword [eax + 0xc], 0
je 0x463466
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x4e
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463485
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x4d
jmp 0x46302e
mov dword [ebp - 0x44], 0
mov byte [ebp - 4], 0x50
lea edx, [ebp - 0x44]
mov eax, dword [ebp - 0x1c]
push edx
push 0x55e99c
push eax
mov ecx, dword [eax]
call dword [ecx]
mov edx, eax
test edx, edx
js 0x463690
mov eax, dword [ebp - 0x44]
push 1
push dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
test eax, eax
jns 0x463626
mov ecx, dword [ebp + 8]
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x38]
movzx ecx, cl
push ecx
push eax
push dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
push str.createShortcut_Save__d__d__d__d
push eax
call fcn.00420c20
mov ecx, dword [ebp - 0x14]
lea ecx, [ecx - 0x10]
call fcn.0041fb10
add eax, 0x10
mov dword [ebp + 8], eax
lea eax, [ebp - 0x20]
mov byte [ebp - 4], 0x51
push eax
mov edx, 0x56d0dc
lea ecx, [ebp - 0x58]
call fcn.00423d10
add esp, 0x1c
mov byte [ebp - 4], 0x52
lea ecx, [ebp + 8]
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.00428980
mov byte [ebp - 4], 0x51
or eax, 0xffffffff
mov edx, dword [ebp - 0x58]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463544
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.createShortcut
lea ecx, [ebp - 0x3c]
call fcn.0041f910
mov byte [ebp - 4], 0x53
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x46356a
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x38], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x54
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x55
cmp dword [eax + 0xc], 0
je 0x4635ad
push 2
push ecx
lea ecx, [ebp - 0x3c]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x54
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4635cc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x53
or eax, 0xffffffff
mov edx, dword [ebp - 0x38]
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4635e8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x51
or eax, 0xffffffff
mov edx, dword [ebp - 0x3c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463607
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x50
or eax, 0xffffffff
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463626
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x40
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x463637
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x48]
call fcn.00421a50
push 0x56ebf0
push 0x56de40
lea ecx, [ebp - 0x48]
call fcn.00421760
mov byte [ebp - 4], 0x31
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x463666
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x30
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463684
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x20]
jmp 0x463d9c
mov ecx, dword [ebp + 8]
movzx eax, cl
mov ecx, dword [ebp - 0x38]
push eax
movzx eax, cl
push eax
push edx
lea eax, [ebp - 0x14]
push str.createShortcut_QueryInterface__d__d__d
push eax
call fcn.00420c20
add esp, 0x14
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x56
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4636d6
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3c], eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x57
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x58
cmp dword [eax + 0xc], 0
je 0x463719
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x57
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463738
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x56
or eax, 0xffffffff
mov edx, dword [ebp - 0x3c]
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463754
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x50
or eax, 0xffffffff
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463773
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x40
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x463784
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 0x31
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x463795
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x30
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463684
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x20]
jmp 0x463d9c
mov ecx, dword [ebp + 8]
movzx eax, cl
mov ecx, dword [ebp - 0x38]
push eax
movzx eax, cl
push eax
push edx
lea eax, [ebp - 0x14]
push str.createShortcut_CoCreateInstance__d__d__d
push eax
call fcn.00420c20
add esp, 0x14
lea ecx, [ebp + 8]
push str.createShortcut
call fcn.0041f910
mov byte [ebp - 4], 0x59
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x463809
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x58], edi
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0x5a
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x5b
cmp dword [eax + 0xc], 0
je 0x463849
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x5a
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463868
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x59
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463886
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x40
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4638a4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x31
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4638b5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x30
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4638d3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4638f1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x46390c
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46392a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463948
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, esi
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463966
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, esi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463e43
mov ecx, dword [edx]
push edx
jmp 0x463e3e
push 0x1b
push str.createShortcut_name_missing
lea ecx, [ebp - 0x14]
call fcn.0041fd40
push str.name_error
lea ecx, [ebp - 0x44]
call fcn.0041f870
push str.createShortcut
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x1a
call fcn.0041f910
mov byte [ebp - 4], 0x1b
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4639ce
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x58], esi
lea eax, [ebp - 0x44]
mov byte [ebp - 4], 0x1c
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x1d
cmp dword [eax + 0xc], 0
je 0x463a0e
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x1c
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463a2d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x1b
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463a4b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1a
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463a69
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463a87
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x463aa2
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463ac0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463ade
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, esi
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463afc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, esi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463e43
mov ecx, dword [edx]
push edx
jmp 0x463e3e
push 0x1b
push str.createShortcut_type_missing
lea ecx, [ebp - 0x14]
call fcn.0041fd40
push str.type_error
lea ecx, [ebp - 0x44]
call fcn.0041f870
push str.createShortcut
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x12
call fcn.0041f910
mov byte [ebp - 4], 0x13
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x463b64
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x58], esi
lea eax, [ebp - 0x44]
mov byte [ebp - 4], 0x14
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0x15
cmp dword [eax + 0xc], 0
je 0x463ba4
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x14
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463bc3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x13
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463be1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x12
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463bff
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463c1d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x463c38
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463c56
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463c74
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, esi
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463c92
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, esi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463e43
mov ecx, dword [edx]
push edx
jmp 0x463e3e
push 0x1f
push str.createShortcut_filePath_missing
lea ecx, [ebp - 0x14]
call fcn.0041fd40
push str.filePath_error
lea ecx, [ebp - 0x44]
call fcn.0041f870
push str.createShortcut
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0xa
call fcn.0041f910
mov byte [ebp - 4], 0xb
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x463cfa
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x58], esi
lea eax, [ebp - 0x44]
mov byte [ebp - 4], 0xc
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x50]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 0xd
cmp dword [eax + 0xc], 0
je 0x463d3a
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0xc
or eax, 0xffffffff
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463d59
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0xb
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463d77
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463d95
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463db3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x463dce
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463dec
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463e0a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, esi
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463e28
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x463e43
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x463ef0
mov eax, 8
mov word [ebx], ax
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x463e6b
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x5c
mov edx, str.false
mov eax, dword [ebp - 0x14]
mov ecx, str.true
mov edi, dword [ebp - 0x48]
push eax
cmp dword [eax - 0xc], 0
lea eax, [ebp + 8]
cmovne ecx, edx
push ecx
push edi
push str.__path__:___s_____result__:__s____error__:___s_
push eax
call fcn.00420c20
add esp, 0x14
lea ecx, [ebp + 8]
push 0x56ebf0
push 0x56de40
call fcn.00421760
mov esi, dword [ebp + 8]
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x463ecd
call fcn.0041fd30
lea edx, [esi - 0x10]
mov dword [ebx + 8], eax
or esi, 0xffffffff
mov byte [ebp - 4], 2
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463ef3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x463ef3
mov edi, dword [ebp - 0x48]
mov byte [ebp - 4], 1
mov eax, esi
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x463f11
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x463f2c
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x463f4b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8