Function at 0x418778
Capabilities:
Check for time delay via gettickcount
Get memory capacity
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4e4
mov eax, dword [0x488548]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
push esi
mov dword [ebp - 0x4c4], ebx
mov dword [ebp - 0x4bc], ebx
call fcn.00415e63
test eax, eax
jne 0x4192cb
push edi
xor edi, edi
inc edi
mov dword [esi + 0x546c], edi
mov dword [esi + 0x5458], edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
or dword [esi + 0x1d4c], 0xffffffff
test byte [ebp + 0xc], 1
mov dword [esi + 0x545c], eax
mov dword [ebp - 0x4b8], eax
mov dword [esi + 0x49f4], ebx
jne 0x4187ff
cmp dword [esi + 0x3814], ebx
je 0x4187ff
cmp dword [esi + 0x1d20], 4
je 0x4187ff
lea eax, [esi + 0x1d98]
push eax
push esi
call fcn.0040c67b
test dword [esi + 0x3808], 0x300
je 0x418811
push esi
call fcn.0041a005
push ebx
lea ecx, [esi + 0x1d24]
lea eax, [esi + 0x584]
push ecx
push eax
call dword [sym.imp.PPLIB32W.DLL__VFSGetDriveType_12]
test byte [ebp + 0xc], 1
jne 0x418836
lea eax, [ebp + 0xc]
push eax
push esi
call fcn.004168ea
movzx eax, word [esi + 0x3ba8]
test al, 4
je 0x41885e
or dword [ebp + 0xc], 0xa000000
test al, 8
je 0x418853
or dword [ebp + 0xc], 0x4000000
test al, 0x10
je 0x41885e
and dword [ebp + 0xc], 0xf7ffffff
test dword [ebp + 0xc], 0x2000
je 0x41886e
and dword [ebp + 0xc], 0xfdffffff
test dword [ebp + 0xc], 0x2000000
jne 0x418898
push ebx
push 0x80
call dword [sym.imp.PPLIB32W.DLL__VFSArchiveSection_8]
test eax, eax
jne 0x418898
push edi
lea eax, [esi + 0x584]
push eax
push dword [esi + 0xc]
call dword [sym.imp.PPLIB32W.DLL__VFSTryDirectory_12]
test byte [ebp + 0xc], 8
je 0x4188bf
mov eax, dword [esi + 0x1d50]
or dword [ebp + 0xc], 0x400000
mov dword [ebp - 0x4c4], eax
mov eax, dword [esi + 0x2270]
mov dword [ebp - 0x4bc], eax
jmp 0x418919
test byte [ebp + 0xc], 4
jne 0x418919
cmp dword [0x487110], ebx
je 0x418919
call dword [sym.imp.PPLIB32W.DLL__UsePPx_0]
lea eax, [esi + 0x1394]
cmp word [eax], bx
jne 0x4188e4
lea eax, [esi + 0x584]
push eax
push 0x4000
call dword [sym.imp.PPLIB32W.DLL__SearchHistory_8]
cmp eax, ebx
je 0x418913
movzx ecx, word [eax - 2]
add ecx, eax
mov eax, dword [ecx + 4]
cmp eax, ebx
jl 0x418913
mov ecx, dword [ecx]
or dword [ebp + 0xc], 8
mov dword [ebp - 0x4c4], ecx
mov dword [ebp - 0x4bc], eax
call dword [sym.imp.PPLIB32W.DLL__FreePPx_0]
lea edi, [ebp - 0x4b4]
lea ecx, [esi + 0x584]
mov dword [esi + 0x580], ebx
mov dword [esi + 0x1d50], ebx
mov dword [esi + 0x2270], ebx
mov dword [esi + 0x5380], ebx
lea eax, [esi + 0x584]
sub edi, ecx
movzx ecx, word [eax]
mov word [edi + eax], cx
inc eax
inc eax
cmp cx, bx
jne 0x418945
mov edx, dword [0x487204]
mov ecx, esi
call fcn.004509f3
test dword [ebp + 0xc], 0x1000
jne 0x41897b
test dword [ebp + 0xc], 0x200
jne 0x4189c5
test byte [esi + 0x3ba8], 1
je 0x4189c5
or dword [ebp + 0xc], 0x1000000
push 0
lea ebx, [esi + 0x584]
push ebx
lea eax, [ebp - 0x4b4]
push eax
mov dword [esi + 0x580], 1
call fcn.004136d1
test eax, eax
jne 0x4189be
mov eax, ebx
movzx ecx, word [eax]
mov word [edi + eax], cx
inc eax
inc eax
test cx, cx
jne 0x4189a7
or dword [ebp + 0xc], 0x200
jmp 0x4189c5
or dword [ebp + 0xc], 0x40000000
test byte [ebp + 0xc], 1
lea eax, [ebp + 0xc]
je 0x4189f0
push eax
lea eax, [ebp - 0x4b4]
push eax
push esi
mov dword [esi + 0x5458], 4
call fcn.00417680
push 2
pop ebx
xor edi, edi
jmp 0x418ab7
or dword [esi + 0x1d94], 0xffffffff
or dword [esi + 0x1d8c], 0xffffffff
or dword [esi + 0x1d84], 0xffffffff
push 2
pop ebx
push eax
lea eax, [ebp - 0x4b4]
push eax
push esi
mov dword [esi + 0x5458], ebx
call fcn.00417cda
mov eax, dword [esi + 0x1d20]
xor edi, edi
mov dword [esi + 0x184c], edi
mov dword [esi + 0x1848], edi
cmp eax, 4
jne 0x418a7c
test byte [ebp + 0xc], 0x10
jne 0x418a59
test byte [ebp + 0xc], 0x20
mov eax, dword [0x4895cc]
jne 0x418a9b
cmp eax, edi
jg 0x418a59
mov ecx, dword [esi + 0x1d34]
test dword [ecx + 0x24], 0x8000000
je 0x418a9b
push 0x4739e8
push edi
push esi
call fcn.00416da1
mov eax, dword [esi + 0x1d34]
cmp dword [eax + 0x24], 0x8000010
jne 0x418ab7
mov dword [esi + 0x184c], ebx
jmp 0x418ab7
cmp eax, 0x60
je 0x418a86
cmp eax, 0x40
jne 0x418ab7
test byte [ebp + 0xc], 0x10
jne 0x418aab
test byte [ebp + 0xc], 0x20
mov eax, dword [0x4895c8]
jne 0x418a9b
cmp eax, edi
jg 0x418aab
cmp eax, edi
jge 0x418ab7
mov dword [esi + 0x1848], 1
jmp 0x418ab7
push 0x4739e8
push edi
push esi
call fcn.00416da1
test dword [ebp + 0xc], 0x40000000
je 0x418ac7
or dword [esi + 0x1858], 0xffffffff
cmp dword [esi + 0x1d54], edi
jg 0x418b85
mov eax, dword [esi + 0x1d58]
add eax, ebx
imul eax, eax, 0x278
push eax
lea edi, [esi + 0x1d34]
push edi
call fcn.00454de4
mov eax, dword [esi + 0x1d58]
lea eax, [eax*4 + 8]
push eax
lea ebx, [esi + 0x1d40]
push ebx
call fcn.00454de4
push str.NOELno_match_any_file
call dword [sym.imp.PPLIB32W.DLL__MessageText_4]
mov ecx, dword [esi + 0x1d58]
imul ecx, ecx, 0x278
add ecx, dword [edi]
mov edx, eax
call fcn.00424ef8
mov eax, dword [esi + 0x1d58]
mov ecx, dword [edi]
imul eax, eax, 0x278
mov dword [eax + ecx + 0x24], 0x108
mov eax, dword [esi + 0x1d58]
mov ecx, dword [edi]
imul eax, eax, 0x278
mov dword [eax + ecx + 0x44], 2
mov eax, dword [esi + 0x1d58]
mov ecx, dword [edi]
imul eax, eax, 0x278
lea eax, [eax + ecx + 0x274]
or byte [eax], 1
mov eax, dword [ebx]
mov ecx, dword [esi + 0x1d58]
mov dword [eax], ecx
mov dword [esi + 0x1d54], 1
jmp 0x418e85
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebp - 0x4b8]
test eax, eax
jns 0x418b97
neg eax
xor edx, edx
div dword [esi + 0x1d54]
cmp eax, dword [0x487118]
jb 0x418bbb
push str.SLMDEnter_slow_mode
xor edx, edx
mov ecx, esi
call fcn.00427caa
push esi
call fcn.004156ef
mov ecx, str.Xlong
lea eax, [esi + 0x185c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x418bec
cmp dx, di
je 0x418be8
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x418bec
add eax, 4
add ecx, 4
cmp dx, di
jne 0x418bc6
xor eax, eax
jmp 0x418bf1
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x418c09
push str.WLLPLong_path_directory
xor edx, edx
mov ecx, esi
call fcn.00427caa
push esi
call fcn.004156ef
mov edi, dword [esi + 0x1d54]
cmp dword [ebp - 0x4bc], edi
jl 0x418c20
lea eax, [edi - 1]
mov dword [ebp - 0x4bc], eax
test byte [ebp + 0xc], 2
je 0x418e85
or dword [ebp - 0x4b8], 0xffffffff
lea eax, [esi + 0x3328]
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x418c3a
sub eax, ecx
sar eax, 1
test dword [ebp + 0xc], 0x800
mov dword [ebp - 0x4c0], eax
jne 0x418c5d
inc dword [ebp - 0x4c0]
xor ebx, ebx
test edi, edi
jle 0x418d04
mov eax, dword [esi + 0x1d40]
mov eax, dword [eax + ebx*4]
push dword [ebp - 0x4c0]
imul eax, eax, 0x278
mov ecx, dword [esi + 0x1d34]
lea edi, [esi + 0x3328]
lea eax, [eax + ecx + 0x50]
push edi
push eax
call fcn.004693ef
add esp, 0xc
test eax, eax
jne 0x418cf7
test dword [ebp + 0xc], 0x180
je 0x418de3
mov eax, dword [esi + 0x1d40]
mov eax, dword [eax + ebx*4]
mov edx, dword [esi + 0x1d34]
imul eax, eax, 0x278
mov ecx, edi
lea eax, [eax + edx + 0x50]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x418ce8
test dx, dx
je 0x418ce4
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x418ce8
add eax, 4
add ecx, 4
test dx, dx
jne 0x418cc2
xor eax, eax
jmp 0x418ced
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x418d04
mov dword [ebp - 0x4b8], ebx
inc ebx
cmp ebx, dword [esi + 0x1d54]
jl 0x418c67
test dword [ebp + 0xc], 0x180
je 0x418de3
mov eax, dword [esi + 0x1d54]
cmp ebx, eax
cmovge ebx, dword [ebp - 0x4b8]
test ebx, ebx
jge 0x418de3
mov ecx, dword [esi + 0x1d58]
inc ecx
inc ecx
imul ecx, ecx, 0x278
mov ebx, eax
lea eax, [esi + 0x1d34]
push ecx
push eax
call fcn.00454de4
test eax, eax
je 0x418de3
mov ecx, dword [esi + 0x1d58]
lea ecx, [ecx*4 + 8]
lea eax, [esi + 0x1d40]
push ecx
push eax
call fcn.00454de4
test eax, eax
je 0x418de3
mov edi, dword [esi + 0x1d58]
imul edi, edi, 0x278
add edi, dword [esi + 0x1d34]
lea edx, [esi + 0x3328]
mov ecx, edi
call fcn.00424ef8
mov eax, dword [ebp + 0xc]
shr eax, 3
not eax
and eax, 0x10
push 0
mov dword [edi + 0x24], eax
mov byte [edi + 0xf], 5
mov byte [edi + 0x274], 0
mov byte [edi + 0x276], 0
mov eax, dword [esi + 0x1d40]
mov ecx, dword [esi + 0x1d58]
push edi
push esi
mov dword [eax + ebx*4], ecx
call fcn.0041589d
cmp dword [esi + 0x4a30], 1
jne 0x418dd7
lea eax, [edi + 0x50]
push eax
call fcn.00414792
mov dword [edi + 0x14], eax
inc dword [esi + 0x1d58]
inc dword [esi + 0x1d54]
cmp ebx, dword [esi + 0x1d54]
jge 0x418e85
test dword [ebp + 0xc], 0x180
mov eax, dword [ebp - 0x4bc]
mov dword [esi + 0x2270], eax
je 0x418e7b
test byte [ebp + 0xc], 8
je 0x418e7b
mov edi, dword [ebp - 0x4c4]
test edi, edi
jl 0x418e7b
cmp ebx, edi
jle 0x418e7b
mov eax, dword [esi + 0x1d40]
mov edx, dword [eax + edi*4]
mov ecx, dword [esi + 0x1d34]
imul edx, edx, 0x278
test byte [edx + ecx + 0x274], 0x43
jne 0x418e7b
mov edx, dword [eax + ebx*4]
mov dword [ebp - 0x4b8], edx
imul edx, edx, 0x278
cmp byte [edx + ecx + 0xf], 5
jne 0x418e7b
sub ebx, edi
lea ecx, [ebx*4 - 4]
push ecx
lea ecx, [eax + edi*4 + 4]
push ecx
lea eax, [eax + edi*4 + 8]
push eax
call fcn.00468c30
mov eax, dword [esi + 0x1d40]
mov ecx, dword [ebp - 0x4b8]
lea ebx, [edi + 1]
add esp, 0xc
mov dword [eax + ebx*4], ecx
and dword [ebp + 0xc], 0xfffffff3
mov dword [esi + 0x1d50], ebx
cmp dword [esi + 0x1858], 0xffffffff
jne 0x418e97
test dword [ebp + 0xc], 0x800000
je 0x418ecb
test dword [ebp + 0xc], 0x2001000
jne 0x418eb5
cmp word [esi + 0xa34], 0x5c
je 0x418eb5
xor edi, edi
push edi
push esi
call fcn.0041615e
jmp 0x418ecd
or dword [esi + 0xa0], 0x100
push dword [esi + 0x8c]
call dword [sym.imp.KERNEL32.dll_SetEvent]
xor edi, edi
cmp dword [0x48712c], edi
je 0x418f63
mov eax, dword [esi + 0x1d20]
cmp eax, 0x60
je 0x418ef8
cmp eax, 0x40
je 0x418ef8
cmp eax, 0x3d
je 0x418ef8
cmp eax, 0x3e
je 0x418ef8
cmp eax, 0x3f
jne 0x418f63
xor ebx, ebx
cmp dword [esi + 0x1d58], edi
mov dword [ebp - 0x4b8], edi
jle 0x418f63
mov eax, dword [esi + 0x1d34]
add eax, edi
test byte [eax + 0x274], 3
jne 0x418f3b
add eax, 0x50
push eax
call fcn.0041460b
test eax, eax
je 0x418f3b
mov eax, dword [esi + 0x1d34]
mov dword [ebp - 0x4b8], 1
mov byte [edi + eax + 0xf], 4
inc ebx
add edi, 0x278
cmp ebx, dword [esi + 0x1d58]
jl 0x418f08
cmp dword [ebp - 0x4b8], 0
je 0x418f61
push str.FEWEFound_file_seems_extracting_in_the_wrong_place
xor edx, edx
mov ecx, esi
call fcn.00427caa
xor edi, edi
test dword [ebp + 0xc], 0x200
je 0x418fa8
test byte [esi + 0x3ba8], 1
je 0x418fa8
push edi
lea eax, [esi + 0x584]
push eax
lea eax, [ebp - 0x4b4]
push eax
call fcn.004136d1
lea eax, [ebp - 0x4b4]
push eax
push esi
call fcn.00425c47
test eax, eax
jne 0x418fa8
push str.Dir_Cache_save_error
xor edx, edx
mov ecx, esi
call fcn.00427caa
cmp dword [esi + 0x2274], edi
jne 0x418fe2
cmp dword [esi + 0x53d4], edi
jne 0x418fe2
cmp dword [esi + 0x5388], edi
jne 0x418fe2
cmp dword [esi + 0x4a18], edi
jne 0x418fe2
cmp dword [esi + 0x4a60], edi
jne 0x418fe2
cmp dword [esi + 0x50], edi
jne 0x418fe2
push edi
push edi
push 0xb
push dword [esi + 0xc]
call dword [sym.imp.USER32.dll_SendMessageW]
test byte [ebp + 0xc], 0xc
je 0x419013
push esi
call fcn.004128d9
mov eax, dword [esi + 0x1d54]
mov ecx, dword [ebp - 0x4c4]
cmp ecx, eax
jl 0x419001
lea ecx, [eax - 1]
mov eax, dword [ebp - 0x4bc]
mov dword [esi + 0x1d50], ecx
mov dword [esi + 0x2270], eax
mov eax, dword [esi + 0x1d50]
lea ecx, [eax + 1]
cmp ecx, dword [esi + 0x1d54]
jge 0x419049
mov edx, dword [esi + 0x1d40]
mov eax, dword [edx + eax*4]
mov edx, dword [esi + 0x1d34]
imul eax, eax, 0x278
test byte [eax + edx + 0x274], 2
je 0x419049
mov dword [esi + 0x1d50], ecx
cmp dword [esi + 0x1d20], 4
lea eax, [esi + 0xa34]
jne 0x41905e
lea eax, [esi + 0x584]
push eax
push dword [esi + 0x28]
call dword [sym.imp.PPLIB32W.DLL__PPxSetPath_8]
lea edi, [esi + 0x584]
cmp word [edi], 0
je 0x41913c
mov eax, dword [esi + 0x578]
test eax, eax
je 0x419128
push eax
push esi
call fcn.004254f1
mov ebx, eax
mov eax, dword [esi + 0x574]
mov dword [ebp - 0x4c0], ebx
mov edx, edi
lea ecx, [eax + ebx]
mov di, word [ecx]
cmp di, word [edx]
jne 0x4190c6
test di, di
je 0x4190c2
mov di, word [ecx + 2]
cmp di, word [edx + 2]
jne 0x4190c6
add ecx, 4
add edx, 4
test di, di
jne 0x4190a0
xor ecx, ecx
jmp 0x4190cb
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
je 0x41913c
mov edx, 0xea60
cmp ebx, edx
jbe 0x419128
xor edi, edi
cmp ebx, edx
jbe 0x41910c
lea ecx, [eax + edi]
lea ebx, [ecx + 2]
mov dword [ebp - 0x4b8], ebx
mov bx, word [ecx]
inc ecx
inc ecx
test bx, bx
jne 0x4190ea
sub ecx, dword [ebp - 0x4b8]
sar ecx, 1
lea edi, [edi + ecx*2 + 2]
mov ecx, dword [ebp - 0x4c0]
sub ecx, edi
cmp ecx, edx
ja 0x4190de
mov ecx, dword [esi + 0x57c]
sub ecx, edi
push ecx
lea ecx, [eax + edi]
push ecx
push eax
call fcn.00468c30
add esp, 0xc
sub dword [esi + 0x578], edi
lea eax, [esi + 0x584]
push eax
lea eax, [esi + 0x574]
push eax
call dword [sym.imp.PPLIB32W.DLL__ThAddString_8]
xor edi, edi
push edi
push 0x80
call dword [sym.imp.PPLIB32W.DLL__VFSArchiveSection_8]
test eax, eax
jne 0x419159
push 0x48ab20
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push esi
call fcn.004128d9
mov eax, dword [esi + 0x7c]
test eax, eax
jle 0x419169
dec dword [esi + 0x7c]
xor eax, eax
mov word [esi + 0x4aa4], ax
cmp dword [0x487100], edi
jne 0x41919d
mov eax, dword [ebp + 0xc]
and eax, 0x189
cmp eax, 9
jne 0x41919d
mov eax, dword [esi + 0x1d54]
cmp dword [esi + 0x1d50], eax
jge 0x41919d
cmp dword [esi + 0x2270], eax
jl 0x4191a5
push edi
push edi
push esi
call fcn.00407dcb
push esi
call fcn.00415e8d
test dword [ebp + 0xc], 0x400001
jne 0x4191e0
cmp dword [esi + 0x1d54], 1
jg 0x4191d8
mov eax, dword [esi + 0x1d40]
mov eax, dword [eax]
mov ecx, dword [esi + 0x1d34]
imul eax, eax, 0x278
cmp byte [eax + ecx + 0xe], 0
je 0x4191e0
push 1
push esi
call fcn.00423e99
cmp dword [esi + 0x2274], edi
jne 0x41921b
cmp dword [esi + 0x53d4], edi
jne 0x41921b
cmp dword [esi + 0x5388], edi
jne 0x41921b
cmp dword [esi + 0x4a18], edi
jne 0x41921b
cmp dword [esi + 0x4a60], edi
jne 0x41921b
cmp dword [esi + 0x50], edi
jne 0x41921b
push edi
push 1
push 0xb
push dword [esi + 0xc]
call dword [sym.imp.USER32.dll_SendMessageW]
push esi
call fcn.004212d2
cmp dword [esi + 0x2274], edi
je 0x419243
push dword [esi + 0xc]
push 0xba44
push dword [0x48b024]
push dword [esi + 0x4a14]
call dword [sym.imp.USER32.dll_PostMessageW]
test byte [ebp + 0xc], 1
jne 0x419277
test dword [ebp + 0xc], 0x10000000
je 0x419264
push edi
push edi
push str.execute___si_LoadCommand_
push edi
push esi
push dword [esi + 0xc]
call dword [sym.imp.PPLIB32W.DLL__PP_ExtractMacro_24]
cmp dword [esi + 0x4f60], edi
je 0x419277
push 0x3f04
push esi
call fcn.00408d58
cmp dword [0x4895b8], 2
jne 0x419293
or dword [esi + 0xa0], 0x40
push dword [esi + 0x8c]
call dword [sym.imp.KERNEL32.dll_SetEvent]
lea eax, [ebp - 0x4e4]
push eax
mov dword [ebp - 0x4e4], 0x20
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
cmp dword [ebp - 0x4c8], 0x1f400000
jae 0x4192c4
push 0x473b00
xor edx, edx
mov ecx, esi
call fcn.00427caa
mov dword [esi + 0x546c], edi
pop edi
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.0046890b
leave
ret 8