Function at 0x10017ba0
Capabilities:
Query or enumerate registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x1009e0d0]
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov esi, ecx
call fcn.10067fa0
test eax, eax
je 0x10017bc0
emms
xor ebx, ebx
mov dword [esi + 0x1a4c], 1
mov dword [esi + 0x1a58], ebx
mov dword [esi + 0x1a5c], ebx
mov dword [esi + 0x1a60], ebx
mov dword [esi + 0x1a64], ebx
mov dword [esi + 0x1a68], ebx
mov dword [esi + 0x1a6c], ebx
mov dword [esi + 0x1a9c], ebx
mov dword [esi + 0xadc], ebx
mov dword [esi + 0x1aa0], ebx
mov dword [esi + 0x1ac0], 0xffffffff
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x1ad0], eax
mov dword [esi + 0x1acc], eax
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x10017c32
mov dword [esi + 0x1a4c], ebx
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x70]
push ebx
push 0x3e8
push ecx
push edx
call fcn.1009bc60
fld qword [esi + 0x1b78]
fcomp qword [0x10001ab0]
mov dword [esi + 0x1ac4], eax
fnstsw ax
test ah, 0x41
jne 0x10017c66
fld qword [esi + 0x1b78]
jmp 0x10017c6c
fld qword [0x100017a8]
fild qword [ebp - 0x70]
fxch st(1)
fdivp st(1)
fmul dword [0x100016e8]
call fcn.1009bae0
mov ecx, dword [esi + 0x60]
mov dword [esi + 0x1aa4], eax
mov eax, dword [esi + 0x5c]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x60], ecx
call fcn.10068280
cmp eax, 0x64
mov dword [ebp - 0x68], eax
jge 0x10017ca4
mov dword [ebp - 0x68], 0x4b0
fild dword [ebp - 0x5c]
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
lea edx, [ebp - 0x5c]
push edx
fmul qword [0x10001ee0]
push 0x100018c0
fild dword [esi + 0x1ac4]
push 0x80000001
mov dword [ebp - 0x78], ebx
fmul qword [0x10001ed8]
mov dword [ebp - 0x74], 0x50
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x58], ebx
fmulp st(1)
fild dword [ebp - 0x68]
mov dword [ebp - 0x5c], ebx
fdivr qword [0x10001ed0]
fmulp st(1)
fild dword [ebp - 0x60]
mov dword [ebp - 0x60], ebx
fmul qword [0x10001ec8]
fmulp st(1)
fstp dword [esi + 0x1ac8]
call edi
cmp eax, ebx
jne 0x10017d6c
mov ecx, dword [ebp - 0x5c]
lea eax, [ebp - 0x60]
push eax
push 0x100018b4
push ecx
call edi
cmp eax, ebx
jne 0x10017d2b
mov eax, dword [ebp - 0x60]
lea edx, [ebp - 0x58]
push edx
push 0x100018ac
push eax
call edi
jmp 0x10017d43
cmp eax, 2
jne 0x10017d43
mov edx, dword [ebp - 0x60]
lea ecx, [ebp - 0x58]
push ecx
push 0x100018ac
push edx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
cmp eax, ebx
jne 0x10017d6c
lea eax, [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x58]
lea ecx, [ebp - 0x54]
push ecx
lea edx, [ebp - 0x7c]
push edx
push ebx
push 0x10001a24
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
jne 0x10017d6c
mov edi, dword [ebp - 0x54]
jmp 0x10017d6f
or edi, 0xffffffff
mov eax, dword [ebp - 0x64]
cmp eax, ebx
je 0x10017d7d
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x10017d8b
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x60]
cmp eax, ebx
je 0x10017d99
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x5c]
cmp eax, ebx
je 0x10017da7
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp edi, ebx
mov dword [esi + 0x1a50], edi
mov dword [esi + 0x1a54], 0xffffffff
jne 0x10017dc3
mov dword [esi + 0x1a4c], ebx
jmp 0x10017dee
cmp edi, 0xf
jle 0x10017dee
sar edi, 4
and edi, 0xffff
mov dword [ebp - 0x64], edi
fild dword [ebp - 0x64]
fmul qword [0x10001ec0]
fimul dword [esi + 0x1aa4]
call fcn.1009bae0
mov dword [esi + 0x1aa4], eax
mov dword [ebp - 0x58], ebx
call fcn.10067fa0
test eax, eax
je 0x10017e01
mov dword [ebp - 0x58], 1
call fcn.10067fc0
test eax, eax
je 0x10017e11
mov dword [ebp - 0x58], 2
call fcn.10067fe0
test eax, eax
je 0x10017e21
mov dword [ebp - 0x58], 3
mov eax, dword [ebp - 0x58]
sub eax, ebx
je 0x10017e55
dec eax
je 0x10017e47
sub eax, 2
jne 0x10017e6c
cmp dword [ebp - 0x68], 0x79e
jle 0x10017e6c
fild dword [esi + 0x1aa4]
fmul qword [0x10001eb8]
jmp 0x10017e61
fild dword [esi + 0x1aa4]
fmul qword [0x10001eb0]
jmp 0x10017e61
fild dword [esi + 0x1aa4]
fmul qword [0x10001ea8]
call fcn.1009bae0
mov dword [esi + 0x1aa4], eax
fild dword [esi + 0x1aa4]
fmul qword [0x10001ea0]
call fcn.1009bae0
mov dword [esi + 0x1aa8], eax
mov dword [esi + 0x1a94], ebx
mov eax, 8
mov edi, edi
mov ecx, dword [esi + 0x1a94]
mov edx, dword [esi + 0x1aa4]
mov dword [esi + ecx*4 + 0x1a70], edx
mov ecx, dword [esi + 0x1a94]
mov edx, dword [esi + 0x1aa4]
mov dword [esi + ecx*4 + 0x1aec], edx
mov edx, dword [esi + 0x1a94]
inc edx
mov ecx, edx
cmp ecx, eax
mov dword [esi + 0x1a94], edx
jl 0x10017e90
mov eax, dword [esi + 0x1aa4]
push ebx
push ebx
push ebx
shl eax, 3
push 0x10001e78
push 2
mov ecx, esi
mov dword [esi + 0x1b0c], eax
mov dword [esi + 0x1a90], eax
mov dword [esi + 0x1b10], ebx
mov dword [esi + 0x1a94], ebx
call fcn.10015180
mov ecx, 0xffffe554
sub ecx, esi
lea edi, [esi + 0x1aac]
mov dword [ebp - 0x64], ecx
jmp 0x10017f10
mov ecx, dword [ebp - 0x64]
mov eax, dword [esi + 0x528]
test eax, eax
mov eax, 0x10001e64
jne 0x10017f24
mov eax, 0x10001e50
add ecx, edi
fld dword [ecx + eax]
fmul dword [esi + 0x1ac8]
call fcn.1009bae0
mov dword [ebp - 0x5c], eax
mov dword [edi], eax
mov eax, dword [ebp - 0x58]
sub eax, 0
je 0x10017f6d
dec eax
je 0x10017f62
sub eax, 2
jne 0x10017f7d
cmp dword [ebp - 0x68], 0x640
jle 0x10017f7d
cmp ebx, 3
jge 0x10017f7d
fild dword [ebp - 0x5c]
fmul qword [0x10001e48]
jmp 0x10017f76
fild dword [ebp - 0x5c]
fmul qword [0x10001e40]
jmp 0x10017f76
fild dword [ebp - 0x5c]
fmul qword [0x10001e38]
call fcn.1009bae0
mov dword [edi], eax
cmp dword [esi + 0x264], 1
jbe 0x10017fa6
cmp ebx, 2
jg 0x10017f93
fld qword [0x10001e30]
jmp 0x10017f99
fld qword [0x10001e28]
fild dword [edi]
fdiv st(1)
call fcn.1009bae0
fstp st(0)
mov dword [edi], eax
mov eax, dword [edi]
push 0x10001e20
push eax
push 0
push 0x10001e1f
push 2
mov ecx, esi
call fcn.10015180
inc ebx
add edi, 4
cmp ebx, 5
jl 0x10017f0d
mov ecx, dword [esi + 0x1aa4]
push 0x10001e1c
push ecx
push 0
push 0x10001dfc
push 2
mov ecx, esi
call fcn.10015180
mov eax, dword [ebp - 0x58]
mov edx, dword [eax*4 + 0x1009f840]
push 0x10001df8
push eax
push 0
push edx
push 2
mov ecx, esi
call fcn.10015180
mov ecx, esi
call fcn.10015420
mov ecx, dword [ebp - 4]
pop edi
pop esi
pop ebx
call fcn.10007179
mov esp, ebp
pop ebp
ret