Function at 0x40bd40
Capabilities:
Create directory
Delete file
Get file attributes
Set current directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x542fb3
mov eax, dword fs:[0]
push eax
sub esp, 0x38c
mov eax, dword [0x5a574c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
push str.updating_files...
push edi
call fcn.00409320
add esp, 8
lea ecx, [ebp - 0x36c]
call fcn.0040fdf0
mov eax, dword [0x5a6c44]
mov eax, dword [eax + 4]
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp eax, ebx
jne 0x40bd9e
xor eax, eax
jmp 0x40bda1
mov eax, dword [eax + 0x20]
push eax
lea ecx, [ebp - 0x36c]
call fcn.0040fe20
test al, al
jne 0x40bde3
mov ecx, dword [0x5a6c44]
push 0x552feb
push ebx
push ebx
push str.Fail_to_Initialize_http
push 0x1b
call fcn.00407190
lea ecx, [ebp - 0x36c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040fe10
xor al, al
jmp 0x40c428
push str.http:__py.4th.in_Nome_000000000_new_Service_S4_Patch_
lea ecx, [ebp - 0x380]
call fcn.004018d0
push 0x5a6c50
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov esi, dword [edi + 0x41c]
sub esi, dword [edi + 0x418]
mov ecx, dword [0x5a6c44]
mov ecx, dword [ecx + 4]
mov eax, 0x97012e03
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push ebx
push ebx
mov dword [ebp - 0x38c], ebx
call fcn.00404700
mov ecx, dword [edi + 0x418]
mov dword [ebp - 0x388], ecx
cmp ecx, dword [edi + 0x41c]
je 0x40c3e0
add ecx, 0x214
mov dword [ebp - 0x37c], ecx
lea esp, [esp]
mov ecx, dword [ebp - 0x37c]
cmp dword [ecx - 4], 0
je 0x40c397
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
push eax
call fcn.004021a0
add eax, 0x10
add esp, 4
mov dword [ebp - 0x384], eax
mov ebx, dword [ebp - 0x37c]
mov byte [ebp - 4], 2
test ebx, ebx
jne 0x40be9d
xor eax, eax
jmp 0x40beab
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40bea2
sub eax, edx
push eax
push ebx
lea ecx, [ebp - 0x384]
call fcn.00403bc0
xor esi, esi
mov dword [ebp - 0x394], esi
mov dword [ebp - 0x390], esi
push ebx
push str._s_downloaded
push edi
call fcn.00409320
mov ecx, dword [ebx + 0x104]
add esp, 0xc
xor eax, eax
lea edx, [ebp - 0x390]
push edx
mov edx, dword [ebp - 0x380]
mov dword [ebp - 0x394], eax
mov dword [ebp - 0x390], eax
lea eax, [ebp - 0x394]
push eax
push ecx
push edx
push 0x5a6c50
push ebx
push str._temp.zip
lea ecx, [ebp - 0x36c]
call fcn.004101a0
test al, al
jne 0x40bfe4
cmp esi, 4
jge 0x40bf3b
push str.Failed_to_download._Trying_again
push edi
call fcn.00409320
add esp, 8
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
inc esi
cmp esi, 5
jl 0x40bec6
mov eax, dword [ebp - 0x388]
mov edx, dword [eax + 0x318]
push edx
add eax, 0x214
push eax
lea eax, [ebp - 0x110]
push str._s_size:_d_
push eax
call fcn.00525791
mov edx, dword [ebp - 0x390]
mov eax, dword [ebp - 0x394]
add esp, 0x10
lea ecx, [ebp - 0x110]
push ecx
mov ecx, dword [0x5a6c44]
push edx
push eax
push str.temp.zip
push 0x1c
call fcn.00407190
mov eax, dword [ebp - 0x384]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bfb5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bdca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40bdca
push 0x5a6c50
lea ecx, [ebp - 0x378]
call fcn.004018d0
push 9
push str._temp.zip
lea ecx, [ebp - 0x378]
mov byte [ebp - 4], 3
call fcn.00403bc0
push 0x5a6c50
lea ecx, [ebp - 0x370]
call fcn.004018d0
mov esi, dword [ebp - 0x388]
mov eax, esi
mov byte [ebp - 4], 4
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40c030
sub eax, edx
je 0x40c07d
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40c040
sub eax, edx
push eax
push esi
lea ecx, [ebp - 0x370]
call fcn.00403bc0
mov eax, dword [ebp - 0x370]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x40c07d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0xb7
jne 0x40c444
push 1
push 0x5545a0
lea ecx, [ebp - 0x370]
call fcn.00403bc0
lea ecx, [ebx - 0x110]
test ecx, ecx
jne 0x40c09d
xor eax, eax
jmp 0x40c0af
lea eax, [ebx - 0x110]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40c0a6
sub eax, edx
push eax
lea edx, [ebx - 0x110]
push edx
lea ecx, [ebp - 0x370]
call fcn.00403bc0
push str.unzipping
push edi
call fcn.00409320
mov eax, dword [ebp - 0x370]
add esp, 8
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ecx, dword [ebp - 0x370]
and eax, 0xfffffffe
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov edx, dword [ebp - 0x370]
mov eax, dword [ebp - 0x378]
add ebx, 0x148
push ebx
push edx
push eax
mov ecx, edi
call fcn.004090f0
test al, al
je 0x40c79a
push str.completed_canceling_unzip._n
push edi
call fcn.00409320
mov ecx, dword [ebp - 0x378]
add esp, 8
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov edx, dword [ebp - 0x370]
push edx
lea ecx, [ebp - 0x258]
call fcn.0040e710
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
mov byte [ebp - 4], 8
xor esi, esi
jmp 0x40c150
push 0x555394
lea ecx, [ebp - 0x258]
call fcn.0040e440
cmp dword [ebp - 0x24c], 0
jne 0x40c183
push 0x3e8
call ebx
inc esi
cmp esi, 5
jl 0x40c150
cmp dword [ebp - 0x24c], 0
je 0x40c586
lea ecx, [ebp - 0x258]
call fcn.0040e3a0
lea ecx, [ebp - 0x258]
call fcn.0040e830
push eax
lea ecx, [ebp - 0x374]
call fcn.004018d0
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 9
call fcn.0040ebb0
test al, al
je 0x40c246
mov edx, dword [ebp - 0x374]
mov ebx, dword [edx - 0xc]
lea esi, [ebx + 1]
test esi, esi
js 0x40c678
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, esi
or eax, ecx
jge 0x40c1f3
push esi
lea ecx, [ebp - 0x374]
call fcn.00401390
mov edx, dword [ebp - 0x374]
mov byte [ebx + edx], 0x2e
mov eax, dword [ebp - 0x374]
cmp esi, dword [eax - 8]
jg 0x40c678
mov dword [eax - 0xc], esi
mov eax, dword [ebp - 0x374]
lea ecx, [ebp - 0x258]
mov byte [esi + eax], 0
call fcn.0040eb00
test eax, eax
jne 0x40c226
xor ecx, ecx
jmp 0x40c239
mov ecx, eax
lea esi, [ecx + 1]
jmp 0x40c230
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x40c230
sub ecx, esi
push ecx
push eax
lea ecx, [ebp - 0x374]
call fcn.00403bc0
lea ecx, [ebp - 0x258]
xor bl, bl
call fcn.0040eb00
push eax
push 0x5555b4
call fcn.00538475
add esp, 8
test eax, eax
je 0x40c282
lea ecx, [ebp - 0x258]
call fcn.0040eb00
push eax
push 0x5555b0
call fcn.00538475
add esp, 8
test eax, eax
jne 0x40c2d2
lea ecx, [ebp - 0x258]
call fcn.00409760
mov ecx, dword [ebp - 0x37c]
sub eax, dword [ecx - 8]
cmp eax, 0x2000
sete bl
test bl, bl
je 0x40c2d2
mov edx, dword [ebp - 0x374]
push str.Possible_virus_infected_files_found._nPlease_scan_your_system_with_anti_virus_program.
push edx
lea eax, [ebp - 0x210]
push str._s__s
push eax
call fcn.00525791
add esp, 0x10
push 0
push 0
lea ecx, [ebp - 0x210]
push ecx
call fcn.00433c58
lea ecx, [ebp - 0x258]
call fcn.00409760
mov edx, dword [ebp - 0x37c]
cmp eax, dword [edx - 8]
je 0x40c2f0
test bl, bl
je 0x40c682
mov eax, dword [ebp - 0x374]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c316
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 4
call fcn.0040e470
mov eax, dword [ebp - 0x370]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c34b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x378]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c371
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x384]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c397
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x38c]
mov ecx, dword [edi + 0x43c]
inc eax
push eax
push 0
push 0x7e8
push ecx
mov dword [ebp - 0x38c], eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [ebp - 0x388]
add dword [ebp - 0x37c], 0x364
add eax, 0x364
mov dword [ebp - 0x388], eax
cmp eax, dword [edi + 0x41c]
jne 0x40be60
push str.completed_update__HTTP_
push edi
call fcn.00409320
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
add esp, 8
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c414
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x36c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040fe10
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00525222
mov esp, ebp
pop ebp
ret
push 0x5545a0
lea ecx, [ebp - 0x370]
push ecx
lea edx, [ebp - 0x37c]
push edx
call fcn.0040a330
mov ecx, dword [ebp - 0x388]
add ecx, 0x104
push ecx
push eax
lea edx, [ebp - 0x38c]
push edx
mov byte [ebp - 4], 5
call fcn.0040a330
add esp, 0x18
mov eax, dword [ebp - 0x37c]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c4a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x38c]
push ecx
mov ecx, dword [0x5a6c44]
push esi
push 0
push str.Fail_to_CreateDirectory
push 0x1e
call fcn.00407190
mov eax, dword [ebp - 0x38c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c4e5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x370]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c50b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x378]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c531
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x384]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c557
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bdca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40bdca
push str.Failed_to_open_necessary_files.
push edi
call fcn.00409320
mov ecx, dword [ebp - 0x370]
mov edx, dword [ebp - 0x388]
mov eax, dword [edx + 0x20c]
mov esi, dword [0x5a6c44]
add esp, 8
push ecx
push eax
lea ecx, [ebp - 0x258]
call fcn.00409760
push eax
push str.Cannot_Open_File
push 0x28
mov ecx, esi
call fcn.00407190
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 4
call fcn.0040e470
mov eax, dword [ebp - 0x370]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c5fd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x378]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c623
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x384]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c649
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bdca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40bdca
push 0x80070057
call fcn.00401000
push str.completed_canceling_unzip._n
push edi
call fcn.00409320
mov ecx, dword [ebp - 0x374]
mov edx, dword [ebp - 0x388]
mov eax, dword [edx + 0x20c]
mov esi, dword [0x5a6c44]
add esp, 8
push ecx
push eax
lea ecx, [ebp - 0x258]
call fcn.00409760
push eax
push str.Not_same_size___unzip
push 0x1d
mov ecx, esi
call fcn.00407190
mov eax, dword [ebp - 0x374]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c6ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 4
call fcn.0040e470
mov eax, dword [ebp - 0x370]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c71f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x378]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c745
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x384]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c76b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bdca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40bdca
push str.fail_to_complete_unzip._n
push edi
call fcn.00409320
mov eax, dword [ebp - 0x370]
add eax, 0xfffffff0
add esp, 8
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c7ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x378]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c7f4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x384]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c81a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bdca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40bdca