Function at 0x4069b0
Capabilities:
Create directory
Link many functions at runtime
Query environment variable
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x18c
mov eax, dword [esp + 0x1a4]
test eax, eax
je 0x407030
movsx eax, byte [eax]
lea edi, [esp + 0x30]
mov ecx, 0x3e
mov dword [esp + 0x24], 0x6b6e755b
mov dword [esp + 0x28], 0x6e776f6e
mov dword [esp + 0x2c], 0x5d
mov dword [esp + 0x14], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x14], 7
setg dl
test edi, edi
sete al
xor esi, esi
or dl, al
jne 0x40705b
mov eax, dword [0x417020]
test eax, eax
je 0x406bdd
mov edi, dword [eax + 8]
test edi, edi
je 0x406bdd
lea ebp, [esp + 0x148]
jmp 0x406a3b
mov edi, dword [edi]
test edi, edi
je 0x406bdd
mov eax, dword [edi + 4]
test dl, dl
mov ebx, dword [eax]
je 0x406a31
mov byte [esp + 0x10], dl
mov dword [esp + 0x1c], ebp
mov dword [esp + 0xc], ebp
mov dword [esp + 8], 0xb
mov dword [esp + 4], str.perl522.dll
mov dword [esp], ebx
call fcn.00409260
movzx edx, byte [esp + 0x10]
test eax, eax
je 0x406a31
mov esi, dword [0x417024]
test esi, esi
jne 0x407150
mov dword [esp + 0x128], 0
xor eax, eax
mov dword [esp + eax + 0x12c], 0
add eax, 4
cmp eax, 0x1c
jb 0x406a8c
mov eax, dword [esp + 0x1a0]
mov edx, dword [eax + 0x254]
call fcn.004048e0
test eax, eax
mov ebp, eax
je 0x40736d
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x1a0]
mov ecx, dword [edx + 0x254]
mov esi, eax
mov dword [esp + 0x18], eax
lea edi, [eax + 0xb]
test ecx, ecx
jne 0x406b37
lea edi, [esp + 0x164]
mov dword [esp + 0xc], edi
mov dword [esp + 8], 8
mov dword [esp + 4], str.perl.md5
mov dword [esp], ebx
call fcn.00409260
test eax, eax
je 0x407193
mov dword [esp], edi
call fcn.00409080
cmp eax, 0x20
jne 0x407193
lea eax, [esp + 0x128]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.004090b0
test eax, eax
je 0x407193
lea edi, [esi + 0x2c]
lea eax, [edi + 1]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
test eax, eax
mov ebx, eax
je 0x407356
mov dword [esp + 8], esi
mov dword [esp + 4], ebp
mov dword [esp], eax
call sub.msvcrt.dll_strncpy
mov eax, dword [esp + 0x1a0]
mov edx, dword [eax + 0x254]
test edx, edx
je 0x4071c0
mov eax, dword [esp + 0x18]
mov edx, dword [str.perl522.dll]
add eax, ebx
mov dword [eax], edx
mov edx, dword [0x413674]
mov dword [eax + 4], edx
mov edx, dword [0x413678]
mov dword [eax + 8], edx
mov dword [esp + 4], 0x4132dd
mov dword [esp], ebx
call sub.msvcrt.dll_fopen
test eax, eax
mov esi, eax
je 0x407200
mov dword [esp], esi
call sub.msvcrt.dll_fclose
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
sub esp, 4
test eax, eax
mov esi, eax
je 0x406bd5
lea edi, [esp + 0x24]
mov dword [esp + 4], ebx
mov dword [esp], edi
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_free
test esi, esi
je 0x4070b0
mov ebp, esi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
xor ebx, ebx
mov dword [esp + 4], str.PL_curinterp
mov dword [esp], ebp
call esi
sub esp, 8
mov edi, eax
mov dword [0x417554], eax
mov dword [esp + 4], str.PL_use_safe_putenv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
mov dword [0x417534], eax
je 0x406c26
xor ebx, ebx
test edi, edi
setne bl
mov dword [esp + 4], str.Perl_call_list
xor edi, edi
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417598], eax
mov dword [esp + 4], str.Perl_call_sv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175a0], eax
mov dword [esp + 4], str.Perl_croak_nocontext
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175c4], eax
mov dword [esp + 4], str.Perl_eval_pv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41755c], eax
mov dword [esp + 4], str.Perl_free_tmps
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417530], eax
mov dword [esp + 4], str.Perl_get_context
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417584], eax
mov dword [esp + 4], str.Perl_get_hv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417550], eax
mov dword [esp + 4], str.Perl_get_sv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417560], eax
mov dword [esp + 4], str.Perl_gv_fetchpv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175b0], eax
mov dword [esp + 4], str.Perl_hv_common_key_len
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417558], eax
mov dword [esp + 4], str.Perl_markstack_grow
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175c0], eax
mov dword [esp + 4], str.Perl_newSV
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417588], eax
mov dword [esp + 4], str.Perl_newSViv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417590], eax
mov dword [esp + 4], str.Perl_newSVpv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417548], eax
mov dword [esp + 4], str.Perl_newSVpvn
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175b8], eax
mov dword [esp + 4], str.Perl_newXS
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417578], eax
mov dword [esp + 4], str.Perl_pop_scope
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417538], eax
mov dword [esp + 4], str.Perl_push_scope
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175a8], eax
mov dword [esp + 4], str.Perl_save_int
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41754c], eax
mov dword [esp + 4], str.Perl_set_context
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175b4], eax
mov dword [esp + 4], str.Perl_stack_grow
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41752c], eax
mov dword [esp + 4], str.Perl_sv_2bool_flags
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417564], eax
mov dword [esp + 4], str.Perl_sv_2iv_flags
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417544], eax
mov dword [esp + 4], str.Perl_sv_2mortal
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41756c], eax
mov dword [esp + 4], str.Perl_sv_2pv_flags
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417580], eax
mov dword [esp + 4], str.Perl_sv_setiv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175a4], eax
mov dword [esp + 4], str.Perl_sv_setpv
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417594], eax
mov dword [esp + 4], str.Perl_sv_setpvn
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175ac], eax
mov dword [esp + 4], str.Perl_sys_init3
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41757c], eax
mov dword [esp + 4], str.boot_DynaLoader
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417570], eax
mov dword [esp + 4], str.perl_alloc
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41753c], eax
mov dword [esp + 4], str.perl_construct
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417574], eax
mov dword [esp + 4], str.perl_destruct
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417568], eax
mov dword [esp + 4], str.perl_free
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x41759c], eax
mov dword [esp + 4], str.perl_parse
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175bc], eax
mov dword [esp + 4], str.perl_run
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x417540], eax
mov dword [esp + 4], str.Perl_save_strlen
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
cmove ebx, edi
mov dword [0x4175c8], eax
mov dword [esp + 4], str.Perl_win32_init
mov dword [esp], ebp
call esi
sub esp, 8
test eax, eax
mov dword [0x41758c], eax
je 0x407010
test ebx, ebx
jne 0x4071b0
nop
lea eax, [esp + 0x24]
xor ebp, ebp
mov dword [esp + 4], eax
mov dword [esp], str.Panic:_Some_symbols_not_resolvable_from__s_n
call fcn.00402e50
jmp 0x4071b0
lea edi, [esp + 0x30]
mov ecx, 0x3e
rep stosd dword es:[edi], eax
mov dword [esp + 0x24], 0x6b6e755b
mov dword [esp + 0x28], 0x6e776f6e
mov dword [esp + 0x2c], 0x5d
mov dword [esp + 0x14], 0
mov dword [esp], str.perl522.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
sub esp, 4
test eax, eax
je 0x407105
mov dword [esp], str.perl522.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
sub esp, 4
test eax, eax
mov esi, eax
je 0x407105
lea edi, [esp + 0x24]
mov dword [esp + 8], str.perl522.dll
mov dword [esp + 4], str.Already_loaded__s
mov dword [esp], edi
call sub.msvcrt.dll_sprintf
mov edx, 1
jmp 0x406a10
mov edx, dword [esp + 0x1a0]
cmp byte [edx + 0x46a], 0
jne 0x407321
mov dword [esp], str.PERLAPP_LIBPERL
call sub.msvcrt.dll_getenv
test eax, eax
mov ebx, eax
je 0x407280
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
sub esp, 4
test eax, eax
mov esi, eax
je 0x407280
lea eax, [esp + 0x24]
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
jmp 0x406be5
mov edx, dword [esp + 0x1a0]
xor esi, esi
mov eax, dword [edx]
mov ebx, dword [eax]
lea eax, [esp + 0x148]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0xb
mov dword [esp + 4], str.perl522.dll
mov dword [esp], ebx
call fcn.00409260
mov edx, 1
test eax, eax
je 0x406a10
jmp 0x406a71
mov dword [esp], str.perl522.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
sub esp, 4
test eax, eax
mov esi, eax
je 0x406a7f
lea edi, [esp + 0x24]
mov dword [esp + 8], str.perl522.dll
mov dword [esp + 4], str.dyndll_loaded__s
mov dword [esp], edi
call sub.msvcrt.dll_sprintf
test esi, esi
jne 0x406be5
jmp 0x4070b0
mov dword [esp + 4], str.perl522.dll
xor ebp, ebp
mov dword [esp], str.Panic:_Cant_extract_MD5_checksum_for__s_n
call fcn.00402e50
lea esi, [esi]
add esp, 0x18c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [esp + 0x128]
lea edi, [ebx + esi + 0x20]
mov dword [esp + 4], eax
lea eax, [ebx + esi]
add esi, 0x21
mov dword [esp + 8], 0x20
mov dword [esp], eax
call sub.msvcrt.dll_strncpy
mov byte [edi], 0
mov dword [esp], ebx
call sub.msvcrt.dll__mkdir
mov byte [edi], 0x5c
mov dword [esp + 0x18], esi
jmp 0x406b71
mov edx, dword [esp + 0x1c]
mov dword [esp], edx
call fcn.00409080
mov ebp, eax
lea eax, [eax + 1]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
test eax, eax
mov edi, eax
je 0x40737e
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
call fcn.004090b0
test eax, eax
je 0x4073ac
mov byte [edi + ebp], 0
mov dword [esp + 4], 0x413418
mov dword [esp], ebx
call sub.msvcrt.dll_fopen
test eax, eax
mov esi, eax
je 0x407395
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebp
mov dword [esp + 4], 1
mov dword [esp], edi
call sub.msvcrt.dll_fwrite
mov dword [esp], edi
call sub.msvcrt.dll_free
jmp 0x406bab
mov dword [esp], str.PATH
lea edi, [esp + 0x24]
call sub.msvcrt.dll_getenv
test eax, eax
mov esi, eax
je 0x4072ee
mov ebp, edi
mov edi, dword [esp + 0x14]
jmp 0x4072c0
mov ecx, ebx
mov edx, esi
mov eax, ebp
mov dword [esp], edi
call fcn.00403030
cmp byte [esi + ebx], 0
je 0x4072e4
lea esi, [esi + ebx + 1]
test esi, esi
je 0x4072e4
test eax, eax
jne 0x4072e4
mov dword [esp + 4], 0x3b
mov dword [esp], esi
call sub.msvcrt.dll_strchr
mov ebx, eax
sub ebx, esi
test eax, eax
jne 0x4072a0
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov ebx, eax
jmp 0x4072a0
test eax, eax
mov ebp, eax
jne 0x406be7
mov dword [esp], str.PATH
xor ebp, ebp
call sub.msvcrt.dll_getenv
mov dword [esp + 8], str.Make_sure_the_ActivePerl_bin_directory_is_in_your_PATH_n
mov dword [esp + 4], str.perl522.dll
mov dword [esp], str.Error:_Cant_locate__s_n_sPATH_s_n
mov dword [esp + 0xc], eax
call fcn.00402e50
jmp 0x4071b0
mov ebx, edx
add ebx, 0x46a
mov dword [esp], ebx
lea edi, [esp + 0x24]
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x14]
mov dword [esp], edx
mov edx, ebx
mov ecx, eax
mov eax, edi
call fcn.00403030
test eax, eax
je 0x4070c4
mov esi, eax
jmp 0x406be5
mov dword [esp + 4], edi
xor ebp, ebp
mov dword [esp], str.Panic:_Cant_malloc_name___d__n
call fcn.00402e50
jmp 0x4071b0
mov dword [esp], str.Panic:_Cant_find_temp_dir_for_perlapp
call fcn.00402e50
jmp 0x4071b0
mov dword [esp + 4], ebx
xor ebp, ebp
mov dword [esp], str.Panic:_Cant_allocate_memory_for__s
call fcn.00402e50
jmp 0x4071b0
mov dword [esp + 4], ebx
xor ebp, ebp
mov dword [esp], str.Panic:_Cant_create__s_n
call fcn.00402e50
jmp 0x4071b0
mov dword [esp + 4], ebx
xor ebp, ebp
mov dword [esp], str.Panic:_Cant_extract__s
call fcn.00402e50
jmp 0x4071b0