Function at 0x4155f0
Capabilities:
Check if file exists
Copy file
Create directory
Download url
Get common file path
Get file attributes
Receive data
Resolve function by parsing pe exports
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x45c4be
mov eax, dword fs:[0]
push eax
mov eax, 0x48f0
call fcn.00441780
mov eax, dword [0x4760f4]
xor eax, esp
mov dword [esp + 0x48ec], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4760f4]
xor eax, esp
push eax
lea eax, [esp + 0x4904]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x4914]
mov ebx, dword [esp + 0x4918]
mov esi, ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0x28], esi
call fcn.00430290
push str.list.inf
push ebx
push ebp
lea eax, [esp + 0x5dc]
push str.http:___s__s__s
push eax
mov dword [esp + 0x4920], 0
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
test esi, esi
je 0x415680
lea eax, [esi + 0x94]
jmp 0x415682
xor eax, eax
push eax
push 0
push str.list.inf
lea ecx, [esp + 0x5dc]
push ecx
push 0
call sub.urlmon.dll_URLDownloadToFileA
test eax, eax
je 0x4156b5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x74
mov ecx, 0x4838c0
call dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
jmp 0x416126
mov edi, dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
push 0x79
mov ecx, 0x4838c0
call edi
push eax
mov ecx, esi
call fcn.00414380
mov ecx, esi
call fcn.004145a0
push eax
lea ecx, [esi + 0x5808]
call fcn.004192b0
push 0x460d08
push str.list.inf
call fcn.00440279
add esp, 8
mov dword [0x47782c], eax
test eax, eax
jne 0x415701
push 0x77
jmp 0x41611f
mov ecx, esi
call fcn.00412ed0
push 0x7a
mov ecx, 0x4838c0
call edi
push eax
mov ecx, esi
call fcn.00414380
push str.up_list.zip
push ebx
push ebp
lea edx, [esp + 0x5dc]
push str.http:___s__s__s
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
test esi, esi
je 0x415742
lea eax, [esi + 0x94]
jmp 0x415744
xor eax, eax
push eax
xor ebx, ebx
push ebx
push str.Tempup_list.zip
lea eax, [esp + 0x5dc]
push eax
push ebx
call sub.urlmon.dll_URLDownloadToFileA
test eax, eax
jne 0x41611a
push 0x92
mov ecx, 0x4838c0
call edi
push eax
mov ecx, esi
call fcn.00414380
lea ecx, [esp + 0x6d0]
push ecx
push 0x104
mov dword [esp + 0x2c], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edi, [esp + 0x6d0]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x415796
mov dx, word [0x460d20]
push str.Tempup_list.zip
lea ecx, [esp + 0xa4]
mov word [edi], dx
call fcn.0041a4c0
lea ecx, [esp + 0xa0]
mov byte [esp + 0x490c], 1
call fcn.00419f50
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
jmp 0x4157e0
push 0
push 0
push 0
push 0
push 0
push 0
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0xbc]
call fcn.0041a130
mov esi, dword [esp + 0x80]
inc esi
push esi
call fcn.00421736
add esp, 4
mov edi, eax
call fcn.004294ec
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x415e9f
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x490c], 2
call fcn.004294ec
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x415e9f
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
push 0
push 0
push 0
push 0
push esi
push edi
push 0
lea ecx, [esp + 0xbc]
mov byte [esp + 0x4928], 3
mov byte [esp + 0x32], 1
mov byte [esp + 0x33], 0
call fcn.0041a130
xor ebx, ebx
call fcn.004294ec
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x415e9f
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x6d0]
push ecx
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x4914], 4
call fcn.0040fb50
add esp, 8
cmp byte [edi], bl
je 0x415943
lea ebp, [esp + 0x7d5]
mov esi, edi
sub ebp, edi
lea esp, [esp]
cmp byte [esi], 0x2f
jne 0x4158e8
mov byte [esi], 0x5c
mov al, byte [esi]
mov byte [esi + ebp - 1], al
cmp al, 0x5c
jne 0x41593c
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x7d4]
push eax
push ecx
lea edx, [esp + 0x380]
push str._s_s
push edx
mov byte [esi + ebp], 0
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [esp + 0x378]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x41593c
push 0
lea ecx, [esp + 0x37c]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
inc esi
inc ebx
cmp byte [esi], 0
jne 0x4158e0
cmp byte [ebx + edi - 1], 0x5c
jne 0x415955
mov ebp, dword [esp + 0x1c]
mov bl, 1
jmp 0x415aa0
push 0x103
lea edx, [esp + 0x251]
push 0
push edx
mov byte [esp + 0x258], 0
call fcn.0043f280
push 0x103
lea eax, [esp + 0x159]
push 0
push eax
mov byte [esp + 0x160], 0
call fcn.0043f280
push 0x103
lea ecx, [esp + 0x4c1]
push 0
push ecx
mov byte [esp + 0x4c8], 0
call fcn.0043f280
lea edx, [esp + 0x16c]
push edx
lea eax, [esp + 0x274]
push eax
lea ecx, [esp + 0x4d0]
push ecx
push 0
push edi
call fcn.00441d99
mov eax, edi
add esp, 0x38
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4159d1
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x24]
call fcn.00401700
push 0
push edi
call fcn.00441b8f
mov ebp, dword [esp + 0x24]
add esp, 8
test eax, eax
jne 0x415a7e
lea eax, [esp + 0x148]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x415a06
sub eax, edx
cmp eax, 1
jbe 0x415a1c
mov byte [esp + 0x149], 0x5f
lea edx, [esp + 0x148]
push edx
lea eax, [esp + 0x250]
push eax
lea ecx, [esp + 0x4ac]
push ecx
push str._s_s_s
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
mov byte [esp + 0x16], 1
mov esi, 0x477830
lea ecx, [ecx]
mov eax, dword [esi]
test eax, eax
je 0x415a71
cmp dword [ebp - 0xc], 0
jl 0x415a71
push eax
push ebp
call fcn.00441a9b
add esp, 8
test eax, eax
je 0x415a71
sub eax, ebp
cmp eax, 0xffffffff
jne 0x415a7e
add esi, 4
cmp esi, 0x477844
jl 0x415a50
jmp 0x415a83
mov byte [esp + 0x16], 0
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x415a88
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x28]
call fcn.00401700
mov bl, byte [esp + 0x17]
mov esi, dword [esp + 0x18]
push edi
push esi
lea edx, [esp + 0x380]
push str._s_s
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [esp + 0x378]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x415ae2
push 0x80
lea ecx, [esp + 0x37c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
cmp bl, 1
jne 0x415b44
push edi
call fcn.0042172b
lea eax, [esi - 0x10]
add esp, 4
mov byte [esp + 0x490c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x415b14
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415b3c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x10]
jmp 0x415dec
push 0
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0x58]
call fcn.004147d0
push edi
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x48]
push edx
mov byte [esp + 0x4918], 5
call fcn.00413e10
add esp, 0xc
mov eax, dword [eax]
lea ecx, [esp + 0x4c]
push ecx
push 0x1041
push eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0x4918], 6
call fcn.0043068f
test eax, eax
mov eax, dword [esp + 0x40]
sete bl
add eax, 0xfffffff0
mov byte [esp + 0x490c], 5
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x415bb9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push edi
test bl, bl
jne 0x415ea9
call fcn.0042172b
add esp, 4
lea ecx, [esp + 0xa0]
call fcn.00419ff0
jmp 0x415be0
push 0x4000
lea ecx, [esp + 0x904]
push ecx
lea ecx, [esp + 0xa8]
call fcn.004195d0
mov esi, eax
test esi, esi
jle 0x415c11
push esi
lea edx, [esp + 0x904]
push edx
lea ecx, [esp + 0x38]
call fcn.0042ffc6
cmp esi, 0x4000
je 0x415be0
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0xa8]
call fcn.0041a230
cmp byte [esp + 0x16], 1
jne 0x415d45
mov edi, dword [sym.imp.KERNEL32.dll_CopyFileA]
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
mov byte [esp + 0x17], 0
xor ebp, ebp
lea ecx, [ecx]
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.00413d50
mov esi, eax
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x58]
push ecx
mov byte [esp + 0x4924], 7
call fcn.00413d50
mov esi, dword [esi]
mov eax, dword [eax]
add esp, 0x18
push 0
push esi
push eax
call edi
mov esi, eax
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x415cb1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415cd9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
jne 0x415cfc
push 0xc8
call ebx
add ebp, 0xc8
cmp ebp, 0x4e20
jle 0x415c50
mov bl, byte [esp + 0x17]
jmp 0x415cfe
mov bl, 1
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x34]
push eax
call fcn.00413d50
mov eax, dword [eax]
push eax
call fcn.00441869
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415d3d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x415fdf
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
inc eax
push eax
lea ecx, [esi + 0x5808]
mov dword [esp + 0x28], eax
call fcn.004192d0
mov ecx, esi
call fcn.004133f0
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 4
mov dword [esp + 0x4c], vtable.CFileException.0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415d95
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415dbd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415de5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x490c], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415e0d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xa0]
call fcn.00419f90
test al, al
jne 0x4157e0
lea ecx, [esp + 0xa0]
call fcn.0041a200
push 0
push 0x4609a0
push str.config._ni
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x4160e2
push str.config._ni
call fcn.00441869
push str.Tempup_list.zip
call fcn.00441869
add esp, 8
lea ecx, [esp + 0xa0]
mov byte [esp + 0x490c], 0
call fcn.0041a180
mov ecx, dword [0x47782c]
push ecx
call fcn.00440139
add esp, 4
lea ecx, [esp + 0x30]
mov dword [esp + 0x490c], 0xffffffff
call fcn.0043036b
mov eax, 1
jmp 0x416144
push 0x80004005
call fcn.00401010
mov ebx, dword [esp + 0x1c]
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
push ebx
lea ecx, [esp + 0x4ac]
push str._s_s
push ecx
call edi
mov esi, dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
add esp, 0x10
push 0x8b
mov ecx, 0x4838c0
call esi
push eax
push 0x75
mov ecx, 0x4838c0
call esi
push eax
lea edx, [esp + 0x4ac]
push edx
lea eax, [esp + 0x258]
push str._s__s_n_s
push eax
call edi
add esp, 0x14
push 0
push 0x10
lea ecx, [esp + 0x254]
push ecx
call fcn.0042b436
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x20]
push 0
push 0
push 0x10
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 4
mov dword [esp + 0x4c], vtable.CFileException.0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415f52
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x490c], 3
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415f76
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x490c], 2
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415f9e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x490c], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415fc6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xa0]
mov byte [esp + 0x490c], 0
call fcn.0041a180
jmp 0x41612e
push 0x45fce9
lea ecx, [esp + 0x28]
call fcn.004018a0
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x34]
mov bl, 8
push eax
mov byte [esp + 0x4918], bl
call fcn.00413d50
add esp, 0xc
mov esi, eax
mov edi, dword [sym.imp.mumsg.dll_public:_char____thiscall_CMsg::Get_int_]
push 0x8b
mov ecx, 0x4838c0
mov byte [esp + 0x4910], 9
call edi
push eax
push 0x75
mov ecx, 0x4838c0
call edi
mov ecx, dword [esi]
push eax
push ecx
lea edx, [esp + 0x30]
push str._s__s_n_s
push edx
call fcn.0040fb50
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
add esp, 0x14
mov byte [esp + 0x490c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416070
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x24]
push 0
push 0x10
push ecx
call fcn.0042b436
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 5
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4160a6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov byte [esp + 0x490c], 4
mov dword [esp + 0x4c], vtable.CFileException.0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4160d6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
jmp 0x415f55
push 0
push 0x10
push str._config.ini__error
call fcn.0042b436
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x20]
push 0
push 0
push 0x10
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0xa0]
mov byte [esp + 0x490c], 0
call fcn.0041a180
jmp 0x41612e
push 0x8a
mov ecx, 0x4838c0
call edi
push eax
mov ecx, esi
call fcn.00414380
lea ecx, [esp + 0x30]
mov dword [esp + 0x490c], 0xffffffff
call fcn.0043036b
xor eax, eax
mov ecx, dword [esp + 0x4904]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x48ec]
xor ecx, esp
call fcn.0043efc3
add esp, 0x48fc
ret 8