Function at 0x10018020
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x1009e0d0]
push esi
mov esi, ecx
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x1a9c]
cmp eax, 5
lea ecx, [eax + 1]
mov dword [esi + 0x1a9c], ecx
jge 0x10018082
mov ecx, esi
call fcn.1000e670
xor eax, eax
mov ecx, esi
mov dword [esi + 0x1a58], eax
mov dword [esi + 0x1a5c], eax
mov dword [esi + 0x1a60], eax
mov dword [esi + 0x1a64], eax
mov dword [esi + 0xadc], eax
call fcn.1000e610
pop esi
mov ecx, dword [ebp - 4]
call fcn.10007179
mov esp, ebp
pop ebp
ret
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [esi + 0x1ad0]
add edx, 0x1f40
xor ebx, ebx
cmp eax, edx
mov dword [ebp - 0x74], eax
jbe 0x1001843e
push ebx
push 0x72
push ebx
mov dword [esi + 0x1ad0], eax
call fcn.10012c80
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x64]
push eax
push 0x100018c0
push 0x80000001
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x68], 0x50
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x64], ebx
call edi
cmp eax, ebx
jne 0x1001814d
mov edx, dword [ebp - 0x64]
lea ecx, [ebp - 0x58]
push ecx
push 0x100018b4
push edx
call edi
cmp eax, ebx
jne 0x10018109
mov ecx, dword [ebp - 0x58]
lea eax, [ebp - 0x60]
push eax
push 0x100018ac
push ecx
call edi
jmp 0x10018121
cmp eax, 2
jne 0x10018121
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x60]
push edx
push 0x100018ac
push eax
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
cmp eax, ebx
jne 0x1001814d
lea ecx, [ebp - 0x68]
push ecx
mov ecx, dword [ebp - 0x60]
lea edx, [ebp - 0x54]
push edx
lea eax, [ebp - 0x78]
push eax
push ebx
push 0x10001a24
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
jne 0x1001814d
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x5c], edx
jmp 0x10018154
mov dword [ebp - 0x5c], 0xffffffff
mov eax, dword [ebp - 0x6c]
cmp eax, ebx
je 0x10018162
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x60]
cmp eax, ebx
je 0x10018170
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x1001817e
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x64]
cmp eax, ebx
je 0x1001818c
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x5c]
mov dword [esi + 0x1a50], eax
mov eax, dword [ebp - 0x70]
cmp eax, ebx
jl 0x100181cd
cmp eax, 4
jg 0x100181cd
push eax
mov ecx, esi
mov dword [esi + 0x63c], 1
mov dword [esi + 0x9a8], eax
call fcn.10017a30
mov eax, dword [esi + 0x1a50]
xor ecx, ecx
cmp eax, 2
sete cl
mov dword [esi + 0x1a4c], ecx
mov edx, dword [esi + 0x9a8]
lea eax, [ebp - 0x5c]
push eax
push 0x100018c0
push 0x80000001
mov dword [ebp - 0x6c], edx
mov dword [ebp - 0x78], 0x50
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], ebx
call edi
cmp eax, ebx
jne 0x10018255
mov edx, dword [ebp - 0x5c]
lea ecx, [ebp - 0x60]
push ecx
push 0x100018b4
push edx
call edi
cmp eax, ebx
jne 0x10018221
mov ecx, dword [ebp - 0x60]
lea eax, [ebp - 0x58]
push eax
push 0x100018ac
push ecx
call edi
jmp 0x10018239
cmp eax, 2
jne 0x10018239
mov eax, dword [ebp - 0x60]
lea edx, [ebp - 0x58]
push edx
push 0x100018ac
push eax
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
cmp eax, ebx
jne 0x10018255
mov edx, dword [ebp - 0x58]
push 4
lea ecx, [ebp - 0x6c]
push ecx
push 4
push ebx
push 0x10001a64
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [ebp - 0x68]
cmp eax, ebx
je 0x10018263
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x10018271
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x60]
cmp eax, ebx
je 0x1001827f
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x5c]
cmp eax, ebx
je 0x1001828d
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x5c]
push eax
push 0x100018c0
push 0x80000001
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x6c], 0x50
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], ebx
call edi
cmp eax, ebx
jne 0x1001831f
mov edx, dword [ebp - 0x5c]
lea ecx, [ebp - 0x60]
push ecx
push 0x100018b4
push edx
call edi
cmp eax, ebx
jne 0x100182db
mov ecx, dword [ebp - 0x60]
lea eax, [ebp - 0x58]
push eax
push 0x100018ac
push ecx
call edi
jmp 0x100182f3
cmp eax, 2
jne 0x100182f3
mov eax, dword [ebp - 0x60]
lea edx, [ebp - 0x58]
push edx
push 0x100018ac
push eax
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
cmp eax, ebx
jne 0x1001831f
lea ecx, [ebp - 0x6c]
push ecx
mov ecx, dword [ebp - 0x58]
lea edx, [ebp - 0x54]
push edx
lea eax, [ebp - 0x7c]
push eax
push ebx
push 0x10001a14
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
jne 0x1001831f
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x64], edx
jmp 0x10018326
mov dword [ebp - 0x64], 0xffffffff
mov eax, dword [ebp - 0x68]
cmp eax, ebx
je 0x10018334
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x10018342
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x60]
cmp eax, ebx
je 0x10018350
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x5c]
cmp eax, ebx
je 0x1001835e
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x64]
lea ecx, [ebp - 0x5c]
push ecx
push 0x100018c0
push 0x80000001
mov dword [esi + 0x1ad4], eax
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x6c], 0x50
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], ebx
call edi
cmp eax, ebx
jne 0x100183f9
mov eax, dword [ebp - 0x5c]
lea edx, [ebp - 0x60]
push edx
push 0x100018b4
push eax
call edi
cmp eax, ebx
jne 0x100183b5
mov edx, dword [ebp - 0x60]
lea ecx, [ebp - 0x58]
push ecx
push 0x100018ac
push edx
call edi
jmp 0x100183cd
cmp eax, 2
jne 0x100183cd
mov ecx, dword [ebp - 0x60]
lea eax, [ebp - 0x58]
push eax
push 0x100018ac
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
cmp eax, ebx
jne 0x100183f9
lea edx, [ebp - 0x6c]
push edx
mov edx, dword [ebp - 0x58]
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x7c]
push ecx
push ebx
push 0x10001a00
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
jne 0x100183f9
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x64], eax
jmp 0x10018400
mov dword [ebp - 0x64], 0xffffffff
mov eax, dword [ebp - 0x68]
cmp eax, ebx
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
je 0x10018410
push eax
call edi
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x1001841a
push eax
call edi
mov eax, dword [ebp - 0x60]
cmp eax, ebx
je 0x10018424
push eax
call edi
mov eax, dword [ebp - 0x5c]
cmp eax, ebx
je 0x1001842e
push eax
call edi
mov ecx, dword [ebp - 0x64]
mov dword [esi + 0x1ad8], ecx
mov ecx, esi
call fcn.10012bb0
cmp dword [esi + 0x1a4c], ebx
je 0x100188df
call fcn.10067fa0
test eax, eax
je 0x10018455
emms
mov ecx, esi
call fcn.1000e670
mov edi, dword [esi + 0x528]
mov ecx, dword [esi + 0x1ae0]
mov eax, dword [esi + 0x1a58]
xor edx, edx
cmp edi, ebx
mov edi, dword [esi + 0x9a8]
sete dl
cmp ecx, ebx
mov dword [ebp - 0x5c], eax
lea edx, [edx + edx + 2]
mov dword [ebp - 0x58], edx
jne 0x100184b7
mov ecx, dword [esi + 0x1a94]
mov edx, eax
sub edx, dword [esi + ecx*4 + 0x1a70]
lea ecx, [esi + ecx*4 + 0x1a70]
add dword [esi + 0x1a90], edx
mov dword [ecx], eax
mov eax, dword [esi + 0x1a94]
inc eax
and eax, 7
mov dword [esi + 0x1a94], eax
mov eax, dword [esi + 0x1a90]
sar eax, 3
mov dword [ebp - 0x64], eax
cmp dword [esi + 0x604], ebx
je 0x10018525
cmp dword [esi + 0x1adc], ebx
jne 0x10018525
cmp dword [esi + 0xa0], 1
jne 0x100184ef
fild qword [esi + 0x1a58]
fmul dword [esi + 0x1ae4]
call fcn.1009bae0
jmp 0x100184f5
mov eax, dword [esi + 0x1a58]
mov ecx, dword [esi + 0x1b10]
mov ebx, dword [esi + ecx*4 + 0x1aec]
lea ecx, [esi + ecx*4 + 0x1aec]
mov edx, eax
sub edx, ebx
add dword [esi + 0x1b0c], edx
mov dword [ecx], eax
mov eax, dword [esi + 0x1b10]
inc eax
and eax, 7
mov dword [esi + 0x1b10], eax
mov ecx, dword [esi + 0x1a9c]
mov ebx, dword [esi + 0x1a60]
push 0x10001e20
push ecx
push 0
push 0x10001e1f
push 5
mov ecx, esi
mov dword [ebp - 0x70], ebx
call fcn.10015180
mov edx, dword [ebp - 0x5c]
push 0x10001e20
push edx
push 0
push 0x10001fa0
push 5
mov ecx, esi
call fcn.10015180
mov eax, dword [ebp - 0x64]
push 0x10001e20
push eax
push 0
push 0x10001f94
push 5
mov ecx, esi
call fcn.10015180
mov ecx, dword [esi + 0x9a8]
push 0x10001f90
push ecx
push 0
push 0x10001f84
push 5
mov ecx, esi
call fcn.10015180
push 0x10001ce4
push ebx
push 0
push 0x10001f80
push 5
mov ecx, esi
call fcn.10015180
mov eax, dword [ebp - 0x5c]
sub eax, ebx
mov ebx, dword [esi + 0xadc]
test ebx, ebx
mov dword [ebp - 0x68], eax
jle 0x10018654
mov ecx, dword [esi + 0x1aa0]
add ecx, ebx
test edi, edi
mov dword [esi + 0x1aa0], ecx
jle 0x10018622
dec edi
test edi, edi
jle 0x100185dc
dec edi
fild dword [esi + 0x1aa4]
fmul qword [0x10001ea0]
call fcn.1009bae0
mov dword [ebp - 0x6c], eax
fild dword [ebp - 0x6c]
mov dword [esi + 0x1aa4], eax
fmul qword [0x10001ea0]
call fcn.1009bae0
push 0x10001f74
push ebx
push 0
push 0x10001f50
push 2
mov ecx, esi
mov dword [esi + 0x1aa8], eax
call fcn.10015180
jmp 0x10018635
mov edx, dword [ebp - 0x74]
mov dword [esi + 0x1acc], edx
mov dword [esi + 0x1ac0], 0
test edi, edi
jle 0x1001864a
mov eax, dword [esi + edi*4 + 0x1aac]
cmp eax, dword [esi + edi*4 + 0x1ab0]
jne 0x1001864a
dec edi
mov dword [esi + 0xadc], 0
mov ebx, dword [esi + 0x9e4]
test ebx, ebx
jl 0x100186a4
cmp ebx, edi
jge 0x100186a4
fild dword [esi + 0x1aa4]
mov edi, ebx
fld qword [0x10001f48]
fmul st(1)
call fcn.1009bae0
fmul qword [0x10001eb8]
mov dword [esi + 0x1aa8], eax
call fcn.1009bae0
push 0x10001ce4
push ebx
push 0
push 0x10001f24
push 2
mov ecx, esi
mov dword [esi + 0x1aa4], eax
call fcn.10015180
test edi, edi
jle 0x100186e8
mov ebx, dword [esi + 0x1aa4]
lea edx, [esi + edi*4 + 0x1aac]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x68]
add ecx, eax
cmp ecx, ebx
jle 0x100186e8
cmp dword [esi + 0x1a98], 7
jle 0x100186d9
sub eax, dword [ebp - 0x70]
add eax, dword [ebp - 0x64]
mov ebx, dword [esi + 0x1aa4]
cmp eax, ebx
jg 0x100186e0
lea eax, [ebx + ebx]
cmp ecx, eax
jle 0x100186e8
dec edi
sub edx, 4
test edi, edi
jg 0x100186b5
mov eax, dword [esi + 0x9a8]
cmp edi, eax
jne 0x100187ca
cmp edi, dword [ebp - 0x58]
jge 0x100187c2
mov ecx, dword [esi + 0x1adc]
test ecx, ecx
jne 0x100187c2
mov eax, dword [esi + 0x1acc]
mov ecx, dword [ebp - 0x74]
mov ebx, dword [esi + edi*4 + 0x1aac]
sub ecx, eax
mov eax, dword [esi + edi*4 + 0x1ab0]
lea edx, [edi + 1]
sub eax, ebx
cmp edi, 3
mov dword [ebp - 0x70], 1
jge 0x1001875f
mov ebx, dword [esi + 0x1ac4]
sar ebx, 1
cmp eax, ebx
jg 0x1001875f
cmp edx, dword [ebp - 0x58]
jge 0x1001875f
mov eax, dword [esi + edi*4 + 0x1ab4]
mov edx, dword [esi + edi*4 + 0x1aac]
mov dword [ebp - 0x70], 2
sub eax, edx
mov ebx, dword [ebp - 0x5c]
mov edx, dword [esi + 0x1aa8]
add ebx, eax
cmp ebx, edx
jge 0x100187ab
mov ebx, dword [ebp - 0x64]
add eax, ebx
cmp eax, edx
jge 0x100187ab
cmp ecx, dword [edi*4 + 0x10001f10]
ja 0x1001878e
mov eax, dword [esi + 0x9a8]
cmp eax, dword [esi + 0x1ac0]
jge 0x100187ab
add edi, dword [ebp - 0x70]
mov edx, dword [ebp - 0x58]
cmp ecx, dword [edx*4 + 0x10001f10]
jbe 0x100187ab
mov eax, dword [ebp - 0x74]
add eax, 0xfffffe0c
mov dword [esi + 0x1acc], eax
mov eax, dword [esi + 0x9a8]
mov ecx, dword [esi + 0x1ac0]
cmp eax, ecx
jge 0x100187c2
dec ecx
mov dword [esi + 0x1ac0], ecx
cmp edi, eax
je 0x100188b8
push 0x10001d00
push eax
xor ebx, ebx
push ebx
push 0x10001efc
push 2
mov ecx, esi
call fcn.10015180
push 0x10001d00
push edi
push ebx
push 0x10001da8
push 2
mov ecx, esi
call fcn.10015180
mov ecx, dword [esi + 0x1a9c]
push 0x10001da4
push ecx
push ebx
push 0x10001da0
push 2
mov ecx, esi
call fcn.10015180
mov edx, dword [edi*4 + 0x10001ee8]
mov ecx, dword [esi + 0x9a8]
and edx, 1
mov dword [esi + 0x1b88], edx
mov eax, dword [edi*4 + 0x10001ee8]
shr eax, 1
and eax, 1
mov dword [esi + 0x1b8c], eax
mov eax, dword [edi*4 + 0x10001ee8]
mov edx, dword [ecx*4 + 0x10001ee8]
and eax, 4
and edx, 4
cmp edx, eax
je 0x1001885f
xor ecx, ecx
cmp eax, 4
sete cl
push ecx
call fcn.1006fc60
mov eax, dword [esi + 0x9a8]
cmp edi, eax
jge 0x1001889a
cmp edi, ebx
mov ecx, dword [ebp - 0x74]
mov dword [esi + 0x1acc], ecx
jle 0x1001888c
mov edx, dword [edi*4 + 0x10001f10]
sub edx, dword [eax*4 + 0x10001f10]
add edx, ecx
mov dword [esi + 0x1acc], edx
cmp dword [esi + 0x1ac0], ebx
jg 0x1001889a
mov dword [esi + 0x1ac0], eax
cmp edi, 0xffffffff
mov dword [esi + 0x9a8], edi
mov dword [esi + 0x1a98], ebx
jl 0x100188c0
cmp edi, 4
jg 0x100188c0
mov dword [0x1009e378], edi
jmp 0x100188c0
inc dword [esi + 0x1a98]
xor ebx, ebx
mov ecx, esi
mov dword [esi + 0x1a58], ebx
mov dword [esi + 0x1a5c], ebx
mov dword [esi + 0x1a60], ebx
mov dword [esi + 0x1a64], ebx
call fcn.1000e610
mov ecx, dword [ebp - 4]
pop edi
pop ebx
pop esi
call fcn.10007179
mov esp, ebp
pop ebp
ret