Function at 0x4131f0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44454d
mov eax, dword fs:[0]
push eax
sub esp, 0xbac
mov eax, dword [0x4629b4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 6
push 0
push str.DISPLAY
push 0
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov edi, eax
mov dword [ebp - 0xb58], edi
cmp edi, 0xffffffff
je 0x413ba0
push 0x208
lea eax, [ebp - 0x678]
push 0
push eax
call fcn.0042f620
push 0x400
lea eax, [ebp - 0xa78]
push 0
push eax
call fcn.0042f620
push 0x40
lea eax, [ebp - 0x70]
push 0
push eax
call fcn.0042f620
xor esi, esi
mov dword [ebp - 0xa80], 0
push 0x400
lea eax, [ebp - 0x470]
mov dword [ebp - 0xb30], esi
push esi
push eax
call fcn.0042f620
push 0x100
push esi
push 0x46abdc
call fcn.0042f620
add esp, 0x3c
mov ecx, 0x46b7c4
call fcn.0042b3d0
lea eax, [ebp - 0xab8]
mov dword [ebp - 0xab8], 0x1c
push eax
xorps xmm0, xmm0
mov dword [ebp - 0xb2c], esi
push esi
push edi
movups xmmword [ebp - 0xab4], xmm0
movq qword [ebp - 0xaa4], xmm0
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
cmp eax, 1
jne 0x413b82
nop dword [eax]
push 0xf003f
push 1
push 0
push 1
lea eax, [ebp - 0xab8]
push eax
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov esi, eax
mov dword [ebp - 0xb70], esi
cmp esi, 0xffffffff
je 0x413b57
push 0x400
lea eax, [ebp - 0x470]
push 0
push eax
call fcn.0042f620
add esp, 0xc
mov dword [ebp - 0xa80], 0x400
lea eax, [ebp - 0xa80]
mov ecx, 0x469a38
push eax
lea eax, [ebp - 0x470]
push eax
push 0
push 0
push 0x2a
call fcn.0040df90
mov ecx, eax
call fcn.00409580
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push 0x208
mov esi, eax
mov dword [ebp - 0xa84], 0
lea eax, [ebp - 0x678]
push 0
push eax
call fcn.0042f620
add esp, 0xc
lea eax, [ebp - 0xa84]
push eax
push 0x208
lea eax, [ebp - 0x678]
push eax
lea eax, [ebp - 0xab8]
push eax
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdW]
test esi, esi
jne 0x413b4b
lea ecx, [ebp - 0x470]
mov dword [ebp - 0x18], 0xffffff00
mov eax, dword [ecx]
lea edx, [ebp - 0x18]
mov dword [ebp - 0x14], 0xffffff
cmp eax, dword [edx]
jne 0x413b57
mov eax, dword [ecx + 4]
cmp eax, dword [edx + 4]
jne 0x413b57
mov dl, byte [ebp - 0x468]
xorps xmm0, xmm0
mov cl, byte [ebp - 0x467]
mov al, dl
sar al, 2
and dl, 3
and al, 0x1f
mov byte [ebp - 0xa79], 0
add al, 0x40
movlpd qword [ebp - 0x30], xmm0
mov byte [ebp - 0xa7c], al
add dl, 8
mov al, cl
shl dl, 3
sar al, 5
and cl, 0x1f
and al, 7
add cl, 0x40
add dl, al
mov byte [ebp - 0xa7a], cl
push 3
lea eax, [ebp - 0xa7c]
mov byte [ebp - 0xa7b], dl
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.0040d720
add esp, 0xc
lea eax, [ebp - 0xa7c]
lea ecx, [ebp - 0xba0]
push eax
call fcn.004088c0
lea eax, [ebp - 0xba0]
mov dword [ebp - 4], esi
push eax
lea eax, [ebp - 0xae8]
push eax
call fcn.0040c200
add esp, 8
lea ecx, [ebp - 0xba0]
mov byte [ebp - 4], 2
call fcn.00408900
lea eax, [ebp - 0xae8]
push eax
call fcn.00409000
add esp, 4
lea ecx, [ebp - 0xa9c]
call fcn.004050b0
lea ecx, [ebp - 0xb18]
call fcn.004050b0
push 0x26
mov ecx, 0x46b8a4
mov byte [ebp - 4], 4
call fcn.0040df90
push eax
lea ecx, [ebp - 0xb00]
call fcn.0040aeb0
xor ecx, ecx
mov byte [ebp - 4], 5
lea eax, [ebp - 0x438]
mov dword [ebp - 0xb20], ecx
mov dword [ebp - 0xb1c], eax
cmp word [eax - 2], 0
jne 0x4135fa
cmp byte [eax], 0
jne 0x4135fa
xorps xmm0, xmm0
mov dword [ebp - 0x20], 0
movq qword [ebp - 0x28], xmm0
xor esi, esi
mov word [ebp - 0x1c], 0
jmp 0x413508
mov eax, dword [ebp - 0xb1c]
movsx edi, si
movzx eax, byte [edi + eax + 3]
push eax
call fcn.004348c1
add esp, 4
test eax, eax
je 0x413532
mov eax, dword [ebp - 0xb1c]
inc esi
mov al, byte [edi + eax + 3]
mov byte [ebp + edi - 0x28], al
cmp si, 0xd
jl 0x413502
mov eax, 0xc
nop word [eax + eax]
movsx ecx, ax
cmp byte [ebp + ecx - 0x28], 0x30
jge 0x41355e
cmp ecx, 0xe
jae 0x413bbb
dec eax
mov byte [ebp + ecx - 0x28], 0
test ax, ax
jne 0x413540
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0xbb8]
call fcn.004088c0
lea eax, [ebp - 0xbb8]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0xad0]
push eax
call fcn.0040c200
add esp, 8
lea ecx, [ebp - 0xbb8]
mov byte [ebp - 4], 8
call fcn.00408900
mov eax, dword [ebp - 0xb1c]
movzx eax, byte [eax + 1]
sub eax, 0xfc
je 0x4135cd
sub eax, 2
je 0x4135c5
sub eax, 1
jne 0x4135df
lea eax, [ebp - 0xad0]
push eax
lea ecx, [ebp - 0xb00]
call fcn.004051f0
jmp 0x4135df
lea ecx, [ebp - 0xb18]
jmp 0x4135d3
lea ecx, [ebp - 0xa9c]
lea eax, [ebp - 0xad0]
push eax
call fcn.0040df10
lea ecx, [ebp - 0xad0]
mov byte [ebp - 4], 5
call fcn.004050d0
mov eax, dword [ebp - 0xb1c]
mov ecx, dword [ebp - 0xb20]
inc ecx
add eax, 0x12
mov dword [ebp - 0xb20], ecx
mov dword [ebp - 0xb1c], eax
cmp ecx, 4
jl 0x4134d5
movzx esi, byte [ebp - 0x436]
movzx edi, byte [ebp - 0x433]
mov eax, esi
movzx ecx, byte [ebp - 0x42c]
and eax, 0xf
sub esi, eax
mov edx, ecx
movzx eax, byte [ebp - 0x438]
and edx, 0xf
shl esi, 4
sub ecx, edx
add esi, eax
shl ecx, 4
mov eax, edi
shl edx, 8
and eax, 0xf
sub edi, eax
movzx eax, byte [ebp - 0x435]
shl edi, 4
add edi, eax
movzx eax, byte [ebp - 0x42e]
add ecx, eax
movzx eax, byte [ebp - 0x42d]
add edx, eax
movd xmm2, ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
movzx edx, byte [ebp - 0x45b]
movzx ecx, byte [ebp - 0x45a]
mov dword [ebp - 0xb20], edx
cvtdq2pd xmm2, xmm2
movaps xmm1, xmm0
movsd qword [ebp - 0xb78], xmm0
mulsd xmm1, xmm0
movaps xmm0, xmm2
mulsd xmm0, xmm2
imul ecx, ecx
imul edx, edx
movsd qword [ebp - 0xb80], xmm2
addsd xmm1, xmm0
xorps xmm0, xmm0
add ecx, edx
push ecx
sqrtsd xmm0, xmm1
mulsd xmm0, qword [0x456c50]
movsd qword [ebp - 0xb38], xmm0
call fcn.0040d700
movsd xmm2, qword [ebp - 0xb38]
add esp, 4
fmul qword [0x456c60]
movaps xmm0, xmm2
movsd xmm7, qword [0x4474b8]
addsd xmm0, xmm7
movsd qword [ebp - 0xb28], xmm2
fstp qword [ebp - 0xb60]
movsd xmm6, qword [ebp - 0xb60]
comisd xmm6, xmm0
jbe 0x4137cc
xorps xmm4, xmm4
xorps xmm5, xmm5
cvtsi2sd xmm4, esi
cvtsi2sd xmm5, edi
movaps xmm0, xmm4
xorps xmm3, xmm3
mulsd xmm0, xmm4
movaps xmm1, xmm5
mulsd xmm1, xmm5
addsd xmm1, xmm0
sqrtsd xmm3, xmm1
movaps xmm1, xmm4
movaps xmm0, xmm3
divsd xmm0, xmm6
divsd xmm1, xmm0
xorps xmm0, xmm0
mulsd xmm1, qword [0x456c70]
cvtsi2sd xmm0, dword [ebp - 0xb20]
comisd xmm1, xmm0
jbe 0x413770
subsd xmm2, qword [0x456c58]
jmp 0x413773
movaps xmm2, xmm6
divsd xmm3, xmm2
movaps xmm0, xmm7
movsd qword [ebp - 0xb28], xmm2
divsd xmm0, xmm3
movaps xmm1, xmm4
movsd qword [ebp - 0xb38], xmm2
mulsd xmm1, qword [0x456c78]
mulsd xmm1, xmm0
subsd xmm1, qword [0x4474a8]
movsd qword [ebp - 0xb80], xmm1
movaps xmm1, xmm5
mulsd xmm1, qword [0x456c78]
mulsd xmm1, xmm0
subsd xmm1, qword [0x4474a8]
movsd qword [ebp - 0xb78], xmm1
push 0
lea ecx, [ebp - 0xa9c]
call fcn.0040af80
cmp word [eax], 0
jne 0x4137f1
lea eax, [ebp - 0xb18]
push eax
lea ecx, [ebp - 0xa9c]
call fcn.0040df10
movd xmm0, edi
cvtdq2pd xmm0, xmm0
movzx eax, byte [ebp - 0x459]
add eax, 0x64
movd xmm2, esi
movaps xmm1, xmm0
mulsd xmm1, xmm0
cvtdq2pd xmm2, xmm2
movaps xmm0, xmm2
mulsd xmm0, xmm2
addsd xmm1, xmm0
movsd xmm0, qword [0x4474b8]
divsd xmm0, qword [ebp - 0xb28]
sqrtsd xmm1, xmm1
mulsd xmm1, xmm0
movd xmm0, eax
movzx eax, word [ebp - 0x466]
push eax
cvtdq2ps xmm0, xmm0
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x70]
push str._hs_04X
movsd qword [ebp - 0xb88], xmm1
mulss xmm0, dword [0x456c4c]
push 0xffffffffffffffff
push eax
movss dword [ebp - 0xb20], xmm0
call fcn.0040d4f0
add esp, 0x14
mov ecx, 0x46b8a4
push 0x2c
call fcn.0040df90
mov ecx, eax
call fcn.00409580
push 0x2b
mov ecx, 0x46b8a4
mov dword [ebp - 0xb1c], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
push 0x5f
mov ecx, 0x46b8a4
mov dword [ebp - 0xb3c], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
push 0x5e
mov ecx, 0x46b8a4
mov dword [ebp - 0xb40], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
lea ecx, [ebp - 0xb00]
mov dword [ebp - 0xb44], eax
call fcn.00409580
mov dword [ebp - 0xb48], eax
mov ecx, 0x46b8a4
movzx eax, byte [ebp - 0x45f]
add eax, 0x7c6
mov dword [ebp - 0xb4c], eax
movzx eax, byte [ebp - 0x460]
and eax, 0x7f
push 0x2a
mov dword [ebp - 0xb50], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
lea ecx, [ebp - 0xa9c]
mov dword [ebp - 0xb54], eax
call fcn.00409580
push 0x29
mov ecx, 0x46b8a4
mov dword [ebp - 0xb6c], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
push 0x28
mov ecx, 0x46b8a4
mov dword [ebp - 0xb68], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
lea ecx, [ebp - 0xa9c]
mov dword [ebp - 0xb64], eax
call fcn.00409580
lea ecx, [ebp - 0xae8]
mov dword [ebp - 0xb5c], eax
call fcn.00409580
push 0x27
mov ecx, 0x46b8a4
mov dword [ebp - 0xb24], eax
call fcn.0040df90
mov ecx, eax
call fcn.00409580
movss xmm0, dword [ebp - 0xb20]
lea ecx, [ebp - 0x70]
sub esp, 8
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push dword [ebp - 0xb1c]
movsd xmm0, qword [ebp - 0xb88]
sub esp, 8
movsd qword [esp], xmm0
push dword [ebp - 0xb3c]
movd xmm0, edi
sub esp, 0x10
cvtdq2pd xmm0, xmm0
movsd qword [esp + 8], xmm0
movd xmm0, esi
cvtdq2pd xmm0, xmm0
movsd qword [esp], xmm0
movsd xmm0, qword [ebp - 0xb38]
push 0x454f10
push dword [ebp - 0xb40]
sub esp, 0x18
movsd qword [esp + 0x10], xmm0
movsd xmm0, qword [ebp - 0xb78]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [ebp - 0xb80]
movsd qword [esp], xmm0
push 0x454f18
push dword [ebp - 0xb44]
push dword [ebp - 0xb48]
push dword [ebp - 0xb4c]
push 0x454f1c
push dword [ebp - 0xb50]
push dword [ebp - 0xb54]
push dword [ebp - 0xb6c]
push dword [ebp - 0xb68]
push ecx
push dword [ebp - 0xb64]
push dword [ebp - 0xb5c]
push dword [ebp - 0xb24]
push 0x454f18
push eax
push str._s_s_s__s_n_s_s_n_s_s_n_s_u_s_u_n_s_n_s_s_.f_mm_x__.f_mm___.1f___n_s_s_.f_x__.f_n_s_.f_ppi_n_s_.2f_n_n
lea eax, [ebp - 0xa78]
push 0xffffffffffffffff
push eax
call fcn.0040d510
add esp, 0x90
lea eax, [ebp - 0xa78]
mov ecx, 0x46b7c4
push eax
call fcn.00405200
mov ecx, 0x46b2dc
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x413aa1
sub ecx, edx
sar ecx, 1
je 0x413b12
lea eax, [ebp - 0x678]
push eax
push 0x46b2dc
call fcn.00434438
add esp, 8
test eax, eax
jne 0x413b12
lea ecx, [ebp - 0xa9c]
mov dword [ebp - 0xb30], 1
call fcn.00409580
lea ecx, [ebp - 0xae8]
mov esi, eax
call fcn.00409580
movsd xmm0, qword [ebp - 0xb38]
sub esp, 8
movsd qword [esp], xmm0
push esi
push eax
push str._s__s__.1f_
push 0xffffffffffffffff
push 0x46abdc
call fcn.00401430
add esp, 0x1c
lea ecx, [ebp - 0xb00]
call fcn.004050d0
lea ecx, [ebp - 0xb18]
call fcn.004050d0
lea ecx, [ebp - 0xa9c]
call fcn.004050d0
lea ecx, [ebp - 0xae8]
mov dword [ebp - 4], 0xffffffff
call fcn.004050d0
mov edi, dword [ebp - 0xb58]
push dword [ebp - 0xb70]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0xb2c]
lea ecx, [ebp - 0xab8]
inc eax
push ecx
push eax
push edi
mov dword [ebp - 0xb2c], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
cmp eax, 1
je 0x4132f0
mov esi, dword [ebp - 0xb30]
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
test esi, esi
jne 0x413ba0
push 0x100
push esi
push 0x46b2dc
call fcn.0042f620
add esp, 0xc
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042d960
mov esp, ebp
pop ebp
ret
call fcn.0042dda0
int3