Function at 0x54f210
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57a4c4
mov eax, dword fs:[0]
push eax
sub esp, 0x5e4
mov eax, dword [0x5d52e0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
mov ebx, 0x5dd9b8
mov dword [ebp - 0x53c], eax
mov dword [ebp - 0x534], ebx
mov dword [ebp - 0x538], 2
mov dword [ebp - 4], 0
test edi, edi
jle 0x54f4a0
cmp dword [ebp + 0xc], 0xcea
je 0x54f4a0
mov ecx, dword [0x5dda14]
mov edx, dword [ecx]
mov eax, dword [edx + 0x18]
call eax
push eax
lea ecx, [ebp - 0x54c]
push ecx
call fcn.0052c970
add esp, 8
mov byte [ebp - 4], 1
mov ecx, dword [0x5dd9c4]
sub ecx, dword [0x5dd9c0]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, edi
push eax
mov ecx, 0x5dd9c0
call fcn.00403220
mov dword [ebp - 0x530], 0
jmp 0x54f2e0
cmp dword [ebp - 0x530], edi
jge 0x54f47a
mov ecx, dword [ebx + 0x5c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
call eax
push eax
lea ecx, [ebp - 0x548]
call fcn.00401210
mov byte [ebp - 4], 2
call fcn.0040c84f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x54f320
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x52c], eax
mov byte [ebp - 4], 3
mov ecx, dword [ebx + 0x5c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
mov esi, dword [ebp - 0x54c]
mov edi, dword [ebp - 0x548]
call eax
add eax, dword [ebp - 0x530]
push esi
push eax
push 4
push edi
lea edx, [ebp - 0x52c]
push 0x5a99b0
push edx
call fcn.00401cf0
mov esi, dword [ebp - 0x52c]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
add esi, 0xfffffff0
add esp, 0x18
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x54f398
cmp eax, dword [esi]
jne 0x54f398
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x54f3d4
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
jne 0x54f3b1
call fcn.00401ae0
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [esi + 0x10]
push edx
lea eax, [eax + eax + 2]
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004ffad4
add esp, 0x10
xor eax, eax
add edi, 0x10
mov edx, 0x128e
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov word [ebp - 0x18], dx
lea edi, [ebx + 8]
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 4
call fcn.00403370
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x54f426
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x54f443
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x548]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x54f469
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc dword [ebp - 0x530]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
jmp 0x54f2e0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x54c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x54f4a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp + 0xc]
xor edx, edx
cmp eax, 0xcea
jne 0x54f4b3
mov edx, 2
jmp 0x54f4bf
cmp eax, 0x1faf
jne 0x54f4bf
mov edx, 1
cmp byte [ebx + 0x75], 0
je 0x54f64d
cmp byte [ebx + 0x74], 0xa
mov dword [ebp - 0x52c], 3
je 0x54f5bd
mov ecx, dword [ebx + 0xc]
sub ecx, dword [ebx + 8]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebx + 0x1c]
sub edx, dword [ebx + 0x18]
sar edx, 2
cmp ecx, edx
je 0x54f5bd
mov eax, dword [ebp - 0x53c]
push eax
mov ecx, 0x98b00
call fcn.00564a20
add esp, 4
cmp eax, 2
jne 0x54f5bd
mov ecx, dword [ebx + 0xc]
sub ecx, dword [ebx + 8]
mov esi, dword [ebx + 0x18]
mov edi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, 0x6db6db6d
imul ecx
sub edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebx + 0x1c]
sub edx, dword [ebx + 0x18]
sar edx, 2
sub ecx, edx
add dword [ebx + 0x58], ecx
cmp esi, dword [ebx + 0x1c]
je 0x54f563
mov eax, dword [esi]
push eax
call edi
add esi, 4
jmp 0x54f554
mov ecx, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x18]
lea eax, [ebx + 0x18]
push ecx
push edx
lea ecx, [ebp - 0x52c]
push ecx
push eax
call fcn.00404480
mov esi, dword [ebx + 8]
mov edi, edi
cmp esi, dword [ebx + 0xc]
je 0x54f58f
mov edx, dword [esi]
push edx
call edi
add esi, 0x1c
jmp 0x54f580
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
lea esi, [ebx + 8]
push eax
push ecx
lea eax, [ebp - 0x52c]
push eax
push esi
call fcn.00403890
push 0x80
mov ecx, esi
call fcn.00403220
mov dword [ebp - 0x52c], 4
push 0x80
lea ecx, [ebx + 0x28]
call fcn.00403bc0
xor ebx, ebx
mov edi, dword [ebp - 0x534]
mov ecx, dword [edi + 0xc]
sub ecx, dword [edi + 8]
lea esi, [edi + 8]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebx, ecx
jb 0x54f696
mov edx, dword [edi + 0x1c]
sub edx, dword [edi + 0x18]
lea eax, [edi + 0x18]
sar edx, 2
cmp ebx, edx
jb 0x54f696
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push ecx
push edx
lea ecx, [ebp - 0x530]
push ecx
push eax
call fcn.00404480
mov byte [edi + 0x75], 0
mov eax, dword [esi + 4]
mov ecx, dword [esi]
push eax
push ecx
lea edx, [ebp - 0x530]
push edx
push esi
call fcn.00403890
push 0x80
mov ecx, esi
call fcn.00403220
mov edx, dword [ebp - 0x52c]
mov esi, dword [ebp + 0x10]
mov ebx, edi
mov bl, byte [ebx + 0x74]
cmp bl, 0xa
je 0x54f65a
cmp bl, 0xc
jne 0x54f65f
mov edx, 4
xor eax, eax
mov edi, 0x9fbf1
mov dword [ebp - 0x540], eax
mov dword [ebp - 0x544], 8
cmp esi, edi
jne 0x54f67f
mov eax, 1
mov ecx, dword [0x5dd548]
test ecx, ecx
jne 0x54f707
xor eax, eax
mov dword [ebp - 0x540], eax
jmp 0x54f970
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 0x1c]
sub eax, ecx
sar eax, 2
cmp eax, ebx
jbe 0x54f6b6
mov edi, dword [ebp - 0x534]
lea ecx, [ecx + ebx*4]
add edi, 0x28
call fcn.00403580
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jae 0x54f701
mov ecx, eax
sub ecx, ebx
dec ecx
cmp eax, ecx
ja 0x54f6e7
push str.invalid_vector_T__subscript
call fcn.0051b845
lea eax, [ecx*8]
sub eax, ecx
lea ecx, [edi + eax*4]
mov edi, dword [ebp - 0x534]
add edi, 0x28
call fcn.00403580
inc ebx
jmp 0x54f5cc
mov eax, dword [eax*4 + 0x5dd9a0]
push edx
lea edx, [ebp - 0x544]
push edx
push eax
call ecx
mov eax, dword [ebp - 0x540]
cmp eax, 2
je 0x54f737
cmp eax, 3
je 0x54f737
cmp eax, 4
je 0x54f737
cmp eax, 5
jne 0x54f970
mov esi, dword [ebp - 0x534]
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
lea ebx, [esi + 0x18]
push eax
push ecx
lea ecx, [ebp - 0x52c]
push ecx
push ebx
call fcn.00404480
mov ecx, dword [esi + 0xc]
sub ecx, dword [esi + 8]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, eax
push eax
mov ecx, ebx
call fcn.00403bc0
mov edi, dword [esi + 8]
mov dword [ebp - 0x530], edi
cmp edi, dword [esi + 0xc]
je 0x54f914
mov eax, dword [ebx + 4]
cmp edi, eax
jae 0x54f83a
mov edx, dword [ebx]
cmp edx, edi
ja 0x54f83a
mov ecx, dword [ebx + 8]
mov esi, edi
sub esi, edx
sar esi, 2
cmp eax, ecx
jne 0x54f7f6
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
jbe 0x54f7c3
push str.vector_T__too_long
call fcn.0051b7f8
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x54f7f6
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x54f7e0
xor ecx, ecx
jmp 0x54f7e2
add ecx, edx
cmp ecx, eax
jae 0x54f7e8
mov ecx, eax
push ecx
mov ecx, ebx
call fcn.00403bc0
mov edi, dword [ebp - 0x530]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
lea esi, [ecx + esi*4]
mov dword [ebp - 0x52c], eax
mov dword [ebp - 0x550], eax
mov byte [ebp - 4], 5
test eax, eax
je 0x54f8fe
mov esi, dword [esi]
jmp 0x54f89f
mov ecx, dword [esi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
jne 0x54f8cd
call fcn.00401ae0
mov ecx, dword [ebx + 8]
cmp eax, ecx
jne 0x54f886
mov edx, dword [ebx]
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
jbe 0x54f859
push str.vector_T__too_long
call fcn.0051b7f8
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x54f886
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x54f876
xor ecx, ecx
jmp 0x54f878
add ecx, edx
cmp ecx, eax
jae 0x54f87e
mov ecx, eax
push ecx
mov ecx, ebx
call fcn.00403bc0
mov eax, dword [ebx + 4]
mov dword [ebp - 0x52c], eax
mov dword [ebp - 0x550], eax
mov byte [ebp - 4], 6
test eax, eax
je 0x54f8fe
mov esi, dword [edi]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi - 4], 0
lea ecx, [esi - 4]
jl 0x54f81d
cmp eax, dword [esi - 0x10]
jne 0x54f81d
lea edi, [esi - 0x10]
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x54f8ed
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov eax, dword [esi - 0xc]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.004ffad4
add esp, 0x10
mov ecx, dword [ebp - 0x52c]
add edi, 0x10
mov dword [ecx], edi
mov edi, dword [ebp - 0x530]
mov esi, dword [ebp - 0x534]
mov byte [ebp - 4], 0
add dword [ebx + 4], 4
add edi, 0x1c
jmp 0x54f77b
mov edi, dword [ebp - 0x534]
lea esi, [edi + 8]
mov byte [edi + 0x75], 1
mov eax, dword [esi + 4]
mov ecx, dword [esi]
push eax
push ecx
lea edx, [ebp - 0x550]
push edx
push esi
call fcn.00403890
push 0x80
mov ecx, esi
call fcn.00403220
mov al, byte [edi + 0x74]
cmp al, 0xa
je 0x54f958
cmp al, 0xb
je 0x54f958
cmp al, 0xc
je 0x54f958
cmp al, 0xd
je 0x54f958
cmp al, 0x94
jne 0x54f962
xor eax, eax
mov dword [ebp - 0x540], eax
jmp 0x54f968
mov eax, dword [ebp - 0x540]
mov esi, dword [ebp + 0x10]
mov edi, 0x9fbf1
inc eax
cmp eax, 6
ja case.default.0x54f97a
jmp dword [eax*4 + 0x54fc68]
mov dword [ebp - 0x538], 2
jmp case.default.0x54f97a
mov eax, dword [ebp - 0x53c]
push eax
push 0x68
lea ecx, [ebp - 0x5e8]
call fcn.00417179
mov edi, vtable.CDlgScanNextPage.0
mov dword [ebp - 0x5e8], edi
lea ecx, [ebp - 0x5e8]
mov byte [ebp - 4], 7
call fcn.00557b10
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x5e8]
mov esi, eax
mov dword [ebp - 0x5e8], edi
call fcn.004170b9
mov dword [ebp - 0x538], esi
jmp case.default.0x54f97a
mov ecx, dword [ebp - 0x53c]
push ecx
lea edx, [ebp - 0x528]
push edx
call fcn.0055faa0
xor eax, eax
mov byte [ebp - 4], 8
mov dword [ebp - 0x418], esi
cmp esi, edi
jne 0x54fa08
mov eax, 1
mov ecx, dword [0x5dd530]
test ecx, ecx
jne 0x54fa16
xor eax, eax
jmp 0x54fa25
mov eax, dword [eax*4 + 0x5dd9a0]
push 0x10002
push eax
call ecx
mov dword [ebp - 0x40c], eax
xor eax, eax
mov dword [ebp - 0x410], 0x1fa8
cmp dword [ebp - 0x418], edi
jne 0x54fa44
mov eax, 1
mov ecx, dword [0x5dd534]
test ecx, ecx
je 0x54faeb
mov edx, dword [eax*4 + 0x5dd9a0]
push 0x1fa8
push 0x10002
push edx
jmp 0x54fae9
mov eax, dword [ebp - 0x53c]
push eax
lea ecx, [ebp - 0x528]
push ecx
call fcn.0055faa0
xor eax, eax
mov byte [ebp - 4], 9
mov dword [ebp - 0x418], esi
cmp esi, edi
jne 0x54fa91
mov eax, 1
mov ecx, dword [0x5dd530]
test ecx, ecx
jne 0x54fa9f
xor eax, eax
jmp 0x54faae
mov edx, dword [eax*4 + 0x5dd9a0]
push 0x10002
push edx
call ecx
mov dword [ebp - 0x40c], eax
xor eax, eax
mov dword [ebp - 0x410], 0x1fa9
cmp dword [ebp - 0x418], edi
jne 0x54facd
mov eax, 1
mov ecx, dword [0x5dd534]
test ecx, ecx
je 0x54faeb
push 0x1fa9
mov eax, dword [eax*4 + 0x5dd9a0]
push 0x10002
push eax
call ecx
lea ecx, [ebp - 0x528]
mov dword [ebp - 0x368], 0x23b3
call fcn.00558ee0
lea ecx, [ebp - 0x528]
mov dword [ebp - 0x538], eax
mov byte [ebp - 4], 0
call fcn.0055f8c0
mov eax, dword [ebp - 0x538]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004ff57c
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp - 0x53c]
push ecx
lea edx, [ebp - 0x528]
push edx
call fcn.0055faa0
xor eax, eax
mov byte [ebp - 4], 0xa
mov dword [ebp - 0x418], esi
cmp esi, edi
jne 0x54fb61
mov eax, 1
mov ecx, dword [0x5dd530]
test ecx, ecx
jne 0x54fb6f
xor eax, eax
jmp 0x54fb7e
mov eax, dword [eax*4 + 0x5dd9a0]
push 0x10002
push eax
call ecx
mov dword [ebp - 0x40c], eax
xor eax, eax
mov dword [ebp - 0x410], 0x1fa6
cmp dword [ebp - 0x418], edi
jne 0x54fb9d
mov eax, 1
mov ecx, dword [0x5dd534]
test ecx, ecx
je 0x54faeb
mov edx, dword [eax*4 + 0x5dd9a0]
push 0x1fa6
push 0x10002
push edx
jmp 0x54fae9
mov eax, dword [ebp - 0x53c]
push eax
lea ecx, [ebp - 0x528]
push ecx
call fcn.0055faa0
xor eax, eax
mov byte [ebp - 4], 0xb
mov dword [ebp - 0x418], esi
cmp esi, edi
jne 0x54fbea
mov eax, 1
mov ecx, dword [0x5dd530]
test ecx, ecx
jne 0x54fbf8
xor eax, eax
jmp 0x54fc07
mov edx, dword [eax*4 + 0x5dd9a0]
push 0x10002
push edx
call ecx
mov dword [ebp - 0x40c], eax
xor eax, eax
mov dword [ebp - 0x410], 0x1fa7
cmp dword [ebp - 0x418], edi
jne 0x54fc26
mov eax, 1
mov ecx, dword [0x5dd534]
test ecx, ecx
je 0x54faeb
push 0x1fa7
jmp 0x54fadc
mov dword [ebp - 0x538], 1
jmp case.default.0x54f97a