Function at 0x477ca5
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
sub esp, 0xcd8
lea ebp, [esp - 4]
mov eax, dword [0x590cec]
xor eax, ebp
mov dword [ebp + 0xcd8], eax
push 0x48
mov eax, 0x53675a
call fcn.004f41c4
mov eax, dword [ebp + 0xce8]
mov edi, dword [ebp + 0xce4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xcec]
mov esi, ecx
xor ebx, ebx
lea ecx, [ebp + 0x844]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x24], 1
call fcn.0047017d
lea ecx, [ebp]
mov dword [ebp - 4], ebx
call fcn.004063ed
push 0x22
pop eax
push 0x3fe
mov word [ebp + 0x8d8], ax
lea eax, [ebp + 0x8da]
push ebx
push eax
mov byte [ebp - 4], 1
call fcn.004f42d0
add esp, 0xc
mov ecx, esi
call fcn.00477bf8
test eax, eax
jne 0x477d7d
mov dword [esi + 0x18], 0x13
xor esi, esi
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.004064c1
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 0x844]
call fcn.00470194
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0xcd8]
xor ecx, ebp
call fcn.004f41b5
add ebp, 0xcdc
leave
ret 0xc
push 2
push ebx
push ebx
call dword [esi + 0x228]
mov dword [ebp - 0x1c], eax
cmp eax, ebx
jne 0x477dc4
lea ecx, [ebp + 0x844]
call fcn.0047047e
neg eax
sbb eax, eax
and eax, 0xfffffffd
add eax, 6
mov dword [esi + 0x18], eax
cmp dword [ebp - 0x10], ebx
je 0x47801d
mov ecx, dword [ebp - 0x10]
call fcn.00477863
mov ecx, dword [ebp - 0x10]
call fcn.00477863
jmp 0x477ff5
mov ecx, dword [ebp - 0x10]
cmp ecx, ebx
je 0x477dd0
call fcn.00477863
push edi
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp + 0x8d8]
push eax
call edi
push 0x554c44
lea eax, [ebp + 0x8d8]
push eax
call edi
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp + 0x8d8]
push eax
push ebx
push 3
push 0x10
push 0xf01ff
push str.PIEPR_Loader_Service
mov edi, str.PIEPRLoader
push edi
push dword [ebp - 0x1c]
call dword [esi + 0x224]
mov dword [ebp - 0x18], eax
cmp eax, ebx
jne 0x477f0b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x477e86
lea ecx, [ebp + 0x438]
call fcn.0049722d
push reloc.ast.dll_Ordinal_2
lea ecx, [ebp + 0x438]
mov byte [ebp - 4], 2
call fcn.00497255
push str.SYSTEMCurrentControlSetServicesPIEPRLoader
lea ecx, [ebp + 0x438]
call fcn.0049835b
mov ecx, dword [ebp - 0x10]
mov dword [esi + 0x18], 4
cmp ecx, ebx
je 0x477e72
call fcn.00477863
lea ecx, [ebp + 0x438]
mov byte [ebp - 4], 1
call fcn.00498356
jmp 0x477ff5
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x431
je 0x477eaa
mov dword [esi + 0x18], 4
mov ecx, dword [ebp - 0x10]
cmp ecx, ebx
je 0x478001
jmp 0x477dba
push dword [ebp - 0x1c]
call dword [esi + 0x23c]
push 0xf01ff
push edi
push dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
call dword [esi + 0x220]
mov dword [ebp - 0x18], eax
cmp eax, ebx
jne 0x477ee3
cmp dword [ebp - 0x14], ebx
je 0x477eda
push dword [ebp - 0x14]
call dword [esi + 0x240]
mov dword [esi + 0x18], 5
jmp 0x477e9a
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea ecx, [ebp + 0x8d8]
push ecx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
call dword [esi + 0x244]
cmp dword [ebp - 0x14], ebx
je 0x477f0b
push dword [ebp - 0x14]
call dword [esi + 0x240]
mov edi, dword [ebp - 0x20]
push edi
mov dword [ebp - 0x30], edi
call fcn.004f3730
lea eax, [eax + edi + 1]
pop ecx
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
push eax
push 2
push dword [ebp - 0x18]
call dword [esi + 0x22c]
mov ecx, dword [ebp - 0x10]
test eax, eax
jne 0x477f41
mov dword [esi + 0x18], 7
jmp 0x477e9d
cmp ecx, ebx
je 0x477f4a
call fcn.00477863
lea eax, [ebp - 0x28]
push eax
push 0x24
lea eax, [ebp - 0x54]
push eax
push ebx
push dword [ebp - 0x18]
call dword [esi + 0x238]
test eax, eax
jne 0x477f6e
mov dword [esi + 0x18], 8
jmp 0x477ff5
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x50], 2
mov eax, dword [ebp - 0x3c]
push 0xa
xor edx, edx
pop ecx
div ecx
cmp eax, 0x3e8
jae 0x477f9e
mov eax, 0x7d0
jmp 0x477fa9
mov ecx, 0x2710
cmp eax, ecx
jbe 0x477fa9
mov eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0x28]
push eax
push 0x24
lea eax, [ebp - 0x54]
push eax
push ebx
push dword [ebp - 0x18]
call dword [esi + 0x238]
test eax, eax
je 0x477ff5
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x40], eax
jbe 0x477fdd
call edi
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x14], eax
jmp 0x477fec
cmp dword [ebp - 0x3c], ebx
je 0x477fec
call edi
sub eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x3c]
ja 0x477ff5
cmp dword [ebp - 0x50], 2
je 0x477f86
mov dword [ebp - 0x24], ebx
mov ecx, dword [ebp - 0x10]
cmp ecx, ebx
je 0x478001
call fcn.00477863
cmp dword [ebp - 0x18], ebx
je 0x47800f
push dword [ebp - 0x18]
call dword [esi + 0x230]
cmp dword [ebp - 0x1c], ebx
je 0x47801d
push dword [ebp - 0x1c]
call dword [esi + 0x230]
xor eax, eax
cmp dword [ebp - 0x24], ebx
sete al
mov esi, eax
jmp 0x477d3c