Function at 0x59d3c0
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x114
mov dword [ebp - 0x11c], ecx
mov eax, dword [0x742040]
xor eax, ebp
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
lea ecx, [ebp - 0x24]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx - 4], ecx
lea ecx, [ebp - 0x2c]
mov dword [ecx], eax
lea edx, [ebp - 0x30]
mov dword [edx], eax
lea esi, [ebp - 0x34]
mov dword [esi], eax
lea edi, [ebp - 0x38]
mov dword [edi], eax
lea ebx, [ebp - 0x3c]
mov dword [ebx], eax
mov ecx, dword [ebp + 8]
push eax
push eax
push ebx
push edi
push esi
push eax
push edx
lea edx, [ebp - 0x2c]
push edx
push eax
push eax
push eax
push dword [ecx]
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x59d607
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x38]
cmp ecx, eax
cmova eax, ecx
inc eax
xor edx, edx
dec edx
lea ecx, [ebp - 0xe4]
mov dword [ecx], edx
mov dword [ecx + 4], edx
mov dword [ecx + 8], edx
push eax
call fcn.0057b750
mov eax, dword [ebp - 0x34]
test eax, eax
mov edi, dword [ebp - 0x11c]
je 0x59d53a
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
sub edx, ecx
sar edx, 2
imul edx, edx, 0xb6db6db7
cmp edx, eax
jae 0x59d4ea
cmp eax, 0x924924a
jae 0x59dcd0
lea edx, [ebp - 0x10]
mov edi, dword [edx - 8]
sub edi, ecx
lea esi, [ebp - 0xd8]
mov dword [esi + 0x10], edx
lea ecx, [eax + eax*8]
lea ebx, [ecx + ecx*2]
add ebx, eax
push ebx
call fcn.00540349
add esp, 4
mov dword [esi], eax
add edi, eax
mov dword [esi + 8], edi
mov dword [esi + 4], edi
add ebx, eax
mov dword [esi + 0xc], ebx
lea ecx, [ebp - 0x1c]
mov edx, esi
call fcn.0059e2b0
mov edi, dword [esi + 4]
mov esi, dword [esi + 8]
jmp 0x59d4cd
add esi, 0xffffffe4
mov ecx, esi
call fcn.0059e250
cmp esi, edi
jne 0x59d4c3
mov eax, dword [ebp - 0xd8]
test eax, eax
mov edi, dword [ebp - 0x11c]
je 0x59d4ea
push eax
call fcn.00540380
add esp, 4
lea ecx, [ebp - 0xf0]
xor eax, eax
dec eax
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x3c]
cmp eax, 1
adc eax, 0
push eax
call fcn.004dba00
mov dword [ebp - 0xf8], 0
cmp dword [ebp - 0x34], 0
je 0x59d527
xor esi, esi
lea ebx, [ebp - 0xf0]
jmp 0x59da28
lea ecx, [ebp - 0xd8]
lea eax, [ebp - 0xf0]
mov dword [ecx], eax
call fcn.004d4610
cmp dword [ebp - 0x2c], 0
je 0x59d584
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
xor edi, edi
jmp 0x59d69f
lea edi, [ebp - 0x114]
xor eax, eax
dec eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov ecx, edi
call fcn.00486b40
mov esi, dword [ebp - 0x28]
lea eax, [ebp - 0x24]
cmp esi, eax
jne 0x59d7c1
lea ecx, [ebp - 0x114]
call fcn.00486d30
mov edi, dword [ebp - 0x11c]
mov eax, dword [edi]
mov ecx, dword [ebp - 0x1c]
mov dword [edi], ecx
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 4]
mov ecx, dword [ebp - 0x18]
mov dword [edi + 4], ecx
mov dword [ebp - 0x18], eax
mov eax, dword [edi + 8]
mov ecx, dword [ebp - 0x14]
mov dword [edi + 8], ecx
mov dword [ebp - 0x14], eax
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0x28]
mov dword [edi + 0xc], ecx
mov dword [ebp - 0x28], eax
lea edx, [edi + 0x10]
mov eax, dword [edi + 0x10]
mov esi, dword [ebp - 0x24]
mov dword [edi + 0x10], esi
mov dword [ebp - 0x24], eax
mov ecx, dword [edi + 0x14]
mov ebx, edi
mov edi, dword [ebp - 0x20]
mov dword [ebx + 0x14], edi
mov dword [ebp - 0x20], ecx
test edi, edi
je 0x59d5db
mov dword [esi + 8], edx
mov ecx, dword [ebp - 0x20]
jmp 0x59d5de
mov dword [ebx + 0xc], edx
test ecx, ecx
lea edx, [ebp - 0xe4]
je 0x59d5f0
lea ecx, [ebp - 0x24]
mov dword [eax + 8], ecx
jmp 0x59d5f6
lea eax, [ebp - 0x24]
mov dword [ebp - 0x28], eax
mov bl, 1
lea ecx, [ebp - 0xd8]
mov dword [ecx], edx
call fcn.004d5f30
jmp 0x59d657
mov esi, eax
push 2
call fcn.004f2410
add esp, 4
test al, al
je 0x59d655
lea edi, [ebp - 0xd8]
mov ecx, edi
push 2
push 0x82
push 0x6ca53b
call fcn.00494bc0
lea eax, [ebp - 0xd0]
push 0x2e
push 0x6ca56e
push eax
call fcn.004d1fe0
add esp, 0xc
mov ecx, eax
push esi
call fcn.004120f0
mov ecx, edi
call fcn.004950a0
xor ebx, ebx
lea ecx, [ebp - 0x28]
push dword [ecx + 4]
call fcn.0059e810
lea ecx, [ebp - 0x1c]
call fcn.0059d380
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005412b6
mov eax, ebx
add esp, 0x114
pop esi
pop edi
pop ebx
pop ebp
ret 4
mov eax, dword [ebp - 0xf4]
inc eax
lea ecx, [ebp - 0xe4]
push eax
call fcn.0047cb20
cmp edi, dword [ebp - 0x2c]
jae 0x59d54d
mov eax, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xe0]
mov edx, ecx
sub edx, eax
sar edx, 1
mov dword [ebp - 0xf4], edx
cmp ecx, eax
je 0x59dae4
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx]
sub esp, 0x20
xorps xmm0, xmm0
movups xmmword [esp + 0x10], xmm0
lea edx, [ebp - 0xf4]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], ecx
call esi
cmp eax, 0xea
je 0x59d683
mov ebx, eax
cmp eax, 0x103
jne 0x59d6fb
mov dword [ebp - 0x2c], edi
jmp 0x59d696
test ebx, ebx
jne 0x59dc56
xor eax, eax
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x104], eax
mov dword [ebp - 0x100], eax
lea eax, [ebp - 0x104]
mov dword [ebp - 0x108], eax
mov eax, dword [ebp - 0xe4]
cmp dword [ebp - 0xe0], eax
je 0x59dae4
mov dword [ebp - 0xd8], eax
lea ebx, [ebp - 0xd4]
mov ecx, ebx
lea eax, [ebp - 0x114]
push eax
call fcn.0059e3c0
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0xf0]
push eax
call fcn.0059e850
lea ecx, [ebp - 0xc8]
push dword [ebp - 0xc4]
call fcn.0059e810
mov ecx, ebx
call fcn.0059d380
lea ecx, [ebp - 0x108]
push dword [ebp - 0x104]
call fcn.0059e810
lea ecx, [ebp - 0x114]
call fcn.0059d380
inc edi
jmp 0x59d696
mov eax, dword [esi + 8]
cmp dword [eax], esi
mov esi, eax
jne 0x59d7ab
mov esi, eax
lea ecx, [ebp - 0x24]
cmp eax, ecx
je 0x59d573
lea ecx, [esi + 0x10]
cmp byte [esi + 0x1b], 0
mov eax, ecx
jns 0x59d7ce
mov eax, dword [ecx]
mov dword [ebp - 0x118], ecx
mov ecx, edi
push 0x20009
push eax
mov eax, dword [ebp + 8]
push dword [eax]
call fcn.00486c90
test eax, eax
jne 0x59dbd1
lea ecx, [esi + 0x1c]
push edi
call fcn.0059d3c0
test al, al
je 0x59daf3
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x59d7ab
mov eax, ecx
mov ecx, dword [ecx]
test ecx, ecx
jne 0x59d806
jmp 0x59d7b4
mov ecx, dword [ebp - 0x1c]
sub edi, ecx
sar edi, 2
imul edi, edi, 0xb6db6db7
lea ebx, [edi + 1]
cmp ebx, 0x924924a
jae 0x59dcd0
sub eax, ecx
sar eax, 2
imul eax, eax, 0xb6db6db7
lea ecx, [eax + eax]
cmp ecx, ebx
cmova ebx, ecx
cmp eax, 0x4924924
mov eax, 0x9249249
cmovae ebx, eax
lea eax, [ebp - 0x10]
mov dword [ebp - 0x104], eax
xor eax, eax
test ebx, ebx
je 0x59d879
cmp ebx, 0x924924a
jae 0x59dcd5
lea eax, [ebx + ebx*8]
lea eax, [eax + eax*2]
add eax, ebx
push eax
call fcn.00540349
add esp, 4
mov dword [ebp - 0x114], eax
lea ecx, [edi + edi*8]
lea ecx, [ecx + ecx*2]
add edi, eax
add edi, ecx
mov dword [ebp - 0x10c], edi
mov dword [ebp - 0x110], edi
lea ecx, [ebx + ebx*8]
lea ecx, [ecx + ecx*2]
add eax, ebx
add eax, ecx
mov dword [ebp - 0x108], eax
mov ecx, edi
lea edx, [ebp - 0xd8]
call fcn.0059e350
add dword [ebp - 0x10c], 0x1c
lea ecx, [ebp - 0x1c]
lea edx, [ebp - 0x114]
call fcn.0059e2b0
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x110]
mov ebx, dword [ebp - 0x10c]
cmp ebx, eax
je 0x59d8f4
mov dword [ebp - 0x118], eax
add ebx, 0xffffffe4
mov ecx, ebx
call fcn.0059e250
mov eax, dword [ebp - 0x118]
cmp ebx, eax
jne 0x59d8e0
mov eax, dword [ebp - 0x114]
test eax, eax
je 0x59d940
push eax
call fcn.00540380
add esp, 4
jmp 0x59d940
test edi, edi
jne 0x59db58
xorps xmm0, xmm0
movups xmmword [ebp - 0xcc], xmm0
movups xmmword [ebp - 0xd8], xmm0
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
cmp edi, eax
jae 0x59d810
mov ecx, edi
lea edx, [ebp - 0xd8]
call fcn.0059e350
add edi, 0x1c
mov dword [ebp - 0x18], edi
lea eax, [ebp - 0xcc]
mov dword [ebp - 0x114], eax
lea ecx, [ebp - 0x114]
call fcn.004d4610
cmp byte [ebp - 0xcd], 0
jns 0x59d971
push dword [ebp - 0xd8]
call fcn.00540380
add esp, 4
mov edi, dword [ebp - 0x18]
cmp dword [ebp - 0x1c], edi
je 0x59dcbc
mov ebx, dword [ebp - 0xf0]
cmp dword [ebp - 0xec], ebx
je 0x59dae4
mov eax, dword [ebp - 0xe4]
cmp dword [ebp - 0xe0], eax
je 0x59dae4
mov edx, dword [ebp - 0xf4]
test edx, edx
sete cl
test eax, eax
setne ch
or ch, cl
je 0x59dcc6
lea ecx, [edi - 0x1c]
mov dword [ebp - 0x120], ebx
mov ebx, dword [ebp - 0xfc]
mov dword [ebp - 0x118], ebx
mov ebx, dword [ebp - 0xf8]
push edx
push eax
call fcn.00484e10
mov dword [edi - 4], ebx
add edi, 0xfffffff0
mov edx, dword [ebp - 0x118]
mov ebx, dword [ebp - 0x120]
lea eax, [ebx + edx]
mov ecx, edi
push edx
push eax
push ebx
call fcn.0047faa0
inc esi
mov edi, dword [ebp - 0x11c]
lea ebx, [ebp - 0xf0]
jmp 0x59da1f
mov edi, eax
cmp eax, 0x103
jne 0x59d909
mov dword [ebp - 0x34], esi
mov edi, dword [ebp - 0x11c]
cmp esi, dword [ebp - 0x34]
jae 0x59d527
mov eax, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xe0]
mov edx, ecx
sub edx, eax
sar edx, 1
mov dword [ebp - 0xf4], edx
mov edx, dword [ebp - 0xf0]
mov edi, dword [ebp - 0xec]
sub edi, edx
mov dword [ebp - 0xfc], edi
je 0x59dae4
cmp ecx, eax
je 0x59dae4
lea ecx, [ebp - 0xfc]
push ecx
push edx
lea ecx, [ebp - 0xf8]
push ecx
push 0
lea ecx, [ebp - 0xf4]
push ecx
push eax
push esi
mov eax, dword [ebp + 8]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
cmp eax, 0xea
jne 0x59da09
mov eax, dword [ebp - 0xfc]
mov ecx, dword [ebp - 0xec]
sub ecx, dword [ebp - 0xf0]
cmp eax, ecx
jbe 0x59dab0
mov ecx, ebx
push eax
call fcn.004d4a70
mov eax, dword [ebp - 0xf4]
inc eax
mov ecx, dword [ebp - 0xe0]
sub ecx, dword [ebp - 0xe4]
sar ecx, 1
cmp eax, ecx
mov edi, dword [ebp - 0x11c]
jbe 0x59da1f
lea ecx, [ebp - 0xe4]
push eax
call fcn.0047cb20
jmp 0x59da1f
push 0x6bd9fd
push 0x6bd0bf
call fcn.0057cbd0
push 2
call fcn.004f2410
add esp, 4
test al, al
je 0x59dc3e
lea esi, [ebp - 0xd8]
mov ecx, esi
push 2
push 0xdd
push 0x6ca53b
call fcn.00494bc0
lea eax, [ebp - 0xd0]
push 0x1a
push 0x6ca625
push eax
call fcn.004d1fe0
add esp, 0xc
push dword [ebp - 0x118]
push eax
call fcn.00492f60
add esp, 8
push 1
push 0x6bd94c
push eax
call fcn.004d1fe0
add esp, 0xc
jmp 0x59dc37
push 2
call fcn.004f2410
add esp, 4
test al, al
je 0x59dbc2
lea ebx, [ebp - 0xd8]
mov ecx, ebx
push 2
push 0xa8
push 0x6ca53b
call fcn.00494bc0
lea eax, [ebp - 0xd0]
push 0x18
push 0x6ca59d
push eax
call fcn.004d1fe0
add esp, 0xc
mov ecx, eax
push esi
call fcn.00411eb0
push 0xa
push 0x6ca5b6
push eax
call fcn.004d1fe0
add esp, 0xc
mov ecx, eax
push edi
call fcn.004120f0
mov ecx, ebx
lea ebx, [ebp - 0xf0]
call fcn.004950a0
lea ecx, [ebp - 0xd8]
mov dword [ecx], ebx
call fcn.004d4610
jmp 0x59dc49
mov ebx, eax
push 2
call fcn.004f2410
add esp, 4
test al, al
je 0x59dc3e
lea esi, [ebp - 0xd8]
mov ecx, esi
push 2
push 0xd8
push 0x6ca53b
call fcn.00494bc0
lea eax, [ebp - 0xd0]
push 0x17
push 0x6ca5f6
push eax
call fcn.004d1fe0
add esp, 0xc
push dword [ebp - 0x118]
push eax
call fcn.00492f60
add esp, 8
push 0x16
push 0x6ca60e
push eax
call fcn.004d1fe0
add esp, 0xc
mov ecx, eax
push ebx
call fcn.004120f0
mov ecx, esi
call fcn.004950a0
lea ecx, [ebp - 0x114]
call fcn.00486d30
xor ebx, ebx
lea edx, [ebp - 0xe4]
jmp 0x59d5f8
push 2
call fcn.004f2410
add esp, 4
test al, al
je 0x59dc49
lea esi, [ebp - 0xd8]
mov ecx, esi
push 2
push 0xc8
push 0x6ca53b
call fcn.00494bc0
lea eax, [ebp - 0xd0]
push 0x1e
push 0x6ca5c1
push eax
call fcn.004d1fe0
add esp, 0xc
mov ecx, eax
push edi
call fcn.00411eb0
push 0x15
push 0x6ca5e0
push eax
call fcn.004d1fe0
add esp, 0xc
mov ecx, eax
push ebx
call fcn.004120f0
mov ecx, esi
call fcn.004950a0
jmp 0x59dc49
push 0x6c32e8
jmp 0x59dae9
push 0x6c6178
jmp 0x59dae9
call fcn.00573900
call fcn.00573fa0
int3