Function at 0x40541c
Capabilities:
Create directory
Get file attributes
Resolve function by parsing pe exports
Set file attributes

Disassembly:
sub esp, 0x3c
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], ebp
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], eax
mov ebp, dword [esp + 0x44]
mov dword [eax + 0x400c8], 0xffffffff
mov edx, eax
mov eax, dword [eax + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x68]
add eax, 0x3c
mov dword [esp], eax
call fcn.0044a354
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x400b0], eax
mov dword [ecx + 0x400b4], edx
cmp ebp, 1
jne 0x405484
mov eax, dword [ecx + 0x400b4]
or eax, dword [ecx + 0x400b0]
je 0x405493
mov esi, dword [esp + 0x20]
mov eax, dword [esi]
cmp dword [eax + 0x40068], 0
jne 0x4054ab
mov edi, dword [esp + 0x20]
mov eax, dword [edi]
cmp dword [eax + 0x40068], 0
setne al
movzx eax, al
jmp 0x405aae
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x6c]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x68]
mov dword [esp + 4], eax
mov eax, dword [edx]
mov dword [esp], eax
call fcn.004052de
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x70], eax
mov eax, dword [ecx]
cmp byte [eax], 0x65
jne 0x4054ee
mov eax, dword [ecx + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x68]
add eax, 0x30
mov dword [esp], eax
call fcn.00449e88
mov edx, dword [eax]
jmp 0x405533
mov eax, dword [esp + 0x20]
add eax, 0xb0
mov dword [esp + 8], eax
mov esi, dword [esp + 0x20]
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x68]
mov dword [esp], eax
call fcn.00402d40
mov ebx, eax
mov eax, dword [esi]
lea ecx, [eax + 0xc]
mov edx, ebx
cmp byte [eax + 0xc], 0
je 0x405533
mov edx, ecx
cld
mov ecx, 0xffffffff
mov al, 0
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
lea edx, [ebx + ecx]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x8c]
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x84]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x88]
mov dword [esp], eax
call fcn.0040ee32
mov esi, dword [esp + 0x20]
cmp dword [esi + 0x70], 0
je 0x405948
mov eax, dword [esi]
cmp byte [eax], 0x74
je 0x405948
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x68]
add eax, 0x54
mov dword [esp], eax
call fcn.0044a084
cmp dword [eax], 0
je 0x4055c4
mov eax, dword [esi]
cmp byte [eax], 0x65
je 0x405948
mov eax, dword [esi + 0x84]
mov dword [esp], eax
call fcn.0040f946
mov eax, dword [esi + 0x84]
mov dword [esp], eax
call sub.msvcrt.dll__wmkdir
jmp 0x405948
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x84]
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll__waccess
test eax, eax
sete byte [esp + 0x2b]
cmp byte [esp + 0x2b], 0
je 0x4056f1
mov eax, dword [edi]
cmp dword [eax + 0x40080], 0
je 0x405607
mov dword [edi + 0x70], 0
jmp 0x4056f1
mov edx, dword [esp + 0x20]
mov eax, dword [edx]
cmp dword [eax + 0x4007c], 0
jne 0x4056f1
mov eax, dword [edx + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x68]
add eax, 0x48
mov dword [esp], eax
call fcn.0044a264
mov ebx, eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x68]
add eax, 0x3c
mov dword [esp], eax
call fcn.0044a354
mov esi, dword [esp + 0x20]
mov ecx, dword [esi + 0x84]
mov edx, dword [esi + 4]
mov esi, dword [edx]
mov edx, dword [ebx]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], ecx
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 4]
mov dword [esp], eax
call dword [esi + 0x28]
cmp al, 0x6e
je 0x405695
cmp al, 0x6e
jg 0x40568b
cmp al, 0x61
je 0x4056a2
jmp 0x4056f1
cmp al, 0x71
je 0x4056cd
cmp al, 0x73
je 0x4056b4
jmp 0x4056f1
mov eax, dword [esp + 0x20]
mov dword [eax + 0x70], 0
jmp 0x4056f1
mov edx, dword [esp + 0x20]
mov eax, dword [edx]
mov dword [eax + 0x4007c], 1
jmp 0x4056f1
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov dword [eax + 0x40080], 1
mov dword [ecx + 0x70], 0
jmp 0x4056f1
mov dword [esp + 8], 0x44eaac
mov dword [esp + 4], 0xfffffff6
mov esi, dword [esp + 0x20]
mov dword [esp], esi
call fcn.00409f16
movzx eax, al
jmp 0x405aae
mov edi, dword [esp + 0x20]
cmp dword [edi + 0x70], 0
je 0x405948
cmp byte [esp + 0x2b], 0
je 0x40572f
mov eax, dword [edi + 0x84]
mov dword [esp], eax
call sub.KERNEL32.dll_GetFileAttributesW
sub esp, 4
and eax, 0xfffffffa
mov dword [esp + 4], eax
mov eax, dword [edi + 0x84]
mov dword [esp], eax
call sub.KERNEL32.dll_SetFileAttributesW
sub esp, 8
mov eax, dword [esp + 0x20]
add eax, 0x78
mov dword [esp + 0x24], eax
mov esi, eax
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x84]
mov dword [esp], eax
call fcn.0040f946
mov ebx, dword [esp + 0x20]
sub ebx, 0xffffff80
mov dword [esp + 8], 0x180
mov dword [esp + 4], 0x8301
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll__wopen
mov dword [ebx], eax
mov eax, dword [esi + 8]
not eax
shr eax, 0x1f
test al, al
jne 0x405948
cmp dword [0x7184d0], 0
je 0x40579f
mov dword [esp + 4], 1
mov dword [esp], 0x7184f0
call sub.msvcrt.dll_longjmp
mov dword [esp], 0x40000
call sub.msvcrt.dll_malloc
test eax, eax
jne 0x405844
cmp dword [0x7184d0], 0
je 0x4057d0
mov dword [esp + 4], 1
mov dword [esp], 0x7184f0
call sub.msvcrt.dll_longjmp
mov dword [esp], 0x40000
call fcn.004019f2
mov ebx, eax
mov dword [esp], 0x40000
call fcn.004019f2
mov esi, eax
mov dword [esp + 8], 0x40000
mov dword [esp + 4], 0x44e828
mov dword [esp], ebx
call sub.msvcrt.dll_sprintf
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.0040ee32
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], str.Error_encountered
mov dword [esp + 4], esi
mov dword [esp], 0
call sub.USER32.dll_MessageBoxW
sub esp, 0x10
call fcn.0040a376
mov dword [esp], 2
call sub.msvcrt.dll_exit
mov esi, eax
mov dword [esp], 0x40000
call sub.msvcrt.dll_malloc
mov ebx, eax
test eax, eax
jne 0x4058ed
cmp dword [0x7184d0], 0
je 0x405879
mov dword [esp + 4], 1
mov dword [esp], 0x7184f0
call sub.msvcrt.dll_longjmp
mov dword [esp], 0x40000
call fcn.004019f2
mov ebx, eax
mov dword [esp], 0x40000
call fcn.004019f2
mov esi, eax
mov dword [esp + 8], 0x40000
mov dword [esp + 4], 0x44e828
mov dword [esp], ebx
call sub.msvcrt.dll_sprintf
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.0040ee32
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], str.Error_encountered
mov dword [esp + 4], esi
mov dword [esp], 0
call sub.USER32.dll_MessageBoxW
sub esp, 0x10
call fcn.0040a376
mov dword [esp], 2
call sub.msvcrt.dll_exit
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
mov dword [esp + 8], eax
mov dword [esp + 4], str.ERROR:_cant_open_file__s
mov dword [esp], esi
call sub.msvcrt.dll_sprintf
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.0040ee32
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], str.Error_encountered
mov dword [esp + 4], ebx
mov dword [esp], 0
call sub.USER32.dll_MessageBoxW
sub esp, 0x10
call fcn.0040a376
mov dword [esp], 2
call sub.msvcrt.dll_exit
test ebp, ebp
je 0x40597e
mov esi, dword [esp + 0x20]
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x68]
add eax, 0x3c
mov dword [esp], eax
call fcn.0044a354
cmp dword [eax + 4], 0
jg 0x40597e
cmp dword [eax + 4], 0
js 0x405a9b
cmp dword [eax], 0
jbe 0x405a9b
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x68]
add eax, 0x54
mov dword [esp], eax
call fcn.0044a084
cmp dword [eax], 0
je 0x4059a7
mov eax, dword [edi]
cmp byte [eax], 0x78
jne 0x405a9b
mov eax, dword [esp + 0x20]
add eax, 0xb0
mov dword [esp + 8], eax
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x68]
mov dword [esp], eax
call fcn.00402d40
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0xa8]
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov esi, dword [esp + 0x20]
mov eax, dword [esi + 0xa0]
mov dword [esp + 4], eax
mov eax, dword [esi + 0xa4]
mov dword [esp], eax
call fcn.0040ee32
mov ebx, dword [esi + 0xa0]
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x68]
add eax, 0x54
mov dword [esp], eax
call fcn.0044a084
cmp dword [eax], 0
setne al
movzx ecx, al
mov eax, dword [esi + 4]
mov esi, dword [eax]
add esi, 0x20
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x400b0]
mov edx, dword [edi + 0x400b4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], ebx
mov eax, str.Skipping
cmp dword [edi + 0x70], 0
je 0x405a62
mov eax, dword [edi]
mov edx, str.Testing
cmp byte [eax], 0x74
je 0x405a60
mov edx, str.Extracting
mov eax, edx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 4]
mov dword [esp], eax
call dword [esi]
test al, al
jne 0x405a9b
mov dword [esp + 8], 0x44eaac
mov dword [esp + 4], 0xfffffff6
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
call fcn.00409f16
movzx eax, al
jmp 0x405aae
mov esi, dword [esp + 0x20]
mov eax, dword [esi]
cmp dword [eax + 0x40068], 0
setne al
movzx eax, al
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
add esp, 0x3c
ret