Function at 0x401917
Capabilities:
Create directory
Read file on windows
Write file on windows

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push ecx
sub esp, 0x94
call sym.___main
lea eax, [ebp - 0x30]
mov dword [esp + 4], eax
mov dword [esp], str.data.bin
call dbg.open_file
mov dword [ebp - 0x18], eax
mov dword [esp], 0x10000
call sym._malloc
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x18]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 1
mov dword [esp + 4], 0x8800
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sym._fread
mov dword [esp], 0
call dbg.init_key
mov dword [esp + 4], 0x8800
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call dbg.mhp3_decrypt
mov dword [ebp - 8], 0
jmp 0x4019ea
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 8]
shl eax, 2
lea eax, [edx + eax]
mov eax, dword [eax]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 8]
add eax, 1
shl eax, 2
lea eax, [edx + eax]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x24]
mov dword [edx*8 + 0x405050], eax
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
sub eax, edx
shl eax, 0xb
mov dword [ecx*8 + 0x405054], eax
add dword [ebp - 8], 1
cmp dword [ebp - 8], 0x1742
jle 0x40199f
mov dword [ebp - 8], 0
jmp 0x401a38
mov eax, dword [ebp - 8]
add eax, 0xba2
shl eax, 3
add eax, dword [ebp - 0x2c]
mov eax, dword [eax]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 8]
add eax, 0xba2
add eax, eax
add eax, 1
shl eax, 2
add eax, dword [ebp - 0x2c]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
mov dword [edx*8 + 0x405054], eax
add dword [ebp - 8], 1
cmp dword [ebp - 8], 0x508
jle 0x4019fc
mov dword [esp + 4], 0x4040b0
mov dword [esp], str.file_list.txt
call sym._fopen
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x401a6a
mov dword [ebp - 0x78], 0xfffffffe
jmp 0x401c78
mov dword [esp], str.data_bin
call sym._mkdir
mov dword [ebp - 8], 0
jmp 0x401c4e
cmp dword [ebp - 8], 0x50
jle 0x401a92
cmp dword [ebp - 8], 0x5c
jle 0x401c4a
cmp dword [ebp - 8], 0x1643
jg 0x401c4a
mov eax, dword [ebp - 8]
mov eax, dword [eax*8 + 0x405050]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax*8 + 0x405054]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
add eax, 0x10000
mov dword [esp], eax
call sym._malloc
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x24]
shl eax, 0xb
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x18]
mov dword [esp], eax
call sym._fseek
mov eax, dword [ebp - 0x18]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call sym._fread
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dbg.get_extname
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x401b56
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call dbg.init_key
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dbg.mhp3_decrypt
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dbg.get_extname
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x401b56
mov dword [ebp - 0xc], 0x4040c9
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dbg.skip_check
test eax, eax
jne 0x401c12
mov eax, dword [ebp - 0xc]
mov dword [esp + 8], eax
mov dword [esp + 4], str.data_bin__s
lea eax, [ebp - 0x70]
mov dword [esp], eax
call sym._sprintf
lea eax, [ebp - 0x70]
mov dword [esp], eax
call sym._mkdir
mov eax, dword [ebp - 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xc]
mov dword [esp + 8], eax
mov dword [esp + 4], str.data_bin__s__04d._s
lea eax, [ebp - 0x70]
mov dword [esp], eax
call sym._sprintf
mov dword [esp + 4], 0x4040ed
lea eax, [ebp - 0x70]
mov dword [esp], eax
call sym._fopen
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call sym._fwrite
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call sym._fclose
lea eax, [ebp - 0x70]
mov dword [esp + 4], eax
mov dword [esp], str.Save_file__s_._n
call sym._printf
mov eax, dword [ebp - 0x24]
mov edx, eax
shl edx, 0xb
mov eax, dword [ebp - 0x20]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
lea eax, [ebp - 0x70]
mov dword [esp + 8], eax
mov dword [esp + 4], str.__32s___o:_08x___l:_08x_n
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._fprintf
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call sym._free
add dword [ebp - 8], 1
cmp dword [ebp - 8], 0x1742
jle 0x401a82
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._fclose
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sym._free
mov dword [ebp - 0x78], 0
mov eax, dword [ebp - 0x78]
add esp, 0x94
pop ecx
pop ebp
lea esp, [ecx - 4]
ret