Function at 0x40da18
Capabilities:
Create directory
Extract resource via kernel32 functions
Get common file path
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe4
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov eax, 0x40d9d8
call fcn.00404ba4
xor eax, eax
push ebp
push 0x40de82
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [0x44ccec], eax
push 0x44ccdc
lea eax, [ebp - 0x14]
mov ecx, 0x40de98
mov edx, dword [0x40e970]
call fcn.00403f74
mov eax, dword [ebp - 0x14]
call fcn.0040406c
push eax
push 0x80000002
call fcn.00404c60
mov dword [0x44ccd8], 4
push 0x44ccd8
push 0x44ccec
push 0
push 0
push 0x40dea0
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c68
cmp dword [0x44ccec], 0x83
jge 0x40dc06
mov dword [0x44ccec], 0x83
push 4
push 0x44ccec
push 4
push 0
push 0x40dea0
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c70
push 0xff
push 0x40f848
call fcn.00404d00
mov eax, 0x44cce8
mov edx, 0x40f848
mov ecx, 0x400
call fcn.00403efc
push dword [0x44cce8]
push 0x40deb0
push dword [0x40e96c]
mov eax, 0x44cce8
mov edx, 3
call fcn.00403fe8
push 0xa
push 0x40deb4
mov eax, dword [0x40f710]
push eax
call fcn.00404ca0
mov dword [0x44ccf0], eax
mov eax, dword [0x44ccf0]
push eax
mov eax, dword [0x40f710]
push eax
call fcn.00404d18
mov dword [0x44ccf4], eax
mov edx, dword [0x44cce8]
mov eax, 0x44ccf8
call fcn.00402a9c
mov edx, 1
mov eax, 0x44ccf8
call fcn.00402dec
push 0
mov eax, dword [0x44ccf0]
push eax
mov eax, dword [0x40f710]
push eax
call fcn.00404d30
mov ecx, eax
mov edx, dword [0x44ccf4]
mov eax, 0x44ccf8
call fcn.00402c14
mov eax, 0x44ccf8
call fcn.00402c34
mov eax, dword [0x44ccf0]
call fcn.00404d68
mov eax, dword [0x44ccf0]
push eax
call fcn.00404ca8
push 0x44ccdc
lea eax, [ebp - 0x18]
mov ecx, 0x40dec0
mov edx, dword [0x40e970]
call fcn.00403f74
mov eax, dword [ebp - 0x18]
call fcn.0040406c
push eax
push 0x80000002
call fcn.00404c60
mov eax, dword [0x44cce8]
call fcn.00403f28
push eax
mov eax, 0x44cce8
call fcn.004040bc
push eax
push 1
push 0
mov eax, 0x40e96c
call fcn.004040bc
push eax
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c70
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c58
mov edx, 0x44cce8
xor eax, eax
call fcn.00402788
mov edx, dword [0x44cce8]
mov eax, 0x44ccf8
call fcn.00402a9c
mov eax, dword [0x40ea8c]
mov byte [eax], 0x40
mov edx, 1
mov eax, 0x44ccf8
call fcn.00402dd0
push 0
mov edx, 0x40fc48
mov ecx, 0xf200
mov eax, 0x44ccf8
call fcn.00402bf4
mov eax, 0x44ccf8
call fcn.00402c34
call fcn.004027e8
mov dword [0x44ce48], 1
mov eax, 0xff
call fcn.00402cac
mov edx, dword [0x44ce48]
mov byte [edx + 0x440987], al
inc dword [0x44ce48]
cmp dword [0x44ce48], 0xc351
jne 0x40dc68
xor eax, eax
mov dword [0x44ce50], eax
push 0x44ccdc
push 0x40dec4
push 0x80000001
call fcn.00404c60
push 4
push 0x44ce50
push 4
push 0
push 0x40dee0
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c70
push 0xff
push 0x40f848
call fcn.00404d00
mov eax, 0x44cce0
mov edx, 0x40f848
mov ecx, 0x400
call fcn.00403efc
mov eax, 0x44cce0
mov edx, 0x40def8
call fcn.00403f30
mov eax, 0x44cce4
mov ecx, dword [0x44cce0]
mov edx, 0x40df0c
call fcn.00403f74
mov eax, dword [0x44cce4]
call fcn.00403f28
push eax
mov eax, 0x44cce4
call fcn.004040bc
push eax
push 1
push 0
push 0x40df14
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c70
mov eax, dword [0x44ccdc]
push eax
call fcn.00404c58
push 0
mov eax, dword [0x44cce0]
call fcn.0040406c
push eax
call fcn.00404c80
xor eax, eax
mov dword [0x44ce58], eax
call fcn.004027e8
mov dword [0x44ce44], 1
cmp dword [0x44ce58], 0x1f
jg 0x40de54
mov eax, 0xa
call fcn.00402cac
mov dword [ebp - 0x1c], eax
fild dword [ebp - 0x1c]
call fcn.00402824
fcomp dword [0x40df1c]
fnstsw ax
sahf
jne 0x40de3e
inc dword [0x44ce58]
push dword [0x44cce0]
push 0x40deb0
mov eax, dword [0x44ce44]
push dword [eax*4 + 0x40e2ac]
mov eax, 0x44cce8
mov edx, 3
call fcn.00403fe8
mov eax, dword [0x44cce8]
call fcn.00405a9c
mov dword [0x44ce54], eax
mov eax, dword [0x44ce54]
not eax
test eax, eax
jg 0x40de3e
mov edx, 0x40fc48
mov ecx, 0xf200
mov eax, dword [0x44ce54]
call fcn.00405ac0
mov eax, 0x7530
call fcn.00402cac
add eax, 0x1f40
mov dword [0x44ce4c], eax
mov edx, 0x440988
mov ecx, dword [0x44ce4c]
mov eax, dword [0x44ce54]
call fcn.00405ac0
mov edx, dword [0x44ce4c]
add edx, 0x2e39a333
mov eax, dword [0x44ce54]
call fcn.00405af4
mov eax, dword [0x44ce54]
call fcn.00405aec
inc dword [0x44ce44]
cmp dword [0x44ce44], 0x1b0
jne 0x40dd6a
push 0
push 0x40df20
push 0x40df28
push 0
call fcn.00404d60
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40de89
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.00403cdc
ret