Function at 0x41ecb0
Capabilities:
Get common file path
Get program files directory
Get startup folder
Write file on windows
Write file to startup folder

Disassembly:
push 0xffffffffffffffff
push 0x45b38c
mov eax, dword fs:[0]
push eax
sub esp, 0x478
mov eax, dword [0x4713c0]
xor eax, esp
mov dword [esp + 0x470], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4713c0]
xor eax, esp
push eax
lea eax, [esp + 0x48c]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x49c]
xor ebx, ebx
mov edi, 7
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], ebx
mov word [esp + 0x50], bx
push 0x206
lea eax, [esp + 0x8a]
push ebx
mov dword [esp + 0x49c], ebx
push eax
mov word [esp + 0x90], bx
call fcn.00446fa0
add esp, 0xc
push 1
push 0x26
lea ecx, [esp + 0x8c]
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x41edaa
lea eax, [esp + 0x84]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41ed50
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x88]
push edx
lea esi, [esp + 0x54]
call fcn.00406f80
mov eax, dword [esp + 0x60]
cmp eax, ebx
jbe 0x41edaa
lea esi, [eax - 1]
cmp esi, eax
jbe 0x41ed85
call fcn.00441e46
cmp dword [esp + 0x64], 8
mov eax, dword [esp + 0x50]
jae 0x41ed94
lea eax, [esp + 0x50]
cmp word [eax + esi*2], 0x5c
je 0x41edaa
lea eax, [esp + 0x4c]
push eax
mov edx, 0x4624bc
call fcn.00406b40
cmp dword [esp + 0x64], 8
mov eax, dword [esp + 0x50]
jae 0x41edb9
lea eax, [esp + 0x50]
push eax
push 0x464fe0
lea ecx, [esp + 0x8c]
push 0x200
push ecx
call fcn.004414db
add esp, 0x10
lea ecx, [esp + 0x68]
mov word [esp + 0x482], bx
call fcn.0042bd40
mov byte [esp + 0x494], 1
lea eax, [esp + 0x84]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebx
mov word [esp + 0x18], bx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41ee04
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x88]
push edx
lea esi, [esp + 0x1c]
call fcn.00406f80
mov eax, esi
push ebx
push eax
or eax, 0xffffffff
lea esi, [esp + 0x70]
mov byte [esp + 0x49c], 2
call fcn.00406df0
mov esi, 8
cmp dword [esp + 0x2c], esi
jb 0x41ee55
mov ecx, dword [esp + 0x18]
push ecx
call fcn.004415cb
add esp, 4
cmp dword [esp + 0x80], esi
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebx
mov word [esp + 0x18], bx
jae 0x41ee73
lea edx, [esp + 0x6c]
mov edi, dword [0x474bb0]
cmp edi, ebx
je 0x41eeac
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41ee82
sub eax, esi
sar eax, 1
push edi
add eax, eax
push eax
push 1
push edx
call fcn.004422ed
mov ecx, dword [0x474bb0]
push ecx
call fcn.004428a9
add esp, 0x14
mov edi, 8
mov byte [esp + 0x494], bl
cmp dword [esp + 0x80], edi
jb 0x41eece
mov edx, dword [esp + 0x6c]
push edx
call fcn.004415cb
add esp, 4
cmp dword [esp + 0x60], ebx
jne 0x41eeee
cmp dword [esp + 0x64], edi
jb 0x41eee7
mov eax, dword [esp + 0x50]
push eax
call fcn.004415cb
add esp, 4
xor eax, eax
jmp 0x41f040
push 0xffffffffffffffff
mov esi, 7
push ebx
mov eax, ebp
lea ecx, [esp + 0x38]
mov dword [esp + 0x50], esi
mov dword [esp + 0x4c], ebx
mov word [esp + 0x3c], bx
call fcn.00406d10
mov byte [esp + 0x494], 3
mov ecx, dword [esp + 0x44]
cmp ecx, ebx
jbe 0x41ef5c
lea esi, [ecx - 1]
cmp esi, ecx
jbe 0x41ef2e
call fcn.00441e46
mov ecx, dword [esp + 0x44]
cmp dword [esp + 0x48], edi
mov eax, dword [esp + 0x34]
jae 0x41ef3c
lea eax, [esp + 0x34]
cmp word [eax + esi*2], 0x5c
je 0x41ef57
push 1
push 0x4624bc
lea ecx, [esp + 0x38]
call fcn.00406eb0
mov ecx, dword [esp + 0x44]
mov esi, 7
mov edx, dword [esp + 0x60]
cmp edx, ecx
jbe 0x41efa2
cmp dword [esp + 0x48], edi
jb 0x41ef77
mov ecx, dword [esp + 0x34]
push ecx
call fcn.004415cb
add esp, 4
cmp dword [esp + 0x64], edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x41eee7
mov edx, dword [esp + 0x50]
push edx
call fcn.004415cb
add esp, 4
xor eax, eax
jmp 0x41f040
cmp dword [esp + 0x48], edi
mov ecx, dword [esp + 0x34]
jae 0x41efb0
lea ecx, [esp + 0x34]
cmp dword [esp + 0x64], edi
mov eax, dword [esp + 0x50]
jae 0x41efbe
lea eax, [esp + 0x50]
push edx
push ecx
push eax
call fcn.00442be3
add esp, 0xc
test eax, eax
je 0x41f008
cmp dword [esp + 0x48], edi
jb 0x41efe0
mov eax, dword [esp + 0x34]
push eax
call fcn.004415cb
add esp, 4
cmp dword [esp + 0x64], edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x41eee7
mov ecx, dword [esp + 0x50]
push ecx
call fcn.004415cb
add esp, 4
xor eax, eax
jmp 0x41f040
cmp dword [esp + 0x48], edi
jb 0x41f01b
mov edx, dword [esp + 0x34]
push edx
call fcn.004415cb
add esp, 4
cmp dword [esp + 0x64], edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x41f03b
mov eax, dword [esp + 0x50]
push eax
call fcn.004415cb
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0x48c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x470]
xor ecx, esp
call fcn.004414cc
add esp, 0x484
ret