Function at 0x403b70
Capabilities:
Create directory
Read file on windows

Disassembly:
push ebp
mov eax, 0x10
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x5c
and esp, 0xfffffff0
call fcn.004044e0
call fcn.00404060
call fcn.004018d0
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00402cc0
test eax, eax
mov edi, eax
je 0x403c71
mov dword [esp], eax
call sub.msvcrt.dll__mkdir
mov ebx, eax
inc ebx
je 0x403d57
mov eax, str.PATH
call fcn.004013b0
mov dword [esp], eax
call sub.msvcrt.dll__strdup
mov dword [esp + 4], eax
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
mov dword [esp], eax
call fcn.004015d0
mov dword [esp], eax
mov esi, eax
call fcn.00401790
mov dword [esp], edi
lea edx, [ebp - 0x40]
mov dword [esp + 4], edx
mov edx, eax
mov eax, section..data
call fcn.004038e0
test eax, eax
mov ebx, eax
je 0x403e6d
dec ebx
je 0x403d87
mov eax, dword [str.perl514.dll]
mov ebx, 0x40500c
test eax, eax
je 0x403c7d
lea esi, [ebp - 0x44]
jmp 0x403c29
add ebx, 0xc
mov eax, dword [ebx]
test eax, eax
je 0x403c7d
mov dword [esp + 4], esi
mov eax, ebx
mov dword [esp], edi
mov edx, dword [ebx]
call fcn.004038e0
test eax, eax
jne 0x403c20
call sub.msvcrt.dll__errno
mov eax, dword [eax]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x44]
mov dword [esp + 0xc], eax
mov eax, dword [edx]
mov dword [esp + 8], eax
mov eax, str._s:_extraction_of__s_failed__errno_i__n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 0xff
call sub.msvcrt.dll_exit
mov eax, dword [ebp + 8]
mov ebx, 0x54e290
lea esi, [ebp - 0x38]
mov dword [esp + 4], ebx
xor ebx, ebx
mov dword [esp + 8], eax
mov dword [esp], esi
call sub.msvcrt.dll_sprintf
mov edx, esi
mov eax, str.PAR_ARGC
call fcn.004013c0
cmp ebx, dword [ebp + 8]
jge 0x403cda
mov dword [esp + 8], ebx
mov ecx, str.PAR_ARGV__i
mov dword [esp + 4], ecx
mov dword [esp], esi
call sub.msvcrt.dll_sprintf
mov eax, esi
call fcn.00401580
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + ebx*4]
mov eax, esi
inc ebx
call fcn.004013c0
cmp ebx, dword [ebp + 8]
jl 0x403cab
mov dword [esp], str.user32
call sub.KERNEL32.dll_LoadLibraryA
sub esp, 4
test eax, eax
je 0x403d11
mov dword [esp], eax
mov edx, str.AllowSetForegroundWindow
mov dword [esp + 4], edx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
test eax, eax
je 0x403d11
mov dword [esp], 0xffffffff
call eax
sub esp, 4
mov edx, 0x54e107
mov eax, str.PAR_SPAWNED
call fcn.004013c0
call sub.msvcrt.dll___p__environ
mov eax, dword [eax]
mov dword [esp], 0
mov edx, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll__spawnvpe
mov dword [esp], edi
mov ebx, eax
call fcn.00403870
mov dword [esp], ebx
call sub.msvcrt.dll_exit
call sub.msvcrt.dll__errno
cmp dword [eax], 0x11
je 0x403bb6
call sub.msvcrt.dll__errno
mov eax, dword [eax]
mov dword [esp + 0xc], edi
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [edx]
mov dword [esp + 8], eax
mov eax, str._s:_creation_of_private_cache_subdirectory__s_failed__errno__i__n
jmp 0x403c5d
mov dword [esp], esi
mov eax, 0x1ed
mov dword [esp + 8], eax
mov eax, 0x8000
mov dword [esp + 4], eax
call sub.msvcrt.dll__open
cmp eax, 0xffffffff
mov ebx, eax
je 0x403e46
mov dword [esp], ebx
mov esi, 2
call fcn.00403a20
mov dword [esp + 8], esi
lea esi, [ebp - 0x3a]
mov dword [esp], ebx
mov dword [esp + 4], esi
call sub.msvcrt.dll__read
mov dword [esp], ebx
call sub.msvcrt.dll__close
mov eax, dword [ebp - 0x40]
mov ecx, 0x1ed
mov edx, 0x8002
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.msvcrt.dll__open
cmp eax, 0xffffffff
mov ebx, eax
je 0x403e22
mov dword [esp], ebx
call fcn.00403a20
mov dword [esp + 4], esi
mov eax, 2
mov dword [esp + 8], eax
mov dword [esp], ebx
call sub.msvcrt.dll__write
mov dword [esp], ebx
call sub.msvcrt.dll__close
jmp 0x403c0a
mov eax, str.open_my_perl
mov dword [esp + 8], eax
mov eax, str.assertion_failed:__s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
jmp 0x403df8
mov eax, str.open_my_prog
mov dword [esp + 8], eax
mov eax, str.assertion_failed:__s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
jmp 0x403dac
call sub.msvcrt.dll__errno
mov eax, dword [eax]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x40]
mov dword [esp + 0xc], eax
mov eax, dword [edx]
mov dword [esp + 8], eax
mov eax, str._s:_extraction_of__s__custom_Perl_interpreter__failed__errno_i__n
jmp 0x403c5d