Function at 0x404600
Capabilities:
Create directory
Get memory capacity

Disassembly:
push 0xffffffffffffffff
push 0x405a50
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x38
push ebx
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0xc]
call fcn.00403d40
push ecx
xor ebx, ebx
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.SOFTWAREVIEWGOODP2PNet
mov dword [esp + 0x54], ebx
call sub.MFC42.DLL_CString::CString_1
push 0x20019
lea ecx, [esp + 0x14]
call fcn.00403d80
mov edi, eax
cmp edi, ebx
je 0x40481f
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.EnableDownloadLimit
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x364], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.EnableUploadLimit
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x368], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MaxDownloadRate
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x36c], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MaxUploadRate
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x370], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MaxUploadRateSave
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x378], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MaxDownloadRateSave
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x37c], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MaxActiveTorrents
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x374], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MaxUploads
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x380], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.Port
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
mov dword [esi + 0x384], eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.DiskCacheDir
call sub.MFC42.DLL_CString::CString_1
lea eax, [esp + 0x14]
push edi
push eax
lea ecx, [esp + 0x18]
call fcn.00403eb0
push eax
lea ecx, [esi + 0x38c]
mov byte [esp + 0x50], 1
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x10]
mov byte [esp + 0x4c], bl
call fcn.00404fd0
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.TotalDiskCacheSize
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x390], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.DiskCacheSize
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
push ecx
mov dword [esi + 0x394], eax
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.MemoryCacheSize
call sub.MFC42.DLL_CString::CString_1
push edi
lea ecx, [esp + 0x14]
call fcn.00403fb0
mov dword [esi + 0x398], eax
push edi
lea ecx, [esp + 0x10]
call fcn.00403ea0
mov ecx, dword [esi + 0x374]
mov eax, 1
cmp ecx, eax
jae 0x404873
mov ecx, 0xc800
mov dword [esi + 0x374], 2
mov dword [esi + 0x378], ecx
mov dword [esi + 0x37c], 0x9c3c00
mov dword [esi + 0x36c], 0x9c3c00
mov dword [esi + 0x370], ecx
mov dword [esi + 0x364], ebx
mov dword [esi + 0x368], eax
cmp dword [esi + 0x380], ebx
jne 0x404885
mov dword [esi + 0x380], 0x32
cmp dword [esi + 0x384], ebx
jne 0x404897
mov dword [esi + 0x384], 0x1ae1
mov ecx, dword [esi + 0x38c]
lea edi, [esi + 0x38c]
cmp dword [ecx - 8], ebx
jne 0x404908
lea edx, [esp + 0x1c]
lea eax, [esp + 0x18]
push edx
push eax
mov ecx, esi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call fcn.00404d40
push str.WebPlayer_P2P
lea ecx, [esp + 0x14]
push eax
push ecx
mov byte [esp + 0x58], 2
call sub.MFC42.DLL_operator
push eax
mov ecx, edi
mov byte [esp + 0x50], 3
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x10]
mov byte [esp + 0x4c], 2
call fcn.00404fd0
lea ecx, [esp + 0x18]
mov byte [esp + 0x4c], bl
call fcn.00404fd0
mov edi, dword [edi]
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
cmp dword [esi + 0x398], ebx
jne 0x404a1d
lea edx, [esp + 0x10]
lea eax, [esp + 0x18]
push edx
push eax
mov ecx, esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
call fcn.00404d40
lea ecx, [esp + 0x18]
call fcn.00404fd0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push ebx
push 0x100000
push ecx
push edx
call fcn.00405280
push ebx
push 3
push edx
push eax
call fcn.00405240
push ebx
push 0xa
push edx
push eax
call fcn.00405280
cmp eax, 0x200
jae 0x404977
shl eax, 4
mov dword [esi + 0x390], eax
mov dword [esi + 0x394], eax
jmp 0x4049b9
cmp eax, 0x400
jae 0x404993
shl eax, 4
mov dword [esi + 0x390], eax
mov dword [esi + 0x394], 0x2000
jmp 0x4049b9
cmp eax, 0x7800
jbe 0x4049a6
mov dword [esi + 0x390], 0x78000
jmp 0x4049af
shl eax, 4
mov dword [esi + 0x390], eax
mov dword [esi + 0x394], 0x4000
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
mov eax, dword [esp + 0x2c]
shr eax, 0x14
cmp eax, 0x1f4
jae 0x4049de
mov dword [esi + 0x398], 0x40
jmp 0x404a1d
cmp eax, 0x2bc
jae 0x4049f1
mov dword [esi + 0x398], 0x80
jmp 0x404a1d
cmp eax, 0x3e8
jae 0x404a04
mov dword [esi + 0x398], 0x100
jmp 0x404a1d
cmp eax, 0x5dc
sbb ecx, ecx
and ecx, 0xfffffe00
add ecx, 0x400
mov dword [esi + 0x398], ecx
cmp dword [esi + 0x364], ebx
jne 0x404a37
cmp dword [esi + 0x37c], ebx
jne 0x404a37
mov dword [esi + 0x37c], 0x9c3c00
cmp dword [esi + 0x368], ebx
jne 0x404a51
cmp dword [esi + 0x378], ebx
jne 0x404a51
mov dword [esi + 0x378], 0xc800
mov ecx, esi
call fcn.00404a80
lea ecx, [esp + 0xc]
mov dword [esp + 0x4c], 0xffffffff
call fcn.00403d70
mov ecx, dword [esp + 0x44]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
add esp, 0x44
ret