Function at 0x45a510
Capabilities:
Delete registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff44
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0xa0], ebx
mov dword [ebp - 0xbc], ebx
mov dword [ebp - 0x8c], ebx
mov dword [ebp - 0x74], ecx
mov byte [ebp - 1], dl
mov dword [ebp - 8], eax
mov ecx, 0xa
lea eax, [ebp - 0x48]
mov edx, 0x40107c
call fcn.00403980
xor eax, eax
push ebp
push 0x45b271
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0x45b28c
call fcn.00456b58
lea eax, [ebp - 0xa0]
call fcn.0042d868
mov eax, dword [ebp - 0xa0]
call fcn.00407288
mov byte [ebp - 0x75], 1
mov eax, dword [ebp - 8]
mov byte [eax + 0x1c], 0
mov byte [ebp - 0x76], 0
xor eax, eax
mov dword [ebp - 0x7c], eax
xor eax, eax
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 0x20], eax
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0x14], eax
xor edx, edx
push ebp
push 0x45b21c
push dword fs:[edx]
mov dword fs:[edx], esp
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0x7c], eax
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0x1c], eax
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0x18], eax
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0x10], eax
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0x74], 0
je 0x45a623
mov dl, 1
mov eax, 0x452690
call fcn.00402b30
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x80], eax
mov ecx, eax
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 8]
cmp byte [ebp - 1], 0
je 0x45a9c6
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x84], 0
je 0x45a9c6
mov eax, dword [ebp - 0x84]
cmp word [eax + 0x10], 0x80
jne 0x45a9ab
xor edx, edx
push ebp
push 0x45a95c
push dword fs:[edx]
mov dword fs:[edx], esp
push ebp
mov eax, dword [ebp - 0x84]
call fcn.0045a4bc
pop ecx
cmp dword [ebp - 0x3c], 0
je 0x45a6a1
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x7c]
call fcn.0045545c
inc eax
jne 0x45a91d
mov bl, 1
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
test al, 1
je 0x45a6b4
xor ebx, ebx
jmp 0x45a6ba
test al, 2
je 0x45a6ba
mov bl, 2
mov esi, 1
test al, 8
je 0x45a6ca
mov esi, 7
jmp 0x45a6db
test al, 0x10
je 0x45a6d5
mov esi, 3
jmp 0x45a6db
test al, 0x40
je 0x45a6db
xor esi, esi
test al, 4
jne 0x45a803
mov edx, 0x45b2bc
lea eax, [ebp - 0xa0]
call fcn.00403494
lea eax, [ebp - 0xa0]
mov edx, dword [ebp - 0x48]
call fcn.0040357c
mov eax, dword [ebp - 0xa0]
call fcn.00456b58
cmp dword [ebp - 0x44], 0
je 0x45a73b
mov edx, 0x45b2dc
lea eax, [ebp - 0xa0]
call fcn.00403494
lea eax, [ebp - 0xa0]
mov edx, dword [ebp - 0x44]
call fcn.0040357c
mov eax, dword [ebp - 0xa0]
call fcn.00456b58
mov eax, dword [ebp - 0x84]
mov edi, dword [eax + 8]
test edi, 0x20
je 0x45a765
test edi, 0x100
setne al
mov edx, dword [ebp - 0x48]
call fcn.00452100
test al, al
je 0x45a7f4
mov eax, dword [ebp - 0x40]
push eax
push ebx
push esi
push 0x4598c0
lea eax, [ebp - 0x90]
push eax
mov eax, dword [ebp - 0x84]
test byte [eax + 9], 1
setne al
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x48]
call fcn.0045422c
test al, al
jne 0x45a7c1
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
lea edx, [ebp - 0xa8]
xor ecx, ecx
mov eax, 0x45b300
call fcn.00456d64
mov byte [ebp - 0x75], 0
jmp 0x45a90a
cmp bl, 1
jne 0x45a90a
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
lea edx, [ebp - 0xa8]
xor ecx, ecx
mov eax, 0x45b324
call fcn.00456d64
jmp 0x45a90a
mov eax, 0x45b344
call fcn.00456b58
jmp 0x45a90a
mov edx, 0x45b36c
lea eax, [ebp - 0xa0]
call fcn.00403494
lea eax, [ebp - 0xa0]
mov edx, dword [ebp - 0x48]
call fcn.0040357c
mov eax, dword [ebp - 0xa0]
call fcn.00456b58
cmp dword [ebp - 0x44], 0
je 0x45a85b
mov edx, 0x45b394
lea eax, [ebp - 0xa0]
call fcn.00403494
lea eax, [ebp - 0xa0]
mov edx, dword [ebp - 0x44]
call fcn.0040357c
mov eax, dword [ebp - 0xa0]
call fcn.00456b58
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 0x20
je 0x45a877
mov eax, dword [ebp - 0x48]
call fcn.0042cd00
test al, al
je 0x45a900
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 0x80
jne 0x45a885
xor ebx, ebx
mov eax, dword [ebp - 0x40]
push eax
push ebx
push esi
push 0x4598c0
lea eax, [ebp - 0x90]
push eax
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x38]
call fcn.004544ac
test al, al
jne 0x45a8d4
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
lea edx, [ebp - 0xa8]
xor ecx, ecx
mov eax, 0x45b3bc
call fcn.00456d64
mov byte [ebp - 0x75], 0
jmp 0x45a90a
cmp bl, 1
jne 0x45a90a
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
lea edx, [ebp - 0xa8]
xor ecx, ecx
mov eax, 0x45b324
call fcn.00456d64
jmp 0x45a90a
mov eax, 0x45b3e0
call fcn.00456b58
cmp dword [ebp - 0x3c], 0
je 0x45a952
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x7c]
call fcn.00455368
jmp 0x45a952
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0xb8], eax
mov byte [ebp - 0xb4], 0xb
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0xb0], eax
mov byte [ebp - 0xac], 0xb
lea edx, [ebp - 0xb8]
mov ecx, 1
mov eax, 0x45b410
call fcn.00456d64
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45a984
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 8]
call fcn.0045978c
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 8]
jmp 0x45a9b9
mov eax, dword [ebp - 0x84]
mov eax, dword [eax]
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x84], 0
jne 0x45a65c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x84], 0
je 0x45abe4
mov byte [ebp - 0x85], 0
mov eax, dword [ebp - 0x84]
cmp word [eax + 0x10], 0x82
jne 0x45ab99
mov byte [ebp - 0x85], 1
xor edx, edx
push ebp
push 0x45ab71
push dword fs:[edx]
mov dword fs:[edx], esp
push ebp
mov eax, dword [ebp - 0x84]
call fcn.0045a4bc
pop ecx
cmp byte [ebp - 1], 0
jne 0x45aa30
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 1
jne 0x45ab60
cmp byte [ebp - 1], 0
jne 0x45aa3c
cmp dword [ebp - 0x44], 0
jne 0x45aa40
xor eax, eax
jmp 0x45aa42
mov al, 1
mov byte [ebp - 0x86], al
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
test al, 8
setne bl
test bl, bl
je 0x45aa70
test ah, 4
setne dl
mov eax, dword [ebp - 0x48]
call fcn.00459eb8
mov byte [ebp - 0x87], al
jmp 0x45aa77
mov byte [ebp - 0x87], 0
test bl, bl
je 0x45aac9
cmp byte [ebp - 0x87], 0
je 0x45ab67
cmp byte [ebp - 0x86], 0
jne 0x45aac9
mov eax, dword [ebp - 0x84]
test byte [eax + 9], 8
setne al
mov edx, dword [ebp - 0x48]
call fcn.00452100
test al, al
je 0x45aac9
mov eax, dword [ebp - 0x84]
test byte [eax + 9], 2
jne 0x45aac9
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 4]
test al, al
je 0x45ab67
mov byte [ebp - 0x85], 0
cmp byte [ebp - 0x86], 0
jne 0x45ab11
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
test al, 0x10
je 0x45aaf6
push ebp
test ah, 8
setne al
mov edx, dword [ebp - 0x48]
call fcn.00459f74
pop ecx
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
test al, 0x40
je 0x45ab11
test ah, 8
setne al
mov edx, dword [ebp - 0x48]
call fcn.0045a160
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 4
je 0x45ab4a
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0xb
lea edx, [ebp - 0xa8]
xor ecx, ecx
mov eax, 0x45b440
call fcn.00456d64
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
call fcn.00454fb8
mov eax, dword [ebp - 0x84]
test byte [eax + 9], 0x10
je 0x45ab67
mov eax, dword [ebp - 0x38]
call fcn.0045a2f0
jmp 0x45ab67
mov byte [ebp - 0x85], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45ab99
cmp byte [ebp - 0x85], 0
je 0x45abc9
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 8]
call fcn.0045978c
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 8]
jmp 0x45abd7
mov eax, dword [ebp - 0x84]
mov eax, dword [eax]
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x84], 0
jne 0x45a9df
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x84], 0
je 0x45b144
push ebp
mov eax, dword [ebp - 0x84]
call fcn.0045a4bc
pop ecx
xor edx, edx
push ebp
push 0x45b0ea
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x84]
mov bx, word [eax + 0x10]
movzx eax, bx
cmp eax, 0x85
jg 0x45ac83
je 0x45aeb8
cmp eax, 0x81
jg 0x45ac65
je 0x45ad01
dec eax
je 0x45acb4
add eax, 0xfffffff1
sub eax, 2
jb case.0x45ac91.140
sub eax, 0xe
je case.0x45ac91.140
sub eax, 0x60
je case.0x45ac91.140
jmp case.default.0x45ac91
sub eax, 0x82
je 0x45ada1
dec eax
je case.0x45ac91.140
dec eax
je 0x45aea5
jmp case.default.0x45ac91
add eax, 0xffffff7a
cmp eax, 6
ja case.default.0x45ac91
jmp dword [eax*4 + 0x45ac98]
mov edx, 0x45b460
lea eax, [ebp - 0xbc]
call fcn.00403494
lea eax, [ebp - 0xbc]
mov edx, dword [ebp - 0x48]
call fcn.0040357c
mov edx, dword [ebp - 0xbc]
lea ecx, [ebp - 0xa0]
mov al, 0xb6
call fcn.004507b8
mov ecx, dword [ebp - 0xa0]
mov dl, 1
mov eax, 0x4063e0
call fcn.00408bec
call fcn.0040311c
jmp case.0x45ac91.140
cmp byte [ebp - 1], 0
jne 0x45ad17
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 1
jne case.0x45ac91.140
mov eax, dword [ebp - 0x84]
mov ebx, dword [eax + 8]
test bl, 4
setne al
push eax
test bl, 8
setne al
push eax
push 0x459804
push 0x459810
lea eax, [ebp - 0x20]
push eax
test bl, 2
setne cl
test bl, 0x20
setne al
mov edx, dword [ebp - 0x48]
call fcn.0045333c
test al, al
je case.0x45ac91.140
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
test al, 2
je case.0x45ac91.140
test al, 0x10
je case.0x45ac91.140
push 0
mov eax, dword [ebp - 0x70]
push eax
push 1
push 0x10
call sub.shell32.dll_SHChangeNotify
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 0x48]
call fcn.0042c848
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x14]
call fcn.004553bc
jmp case.0x45ac91.140
lea eax, [ebp - 0x8c]
mov edx, dword [ebp - 0x44]
call fcn.00403494
cmp byte [ebp - 1], 0
jne 0x45adbe
cmp dword [ebp - 0x8c], 0
jne 0x45adcc
lea eax, [ebp - 0x8c]
mov edx, dword [ebp - 0x48]
call fcn.00403494
cmp byte [ebp - 1], 0
jne 0x45adde
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 1
jne 0x45ae35
cmp byte [ebp - 1], 0
jne 0x45adf4
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 2
jne case.0x45ac91.140
push ebp
mov eax, dword [ebp - 0x84]
mov ebx, dword [eax + 8]
test bl, 0x80
setne al
push eax
test bh, 1
setne al
push eax
test bl, 0x20
setne cl
test bh, 8
setne dl
mov eax, dword [ebp - 0x8c]
call fcn.00459a74
pop ecx
test al, al
jne case.0x45ac91.140
mov byte [ebp - 0x75], 0
jmp case.0x45ac91.140
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
test al, 8
je 0x45ae50
test ah, 4
setne dl
mov eax, dword [ebp - 0x48]
call fcn.00459eb8
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x48]
call fcn.00403684
je case.0x45ac91.140
push ebp
mov eax, dword [ebp - 0x84]
mov ebx, dword [eax + 8]
test bl, 0x80
setne al
push eax
test bh, 1
setne al
push eax
test bl, 0x20
setne cl
test bh, 8
setne dl
mov eax, dword [ebp - 0x8c]
call fcn.00459a74
pop ecx
test al, al
jne case.0x45ac91.140
mov byte [ebp - 0x75], 0
jmp case.0x45ac91.140
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x44]
call fcn.0042d124
jmp case.0x45ac91.140
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 1
je 0x45aed7
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x44]
call fcn.0042cfcc
test al, al
je case.0x45ac91.140
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x44]
call fcn.0042d170
jmp case.0x45ac91.140
lea ecx, [ebp - 0x98]
lea edx, [ebp - 0x91]
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
call fcn.004594cc
mov ecx, dword [ebp - 0x70]
mov edx, dword [ebp - 0x98]
mov al, byte [ebp - 0x91]
call fcn.0042ddc0
test eax, eax
je case.0x45ac91.140
sub eax, 2
je case.0x45ac91.140
mov byte [ebp - 0x75], 0
jmp case.0x45ac91.140
lea ecx, [ebp - 0x98]
lea edx, [ebp - 0x91]
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
call fcn.004594cc
push 0
push 2
lea eax, [ebp - 0x9c]
push eax
mov ecx, dword [ebp - 0x70]
mov edx, dword [ebp - 0x98]
mov al, byte [ebp - 0x91]
call fcn.0042dd1c
test eax, eax
jne case.0x45ac91.140
push 1
push 0x498b24
push 1
push 0
mov eax, dword [ebp - 0x6c]
push eax
mov eax, dword [ebp - 0x9c]
push eax
call sub.advapi32.dll_RegSetValueExA
test eax, eax
je 0x45af93
mov byte [ebp - 0x75], 0
mov eax, dword [ebp - 0x9c]
push eax
call sub.advapi32.dll_RegCloseKey
jmp case.0x45ac91.140
lea ecx, [ebp - 0x98]
lea edx, [ebp - 0x91]
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
call fcn.004594cc
mov ecx, dword [ebp - 0x70]
mov edx, dword [ebp - 0x98]
mov al, byte [ebp - 0x91]
call fcn.0042df14
test eax, eax
je case.0x45ac91.140
sub eax, 2
je case.0x45ac91.140
sub eax, 0x8f
je case.0x45ac91.140
mov byte [ebp - 0x75], 0
jmp case.0x45ac91.140
lea ecx, [ebp - 0x98]
lea edx, [ebp - 0x91]
mov eax, dword [ebp - 0x84]
mov eax, dword [eax + 8]
call fcn.004594cc
push 0
push 3
lea eax, [ebp - 0x9c]
push eax
mov ecx, dword [ebp - 0x70]
mov edx, dword [ebp - 0x98]
mov al, byte [ebp - 0x91]
call fcn.0042dd1c
test eax, eax
jne case.0x45ac91.140
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x9c]
call fcn.0042dc64
test al, al
je 0x45b062
mov eax, dword [ebp - 0x6c]
push eax
mov eax, dword [ebp - 0x9c]
push eax
call sub.advapi32.dll_RegDeleteValueA
test eax, eax
je 0x45b062
mov byte [ebp - 0x75], 0
mov eax, dword [ebp - 0x9c]
push eax
call sub.advapi32.dll_RegCloseKey
jmp case.0x45ac91.140
mov eax, dword [ebp - 0x84]
test byte [eax + 8], 1
setne dl
mov eax, dword [ebp - 0x48]
call fcn.00459eb8
jmp case.0x45ac91.140
mov byte [ebp - 0x76], 1
jmp case.0x45ac91.140
lea eax, [ebp - 0xbc]
push eax
movzx eax, bx
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
lea edx, [ebp - 0xa8]
xor ecx, ecx
mov eax, 0x45b478
call fcn.004078d4
mov edx, dword [ebp - 0xbc]
lea ecx, [ebp - 0xa0]
mov al, 0xb6
call fcn.004507b8
mov ecx, dword [ebp - 0xa0]
mov dl, 1
mov eax, 0x4063e0
call fcn.00408bec
call fcn.0040311c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45b112
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 8]
call fcn.0045978c
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 8]
cmp dword [ebp - 0x84], 0
jne 0x45abfd
cmp byte [ebp - 0x76], 0
je 0x45b15a
push 0
push 0
push 0
push 0x8000000
call sub.shell32.dll_SHChangeNotify
mov eax, dword [ebp - 8]
test byte [eax + 0x1d], 0x10
je 0x45b168
call fcn.00455194
cmp dword [ebp - 0x74], 0
je 0x45b178
call dword [ebp - 0x74]
push ebp
call fcn.0045a428
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45b226
mov eax, dword [ebp - 0x20]
call fcn.00402b58
mov eax, dword [ebp - 0xc]
call fcn.00402b58
mov eax, dword [ebp - 0x10]
call fcn.00402b58
mov eax, dword [ebp - 0x14]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x45b1fb
inc esi
xor ebx, ebx
lea ecx, [ebp - 0xa0]
mov edx, ebx
mov eax, dword [ebp - 0x14]
call fcn.00455440
mov eax, dword [ebp - 0xa0]
call fcn.0042ccec
test al, al
je 0x45b1f7
push 0
lea ecx, [ebp - 0xa0]
mov edx, ebx
mov eax, dword [ebp - 0x14]
call fcn.00455440
mov eax, dword [ebp - 0xa0]
call fcn.00403738
push eax
push 0x1001
push 0x1000
call sub.shell32.dll_SHChangeNotify
inc ebx
dec esi
jne 0x45b1ab
mov eax, dword [ebp - 0x18]
call fcn.00402b58
mov eax, dword [ebp - 0x1c]
call fcn.00402b58
mov eax, dword [ebp - 0x7c]
call fcn.00402b58
mov eax, dword [ebp - 0x14]
call fcn.00402b58
ret