Function at 0x1c3f960
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x28
mov eax, dword [0x1cf3040]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], 0xffffffff
push 0x18
call fcn.01c9515a
add esp, 4
lea esi, [ebp - 0x24]
mov dword [esi], eax
mov dword [esi + 8], 0x8000000c
mov dword [esi + 4], 9
movzx ecx, word [0x1cea8f6]
mov word [eax + 0x10], cx
movups xmm0, xmmword [str.Software_]
movups xmmword [eax], xmm0
mov word [eax + 0x12], 0
mov eax, dword [0x1cf8bf4]
mov eax, dword [eax + 4]
push esi
push 1
push dword [eax + 8]
call fcn.01c35230
add esp, 0xc
movzx eax, byte [esi + 0xb]
mov ebx, 4
mov edi, eax
test al, al
jns 0x1c3f9e3
mov ebx, 0x7fffffff
and ebx, dword [ebp - 0x1c]
dec ebx
mov edi, dword [ebp - 0x20]
mov ecx, ebx
sub ecx, edi
cmp ecx, 9
jae 0x1c3faa8
lea esi, [edi + 9]
mov ecx, esi
sub ecx, ebx
mov edx, 0x7ffffff6
sub edx, ebx
cmp edx, ecx
jb 0x1c3fc07
test al, al
jns 0x1c3fa0f
mov eax, dword [ebp - 0x24]
jmp 0x1c3fa12
lea eax, [ebp - 0x24]
mov dword [ebp - 0x2c], eax
mov ecx, 0x7ffffff7
cmp ebx, 0x3ffffff2
ja 0x1c3fa40
lea eax, [ebx + ebx]
cmp esi, eax
cmova eax, esi
mov ecx, 5
cmp eax, 5
jb 0x1c3fa40
or eax, 3
inc eax
mov ecx, eax
js 0x1c3fc7a
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x30], ecx
lea eax, [ecx + ecx]
push eax
call fcn.01c9515a
add esp, 4
mov esi, eax
test edi, edi
je 0x1c3fa68
lea eax, [edi + edi]
push eax
push dword [ebp - 0x2c]
push esi
call fcn.01c994a0
add esp, 0xc
movzx eax, word [0x1cdf01c]
mov word [esi + edi*2 + 0x10], ax
movups xmm0, xmmword [str.BLBeacon]
movups xmmword [esi + edi*2], xmm0
cmp ebx, 4
je 0x1c3fa8f
push dword [ebp - 0x2c]
call fcn.01c95155
add esp, 4
mov dword [ebp - 0x24], esi
mov eax, dword [ebp - 0x30]
or eax, 0x80000000
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x20], eax
lea eax, [esi + eax*2]
jmp 0x1c3fad5
lea ecx, [edi + 9]
test al, al
jns 0x1c3fab2
mov esi, dword [ebp - 0x24]
movzx eax, word [0x1cdf01c]
mov word [esi + edi*2 + 0x10], ax
movups xmm0, xmmword [str.BLBeacon]
movups xmmword [esi + edi*2], xmm0
js 0x1c3fae5
mov eax, ecx
and al, 0x7f
mov byte [ebp - 0x19], al
lea eax, [esi + ecx*2]
mov word [eax], 0
cmp byte [ebp - 0x19], 0
jns 0x1c3faea
mov eax, dword [ebp - 0x24]
jmp 0x1c3faed
mov dword [ebp - 0x20], ecx
jmp 0x1c3fad2
lea eax, [ebp - 0x24]
lea ecx, [ebp - 0x18]
push ecx
push 3
push eax
push 2
call fcn.01c3fd00
add esp, 0x10
mov ebx, eax
cmp byte [ebp - 0x19], 0
jns 0x1c3fb11
push dword [ebp - 0x24]
call fcn.01c95155
add esp, 4
test bl, bl
je 0x1c3fbfc
lea eax, [ebp - 0x28]
mov dword [eax], 4
push eax
push str.state
push dword [ebp - 0x18]
call fcn.01c3fc80
add esp, 0xc
xor ebx, ebx
test al, al
je 0x1c3fbd6
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x1c3fbd6
cmp eax, 1
jne 0x1c3fc19
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x14], 0
cmp byte [0x1cf7de4], 0
je 0x1c3fc0a
xor ebx, ebx
lea esi, [ebp - 0x24]
mov dword [esi + 4], ebx
mov dword [esi], ebx
push str.failed_count
push esi
call sub.ntdll.dll_RtlInitUnicodeString
mov eax, 4
lea ecx, [ebp - 0x14]
push eax
push ecx
push eax
push ebx
push esi
push edi
call sub.ntdll.dll_NtSetValueKey
test eax, eax
js 0x1c3fbd6
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x14], 2
cmp byte [0x1cf7de4], 0
je 0x1c3fc6b
xor ebx, ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x24], ebx
push str.state
push esi
call sub.ntdll.dll_RtlInitUnicodeString
mov eax, 4
push eax
lea ecx, [ebp - 0x14]
push ecx
push eax
push ebx
push esi
push edi
call sub.ntdll.dll_NtSetValueKey
test eax, eax
setns bl
mov esi, dword [ebp - 0x18]
cmp byte [0x1cf7de4], 0
je 0x1c3fc00
push esi
call sub.ntdll.dll_NtClose
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.01c98173
mov eax, ebx
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
jmp 0x1c3fbe8
call fcn.01c34370
jmp 0x1c3fbe2
int3
call fcn.01c34370
test al, al
jne 0x1c3fb68
jmp 0x1c3fc64
lea esi, [ebp - 0x24]
mov dword [esi], 0
mov edi, str.failed_count
push esi
push edi
push dword [ebp - 0x18]
call fcn.01c3fc80
add esp, 0xc
mov eax, dword [esi]
inc eax
mov dword [esi], eax
push eax
push edi
push dword [ebp - 0x18]
call fcn.01c67e80
add esp, 0xc
cmp dword [esi], 2
jb 0x1c3fc64
mov eax, 3
mov dword [ebp - 0x28], eax
push eax
push str.state
push dword [ebp - 0x18]
call fcn.01c67e80
add esp, 0xc
xor ebx, ebx
jmp 0x1c3fbd6
call fcn.01c34370
test al, al
jne 0x1c3fbab
jmp 0x1c3fc64
int3