Function at 0x404fb0
Capabilities:
Delete file
Get file size

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56ee58
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push esi
push edi
mov eax, dword [0x5d5ff0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, edx
mov dword [ebp - 0x10], ebx
mov edi, ecx
mov dword [ebp - 0x24], edi
test edi, edi
je 0x40522a
push 0
push SysReAllocStringLen
push 3
push 0
push 3
push 0x40000000
xorps xmm0, xmm0
push edi
movq qword [ebp - 0x30], xmm0
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x14], eax
cmp eax, 0xffffffff
je 0x4051b9
lea ecx, [ebp - 0x30]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x2c]
test esi, esi
jne 0x405034
test edi, edi
je 0x405143
cmp byte [0x5d6cc0], 0
xorps xmm0, xmm0
movlpd qword [ebp - 0x20], xmm0
je 0x405143
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
cmp ebx, edi
ja 0x405140
jb 0x405064
cmp eax, esi
jae 0x405140
sub esi, eax
sbb edi, ebx
jne 0x405072
cmp esi, 0x10000
jbe 0x405079
mov esi, 0x10000
xor edi, edi
mov edx, dword [ebp + 8]
push ecx
mov ecx, dword [ebp - 0x14]
push 0
push esi
call fcn.00404e70
add esp, 0xc
test al, al
je 0x4050ae
mov eax, dword [ebp - 0x1c]
add eax, esi
mov dword [ebp - 0x1c], eax
adc ebx, edi
cmp byte [0x5d6cc0], 0
je 0x405140
mov edi, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
jmp 0x405052
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, dword [ebp - 0x24]
lea ecx, [ebp - 0x20]
push edi
mov esi, eax
call fcn.00404100
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x10]
lea eax, [ebp - 0x20]
mov dword [ebp - 4], 0
push eax
mov edi, dword [esi]
mov ebx, dword [edi + 4]
push ebx
push edi
call fcn.00403600
mov edx, eax
mov ecx, 0xffffffe
mov eax, dword [esi + 4]
sub ecx, eax
cmp ecx, 1
jae 0x4050fa
push str.list_T__too_long
call fcn.00549348
inc eax
mov dword [ebp - 4], 0xffffffff
mov dword [esi + 4], eax
or eax, 0xffffffff
mov dword [edi + 4], edx
mov dword [ebx], edx
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x405125
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp - 0x10]
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x24]
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x40522a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
lea ecx, [ebp - 0x28]
mov esi, eax
call fcn.00404100
mov dword [ebp - 0x24], esi
mov dword [ebp - 4], 1
lea eax, [ebp - 0x28]
mov esi, dword [ebx]
push eax
mov edi, dword [esi + 4]
push edi
push esi
call fcn.00403600
mov edx, eax
mov ecx, 0xffffffe
mov eax, dword [ebx + 4]
sub ecx, eax
cmp ecx, 1
jae 0x4051a4
push str.list_T__too_long
call fcn.00549348
inc eax
mov dword [ebp - 4], 0xffffffff
mov dword [ebx + 4], eax
mov dword [esi + 4], edx
mov dword [edi], edx
mov edx, dword [ebp - 0x28]
jmp 0x405212
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
lea ecx, [ebp - 0x18]
mov esi, eax
call fcn.00404100
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], 2
lea eax, [ebp - 0x18]
mov esi, dword [ebx]
push eax
mov edi, dword [esi + 4]
push edi
push esi
call fcn.00403600
mov edx, eax
mov ecx, 0xffffffe
mov eax, dword [ebx + 4]
sub ecx, eax
cmp ecx, 1
jae 0x4051ff
push str.list_T__too_long
call fcn.00549348
inc eax
mov dword [ebp - 4], 0xffffffff
mov dword [ebx + 4], eax
mov dword [esi + 4], edx
mov dword [edi], edx
mov edx, dword [ebp - 0x18]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40522a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret