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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10018371
mov eax, dword fs:[0]
push eax
mov eax, 0x1700
call fcn.10017d10
mov eax, dword [0x10021004]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov esi, dword [ebp + 8]
movzx eax, byte [esi]
cmp eax, 0xc
ja case.0x100028b3.11
jmp dword [eax*4 + 0x10003398]
cmp byte [esi + 1], 0
jne 0x100028ca
call fcn.100033d0
jmp case.0x100028b3.11
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0xbb8
call esi
mov ecx, ebx
call fcn.100033d0
push 0xbb8
call esi
jmp case.0x100028b3.11
call fcn.10003780
mov ecx, ebx
call fcn.10004980
jmp case.0x100028b3.11
push 1
call fcn.10003850
jmp case.0x100028b3.11
push 0
call fcn.10003850
jmp case.0x100028b3.11
lea eax, [esi + 8]
push eax
push dword [esi + 4]
call fcn.10003c40
jmp case.0x100028b3.11
lea eax, [esi + 8]
push eax
push dword [esi + 4]
call fcn.10004120
jmp case.0x100028b3.11
lea eax, [esi + 8]
push eax
push dword [esi + 4]
call fcn.100044d0
jmp case.0x100028b3.11
lea eax, [ebp - 0x1708]
push eax
push 0x102
push 0
push str.SOFTWARE
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push 0x1001ea4c
push dword [ebp - 0x1708]
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
mov eax, dword [ebp + 0xc]
dec eax
push eax
lea eax, [esi + 1]
push eax
push 3
push 0
push 0x1001ea4c
push dword [ebp - 0x1708]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x1708]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x1001ead4
push 2
mov ecx, ebx
call fcn.10003900
jmp case.0x100028b3.11
inc esi
mov dword [ebp - 0x440], 0
mov ecx, esi
mov dword [ebp - 0x43c], 7
xor eax, eax
mov word [ebp - 0x450], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100029d5
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x450]
call fcn.100055b0
mov dword [ebp - 4], 0
mov eax, dword [ebx + 0x10]
test eax, eax
jne 0x10002a5e
mov ecx, ebx
call fcn.10003bd0
mov eax, dword [ebx + 0x10]
test eax, eax
jne 0x10002a5e
push 0x1001ed7c
push 2
mov ecx, ebx
call fcn.10003900
mov edx, dword [ebp - 0x43c]
cmp edx, 8
jb case.0x100028b3.11
mov ecx, dword [ebp - 0x450]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x1000336b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10003393
jmp 0x1000336b
mov ecx, ebx
call fcn.10003bd0
mov edx, esi
lea edi, [edx + 2]
nop word [eax + eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x10002a70
sub edx, edi
sar edx, 1
lea edx, [edx*2 + 2]
test edx, edx
je 0x10002ae5
cmp edx, 0x400
ja 0x10002ae5
push 0
lea ecx, [ebp - 0x16f8]
push ecx
push 0x10
lea ecx, [ebp - 0x430]
push ecx
push edx
push esi
push 0x222140
push dword [eax]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x10002adf
cmp dword [ebp - 0x16f8], 0x10
jne 0x10002ae5
cmp dword [ebp - 0x430], 0
jl 0x10002ae5
mov dword [ebp - 0x16fc], 1
mov dword [ebp - 0x16f8], 0
jmp 0x10002af0
call dword [sym.imp.KERNEL32.dll_GetLastError]
xorps xmm0, xmm0
movlpd qword [ebp - 0x16fc], xmm0
mov eax, dword [ebp - 0x16fc]
mov ecx, ebx
or eax, dword [ebp - 0x16f8]
jne 0x10002b0c
push 0x1001edd0
push 2
jmp 0x10002a16
push 0x1001ede0
push 2
jmp 0x10002a16
lea edi, [esi + 1]
mov dword [ebp - 0x440], 0
mov ecx, edi
mov dword [ebp - 0x43c], 7
xor eax, eax
mov word [ebp - 0x450], ax
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10002b40
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x450]
call fcn.100055b0
mov dword [ebp - 4], 1
mov eax, dword [ebx + 0x10]
test eax, eax
jne 0x10002b7c
mov ecx, ebx
call fcn.10003bd0
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x10002a0d
mov ecx, ebx
call fcn.10003bd0
push edi
mov esi, eax
call fcn.1000c383
add esp, 4
mov dword [ebp - 0x16f8], eax
lea eax, [ebp - 0x1704]
push 0
push eax
push 0x10
lea eax, [ebp - 0x430]
push eax
push 4
lea eax, [ebp - 0x16f8]
push eax
push 0x222144
push dword [esi]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x10002adf
cmp dword [ebp - 0x1704], 0x10
jmp 0x10002abe
push 0x410
lea eax, [ebp - 0x420]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x420]
mov ecx, ebx
push eax
push 0
call fcn.10003c40
lea eax, [ebp - 0x420]
mov ecx, ebx
push eax
push 0
call fcn.100044d0
jmp case.0x100028b3.11
lea eax, [ebp - 0x1700]
push eax
push 0x20119
push 0
push str.SOFTWARE
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x10002c44
push 0x1001ea24
push 2
mov ecx, ebx
call fcn.10003900
jmp 0x10002d21
lea eax, [ebp - 0x16f4]
push eax
push 0
push 0
push 0
push 0x1001ea4c
push dword [ebp - 0x1700]
call edi
test eax, eax
je 0x10002c81
push dword [ebp - 0x1700]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x1001ea5c
push 2
mov ecx, ebx
call fcn.10003900
jmp 0x10002d21
mov eax, dword [ebp - 0x16f4]
inc eax
push eax
call fcn.10006770
mov esi, eax
add esp, 4
test esi, esi
jne 0x10002cb3
push dword [ebp - 0x1700]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x1001ea84
push 2
mov ecx, ebx
call fcn.10003900
jmp 0x10002d21
lea eax, [ebp - 0x16f4]
mov byte [esi], 0xd
push eax
lea eax, [esi + 1]
push eax
push 0
push 0
push 0x1001ea4c
push dword [ebp - 0x1700]
call edi
test eax, eax
je 0x10002cfb
push esi
call fcn.1000676b
add esp, 4
push dword [ebp - 0x1700]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x1001eaac
push 2
mov ecx, ebx
call fcn.10003900
jmp 0x10002d21
mov eax, dword [ebp - 0x16f4]
mov ecx, dword [ebx + 4]
inc eax
push eax
push esi
call fcn.10001bc0
push esi
call fcn.1000676b
add esp, 4
push dword [ebp - 0x1700]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x16f8]
mov dword [ebp - 0x1704], 3
push eax
push 0x20119
push 0
push str.SOFTWARE
push closesocket
mov dword [ebp - 0x170c], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [ebp - 0x170c]
push eax
push 0
lea eax, [ebp - 0x1704]
push eax
push 0
push str.IpDates_info
push dword [ebp - 0x16f8]
call edi
cmp dword [ebp - 0x170c], 0x12a0
je 0x10002d91
push 0x1001eb0c
push 2
mov ecx, ebx
call fcn.10003900
jmp case.0x100028b3.11
lea eax, [ebp - 0x170c]
push eax
lea eax, [ebp - 0x16f0]
push eax
lea eax, [ebp - 0x1704]
push eax
push 0
push str.IpDates_info
push dword [ebp - 0x16f8]
call edi
test eax, eax
je 0x10002dcc
push 0x1001eb34
push 2
mov ecx, ebx
call fcn.10003900
jmp case.0x100028b3.11
xor eax, eax
mov dword [ebp - 0x428], 0
mov dword [ebp - 0x424], 7
mov word [ebp - 0x438], ax
lea eax, [ebp - 0x16d2]
mov dword [ebp - 4], 2
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x10002efe
mov edx, dword [ebp - 0x424]
mov eax, edx
mov ecx, dword [ebp - 0x428]
sub eax, ecx
cmp eax, 3
jb 0x10002e4e
cmp edx, 8
lea esi, [ebp - 0x438]
push 6
cmovae esi, dword [ebp - 0x438]
lea edi, [ecx + 3]
push 0x1001eb5c
mov dword [ebp - 0x428], edi
lea eax, [esi + ecx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10002e6f
push 3
push 0x1001eb5c
mov byte [ebp - 0x16f4], 0
lea ecx, [ebp - 0x438]
push dword [ebp - 0x16f4]
push 3
call fcn.10005f60
lea ecx, [ebp - 0x16d2]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10002e80
mov eax, dword [ebp - 0x424]
sub ecx, edx
mov edx, dword [ebp - 0x428]
sub eax, edx
sar ecx, 1
cmp ecx, eax
ja 0x10002edd
cmp dword [ebp - 0x424], 8
lea eax, [ecx + ecx]
push eax
lea esi, [ebp - 0x438]
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0x16d2]
push eax
lea edi, [edx + ecx]
mov dword [ebp - 0x428], edi
lea eax, [esi + edx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10002efe
push ecx
lea eax, [ebp - 0x16d2]
mov byte [ebp - 0x16f4], 0
push eax
push dword [ebp - 0x16f4]
push ecx
lea ecx, [ebp - 0x438]
call fcn.10005f60
lea eax, [ebp - 0x14d4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x10003004
mov edx, dword [ebp - 0x424]
mov eax, edx
mov ecx, dword [ebp - 0x428]
sub eax, ecx
cmp eax, 7
jb 0x10002f5c
cmp edx, 8
lea esi, [ebp - 0x438]
push 0xe
cmovae esi, dword [ebp - 0x438]
lea edi, [ecx + 7]
push str.__port:
mov dword [ebp - 0x428], edi
lea eax, [esi + ecx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10002f7d
push 7
push str.__port:
mov byte [ebp - 0x16f4], 0
lea ecx, [ebp - 0x438]
push dword [ebp - 0x16f4]
push 7
call fcn.10005f60
lea ecx, [ebp - 0x14d4]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10002f86
mov eax, dword [ebp - 0x424]
sub ecx, edx
mov edx, dword [ebp - 0x428]
sub eax, edx
sar ecx, 1
cmp ecx, eax
ja 0x10002fe3
cmp dword [ebp - 0x424], 8
lea eax, [ecx + ecx]
push eax
lea esi, [ebp - 0x438]
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0x14d4]
push eax
lea edi, [edx + ecx]
mov dword [ebp - 0x428], edi
lea eax, [esi + edx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10003004
push ecx
lea eax, [ebp - 0x14d4]
mov byte [ebp - 0x16f4], 0
push eax
push dword [ebp - 0x16f4]
push ecx
lea ecx, [ebp - 0x438]
call fcn.10005f60
lea eax, [ebp - 0xf9c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x1000310e
mov edx, dword [ebp - 0x424]
mov eax, edx
mov ecx, dword [ebp - 0x428]
sub eax, ecx
cmp eax, 5
jb 0x10003062
cmp edx, 8
lea esi, [ebp - 0x438]
push 0xa
cmovae esi, dword [ebp - 0x438]
lea edi, [ecx + 5]
push 0x1001eb74
mov dword [ebp - 0x428], edi
lea eax, [esi + ecx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10003083
push 5
push 0x1001eb74
mov byte [ebp - 0x16f4], 0
lea ecx, [ebp - 0x438]
push dword [ebp - 0x16f4]
push 5
call fcn.10005f60
lea ecx, [ebp - 0xf9c]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10003090
mov eax, dword [ebp - 0x424]
sub ecx, edx
mov edx, dword [ebp - 0x428]
sub eax, edx
sar ecx, 1
cmp ecx, eax
ja 0x100030ed
cmp dword [ebp - 0x424], 8
lea eax, [ecx + ecx]
push eax
lea esi, [ebp - 0x438]
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0xf9c]
push eax
lea edi, [edx + ecx]
mov dword [ebp - 0x428], edi
lea eax, [esi + edx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x1000310e
push ecx
lea eax, [ebp - 0xf9c]
mov byte [ebp - 0x16f4], 0
push eax
push dword [ebp - 0x16f4]
push ecx
lea ecx, [ebp - 0x438]
call fcn.10005f60
lea eax, [ebp - 0xf38]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x10003214
mov edx, dword [ebp - 0x424]
mov eax, edx
mov ecx, dword [ebp - 0x428]
sub eax, ecx
cmp eax, 5
jb 0x1000316c
cmp edx, 8
lea esi, [ebp - 0x438]
push 0xa
cmovae esi, dword [ebp - 0x438]
lea edi, [ecx + 5]
push 0x1001eb80
mov dword [ebp - 0x428], edi
lea eax, [esi + ecx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x1000318d
push 5
push 0x1001eb80
mov byte [ebp - 0x16f4], 0
lea ecx, [ebp - 0x438]
push dword [ebp - 0x16f4]
push 5
call fcn.10005f60
lea ecx, [ebp - 0xf38]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10003196
mov eax, dword [ebp - 0x424]
sub ecx, edx
mov edx, dword [ebp - 0x428]
sub eax, edx
sar ecx, 1
cmp ecx, eax
ja 0x100031f3
cmp dword [ebp - 0x424], 8
lea eax, [ecx + ecx]
push eax
lea esi, [ebp - 0x438]
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0xf38]
push eax
lea edi, [edx + ecx]
mov dword [ebp - 0x428], edi
lea eax, [esi + edx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10003214
push ecx
lea eax, [ebp - 0xf38]
mov byte [ebp - 0x16f4], 0
push eax
push dword [ebp - 0x16f4]
push ecx
lea ecx, [ebp - 0x438]
call fcn.10005f60
lea eax, [ebp - 0xed4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x1000331e
mov edx, dword [ebp - 0x424]
mov eax, edx
mov ecx, dword [ebp - 0x428]
sub eax, ecx
cmp eax, 5
jb 0x10003272
cmp edx, 8
lea esi, [ebp - 0x438]
push 0xa
cmovae esi, dword [ebp - 0x438]
lea edi, [ecx + 5]
push 0x1001eb8c
mov dword [ebp - 0x428], edi
lea eax, [esi + ecx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x10003293
push 5
push 0x1001eb8c
mov byte [ebp - 0x16f4], 0
lea ecx, [ebp - 0x438]
push dword [ebp - 0x16f4]
push 5
call fcn.10005f60
lea ecx, [ebp - 0xed4]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100032a0
mov eax, dword [ebp - 0x424]
sub ecx, edx
mov edx, dword [ebp - 0x428]
sub eax, edx
sar ecx, 1
cmp ecx, eax
ja 0x100032fd
cmp dword [ebp - 0x424], 8
lea eax, [ecx + ecx]
push eax
lea esi, [ebp - 0x438]
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0xed4]
push eax
lea edi, [edx + ecx]
mov dword [ebp - 0x428], edi
lea eax, [esi + edx*2]
push eax
call fcn.10009500
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x1000331e
push ecx
lea eax, [ebp - 0xed4]
mov byte [ebp - 0x16f4], 0
push eax
push dword [ebp - 0x16f4]
push ecx
lea ecx, [ebp - 0x438]
call fcn.10005f60
cmp dword [ebp - 0x428], 0
mov ecx, ebx
ja 0x10003352
push 0x1001eb98
push 2
call fcn.10003900
mov edx, dword [ebp - 0x424]
cmp edx, 8
jb case.0x100028b3.11
mov ecx, dword [ebp - 0x438]
lea edx, [edx*2 + 2]
jmp 0x10002a37
cmp dword [ebp - 0x424], 8
lea eax, [ebp - 0x438]
cmovae eax, dword [ebp - 0x438]
push eax
push 0
jmp 0x10003330
push edx
push ecx
call fcn.1000673a
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10006729
mov esp, ebp
pop ebp
ret 8
call fcn.1000c566
mov edx, 0xea100028
sub byte [eax], al
adc bl, bh
sub byte [eax], al
adc al, dl
sub eax, dword [eax]
adc byte [edi], al
sub dword [eax], eax
adc byte [ebx], dl
sub dword [eax], eax
adc byte [ecx + ebp], ah
add byte [eax], dl
xor eax, 0x46100029
sub dword [eax], eax
adc byte [edx + 0x18100029], dh
sub eax, dword [eax]
adc byte [ebp + 0x33], dh
add byte [eax], dl
or dword [eax + eax], ebp
adc ah, cl
int3