Function at 0x409b50
Capabilities:
Check if file exists
Create directory
Delete directory
Get common file path
Get file attributes
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x447a4c
mov eax, dword fs:[0]
push eax
mov eax, 0x4c48
call fcn.004315f0
mov eax, dword [0x45fce8]
xor eax, esp
mov dword [esp + 0x4c44], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x45fce8]
xor eax, esp
push eax
lea eax, [esp + 0x4c5c]
mov dword fs:[0], eax
mov edi, dword [esp + 0x4c6c]
mov esi, dword [esp + 0x4c70]
mov ebp, ecx
lea ecx, [esp + 0x20]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], edi
call fcn.0041cefe
mov eax, dword [ebp + 0x3f960]
push edi
xor ebx, ebx
push eax
mov dword [esp + 0x4c6c], ebx
call dword [sym.imp.WININET.dll_FtpSetCurrentDirectoryA]
test eax, eax
jne 0x409be5
push 0x78
mov ecx, 0x46d410
call dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
push eax
mov ecx, ebp
call fcn.004089b0
jmp 0x40a76d
mov ecx, ebp
call fcn.00408ab0
test eax, eax
je 0x40a76d
mov ecx, ebp
call fcn.00409450
cmp dword [0x4610ec], ebx
mov dword [0x4610e8], eax
jne 0x409c1b
xor ecx, ecx
cmp eax, ebx
sete cl
mov eax, ecx
cmp eax, ebx
mov dword [esi], eax
je 0x40a715
mov ecx, ebp
call fcn.004093c0
mov ecx, ebp
mov dword [ebp + 0x88], eax
call fcn.00409330
mov ecx, ebp
mov dword [ebp + 0x8c], eax
call fcn.004092a0
push ebx
push str.patch.log
mov dword [ebp + 0x90], eax
call fcn.00432534
add esp, 8
test eax, eax
jne 0x409c60
mov dword [ebp + 0x43fd0], 1
jmp 0x409c66
mov dword [ebp + 0x43fd0], ebx
push 0x104
lea edx, [esp + 0x298]
push ebx
push edx
call fcn.00431410
push 0x104
lea eax, [esp + 0x3a8]
push ebx
push eax
call fcn.00431410
mov esi, dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
add esp, 0x18
push 0x79
mov ecx, 0x46d410
call esi
push eax
mov ecx, ebp
call fcn.004089b0
mov ecx, ebp
call fcn.00409220
mov ecx, ebp
call fcn.00409a60
push 0x44c214
push str.list.inf
call fcn.0042f845
add esp, 8
cmp eax, ebx
mov dword [0x461394], eax
mov ecx, 0x46d410
jne 0x409ce5
push 0x77
call esi
push eax
mov ecx, ebp
call fcn.004089b0
jmp 0x40a76d
push 0x7a
call dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
push eax
mov ecx, ebp
call fcn.004089b0
lea ecx, [esp + 0x7d0]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edi, [esp + 0x7d0]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x409d12
cmp dword [ebp + 0x90], 1
mov dx, word [0x44c72c]
mov word [edi], dx
jne 0x40a30d
call fcn.004062d0
cmp eax, 2
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
je 0x409e82
mov ebx, dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
jne 0x409da0
jmp 0x409d60
mov cl, byte [eax + 0x461330]
mov byte [esp + eax + 0x294], cl
add eax, 1
test cl, cl
jne 0x409d60
lea eax, [esp + 0x294]
push str.Mu.exe
push eax
call fcn.00443b90
add esp, 8
test eax, eax
jne 0x409e4b
mov dword [ebp + 0x3fafc], 1
jmp 0x409e4b
cmp eax, 0x3c
jne 0x409e4b
call fcn.004062d0
test eax, eax
jne 0x409e05
push 0x461330
lea ecx, [esp + 0x7d4]
push ecx
lea edx, [esp + 0x29c]
push str._s_s
push edx
call esi
add esp, 0x10
lea eax, [esp + 0x294]
push eax
call edi
cmp eax, 0xffffffff
je 0x409e4b
push 0x80
lea ecx, [esp + 0x298]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea edx, [esp + 0x294]
push edx
call fcn.004320c9
add esp, 4
jmp 0x409e4b
cmp eax, 1
jne 0x409e4b
call fcn.004062d0
push 0x461330
lea eax, [esp + 0x7d4]
push eax
lea ecx, [esp + 0x29c]
push str._s_s
push ecx
call esi
add esp, 0x10
lea edx, [esp + 0x294]
push edx
call edi
cmp eax, 0xffffffff
je 0x409e4b
lea eax, [esp + 0x294]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x40]
push ecx
call ebx
test eax, eax
je 0x409e74
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
call fcn.004062d0
cmp eax, 2
jne 0x409d53
push str.Tempup_list.zip
lea ecx, [esp + 0x194]
push 0x44c70c
push ecx
call esi
push str.up_list.zip
lea edx, [esp + 0x2a4]
push 0x44c70c
push edx
call esi
add esp, 0x18
lea eax, [esp + 0x294]
push eax
lea ecx, [esp + 0x194]
push ecx
mov ecx, ebp
call fcn.00409b00
cmp eax, 1
jne 0x40a2f5
push 0x92
mov ecx, 0x46d410
call dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
push eax
mov ecx, ebp
call fcn.004089b0
lea edx, [esp + 0x190]
push edx
lea ecx, [esp + 0x90]
call fcn.00405d00
lea ecx, [esp + 0x8c]
mov byte [esp + 0x4c64], 1
call fcn.00405470
xor eax, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
lea ecx, [ecx]
push 0
push 0
push 0
push 0
push 0
push 0
lea eax, [esp + 0x64]
push eax
lea ecx, [esp + 0xa8]
call fcn.00405650
mov edi, dword [esp + 0x6c]
add edi, 1
push edi
call fcn.00413b87
add esp, 4
push 0
push 0
push 0
push 0
push edi
mov esi, eax
push esi
push 0
lea ecx, [esp + 0xa8]
call fcn.00405650
xor eax, eax
cmp byte [esi], al
je 0x409f92
lea ecx, [ecx]
cmp byte [eax + esi], 0x2f
jne 0x409f7a
mov byte [eax + esi], 0x5c
add eax, 1
cmp byte [eax + esi], 0
jne 0x409f70
test eax, eax
jle 0x409f92
cmp byte [eax + esi - 1], 0x5c
je 0x40a227
call fcn.0041c933
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x40a270
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x7d0]
push ecx
lea edx, [esp + 0x18]
push edx
mov byte [esp + 0x4c6c], 2
call fcn.00404960
mov ebx, dword [esp + 0x1c]
add esp, 8
cmp byte [esi], 0
je 0x40a03f
lea ebp, [esp + 0xa01]
mov edi, esi
sub ebp, esi
mov al, byte [edi]
cmp al, 0x5c
mov byte [edi + ebp - 1], al
jne 0x40a037
lea eax, [esp + 0xa00]
push eax
push ebx
lea ecx, [esp + 0x5a8]
push str._s_s
push ecx
mov byte [edi + ebp], 0
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea edx, [esp + 0x5a0]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x40a037
push 0
lea eax, [esp + 0x5a4]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
add edi, 1
cmp byte [edi], 0
jne 0x409fe7
push esi
push str.Mu.exe
call fcn.00443b90
add esp, 8
test eax, eax
jne 0x40a071
mov ecx, dword [str.Mu._xe]
mov dword [esi], ecx
mov dx, word [0x44c6fc]
mov word [esi + 4], dx
mov al, byte [0x44c6fe]
mov byte [esi + 6], al
jmp 0x40a0fa
push esi
push 0x44c308
call fcn.00443b90
add esp, 8
test eax, eax
jne 0x40a0a0
mov ecx, dword [str.mumsg._ll]
mov dword [esi], ecx
mov edx, dword [0x44c6f0]
mov dword [esi + 4], edx
mov ax, word [0x44c6f4]
mov word [esi + 8], ax
jmp 0x40a0fa
push esi
push 0x44c2ec
call fcn.00443b90
add esp, 8
test eax, eax
jne 0x40a0cf
mov ecx, dword [str.wz_zp._ll]
mov dword [esi], ecx
mov edx, dword [0x44c6e4]
mov dword [esi + 4], edx
mov ax, word [0x44c6e8]
mov word [esi + 8], ax
jmp 0x40a0fa
push esi
push str.message.wtf
call fcn.00443b90
add esp, 8
test eax, eax
jne 0x40a0fa
mov ecx, dword [str.message._tf]
mov dword [esi], ecx
mov edx, dword [0x44c6d8]
mov dword [esi + 4], edx
mov eax, dword [0x44c6dc]
mov dword [esi + 8], eax
push esi
push ebx
lea ecx, [esp + 0x5a8]
push str._s_s
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea edx, [esp + 0x5a0]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x40a138
push 0x80
lea eax, [esp + 0x5a4]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push esi
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.004088d0
add esp, 0xc
mov eax, dword [eax]
push 0
push 0x1001
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x4c70], 3
call fcn.0041d2bd
test eax, eax
mov eax, dword [esp + 0x1c]
sete bl
add eax, 0xfffffff0
mov byte [esp + 0x4c64], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a193
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
push esi
jne 0x40a27a
call fcn.00413b82
add esp, 4
lea ecx, [esp + 0x8c]
call fcn.00405510
push 0x4000
lea ecx, [esp + 0xc5c]
push ecx
lea ecx, [esp + 0x94]
call fcn.004049c0
mov esi, eax
test esi, esi
jle 0x40a1e1
push esi
lea edx, [esp + 0xc5c]
push edx
lea ecx, [esp + 0x28]
call fcn.0041cc4c
cmp esi, 0x4000
je 0x40a1b0
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x24]
push ecx
lea ecx, [esp + 0x94]
call fcn.00405770
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0x4c64], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40a227
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x8c]
call fcn.004054b0
test al, al
jne 0x409f20
lea ecx, [esp + 0x8c]
call fcn.00405740
lea edx, [esp + 0x190]
push edx
call fcn.004320c9
add esp, 4
lea ecx, [esp + 0x8c]
mov byte [esp + 0x4c64], 0
call fcn.004056a0
jmp 0x40a706
push 0x80004005
call fcn.004014e0
mov ecx, dword [esp + 0x18]
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
push ecx
lea edx, [esp + 0x8dc]
push str._s_s
push edx
call esi
lea eax, [esp + 0x8e4]
push eax
lea ecx, [esp + 0xb40]
push 0x44c6b8
push ecx
call esi
add esp, 0x1c
push 0
push 0x10
lea edx, [esp + 0x8dc]
push edx
call fcn.0041fd6a
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x20]
push 0
push 0
push 0x10
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0x14]
call fcn.00401e30
lea ecx, [esp + 0x8c]
mov byte [esp + 0x4c64], 0
call fcn.004056a0
jmp 0x40a76d
mov eax, dword [0x461394]
push eax
call fcn.0042f705
add esp, 4
push 0x8a
jmp 0x409bcd
call fcn.004062d0
cmp eax, 2
je 0x40a706
jmp 0x40a320
cmp eax, ebx
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
jne 0x40a5d3
xor eax, eax
mov cl, byte [eax + 0x461330]
mov byte [esp + eax + 0x294], cl
add eax, 1
test cl, cl
jne 0x40a330
xor eax, eax
jmp 0x40a350
mov cl, byte [esp + eax + 0x398]
mov byte [esp + eax + 0x49c], cl
add eax, 1
test cl, cl
jne 0x40a350
lea eax, [esp + 0x49c]
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40a370
sub eax, edx
je 0x40a39b
lea edi, [esp + 0x49c]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x40a387
mov cx, word [0x44c72c]
mov word [edi], cx
lea edx, [esp + 0x49c]
push edx
push str.Temp_
lea eax, [esp + 0x198]
push str._s_s
push eax
call esi
lea eax, [esp + 0x2a4]
add esp, 0x10
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x40a3c3
lea edi, [esp + 0x190]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
lea ebx, [ebx]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x40a3e0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp dword [ebp + 0x43fd0], ebx
rep movsb byte es:[edi], byte [esi]
je 0x40a515
push 0x103
lea ecx, [esp + 0x91]
push ebx
push ecx
mov byte [esp + 0x98], bl
call fcn.00431410
add esp, 0xc
cmp dword [ebp + 0x88], ebx
lea eax, [esp + 0x195]
lea edx, [eax + 1]
jne 0x40a460
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40a433
sub eax, edx
add eax, 1
push eax
lea edx, [esp + 0x199]
push edx
lea eax, [esp + 0x94]
push eax
call fcn.00430de0
add esp, 0xc
jmp 0x40a4a3
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40a460
sub eax, edx
add eax, 0xfffffffc
push eax
lea ecx, [esp + 0x199]
push ecx
lea edx, [esp + 0x94]
push edx
call fcn.00430de0
lea eax, [esp + 0x98]
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40a491
sub eax, edx
mov byte [esp + eax + 0x8c], bl
mov ecx, ebp
call fcn.00407940
test eax, eax
jne 0x40a4c7
lea eax, [esp + 0x8c]
push eax
mov ecx, ebp
call fcn.004073d0
test eax, eax
jne 0x40a6f8
jmp 0x40a515
push str.patch.log
call fcn.004320c9
mov eax, dword [ebp + 0x43fcc]
mov ecx, eax
and ecx, 0xff
push ecx
movzx edx, ah
mov dword [esp + 0x20], eax
movzx eax, byte [esp + 0x22]
push edx
push eax
lea ecx, [esp + 0x5c]
push str._d._d._d
push ecx
mov dword [ebp + 0x43fd0], ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x18
lea edx, [esp + 0x4c]
push edx
push 0x56
mov ecx, ebp
call fcn.004074e0
lea eax, [esp + 0x294]
push eax
lea ecx, [esp + 0x194]
push ecx
mov ecx, ebp
call fcn.00409b00
cmp eax, 1
jne 0x40a2f5
cmp dword [ebp + 0x88], ebx
je 0x40a5bd
push ebx
push ebx
lea edx, [esp + 0x94]
push edx
lea eax, [esp + 0x19c]
push ebx
push eax
call fcn.0043207f
add esp, 0x14
lea ecx, [esp + 0x8c]
push ecx
lea edx, [esp + 0x194]
push edx
mov ecx, ebp
call fcn.00407100
test eax, eax
je 0x40a730
lea eax, [esp + 0x190]
push eax
call fcn.004320c9
lea eax, [esp + 0x194]
add esp, 4
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40a595
lea ecx, [esp + 0x195]
push ecx
sub eax, edx
push 0x46
mov ecx, ebp
mov byte [esp + eax + 0x194], bl
call fcn.004074e0
jmp 0x40a6ce
lea edx, [esp + 0x195]
push edx
push 0x46
mov ecx, ebp
call fcn.004074e0
jmp 0x40a6ce
cmp eax, 1
jne 0x40a6ce
push 0x104
lea eax, [esp + 0x39c]
push ebx
push eax
call fcn.00431410
add esp, 0xc
call fcn.004062d0
xor eax, eax
lea esp, [esp]
mov cl, byte [eax + 0x461330]
mov byte [esp + eax + 0x398], cl
add eax, 1
test cl, cl
jne 0x40a600
lea ecx, [esp + 0x398]
push ecx
call fcn.00432481
lea edx, [esp + 0x39c]
push edx
lea eax, [esp + 0x4a4]
push str.Temp_s
push eax
call esi
lea ecx, [esp + 0x4ac]
push ecx
call fcn.00432481
add esp, 0x14
cmp dword [ebp + 0x8c], 1
jne 0x40a6ce
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x398]
push edx
push eax
lea ecx, [esp + 0x6d4]
push str._s_s_
push ecx
call esi
lea eax, [esp + 0x6dc]
add esp, 0x10
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40a680
sub eax, edx
xor ecx, ecx
cmp eax, ebx
jle 0x40a6aa
cmp byte [esp + ecx + 0x6cc], 0x5c
jne 0x40a6a3
mov byte [esp + ecx + 0x6cc], 0x2f
add ecx, 1
cmp ecx, eax
jl 0x40a691
mov eax, dword [ebp + 0x3f960]
lea edx, [esp + 0x6cc]
push edx
push eax
call dword [sym.imp.WININET.dll_FtpSetCurrentDirectoryA]
test eax, eax
je 0x40a749
mov ecx, ebp
call fcn.00409a60
push 1
push ebx
push ebx
push ebx
lea ecx, [esp + 0x40]
push ecx
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x40a6f8
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
call fcn.004062d0
cmp eax, 2
jne 0x40a320
mov ecx, dword [0x461394]
push ecx
call fcn.0042f705
add esp, 4
lea ecx, [esp + 0x20]
mov dword [esp + 0x4c64], 0xffffffff
call fcn.0041cfd2
mov eax, 1
jmp 0x40a783
mov edx, dword [0x461394]
push edx
call fcn.0042f705
add esp, 4
push 0x8a
jmp 0x409bcd
push 0x78
mov ecx, 0x46d410
call dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
push eax
mov ecx, ebp
call fcn.004089b0
mov ecx, dword [0x461394]
push ecx
call fcn.0042f705
add esp, 4
lea ecx, [esp + 0x20]
mov dword [esp + 0x4c64], 0xffffffff
call fcn.0041cfd2
xor eax, eax
mov ecx, dword [esp + 0x4c5c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x4c44]
xor ecx, esp
call fcn.0042fc1f
add esp, 0x4c54
ret 8