Function at 0x4158c0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46d7d8
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push esi
push edi
mov eax, dword [0x495574]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 0x14]
push eax
push 0
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0
push eax
push 0
push str.Languages
push esi
mov dword [ebp - 0x14], 0
call edi
test eax, eax
jne 0x415ad7
cmp dword [ebp - 0x18], 7
jne 0x415ad7
lea ecx, [ebp - 0x44]
call fcn.0043bb76
push 0xffffffffffffffff
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x44]
push dword [ebp - 0x14]
call fcn.0043bcf7
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x40]
push 0
push 0
push str.Languages
push esi
call edi
test eax, eax
je 0x415975
lea ecx, [ebp - 0x44]
xor bl, bl
call fcn.0043bb8d
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x30]
mov ebx, dword [ebp - 0x40]
shr eax, 1
lea esi, [ebx + eax*2]
mov dword [ebp - 0x1c], esi
call fcn.00438075
mov byte [ebp - 4], 1
cmp ebx, esi
jae 0x415aa5
nop word [eax + eax]
cmp word [ebx], 0
je 0x415aa5
sub esi, ebx
sar esi, 1
call fcn.00437bed
mov ecx, eax
test ecx, ecx
je 0x415b02
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x471758
jne 0x415aeb
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea edi, [eax + 0x10]
mov dword [ebp - 0x10], edi
mov byte [ebp - 4], 2
test esi, esi
js 0x415af8
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, esi
or eax, ecx
jge 0x415a03
push esi
lea ecx, [ebp - 0x10]
call fcn.00404670
mov edi, dword [ebp - 0x10]
push esi
push ebx
push edi
call fcn.00455f0d
xor eax, eax
mov word [edi + esi*2], ax
mov eax, dword [ebp - 0x10]
push dword [eax - 8]
push eax
call fcn.004541f2
mov edx, eax
add esp, 0x14
test edx, edx
js 0x415af8
mov ecx, dword [ebp - 0x10]
cmp edx, dword [ecx - 8]
jg 0x415af8
mov dword [ecx - 0xc], edx
xor ecx, ecx
mov eax, dword [ebp - 0x10]
mov word [eax + edx*2], cx
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x28]
lea ecx, [ebp - 0x30]
call fcn.0043833e
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax - 0xc]
mov byte [ebp - 4], 1
lea ebx, [ebx + ecx*2]
lea ecx, [eax - 0x10]
add ebx, 2
or eax, 0xffffffff
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x415a9a
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x415af2
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x415af2
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov esi, dword [ebp - 0x1c]
cmp ebx, esi
jb 0x4159a0
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x30]
push eax
call fcn.00438207
lea ecx, [ebp - 0x30]
mov bl, 1
call fcn.0043808c
lea ecx, [ebp - 0x44]
call fcn.0043bb8d
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call edx
jmp 0x4159d4
mov ecx, edx
call esi
jmp 0x415a9a
push 0x80070057
call fcn.00404830
push 0x80004005
call fcn.00404830
int3