Function at 0x599754
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff5a8
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0xa58], edx
mov dword [ebp - 0xa54], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x599b41
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x30], 0xff
mov eax, dword [ebp - 0x30]
dec eax
mov dword [ebp - 0x2c], eax
mov edx, 0x599b54
lea eax, [ebp - 0xa40]
call fcn.004233d4
xor edx, edx
mov eax, 9
call fcn.00599668
mov ebx, eax
push 1
mov eax, 0x599b64
mov dword [ebp - 0xa50], eax
mov byte [ebp - 0xa4c], 0x11
movzx eax, bx
mov dword [ebp - 0xa48], eax
mov byte [ebp - 0xa44], 0
lea ecx, [ebp - 0xa50]
mov edx, 0x599bd0
lea eax, [ebp - 0x836]
call fcn.00423928
lea eax, [ebp - 0xc]
push eax
push 0x20019
push 0
lea eax, [ebp - 0x836]
push eax
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExW_1
mov ebx, eax
test ebx, ebx
je 0x599813
mov dword [ebp - 8], 0xffffffff
jmp 0x599aef
xor eax, eax
mov dword [ebp - 8], eax
lea eax, [ebp - 0x14]
push eax
push 0
lea eax, [ebp - 0x10]
push eax
push 0
push 0x599be0
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExW_1
mov ebx, eax
test ebx, ebx
je 0x599844
mov dword [ebp - 8], 0xfffffffe
jmp 0x599aef
mov eax, dword [ebp - 0x14]
call fcn.004048c8
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
xor ecx, ecx
mov edx, dword [ebp - 0x14]
call fcn.004053d4
lea eax, [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0x599be0
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExW_1
mov esi, dword [ebp - 0x18]
xor edi, edi
jmp 0x599923
cmp esi, dword [ebp - 0x18]
jbe 0x59989d
mov ebx, esi
sub ebx, 4
jmp 0x599891
sub ebx, 2
movzx eax, word [ebx]
call fcn.00599738
test al, al
jne 0x59988e
mov edx, 0x599bf4
mov eax, esi
call fcn.004235d4
test eax, eax
jne 0x5998d3
mov ebx, esi
sub ebx, 4
jmp 0x5998b7
sub ebx, 2
movzx eax, word [ebx]
call fcn.00599738
test al, al
jne 0x5998b4
lea edx, [ebx + 2]
lea eax, [ebp - 0x836]
call fcn.0042340c
jmp 0x599917
mov edx, 0x599c04
mov eax, esi
call fcn.004235d4
test eax, eax
jne 0x599917
mov ebx, esi
sub ebx, 4
jmp 0x5998ed
sub ebx, 2
movzx eax, word [ebx]
call fcn.00599738
test al, al
jne 0x5998ea
lea eax, [ebp - 0xa54]
lea edx, [ebx + 2]
call fcn.00408c1c
mov eax, dword [ebp - 0xa54]
or edx, 0xffffffff
call fcn.00421d38
mov edi, eax
mov eax, esi
call fcn.00408060
inc eax
add eax, eax
add esi, eax
cmp word [esi], 0
jne 0x599882
mov eax, dword [ebp - 0x18]
call fcn.004048e4
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 0xc800
mov eax, dword [ebp - 0x14]
call fcn.004048c8
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
xor ecx, ecx
mov edx, dword [ebp - 0x14]
call fcn.004053d4
xor esi, esi
lea eax, [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
lea eax, [ebp - 0x836]
push eax
push 0x80000004
call sub.advapi32.dll_RegQueryValueExW_1
mov ebx, eax
mov esi, dword [ebp - 0x18]
test ebx, ebx
jne 0x5999a4
cmp dword [ebp - 0x14], 0
jbe 0x5999a4
cmp word [esi], 0x50
jne 0x5999a4
cmp word [esi + 2], 0x45
jne 0x5999a4
cmp word [esi + 4], 0x52
jne 0x5999a4
cmp word [esi + 6], 0x46
je 0x5999e1
cmp ebx, 0xea
jne 0x599aef
add dword [ebp - 0x14], 0x6400
mov eax, dword [ebp - 0x18]
call fcn.004048e4
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
call fcn.004048c8
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x18]
xor ecx, ecx
mov edx, dword [ebp - 0x14]
call fcn.004053d4
jmp 0x59995b
mov ebx, dword [esi + 0x18]
add ebx, esi
mov eax, dword [ebx + 8]
add eax, ebx
xor edx, edx
mov dword [ebp - 0x28], edx
xor edx, edx
mov dword [ebp - 0x24], edx
jmp 0x599a0a
cmp edi, dword [eax + 4]
jne 0x599a04
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x28], eax
jmp 0x599a12
add eax, 0x28
inc dword [ebp - 0x24]
mov edx, dword [ebx + 0x20]
cmp edx, dword [ebp - 0x24]
ja 0x5999f7
mov edx, dword [ebx + 0x28]
mov eax, dword [ebp - 0x2c]
call fcn.0059974c
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 4]
add eax, ebx
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x30]
jae 0x599ae9
mov eax, dword [ebp - 0x1c]
mov esi, dword [eax + 0x10]
add esi, dword [ebp - 0x1c]
push 0
push 0
push 0x105
lea eax, [ebp - 0x93b]
push eax
push 0xffffffffffffffff
push esi
push 0
push 0
call sub.kernel32.dll_WideCharToMultiByte_1
mov ebx, eax
test ebx, ebx
jne 0x599a76
mov edx, 0x599c1c
lea eax, [ebp - 0xa40]
call fcn.004233d4
jmp 0x599a87
lea edx, [ebp - 0x93b]
lea eax, [ebp - 0xa40]
call fcn.004233d4
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
add eax, dword [ebp - 0x28]
mov eax, dword [eax]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
jne 0x599aa8
xor eax, eax
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0xa58]
lea edx, [ebp - 0xa40]
mov ecx, 0x105
call fcn.00408c58
mov edx, dword [ebp - 0xa58]
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
add eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x30]
jb 0x599a39
mov eax, dword [ebp - 0x30]
mov dword [ebp - 8], eax
cmp dword [ebp - 0x18], 0
je 0x599afd
mov eax, dword [ebp - 0x18]
call fcn.004048e4
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
push 0x80000004
call sub.advapi32.dll_RegCloseKey_1
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
push 0x80000004
call sub.advapi32.dll_RegCloseKey_1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x599b48
lea eax, [ebp - 0xa58]
mov edx, 2
call fcn.00407b90
ret