Function at 0x451350
Capabilities:
Delete file
Get file attributes
Move file
Set file attributes

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffdc4
mov byte [esp + 8], cl
mov dword [esp + 4], edx
mov dword [esp], eax
mov byte [esp + 9], 1
lea eax, [esp + 0x3c]
mov edx, dword [esp]
call fcn.00405c48
lea eax, [esp + 0x3c]
call fcn.00412f30
fadd dword [0x4519b4]
fistp qword [esp + 0x28]
wait
fild qword [esp + 0x28]
fcomp dword [0x4519b8]
fnstsw ax
sahf
jne 0x4513ab
lea edx, [esp + 0x3c]
mov ax, 0xa
call fcn.0040de10
jmp 0x4519a4
lea eax, [esp + 0x3c]
push eax
call sub.kernel32.dll_GetFileAttributesA
mov edx, dword [0x48d498]
mov dword [edx], eax
mov eax, dword [0x48d498]
test byte [eax + 1], 8
jne 0x4513d3
mov eax, dword [0x48d498]
test byte [eax + 1], 0x40
je 0x4513eb
mov ax, 0x2fb
call fcn.0040bc04
mov edx, 3
call fcn.00411d74
jmp 0x4519a4
mov al, byte [esp + 0x3c]
sub al, 0x40
mov byte [esp + 0x34], al
cmp byte [esp + 0x34], 0x20
jle 0x451401
sub byte [esp + 0x34], 0x20
cmp byte [esp + 8], 0
je 0x451448
movsx eax, byte [esp + 0x34]
mov edx, dword [0x48d340]
lea edx, [edx + eax - 1]
lea ecx, [esp + 0x35]
mov al, byte [esp + 0x34]
call fcn.0041ab60
cmp byte [esp + 0x35], 2
jne 0x451448
mov ax, 0x2fb
call fcn.0040bc04
mov edx, 3
call fcn.00411d74
mov byte [esp + 9], 0
jmp 0x4519a4
movsx eax, byte [esp + 0x34]
mov edx, dword [0x48d340]
cmp byte [edx + eax - 1], 0xff
jne 0x4514a8
fild qword [esp + 0x28]
fcomp dword [0x4519bc]
fnstsw ax
sahf
jae 0x4514a8
mov eax, dword [0x48d550]
cmp byte [eax + 0x1830], 0
jne 0x4514a8
mov eax, 0x4519c0
mov edx, 0x33
call fcn.00411d74
mov edx, dword [0x48d91c]
mov dl, byte [edx]
mov ecx, dword [0x48d550]
mov byte [ecx + 0x1830], dl
test al, al
jne 0x4514a8
mov byte [esp + 9], 0
jmp 0x4519a4
mov ax, 0x56
call fcn.0040bc04
mov edx, eax
mov eax, dword [0x48d948]
call fcn.00405c48
lea eax, [esp + 0x3c]
call fcn.0040fb28
mov edx, eax
mov eax, dword [0x48d948]
mov cx, 0x3c
call fcn.00405c80
mov eax, dword [0x48d550]
movzx eax, byte [eax + 0x188c]
lea eax, [eax + eax*4]
mov edx, dword [0x48d4f8]
lea eax, [edx + eax]
push eax
mov eax, dword [0x48d948]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [0x48d948]
xor edx, edx
call fcn.0040e810
fild qword [esp + 0x28]
fcomp dword [0x451a38]
fnstsw ax
sahf
jbe 0x4517d3
push 0x80
lea eax, [esp + 0x40]
push eax
call sub.kernel32.dll_SetFileAttributesA
lea eax, [esp + 0x3c]
mov ecx, 0x8000000
mov edx, 0xc0000000
call fcn.0040eba4
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x451559
call fcn.0040eb04
lea edx, [esp + 0x3c]
mov ax, 1
call fcn.0040de10
jmp 0x4519a4
mov eax, 0xe000
call fcn.004024e8
mov dword [esp + 0x30], eax
mov edx, 0xe000
mov eax, dword [esp + 0x30]
call fcn.00405a9c
mov dword [esp + 0x1c], 0xe000
fild dword [esp + 0x1c]
fild qword [esp + 0x28]
fdivrp st(1)
call fcn.004028ac
mov dword [esp + 0x10], eax
push dword [esp + 0x2c]
push dword [esp + 0x2c]
fild dword [esp + 0x24]
add esp, 0xfffffff8
fistp qword [esp]
wait
call fcn.0040fe38
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], 3
mov ebx, dword [0x48d550]
add ebx, 0x1d7a
mov eax, dword [0x48d97c]
mov dword [esp + 0x38], eax
mov esi, dword [0x48d550]
add esi, 0x1d7e
cmp byte [ebx], 0
je 0x451785
mov eax, dword [0x48d318]
xor edx, edx
mov dword [eax], edx
mov dword [eax + 4], edx
push 0
mov eax, dword [0x48d318]
call fcn.0040fdb8
push eax
mov eax, dword [0x48d318]
push dword [eax + 4]
push dword [eax]
call fcn.0040fdac
push eax
push ebp
call sub.kernel32.dll_SetFilePointer_1
push ebp
call sub.kernel32.dll_FlushFileBuffers
mov eax, dword [0x48d1d8]
mov byte [eax], 0
call fcn.00414c64
cmp byte [ebx], 1
jne 0x451675
xor eax, eax
mov al, byte [ebx + 0x6c]
push eax
mov eax, 0xdfd4
pop edx
mov ecx, edx
xor edx, edx
div ecx
mov edi, eax
test edi, edi
jle 0x45166d
mov dword [esp + 0x14], 1
mov edx, dword [esp + 0x14]
dec edx
xor eax, eax
mov al, byte [ebx + 0x6c]
imul edx, eax
inc edx
mov ecx, dword [esp + 0x30]
lea edx, [ecx + edx - 1]
push eax
mov eax, dword [esp + 0x3c]
pop ecx
call fcn.0040260c
inc dword [esp + 0x14]
dec edi
jne 0x451645
mov dword [esp + 0x1c], 0xdfd4
cmp byte [ebx], 2
jne 0x4516b0
mov dword [esp + 0x14], 1
xor eax, eax
mov al, byte [esi]
inc eax
xor edx, edx
mov dl, byte [esi - 1]
sub eax, edx
call fcn.00402dd8
add al, byte [esi - 1]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
mov byte [edx + ecx - 1], al
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0xe001
jne 0x451682
mov edi, dword [esp + 0x10]
test edi, edi
jle 0x45175b
mov dword [esp + 0xc], 1
mov eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x34]
push eax
push ebp
call sub.kernel32.dll__hwrite
mov eax, dword [esp + 0xc]
mov ecx, 0x14
cdq
idiv ecx
test edx, edx
jne 0x4516ea
push ebp
call sub.kernel32.dll_FlushFileBuffers
mov eax, dword [esp + 0xc]
call fcn.0040fd30
fild dword [esp + 0x1c]
fmulp st(1)
fild qword [esp + 0x28]
fdivp st(1)
fmul dword [0x451a3c]
call fcn.004028a0
mov edx, dword [0x48d1d8]
mov byte [edx], al
mov eax, dword [0x48d1d8]
mov al, byte [eax]
mov edx, dword [0x48d668]
cmp al, byte [edx]
je 0x451728
call fcn.00414c64
call fcn.0040f494
mov eax, dword [0x48d9fc]
cmp byte [eax], 0
je 0x451750
push ebp
call sub.kernel32.dll_CloseHandle_1
mov eax, dword [esp + 0x30]
call fcn.00402508
mov byte [esp + 9], 0
jmp 0x4519a4
inc dword [esp + 0xc]
dec edi
jne 0x4516c4
cmp dword [esp + 0x20], 0
je 0x451785
mov eax, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x34]
push eax
push ebp
call sub.kernel32.dll__hwrite
cmp eax, dword [esp + 0x20]
je 0x451785
lea edx, [esp + 0x3c]
mov ax, 4
call fcn.0040de10
add esi, 2
add dword [esp + 0x38], 0x10
inc ebx
dec dword [esp + 0x18]
jne 0x4515d5
mov eax, dword [0x48d1d8]
mov byte [eax], 0x64
call fcn.00414c64
push ebp
call sub.kernel32.dll_FlushFileBuffers
push ebp
call sub.kernel32.dll_CloseHandle_1
mov eax, dword [esp + 0x30]
call fcn.00402508
call fcn.0040f494
mov eax, dword [0x48d9fc]
cmp byte [eax], 0
je 0x4517d3
mov byte [esp + 9], 0
jmp 0x4519a4
push 0
lea eax, [esp + 0x40]
push eax
call sub.kernel32.dll__lcreat
mov ebp, eax
push ebp
call sub.kernel32.dll_CloseHandle_1
movsx eax, byte [esp + 0x34]
mov edx, dword [0x48d340]
mov al, byte [edx + eax - 1]
cmp al, 1
je 0x451884
movsx edx, byte [esp + 0x34]
mov ecx, dword [0x48d340]
cmp al, 2
je 0x451884
movsx edx, byte [esp + 0x34]
mov ecx, dword [0x48d340]
cmp al, 3
je 0x451884
lea edx, [esp + 0x3c]
lea eax, [esp + 0x13c]
call fcn.00405c48
lea eax, [esp + 0x13c]
mov dl, 0x5c
call fcn.00412f80
jmp 0x451845
mov byte [esp + eax + 0x13c], 0x5f
inc eax
cmp byte [esp + eax + 0x13c], 0
jne 0x45183c
lea eax, [esp + 0x13c]
push eax
lea eax, [esp + 0x40]
push eax
call sub.kernel32.dll_MoveFileA
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x451965
lea edx, [esp + 0x3c]
lea eax, [esp + 0x13c]
call fcn.00405c48
jmp 0x451965
cmp byte [esp + 8], 0
je 0x4518e2
mov edx, dword [esp + 4]
mov al, byte [esp + 0x34]
call fcn.0041cf4c
test al, al
jne 0x4518cb
call fcn.0040eb04
mov ecx, dword [0x48da44]
xor edx, edx
mov al, byte [esp + 0x34]
call fcn.0041ac5c
mov edx, dword [0x48da44]
mov ax, 0xa
call fcn.0040de10
mov byte [esp + 9], 0
jmp 0x4519a4
mov ecx, dword [esp + 4]
mov dl, 1
mov al, byte [esp + 0x34]
call fcn.0042269c
mov dword [esp + 0x24], 0xffffffff
xor ebx, ebx
mov eax, dword [esp + 4]
cmp dword [eax + 0x20], 0
je 0x451906
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x40]
mov ecx, dword [esp + 8]
mov dl, byte [esp + 0x38]
call fcn.0045114c
mov ebx, eax
call fcn.0040f494
mov eax, dword [0x48d9fc]
cmp byte [eax], 0
je 0x45191a
mov byte [esp + 9], 0
test bl, bl
je 0x451955
lea edx, [esp + 0x3c]
lea eax, [esp + 0x13c]
call fcn.00405c48
lea eax, [esp + 0x13c]
mov dl, 0x5c
call fcn.00405e00
inc eax
mov byte [eax], 0
mov eax, dword [0x48cf68]
push eax
lea eax, [esp + 0x140]
push eax
call sub.kernel32.dll_lstrcatA
jmp 0x451965
lea edx, [esp + 0x3c]
lea eax, [esp + 0x13c]
call fcn.00405c48
call fcn.0040eb04
lea eax, [esp + 0x13c]
push eax
call sub.kernel32.dll_DeleteFileA_1
test eax, eax
jne 0x4519a4
call sub.kernel32.dll_GetLastError_1
call fcn.0040f5f0
lea edx, [esp + 0x13c]
mov eax, dword [0x48da44]
xor ecx, ecx
call fcn.00411d84
mov edx, dword [esp]
mov ax, 4
call fcn.0040de10
mov al, byte [esp + 9]
add esp, 0x23c
pop ebp
pop edi
pop esi
pop ebx
ret