Function at 0x43c030
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x474fcb
mov eax, dword fs:[0]
push eax
sub esp, 0x244
mov eax, dword [0x4a5010]
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 esi, edx
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x234], ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x220], 0
call fcn.004035d0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x244], edi
mov dword [ebp - 4], 0
call fcn.004035d0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
mov dword [ebp - 0x24c], eax
lea ecx, [eax + 0x10]
mov dword [ebp - 0x250], ecx
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x238], 0
push 0x208
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 2
push 0
push eax
call fcn.00458500
add esp, 0xc
call fcn.0043ba60
mov ecx, 0x600
or ebx, 0xffffffff
cmp ax, cx
jb 0x43c39e
call fcn.0043ba60
mov ecx, 0xa00
cmp ax, cx
jae 0x43c39e
mov dword [ebp - 0x228], 0
lea eax, [ebp - 0x228]
mov byte [ebp - 4], 3
push eax
push str._n_vSN
push 3
push 0
push 0x47e0e0
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jne 0x43c244
call fcn.004035d0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x220], esi
cmp byte [ebp + 0xc], 0
lea ecx, [ebp - 0x240]
mov byte [ebp - 4], 4
je 0x43c20a
mov eax, dword [ebp - 0x234]
sub esp, 0x14
push dword [eax]
push 0x80000000
call fcn.0043d670
test eax, eax
jne 0x43c229
mov eax, dword [ebp - 0x228]
lea edx, [ebp - 0x22c]
push edx
mov edx, dword [ebp - 0x234]
push 1
mov ecx, dword [eax]
push 0
push dword [edx]
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x43c1f4
mov eax, dword [ebp - 0x224]
lea ecx, [ebp - 0x240]
sub esp, 0x14
push dword [eax]
push 0x80000000
call fcn.0043d670
test eax, eax
jne 0x43c229
push 1
push dword [ebp - 0x22c]
lea ecx, [ebp - 0x240]
push str.PreviousRegistration
call fcn.0043d6f0
push dword [ebp - 0x22c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
push dword [ebp - 0x230]
lea ecx, [ebp - 0x220]
call fcn.0041bc30
jmp 0x43c341
mov eax, dword [ebp - 0x224]
push 0x2001f
push dword [eax]
push 0x80000000
call fcn.0043d740
test eax, eax
je 0x43c2c3
mov byte [ebp - 4], 3
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43c244
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x228]
test eax, eax
je 0x43c258
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor esi, esi
mov eax, dword [ebp - 0x240]
test eax, eax
je 0x43c26b
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [ebp - 0x24c]
mov eax, ebx
mov byte [ebp - 4], 0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43c289
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x43c2a5
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
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 - 0x10]
xor ecx, ebp
call fcn.0043f53f
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], 0x208
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x230]
push eax
push 0
push str.PreviousRegistration
push dword [ebp - 0x240]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43c347
mov eax, dword [ebp - 0x230]
cmp eax, 1
je 0x43c309
cmp eax, 2
jne 0x43c347
mov eax, dword [ebp - 0x224]
test eax, eax
je 0x43c326
test al, 1
jne 0x43c347
shr eax, 1
cmp word [ebp + eax*2 - 0x21a], 0
je 0x43c32f
jmp 0x43c347
xor eax, eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x220]
call fcn.00401b40
mov esi, dword [ebp - 0x220]
mov edx, dword [ebp - 0x234]
mov eax, dword [ebp - 0x228]
push 0
push dword [edx]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x18]
or ebx, 0xffffffff
mov byte [ebp - 4], 3
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43c37c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x228]
test eax, eax
je 0x43c694
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, 1
jmp 0x43c25a
sub esp, 0x14
lea ecx, [ebp - 0x240]
cmp byte [ebp + 0xc], 0
je 0x43c550
mov eax, dword [ebp - 0x234]
push dword [eax]
push 0x80000000
call fcn.0043d670
test eax, eax
jne 0x43c258
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], 0x208
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x230]
push eax
push 0
push 0
push dword [ebp - 0x240]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43c471
mov eax, dword [ebp - 0x230]
cmp eax, 1
je 0x43c40e
cmp eax, 2
jne 0x43c471
mov eax, dword [ebp - 0x224]
test eax, eax
je 0x43c42b
test al, 1
jne 0x43c471
shr eax, 1
cmp word [ebp + eax*2 - 0x21a], 0
je 0x43c434
jmp 0x43c471
xor eax, eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x22c]
call fcn.00401980
mov byte [ebp - 4], 5
mov ecx, eax
mov dword [ebp - 0x220], 1
call fcn.00425550
mov ecx, eax
call fcn.004254a0
mov byte [ebp - 0x219], 1
mov eax, dword [eax]
cmp dword [eax - 0xc], 0
jne 0x43c478
mov byte [ebp - 0x219], 0
mov dword [ebp - 4], 2
test byte [ebp - 0x220], 1
je 0x43c4a5
mov edx, dword [ebp - 0x22c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43c4a5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x219], 0
je 0x43c4c6
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x244]
call fcn.00401b40
mov edi, dword [ebp - 0x244]
mov edx, dword [esi]
test edx, edx
je 0x43c258
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x230], eax
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x43c4e0
sub ecx, dword [ebp - 0x230]
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push edx
push 1
push 0
push 0
push dword [ebp - 0x240]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x43c258
sub esp, 0x14
lea ecx, [ebp - 0x240]
push dword [esi]
push 0x80000000
call fcn.0043d670
test eax, eax
jne 0x43c258
push 1
push edi
push str.PreviousRegistration
lea ecx, [ebp - 0x240]
call fcn.0043d6f0
mov esi, 1
jmp 0x43c25a
push dword [esi]
push 0x80000000
call fcn.0043d670
test eax, eax
jne 0x43c258
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x22c], 0x208
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x228]
push eax
push 0
push str.PreviousRegistration
push dword [ebp - 0x240]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43c60d
mov eax, dword [ebp - 0x228]
cmp eax, 1
je 0x43c5aa
cmp eax, 2
jne 0x43c60d
mov eax, dword [ebp - 0x22c]
test eax, eax
je 0x43c5c7
test al, 1
jne 0x43c60d
shr eax, 1
cmp word [ebp + eax*2 - 0x21a], 0
je 0x43c5d0
jmp 0x43c60d
xor eax, eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x248]
call fcn.00401980
mov byte [ebp - 4], 6
mov ecx, eax
mov dword [ebp - 0x220], 2
call fcn.00425550
mov ecx, eax
call fcn.004254a0
mov byte [ebp - 0x219], 1
mov eax, dword [eax]
cmp dword [eax - 0xc], 0
jne 0x43c614
mov byte [ebp - 0x219], 0
mov dword [ebp - 4], 2
test byte [ebp - 0x220], 2
je 0x43c641
mov edx, dword [ebp - 0x248]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43c641
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x219], 0
je 0x43c662
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x244]
call fcn.00401b40
mov edi, dword [ebp - 0x244]
mov eax, dword [ebp - 0x234]
lea ecx, [ebp - 0x240]
sub esp, 0x14
push dword [eax]
push 0x80000000
call fcn.0043d670
test eax, eax
jne 0x43c258
push 1
push edi
push eax
lea ecx, [ebp - 0x240]
call fcn.0043d6f0
mov esi, 1
jmp 0x43c25a