Function at 0x41cb40
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 0x458e7c
mov eax, dword fs:[0]
push eax
sub esp, 0x478
mov eax, dword [0x46e3d0]
xor eax, esp
mov dword [esp + 0x470], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46e3d0]
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.00443e10
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 0x41cc3a
lea eax, [esp + 0x84]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41cbe0
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x88]
push edx
lea esi, [esp + 0x54]
call fcn.00406f20
mov eax, dword [esp + 0x60]
cmp eax, ebx
jbe 0x41cc3a
lea esi, [eax - 1]
cmp esi, eax
jbe 0x41cc15
call fcn.0043f7bb
cmp dword [esp + 0x64], 8
mov eax, dword [esp + 0x50]
jae 0x41cc24
lea eax, [esp + 0x50]
cmp word [eax + esi*2], 0x5c
je 0x41cc3a
lea eax, [esp + 0x4c]
push eax
mov edx, 0x46042c
call fcn.00406ae0
cmp dword [esp + 0x64], 8
mov eax, dword [esp + 0x50]
jae 0x41cc49
lea eax, [esp + 0x50]
push eax
push 0x462bd8
push 0x400
lea ecx, [esp + 0x90]
push 0x200
push ecx
call fcn.0043ef21
add esp, 0x14
lea ecx, [esp + 0x68]
call fcn.0042a750
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 0x41cc91
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x88]
push edx
lea esi, [esp + 0x1c]
call fcn.00406f20
mov eax, esi
push ebx
push eax
or eax, 0xffffffff
lea esi, [esp + 0x70]
mov byte [esp + 0x49c], 2
call fcn.00406d90
mov esi, 8
cmp dword [esp + 0x2c], esi
jb 0x41cce2
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0043ef40
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 0x41cd00
lea edx, [esp + 0x6c]
mov edi, dword [0x471b30]
cmp edi, ebx
je 0x41cd3a
mov eax, edx
lea esi, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41cd10
sub eax, esi
sar eax, 1
push edi
add eax, eax
push eax
push 1
push edx
call fcn.0043fe21
mov ecx, dword [0x471b30]
push ecx
call fcn.004402ef
add esp, 0x14
mov edi, 8
mov byte [esp + 0x494], bl
cmp dword [esp + 0x80], edi
jb 0x41cd5c
mov edx, dword [esp + 0x6c]
push edx
call fcn.0043ef40
add esp, 4
cmp dword [esp + 0x60], ebx
jne 0x41cd7c
cmp dword [esp + 0x64], edi
jb 0x41cd75
mov eax, dword [esp + 0x50]
push eax
call fcn.0043ef40
add esp, 4
xor eax, eax
jmp 0x41cece
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.00406cc0
mov byte [esp + 0x494], 3
mov ecx, dword [esp + 0x44]
cmp ecx, ebx
jbe 0x41cdea
lea esi, [ecx - 1]
cmp esi, ecx
jbe 0x41cdbc
call fcn.0043f7bb
mov ecx, dword [esp + 0x44]
cmp dword [esp + 0x48], edi
mov eax, dword [esp + 0x34]
jae 0x41cdca
lea eax, [esp + 0x34]
cmp word [eax + esi*2], 0x5c
je 0x41cde5
push 1
push 0x46042c
lea ecx, [esp + 0x38]
call fcn.00406e50
mov ecx, dword [esp + 0x44]
mov esi, 7
mov edx, dword [esp + 0x60]
cmp edx, ecx
jbe 0x41ce30
cmp dword [esp + 0x48], edi
jb 0x41ce05
mov ecx, dword [esp + 0x34]
push ecx
call fcn.0043ef40
add esp, 4
cmp dword [esp + 0x64], edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x41cd75
mov edx, dword [esp + 0x50]
push edx
call fcn.0043ef40
add esp, 4
xor eax, eax
jmp 0x41cece
cmp dword [esp + 0x48], edi
mov ecx, dword [esp + 0x34]
jae 0x41ce3e
lea ecx, [esp + 0x34]
cmp dword [esp + 0x64], edi
mov eax, dword [esp + 0x50]
jae 0x41ce4c
lea eax, [esp + 0x50]
push edx
push ecx
push eax
call fcn.00440629
add esp, 0xc
test eax, eax
je 0x41ce96
cmp dword [esp + 0x48], edi
jb 0x41ce6e
mov eax, dword [esp + 0x34]
push eax
call fcn.0043ef40
add esp, 4
cmp dword [esp + 0x64], edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x41cd75
mov ecx, dword [esp + 0x50]
push ecx
call fcn.0043ef40
add esp, 4
xor eax, eax
jmp 0x41cece
cmp dword [esp + 0x48], edi
jb 0x41cea9
mov edx, dword [esp + 0x34]
push edx
call fcn.0043ef40
add esp, 4
cmp dword [esp + 0x64], edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x41cec9
mov eax, dword [esp + 0x50]
push eax
call fcn.0043ef40
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.0043ef12
add esp, 0x484
ret