Function at 0x405978
Capabilities:
Delete registry key
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
push edi
xor esi, esi
xor eax, eax
lea edi, [ebp - 0x3a]
mov word [ebp - 0x3c], si
push 4
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
pop edi
lea eax, [ebp - 0x3c]
push eax
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 4], esi
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0xc], edi
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx ecx, word [ebp - 0x3c]
mov eax, ecx
cdq
idiv edi
test edx, edx
jne 0x4059cc
mov eax, ecx
push 0x64
cdq
pop edi
idiv edi
test edx, edx
jne 0x4059e1
mov eax, ecx
mov ecx, 0x190
cdq
idiv ecx
mov dword [ebp - 8], 1
test edx, edx
jne 0x4059e4
mov dword [ebp - 8], esi
movzx esi, word [ebp - 0x3c]
movzx edi, word [ebp - 0x3a]
mov dword [ebp - 0x10], edi
lea ebx, [esi - 1]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x18], eax
mov ax, 2
xor ecx, ecx
cmp ax, word [ebp - 0x3a]
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], ecx
sbb ecx, ecx
push 0x64
neg ecx
inc eax
imul ecx, eax
mov ax, 7
cmp ax, word [ebp - 0x3a]
sbb eax, eax
neg eax
add eax, edi
cdq
sub eax, edx
mov edi, eax
mov eax, ebx
sar edi, 1
sub edi, ecx
mov ecx, 0x190
cdq
idiv ecx
pop ecx
push 4
add edi, eax
lea eax, [esi - 1]
cdq
idiv ecx
pop ecx
push 0
push 0x15180
sub edi, eax
lea eax, [esi - 1]
cdq
imul esi, esi, 0x16d
idiv ecx
add edi, eax
mov eax, dword [ebp - 0x10]
imul eax, eax, 0x1e
add edi, eax
movzx eax, word [ebp - 0x36]
add edi, esi
lea eax, [edi + eax - 0x18c]
cdq
push edx
push eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
call fcn.0040a220
mov ecx, eax
mov esi, edx
movzx eax, word [ebp - 0x34]
imul eax, eax, 0xe10
cdq
add ecx, eax
push 0
movzx eax, word [ebp - 0x32]
adc esi, edx
imul eax, eax, 0x3c
cdq
add ecx, eax
push 0x3e8
movzx eax, word [ebp - 0x30]
adc esi, edx
cdq
add ecx, eax
adc esi, edx
push esi
push ecx
call fcn.0040a220
mov ecx, eax
mov esi, edx
movzx eax, word [ebp - 0x2e]
cdq
add ecx, eax
mov eax, dword [ebp - 0x18]
adc esi, edx
sub ecx, eax
mov eax, dword [ebp - 0x14]
mov edi, closesocket
sbb esi, eax
lea eax, [ebp - 4]
push eax
push str.SOFTWARERepPopup
push edi
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x405b7c
lea eax, [ebp - 0xc]
mov ebx, str.BootTime
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
push ebx
mov dword [ebp - 0xc], 8
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x405b53
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x28]
sub ecx, edx
sbb eax, esi
test eax, eax
jg 0x405b53
jl 0x405b2e
test ecx, ecx
jae 0x405b38
sub edx, dword [ebp - 0x24]
sbb esi, dword [ebp - 0x20]
mov ecx, edx
mov eax, esi
test eax, eax
jg 0x405b53
jl 0x405b46
cmp ecx, 0x7530
ja 0x405b53
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x405b7f
lea eax, [ebp - 0x2c]
push 8
push eax
push 0xb
push 0
push ebx
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push str.SOFTWARERepPopupPage
push edi
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret