Function at 0x40f220
Capabilities:
Read .ini file

Disassembly:
mov eax, 0x1a40
call fcn.0041f670
mov eax, dword [0x42f560]
xor eax, esp
mov dword [esp + 0x1a3c], eax
push ebx
push ebp
mov ebp, dword [esp + 0x1a4c]
mov eax, dword [ebp + 0x67c]
push esi
push edi
lea ecx, [esp + 0x48]
push ecx
push 0x42b25c
push ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], eax
mov ebx, 1
call fcn.0040edf0
lea edi, [esp + 0x54]
add esp, 0xc
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x40f270
mov edx, dword [0x42b220]
lea eax, [ebp + 0x470]
mov dword [edi], edx
mov edx, eax
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40f290
lea edi, [esp + 0x48]
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x40f2a4
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x14]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [eax + 8], 0
je 0x40f2d8
mov edi, str.BEGIN_::_K7IS_Parser_Create_Shortcuts
lea esi, [esp + 0x48]
call fcn.00412cb0
mov dword [esp + 0x18], ebx
cmp dword [ebp + 0x36c], ebx
jb 0x40f5ba
mov ecx, dword [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push str.ShortCut_d
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
add esp, 0xc
lea eax, [esp + 0x48]
push eax
push 0x80
lea ecx, [esp + 0x950]
push ecx
push 0
push str.ShortCutDesc
lea edx, [esp + 0x3c]
push edx
call esi
test eax, eax
je 0x40f589
lea eax, [esp + 0x48]
push eax
push 0x80
lea ecx, [esp + 0x850]
push ecx
push 0
push str.ShortCutArgs
lea edx, [esp + 0x3c]
push edx
call esi
test eax, eax
je 0x40f589
lea eax, [esp + 0x48]
push eax
push 0x80
lea ecx, [esp + 0x450]
push ecx
push 0
push str.ShortCutDir
lea edx, [esp + 0x3c]
push edx
call esi
test eax, eax
je 0x40f589
lea eax, [esp + 0x48]
push eax
push 0x80
lea ecx, [esp + 0x550]
push ecx
push 0
push str.ShortCutLink
lea edx, [esp + 0x3c]
push edx
call esi
test eax, eax
je 0x40f589
lea eax, [esp + 0x48]
push eax
push 0x80
lea ecx, [esp + 0x650]
push ecx
push 0
push str.ShortCutExe
lea edx, [esp + 0x3c]
push edx
call esi
test eax, eax
je 0x40f589
lea eax, [esp + 0x48]
push eax
push 0x80
lea ecx, [esp + 0x750]
push ecx
push 0
push str.ShortCutIcon
lea edx, [esp + 0x3c]
push edx
call esi
test eax, eax
je 0x40f589
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea eax, [esp + 0x48]
push eax
push 0
push str.ShortCutIconIndex
lea ecx, [esp + 0x34]
push ecx
call esi
lea edx, [esp + 0x48]
push edx
push 0
mov dword [esp + 0x2c], eax
push str.ShortCutHotKey
lea eax, [esp + 0x34]
push eax
call esi
mov ebx, eax
test ebx, ebx
jne 0x40f42f
or ebx, 0xffffffff
lea ecx, [esp + 0x48]
push ecx
push 0
push str.ShortCutPreventPinning
lea edx, [esp + 0x34]
push edx
call esi
mov ebp, eax
lea eax, [esp + 0x48]
push eax
push 0
push str.ShortCutSetAppId
lea ecx, [esp + 0x34]
push ecx
call esi
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0xa48]
mov dword [esp + 0x20], eax
push edx
lea eax, [esp + 0x44c]
push eax
push ecx
call fcn.0040edf0
lea edi, [esp + 0xa54]
add esp, 0xc
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x40f482
mov edx, dword [0x42b220]
lea eax, [esp + 0x548]
mov dword [edi], edx
mov edx, eax
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40f4a0
lea edi, [esp + 0xa48]
sub eax, edx
add edi, 0xfffffffe
jmp 0x40f4c0
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x40f4c0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0x1648]
push eax
lea ecx, [esp + 0x64c]
push ecx
push esi
call fcn.0040edf0
add esp, 0xc
lea edx, [esp + 0x1248]
push edx
lea eax, [esp + 0x74c]
push eax
push esi
call fcn.0040edf0
mov ecx, dword [esp + 0x20]
add esp, 0xc
cmp dword [ecx + 8], 0
je 0x40f531
mov edi, str.SHORTCUT_LINK_::_K7IS_Parser_Create_Shortcuts
lea esi, [esp + 0xa48]
call fcn.00412cb0
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
push edx
push ebp
push ebx
push eax
lea ecx, [esp + 0x1258]
push ecx
lea edx, [esp + 0x85c]
push edx
lea eax, [esp + 0xa60]
push eax
lea ecx, [esp + 0x1664]
push ecx
lea edi, [esp + 0x968]
call fcn.0040f020
mov ebx, eax
add esp, 0x20
test ebx, ebx
je 0x40f58d
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x36c]
jbe 0x40f2e8
jmp 0x40f5ba
xor ebx, ebx
jmp 0x40f5ba
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push eax
push edx
lea eax, [esp + 0x450]
push eax
add ecx, 0xe20
push str.Failed_to_create_Shortcut_s__d____d_
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
mov edx, dword [esp + 0x14]
cmp dword [edx + 8], 0
je 0x40f5d2
mov edi, str.END_::_K7IS_Parser_Create_Shortcuts
lea esi, [esp + 0x48]
call fcn.00412cb0
mov ecx, dword [esp + 0x1a4c]
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
xor ecx, esp
call fcn.00416a72
add esp, 0x1a40
ret