Function at 0x4128ab
Capabilities:
Query or enumerate registry value

Disassembly:
mov edx, dword [0x4423a0]
sub esp, 0x6c0
add edx, 0x87c
push ebx
push ebp
push edi
mov ebp, ecx
lea ecx, [esp + 0x24]
push 2
sub ecx, edx
pop edi
movzx eax, word [edx]
mov word [ecx + edx], ax
add edx, edi
test ax, ax
jne 0x4128cb
lea ecx, [esp + 0x24]
call fcn.0040a4a5
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x18]
call fcn.0040b2d2
push ecx
push 0x4368b0
mov edx, 0x439444
lea ecx, [esp + 0x1c]
call fcn.0040b945
lea ecx, [esp + 0x14]
call fcn.0040b37e
lea edx, [esp + 0x24]
sub edx, eax
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, edi
test cx, cx
jne 0x412913
push 1
lea eax, [esp + 0x28]
push str.xxxxxxxxxx
push eax
call fcn.0041f183
add esp, 0xc
xor ebx, ebx
test eax, eax
je 0x412b18
mov ecx, 0x442394
call fcn.0040b37e
lea edx, [esp + 0xa8]
sub edx, eax
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, edi
test cx, cx
jne 0x412952
push esi
lea ecx, [esp + 0xac]
call fcn.0040755f
mov esi, ebp
mov ax, word [ebp]
add ebp, edi
cmp ax, bx
jne 0x41296f
lea edi, [esp + 0xac]
sub ebp, esi
sub edi, 2
mov ax, word [edi + 2]
add edi, 2
cmp ax, bx
jne 0x412986
mov ecx, ebp
lea edx, [esp + 0x54]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ecx
lea ecx, [esp + 0xb0]
call fcn.00411f0c
pop ecx
pop esi
test eax, eax
je 0x412b18
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x14]
call fcn.0040b2d2
push ecx
push 0x4368b0
mov edx, 0x439444
lea ecx, [esp + 0x18]
call fcn.0040b945
lea ecx, [esp + 0x10]
call fcn.0040b37e
lea edx, [esp + 0x50]
sub edx, eax
movzx ecx, word [eax]
mov word [edx + eax], cx
lea eax, [eax + 2]
test cx, cx
jne 0x4129ec
push 1
lea eax, [esp + 0x54]
push str.xxxxxxxxxx
push eax
call fcn.0041f183
add esp, 0xc
test eax, eax
je 0x412b0f
push 6
lea eax, [esp + 0x2e]
push eax
lea eax, [esp + 0x5e]
push eax
call fcn.0041f183
add esp, 0xc
test eax, eax
jns 0x412b0f
push 0x104
lea eax, [esp + 0x2b8]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x4c0]
xor edx, edx
push ebx
push eax
lea ecx, [esp + 0x2bc]
call fcn.004011c8
lea eax, [esp + 0x4c8]
push eax
push str.SOFTWAREPC_SOFTWINDEV23.0APPLI
lea eax, [esp + 0x28]
push str._s_s
push eax
call fcn.00402d4f
add esp, 0x18
mov dword [esp + 0xc], ebx
lea eax, [esp + 0xc]
lea ecx, [esp + 0x18]
push eax
push 1
push ebx
call fcn.0040b37e
push eax
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x412b03
push 0x2a
pop eax
push eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x80]
push ebx
push eax
call fcn.0041b200
add esp, 0xc
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0x28]
push eax
push ebx
push str.LAST_FRAMEWORK
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x412af9
lea eax, [esp + 0x7c]
push eax
lea eax, [esp + 0x2e]
push eax
call fcn.0041c2a7
mov ebx, eax
neg ebx
pop ecx
sbb ebx, ebx
pop ecx
inc ebx
push dword [esp + 0xc]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x18]
call fcn.0040b313
xor ebx, 1
lea ecx, [esp + 0x10]
call fcn.0040b313
lea ecx, [esp + 0x14]
call fcn.0040b313
pop edi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x6c0
ret