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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd0
push ebx
push esi
push edi
mov esi, eax
xor eax, eax
mov dword [esi + 0xf18], eax
xor eax, eax
mov dword [esi + 0xf1c], eax
mov bl, 1
lea eax, [ebp - 4]
push eax
push 0x20019
push 0
push 0x496fec
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x496da4
call fcn.0040a6f0
fstp qword [esi + 0xf00]
wait
call fcn.0040a6f0
fadd dword [0x49700c]
fstp qword [esi + 0xf08]
wait
mov dword [ebp - 0xc], 9
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x2e]
push eax
lea eax, [ebp - 8]
push eax
push 0
push 0x497010
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x496d9b
xor eax, eax
mov al, byte [ebp - 0x2c]
mov ebx, eax
shl ebx, 8
xor eax, eax
mov al, byte [ebp - 0x2b]
add ebx, eax
xor eax, eax
mov al, byte [ebp - 0x28]
mov edi, eax
shl edi, 8
xor eax, eax
mov al, byte [ebp - 0x27]
add edi, eax
xor ecx, ecx
mov cl, byte [ebp - 0x2e]
xor edx, edx
mov dl, byte [ebp - 0x2d]
mov eax, ebx
call fcn.0040a52c
fstp qword [esi + 0xf00]
wait
xor ecx, ecx
mov cl, byte [ebp - 0x2a]
xor edx, edx
mov dl, byte [ebp - 0x29]
mov eax, edi
call fcn.0040a52c
fstp qword [esi + 0xf08]
wait
xor eax, eax
mov al, byte [ebp - 0x26]
mov dword [esi + 0xf1c], eax
xor ebx, ebx
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey_1
test bl, bl
je 0x496eb4
mov dword [esi + 0xf18], 0xe
mov dword [esi + 0xf1c], 0xe
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 4]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push 0x496fec
push 0x80000001
call sub.advapi32.dll_RegCreateKeyExA
test eax, eax
jne 0x496fe2
call fcn.0040a6f0
fadd dword [0x49701c]
fstp qword [esi + 0xf00]
wait
call fcn.0040a6f0
fstp qword [esi + 0xf08]
wait
push dword [esi + 0xf04]
push dword [esi + 0xf00]
lea ecx, [ebp - 0x12]
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x16]
call fcn.0040a6a8
mov al, byte [ebp - 0x12]
mov byte [ebp - 0x2e], al
mov al, byte [ebp - 0x14]
mov byte [ebp - 0x2d], al
movzx eax, word [ebp - 0x16]
mov edx, eax
shr edx, 8
mov byte [ebp - 0x2c], dl
and eax, 0xff
mov byte [ebp - 0x2b], al
push dword [esi + 0xf0c]
push dword [esi + 0xf08]
lea ecx, [ebp - 0x12]
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x16]
call fcn.0040a6a8
mov al, byte [ebp - 0x12]
mov byte [ebp - 0x2a], al
mov al, byte [ebp - 0x14]
mov byte [ebp - 0x29], al
movzx eax, word [ebp - 0x16]
mov edx, eax
shr edx, 8
mov byte [ebp - 0x28], dl
and eax, 0xff
mov byte [ebp - 0x27], al
mov al, byte [esi + 0xf1c]
mov byte [ebp - 0x26], al
push 9
lea eax, [ebp - 0x2e]
push eax
push 3
push 0
push 0x497010
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegSetValueExA
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey_1
mov byte [esi + 0xf20], 1
jmp 0x496fe2
call fcn.0040a6f0
fcomp qword [esi + 0xf08]
fnstsw ax
sahf
jb 0x496eec
call fcn.0040a6f0
fcomp qword [esi + 0xf00]
fnstsw ax
sahf
jae 0x496eec
call fcn.0040a6f0
fsubr qword [esi + 0xf00]
fabs
call fcn.00402b04
mov dword [esi + 0xf18], eax
cmp dword [esi + 0xf18], 0
jle 0x496fe2
cmp dword [esi + 0xf1c], 0
jle 0x496fe2
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 4]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push 0x496fec
push 0x80000001
call sub.advapi32.dll_RegCreateKeyExA
test eax, eax
jne 0x496fe2
call fcn.0040a6f0
fstp qword [esi + 0xf08]
wait
push dword [esi + 0xf04]
push dword [esi + 0xf00]
lea ecx, [ebp - 0x12]
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x16]
call fcn.0040a6a8
mov al, byte [ebp - 0x12]
mov byte [ebp - 0x2e], al
mov al, byte [ebp - 0x14]
mov byte [ebp - 0x2d], al
movzx eax, word [ebp - 0x16]
mov edx, eax
shr edx, 8
mov byte [ebp - 0x2c], dl
and eax, 0xff
mov byte [ebp - 0x2b], al
push dword [esi + 0xf0c]
push dword [esi + 0xf08]
lea ecx, [ebp - 0x12]
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x16]
call fcn.0040a6a8
mov al, byte [ebp - 0x12]
mov byte [ebp - 0x2a], al
mov al, byte [ebp - 0x14]
mov byte [ebp - 0x29], al
movzx eax, word [ebp - 0x16]
mov edx, eax
shr edx, 8
mov byte [ebp - 0x28], dl
and eax, 0xff
mov byte [ebp - 0x27], al
dec dword [esi + 0xf1c]
mov al, byte [esi + 0xf1c]
mov byte [ebp - 0x26], al
push 9
lea eax, [ebp - 0x2e]
push eax
push 3
push 0
push 0x497010
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegSetValueExA
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey_1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret