Function at 0x54d5bc
Capabilities:
Get common file path
Move file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x63
push 0
push 0
dec ecx
jne 0x54d5c5
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00405bbc
mov eax, dword [ebp - 8]
call fcn.00405bbc
mov eax, dword [ebp - 0xc]
call fcn.00405bbc
mov eax, dword [ebp + 0xc]
call fcn.00405bbc
xor eax, eax
push ebp
push 0x54e0c2
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.0054e1e0
mov ecx, 0x54e0e0
mov dl, 1
mov eax, dword [0x551f78]
call fcn.00551fe0
mov dword [ebp - 0x3c], eax
mov ecx, 0x54e0f8
mov dl, 1
mov eax, dword [0x551f78]
call fcn.00551fe0
mov dword [ebp - 0x38], eax
xor eax, eax
push ebp
push 0x54e078
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0x29], 1
lea eax, [ebp - 0x24]
mov edx, dword [ebp - 8]
call fcn.004057d4
mov edx, dword [ebp - 4]
mov eax, 0x54e108
call fcn.00405d18
mov ebx, eax
test ebx, ebx
jne 0x54d67e
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 4]
call fcn.004057d4
lea eax, [ebp - 0x20]
mov edx, dword [ebp - 4]
call fcn.004057d4
jmp 0x54d6c8
lea eax, [ebp - 0x254]
push eax
mov ecx, ebx
dec ecx
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.00405c34
mov eax, dword [ebp - 0x254]
lea edx, [ebp - 0x1c]
call fcn.0040aa44
lea eax, [ebp - 0x258]
push eax
lea edx, [ebx + 1]
mov ecx, 0x7fffffff
mov eax, dword [ebp - 4]
call fcn.00405c34
mov eax, dword [ebp - 0x258]
lea edx, [ebp - 0x20]
call fcn.0040aa44
mov eax, dword [ebp - 0x1c]
call fcn.00405bcc
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 0x1c]
call fcn.00405bcc
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x20]
call fcn.00405bcc
mov dword [ebp - 0x44], eax
xor ebx, ebx
lea ecx, [ebp - 0x28]
mov edx, ebx
mov eax, dword [ebp - 0x24]
call fcn.00544064
jmp 0x54d95f
mov byte [ebp - 0x3d], 0
lea edx, [ebp - 0x25c]
mov eax, dword [ebp - 0x28]
call fcn.0040b8f4
mov edx, dword [ebp - 0x25c]
lea ecx, [ebp - 0x14]
mov eax, dword [ebp - 0xc]
call fcn.004fe830
lea ecx, [ebp - 0x10]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x28]
call fcn.004fe830
push 0x20
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
call fcn.00537e94
test al, al
je 0x54d82f
mov eax, dword [ebp - 0x38]
call fcn.00552190
test al, al
je 0x54d85a
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
call fcn.004fed0c
test al, al
je 0x54d85a
mov eax, dword [ebp - 0x3c]
call fcn.0054b728
mov byte [ebp - 0x3e], 0
call fcn.005516a0
test al, al
jne 0x54d793
mov byte [ebp - 0x3e], 1
jmp 0x54d7ae
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x14]
call fcn.0054b5d8
test al, al
je 0x54d7ae
mov byte [ebp - 0x3e], 1
cmp byte [ebp - 0x3e], 0
je 0x54d85a
mov eax, dword [ebp - 0x38]
call fcn.005525a8
test al, al
je 0x54d7ef
mov eax, dword [0x55ab88]
mov eax, dword [eax]
call fcn.0047bd68
xor esi, esi
jmp 0x54d7dc
push 0x64
call sub.kernel32.dll_Sleep_2
inc esi
mov eax, dword [ebp - 0x38]
call fcn.00552190
test al, al
je 0x54d85a
cmp esi, 0x64
jl 0x54d7d4
jmp 0x54d85a
lea ecx, [ebp - 0x264]
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
mov edx, 0x54e114
call fcn.00486174
mov ecx, dword [ebp - 0x264]
lea eax, [ebp - 0x260]
mov edx, 0x54e13c
call fcn.00405a54
mov eax, dword [ebp - 0x260]
call fcn.0044d130
jmp 0x54d85a
mov eax, dword [ebp - 0x14]
call fcn.0040b500
test al, al
je 0x54d85a
mov eax, dword [ebp - 0x14]
call fcn.00501408
test al, al
je 0x54d85a
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
call fcn.004feae4
test al, al
jne 0x54d85a
mov byte [ebp - 0x3d], 1
cmp byte [ebp - 0x3d], 0
jne 0x54d8b3
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x268]
call fcn.00405934
mov eax, dword [ebp - 0x268]
push eax
mov eax, dword [ebp - 0x10]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x26c]
call fcn.00405934
mov eax, dword [ebp - 0x26c]
mov cl, 1
pop edx
call fcn.0054446c
test al, al
je 0x54d8b3
push 0x20
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
call fcn.00537e94
test al, al
je 0x54d951
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0xc]
call fcn.00405b64
je 0x54d951
mov eax, dword [ebp + 0xc]
call fcn.0040b524
test al, al
je 0x54d951
lea edx, [ebp - 0x270]
mov eax, dword [ebp - 0x28]
call fcn.0040b8f4
mov edx, dword [ebp - 0x270]
lea ecx, [ebp - 0x14]
mov eax, dword [ebp + 0xc]
call fcn.004fe830
push 0x20
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
mov edi, eax
push edi
call sub.kernel32.dll_SetFileAttributesA
mov edx, edi
lea eax, [ebp - 0x274]
call fcn.00405934
mov eax, dword [ebp - 0x274]
push eax
mov eax, dword [ebp - 0x10]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x278]
call fcn.00405934
mov eax, dword [ebp - 0x278]
mov cl, 1
pop edx
call fcn.0054446c
test al, al
je 0x54d951
push 0x20
push edi
call sub.kernel32.dll_SetFileAttributesA
inc ebx
lea ecx, [ebp - 0x28]
mov edx, ebx
mov eax, dword [ebp - 0x24]
call fcn.00544064
cmp dword [ebp - 0x28], 0
jne 0x54d702
mov eax, dword [ebp - 0x38]
call fcn.005521a4
test al, al
je 0x54d9a9
mov eax, dword [ebp - 0x38]
call fcn.00552774
test al, al
jne 0x54d9a9
lea ecx, [ebp - 0x27c]
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
mov edx, 0x54e14c
call fcn.00486174
mov eax, dword [ebp - 0x27c]
call fcn.0044d130
call fcn.00537e94
test al, al
je 0x54dfc7
xor ebx, ebx
lea ecx, [ebp - 0x18]
mov edx, ebx
mov eax, dword [ebp - 8]
call fcn.00544064
jmp 0x54df7d
lea edx, [ebp - 0x280]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x280]
lea ecx, [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.004fe830
push 0x201
lea eax, [ebp - 0x24d]
push eax
call sub.kernel32.dll_GetSystemDirectoryA
test eax, eax
jbe 0x54da13
lea eax, [ebp - 0x14]
lea edx, [ebp - 0x24d]
mov ecx, 0x201
call fcn.004059ac
jmp 0x54da21
mov byte [ebp - 0x29], 0
call fcn.00405140
jmp 0x54e07f
lea edx, [ebp - 0x288]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x288]
lea ecx, [ebp - 0x284]
mov eax, dword [ebp - 0x14]
call fcn.004fe830
mov edx, dword [ebp - 0x284]
lea eax, [ebp - 0x14]
call fcn.004057d4
push 0x20
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
mov eax, dword [ebp - 0x10]
call fcn.0040b500
test al, al
jne 0x54dc75
push 0x20
lea edx, [ebp - 0x290]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x290]
lea ecx, [ebp - 0x28c]
mov eax, dword [ebp - 0xc]
call fcn.004fe830
mov eax, dword [ebp - 0x28c]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
lea edx, [ebp - 0x29c]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x29c]
lea ecx, [ebp - 0x298]
mov eax, dword [ebp - 0xc]
call fcn.004fe830
mov eax, dword [ebp - 0x298]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x294]
call fcn.00405934
mov eax, dword [ebp - 0x294]
push eax
lea ecx, [ebp - 0x2a4]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x18]
call fcn.004fe830
mov eax, dword [ebp - 0x2a4]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x2a0]
call fcn.00405934
mov eax, dword [ebp - 0x2a0]
mov cl, 1
pop edx
call fcn.0054446c
test al, al
je 0x54db5c
push 0x20
lea edx, [ebp - 0x2ac]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x2ac]
lea ecx, [ebp - 0x2a8]
mov eax, dword [ebp - 0xc]
call fcn.004fe830
mov eax, dword [ebp - 0x2a8]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
call fcn.00537e94
test al, al
je 0x54dc75
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0xc]
call fcn.00405b64
je 0x54dc75
mov eax, dword [ebp + 0xc]
call fcn.0040b524
test al, al
je 0x54dc75
push 0x20
lea edx, [ebp - 0x2b4]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x2b4]
lea ecx, [ebp - 0x2b0]
mov eax, dword [ebp + 0xc]
call fcn.004fe830
mov eax, dword [ebp - 0x2b0]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
lea edx, [ebp - 0x2c0]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x2c0]
lea ecx, [ebp - 0x2bc]
mov eax, dword [ebp + 0xc]
call fcn.004fe830
mov eax, dword [ebp - 0x2bc]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x2b8]
call fcn.00405934
mov eax, dword [ebp - 0x2b8]
push eax
lea ecx, [ebp - 0x2c8]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x18]
call fcn.004fe830
mov eax, dword [ebp - 0x2c8]
call fcn.00405bcc
mov edx, eax
lea eax, [ebp - 0x2c4]
call fcn.00405934
mov eax, dword [ebp - 0x2c4]
mov cl, 1
pop edx
call fcn.0054446c
test al, al
je 0x54dc75
push 0x20
lea edx, [ebp - 0x2d0]
mov eax, dword [ebp - 0x18]
call fcn.0040b8f4
mov edx, dword [ebp - 0x2d0]
lea ecx, [ebp - 0x2cc]
mov eax, dword [ebp + 0xc]
call fcn.004fe830
mov eax, dword [ebp - 0x2cc]
call fcn.00405bcc
push eax
call sub.kernel32.dll_SetFileAttributesA
mov eax, dword [ebp - 0x14]
call fcn.0040b500
test al, al
je 0x54dca4
mov eax, dword [ebp - 0x14]
call fcn.0040b500
test al, al
je 0x54df6f
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
call fcn.004feae4
test al, al
je 0x54df6f
call fcn.00537e94
test al, al
je 0x54dd8b
mov eax, dword [ebp - 0x38]
call fcn.00552190
test al, al
je 0x54dd8b
mov eax, dword [ebp - 0x3c]
call fcn.0054b728
call fcn.005516a0
test al, al
jne 0x54dd26
mov eax, dword [ebp - 0x38]
call fcn.005525a8
test al, al
jne 0x54dd8b
lea eax, [ebp - 0x2d8]
push eax
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
push eax
mov edx, 0x54e114
pop eax
pop ecx
call fcn.00486174
mov ecx, dword [ebp - 0x2d8]
lea eax, [ebp - 0x2d4]
mov edx, 0x54e174
call fcn.00405a54
mov eax, dword [ebp - 0x2d4]
call fcn.0044d130
jmp 0x54dd8b
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x14]
call fcn.0054b5d8
test al, al
je 0x54dd8b
mov eax, dword [ebp - 0x38]
call fcn.005525a8
test al, al
jne 0x54dd8b
lea eax, [ebp - 0x2e0]
push eax
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
push eax
mov edx, 0x54e114
pop eax
pop ecx
call fcn.00486174
mov ecx, dword [ebp - 0x2e0]
lea eax, [ebp - 0x2dc]
mov edx, 0x54e184
call fcn.00405a54
mov eax, dword [ebp - 0x2dc]
call fcn.0044d130
mov eax, dword [0x55ab88]
mov eax, dword [eax]
call fcn.0047bd68
xor eax, eax
mov dword [ebp - 0x34], eax
jmp 0x54dda9
push 0x64
call sub.kernel32.dll_Sleep_2
add dword [ebp - 0x34], 0x64
mov eax, dword [ebp - 0x14]
call fcn.00501408
test al, al
je 0x54ddbe
cmp dword [ebp - 0x34], 0x1388
jb 0x54dd9e
xor esi, esi
xor edi, edi
jmp 0x54ddfb
push 1
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
push eax
mov eax, dword [ebp - 0x10]
call fcn.00405bcc
push eax
call sub.kernel32.dll_MoveFileExA
test eax, eax
jne 0x54ddea
call sub.kernel32.dll_GetLastError_1
mov edi, eax
jmp 0x54ddec
xor edi, edi
test edi, edi
je 0x54ddfa
push 0x3e8
call sub.kernel32.dll_Sleep_2
inc esi
cmp esi, 5
jge 0x54de05
cmp edi, 0x20
je 0x54ddc4
test esi, esi
je 0x54ddc4
test edi, edi
je 0x54df6f
call sub.kernel32.dll_GetLastError_1
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0x20
je 0x54dea5
cmp dword [ebp - 0x30], 5
je 0x54dea5
lea eax, [ebp - 0x2e4]
push eax
lea ecx, [ebp - 0x2e8]
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
mov edx, 0x54e194
call fcn.00486174
mov eax, dword [ebp - 0x2e8]
push eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x300], eax
mov byte [ebp - 0x2fc], 0
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x2f8], eax
mov byte [ebp - 0x2f4], 0xb
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x2f0], eax
mov byte [ebp - 0x2ec], 0xb
lea edx, [ebp - 0x300]
mov ecx, 2
pop eax
call fcn.0040c558
mov eax, dword [ebp - 0x2e4]
call fcn.0044d130
jmp 0x54df6f
mov eax, dword [0x55aa68]
mov byte [eax], 1
mov eax, dword [0x55a660]
cmp byte [eax], 1
je 0x54ded3
mov eax, dword [0x55a660]
cmp byte [eax], 4
jne 0x54decb
mov eax, dword [0x55a660]
mov byte [eax], 5
jmp 0x54ded3
mov eax, dword [0x55a660]
mov byte [eax], 2
push 5
mov eax, dword [ebp - 0x14]
call fcn.00405bcc
push eax
mov eax, dword [ebp - 0x10]
call fcn.00405bcc
push eax
call sub.kernel32.dll_MoveFileExA
test eax, eax
jne 0x54df6f
call sub.kernel32.dll_GetLastError_1
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x304]
push eax
mov edx, 0x54e194
lea ecx, [ebp - 0x308]
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
call fcn.00486174
mov eax, dword [ebp - 0x308]
push eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x300], eax
mov byte [ebp - 0x2fc], 0
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x2f8], eax
mov byte [ebp - 0x2f4], 0xb
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x2f0], eax
mov byte [ebp - 0x2ec], 0xb
lea edx, [ebp - 0x300]
mov ecx, 2
pop eax
call fcn.0040c558
mov eax, dword [ebp - 0x304]
call fcn.0044d130
inc ebx
lea ecx, [ebp - 0x18]
mov edx, ebx
mov eax, dword [ebp - 8]
call fcn.00544064
cmp dword [ebp - 0x18], 0
jne 0x54d9ca
mov eax, dword [ebp - 0x38]
call fcn.005521a4
test al, al
je 0x54dfc7
mov eax, dword [ebp - 0x38]
call fcn.00552774
test al, al
jne 0x54dfc7
mov edx, 0x54e14c
lea ecx, [ebp - 0x30c]
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
call fcn.00486174
mov eax, dword [ebp - 0x30c]
call fcn.0044d130
lea eax, [ebp - 0x4c]
push eax
push 2
push 0
call sub.winspool.drv_AddMonitorA
test eax, eax
jne 0x54e055
call sub.kernel32.dll_GetLastError_1
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0xbbe
je 0x54e055
cmp dword [ebp - 0x30], 0xb7
je 0x54e055
mov byte [ebp - 0x29], 0
cmp dword [ebp - 0x30], 0xbc0
je 0x54e055
lea eax, [ebp - 0x310]
push eax
lea ecx, [ebp - 0x314]
mov eax, dword [0x55a778]
mov eax, dword [eax]
mov eax, dword [eax + 0x360]
mov edx, 0x54e1bc
call fcn.00486174
mov eax, dword [ebp - 0x314]
push eax
call sub.kernel32.dll_GetLastError_1
mov dword [ebp - 0x31c], eax
mov byte [ebp - 0x318], 0
lea edx, [ebp - 0x31c]
xor ecx, ecx
pop eax
call fcn.0040c558
mov eax, dword [ebp - 0x310]
call fcn.0044d130
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x54e07f
mov eax, dword [ebp - 0x38]
call fcn.004047e0
mov eax, dword [ebp - 0x3c]
call fcn.004047e0
call fcn.0054e250
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x54e0c9
lea eax, [ebp - 0x314]
mov edx, 5
call fcn.00405760
lea eax, [ebp - 0x2e8]
mov edx, 0x26
call fcn.00405760
lea eax, [ebp - 0x28]
mov edx, 0xa
call fcn.00405760
lea eax, [ebp + 0xc]
call fcn.0040573c
ret