Function at 0x46d5c0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51f707
mov eax, dword fs:[0]
push eax
sub esp, 0x330
mov eax, dword [0x56f790]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor edi, edi
mov dword [ebp - 0x324], eax
xor ebx, ebx
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x32c], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x33c], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x318], eax
mov eax, dword [ebp + 0x1c]
push 0xc8
mov dword [ebp - 0x328], eax
lea eax, [ebp - 0xda]
push edi
push eax
mov dword [ebp - 0x2f8], ebx
mov dword [ebp - 0x308], edi
call fcn.004b17e0
xor esi, esi
mov dword [ebp - 0x30c], ebx
add esp, 0xc
mov dword [ebp - 0x304], esi
cmp dword [ebp + 0xc], ebx
jle 0x46dd74
nop word [eax + eax]
xor eax, eax
mov dword [ebp - 0x320], 0x64
push 0x20a
push eax
mov word [ebp - 0xdc], ax
lea eax, [ebp - 0x2e8]
push eax
call fcn.004b17e0
add esp, 0xc
mov dword [ebp - 0x31c], 0x208
lea eax, [ebp - 0x31c]
push eax
lea eax, [ebp - 0x2e8]
push eax
lea eax, [ebp - 0x30c]
push eax
push 0
lea eax, [ebp - 0x320]
push eax
lea eax, [ebp - 0xdc]
push eax
push esi
push dword [ebp - 0x324]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
test eax, eax
jne 0x46d75d
cmp dword [ebp - 0x30c], 1
jne 0x46d75d
lea eax, [ebp - 0x2e8]
push eax
lea ecx, [ebp - 0x310]
call fcn.004093d0
mov dword [ebp - 4], 0
or ebx, 1
mov dword [ebp - 0x2f8], ebx
mov eax, dword [ebp - 0x310]
mov edx, dword [eax - 0xc]
cmp edx, 0x13
jne 0x46d75d
cmp edx, 4
jl case.0x46d99a.22
cmp word [eax + 8], 0x2d
jne 0x46d75d
cmp edx, 7
jl case.0x46d99a.22
cmp word [eax + 0xe], 0x2d
jne 0x46d75d
cmp edx, 0xa
jl case.0x46d99a.22
cmp word [eax + 0x14], 0x20
jne 0x46d75d
cmp edx, 0xd
jl case.0x46d99a.22
cmp word [eax + 0x1a], 0x3a
jne 0x46d75d
cmp edx, 0x10
jl case.0x46d99a.22
cmp word [eax + 0x20], 0x3a
jne 0x46d75d
mov bl, 1
jmp 0x46d75f
xor bl, bl
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x2f8]
test al, 1
je 0x46d79e
and eax, 0xfffffffe
mov dword [ebp - 0x2f8], eax
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov edx, dword [ebp - 0x310]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46d79e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x46dd4f
call fcn.00410b40
test eax, eax
je case.0x46d99a.1
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x2f0], eax
mov dword [ebp - 4], 2
lea eax, [ebp - 0x2e8]
test eax, 0xffff0000
jne 0x46d89c
movzx esi, ax
push 0
push esi
call fcn.00448210
mov ebx, dword [sym.imp.KERNEL32.dll_FindResourceW]
mov edi, eax
add esp, 8
test edi, edi
je 0x46d8cd
mov ecx, esi
shr ecx, 4
push 6
inc ecx
push ecx
push edi
call ebx
test eax, eax
je 0x46d8cd
push esi
push eax
push edi
call fcn.004092d0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x46d8cd
mov eax, dword [ebp - 0x2f0]
mov edx, 1
movzx esi, word [edi]
mov ebx, esi
mov ecx, dword [eax - 8]
sub edx, dword [eax - 4]
sub ecx, ebx
or ecx, edx
jge 0x46d853
push ebx
lea ecx, [ebp - 0x2f0]
call fcn.00407ee0
movzx esi, word [edi]
mov eax, dword [ebp - 0x2f0]
movzx edx, si
lea ecx, [edi + 2]
push edx
push ecx
push ebx
push eax
call fcn.004cdb8c
add esp, 0x10
cmp eax, 0x50
ja case.0x46d99a.1
movzx eax, byte [eax + 0x46ddc8]
jmp dword [eax*4 + 0x46ddb8]
mov eax, dword [ebp - 0x2f0]
cmp ebx, dword [eax - 8]
jg case.0x46d99a.22
mov dword [eax - 0xc], ebx
xor ecx, ecx
mov eax, dword [ebp - 0x2f0]
mov word [eax + ebx*2], cx
jmp 0x46d8c7
lea ecx, [ebp - 0x2e8]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46d8a5
sub ecx, edx
lea eax, [ebp - 0x2e8]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2f0]
call fcn.00407f80
mov ebx, dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp - 4], 3
call fcn.00410b40
test eax, eax
je case.0x46d99a.1
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x2ec], eax
mov byte [ebp - 4], 4
lea eax, [ebp - 0xdc]
test eax, 0xffff0000
jne 0x46d9c1
movzx esi, ax
push 0
push esi
call fcn.00448210
mov edi, eax
add esp, 8
test edi, edi
je 0x46d9f2
mov ecx, esi
shr ecx, 4
push 6
inc ecx
push ecx
push edi
call ebx
test eax, eax
je 0x46d9f2
push esi
push eax
push edi
call fcn.004092d0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x46d9f2
mov eax, dword [ebp - 0x2ec]
mov edx, 1
movzx esi, word [edi]
mov ebx, esi
mov ecx, dword [eax - 8]
sub edx, dword [eax - 4]
sub ecx, ebx
or ecx, edx
jge 0x46d978
push ebx
lea ecx, [ebp - 0x2ec]
call fcn.00407ee0
movzx esi, word [edi]
mov eax, dword [ebp - 0x2ec]
movzx edx, si
lea ecx, [edi + 2]
push edx
push ecx
push ebx
push eax
call fcn.004cdb8c
add esp, 0x10
cmp eax, 0x50
ja case.0x46d99a.1
movzx eax, byte [eax + 0x46de2c]
jmp dword [eax*4 + 0x46de1c]
mov eax, dword [ebp - 0x2ec]
cmp ebx, dword [eax - 8]
jg case.0x46d99a.22
mov dword [eax - 0xc], ebx
xor ecx, ecx
mov eax, dword [ebp - 0x2ec]
mov word [eax + ebx*2], cx
jmp 0x46d9f2
lea ecx, [ebp - 0xdc]
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46d9d0
sub ecx, edx
lea eax, [ebp - 0xdc]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2ec]
call fcn.00407f80
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x328]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x46ddb0
mov eax, dword [ecx]
lea edx, [ebp - 0x2f0]
push edx
lea edx, [ebp - 0x2ec]
push edx
call dword [eax + 8]
mov esi, eax
mov byte [ebp - 4], 3
or ecx, 0xffffffff
mov edx, dword [ebp - 0x2ec]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x46da3e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov edx, dword [ebp - 0x2f0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46da63
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x46dd4f
inc dword [ebp - 0x308]
mov edi, dword [ebp - 0x32c]
test edi, edi
je 0x46dc46
lea eax, [ebp - 0xdc]
push eax
lea ecx, [ebp - 0x300]
call fcn.004093d0
mov dword [ebp - 4], 8
lea eax, [ebp - 0x300]
push eax
mov ecx, edi
call fcn.0045a7a0
mov esi, eax
mov eax, dword [edi]
cmp esi, eax
je 0x46dac6
lea ecx, [esi + 0x10]
push ecx
lea eax, [ebp - 0x300]
mov ecx, edi
push eax
call fcn.0040ac80
test al, al
je 0x46dac8
mov eax, dword [edi]
mov esi, eax
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov edx, dword [ebp - 0x300]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46daed
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp esi, dword [edi]
je 0x46db76
lea eax, [ebp - 0x2e8]
push eax
lea ecx, [ebp - 0x330]
call fcn.004093d0
mov dword [ebp - 4], 0xa
lea edi, [esi + 0x14]
push eax
push edi
call fcn.0045c6e0
add esp, 8
mov bl, al
mov dword [ebp - 4], 0xffffffff
or ecx, 0xffffffff
mov edx, dword [ebp - 0x330]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x46db42
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x46dc46
lea edx, [ebp - 0x2e8]
lea esi, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x46db53
sub edx, esi
lea eax, [ebp - 0x2e8]
sar edx, 1
mov ecx, edi
push edx
push eax
call fcn.00407f80
jmp 0x46dc46
lea eax, [ebp - 0xdc]
push eax
lea ecx, [ebp - 0x2f4]
call fcn.004093d0
mov dword [ebp - 4], 0xc
lea eax, [ebp - 0x2f4]
push eax
mov ecx, edi
call fcn.0045a7a0
mov esi, eax
cmp esi, dword [edi]
je 0x46dbb9
lea eax, [esi + 0x10]
mov ecx, edi
push eax
lea eax, [ebp - 0x2f4]
push eax
call fcn.0040ac80
test al, al
je 0x46dbf9
lea eax, [ebp - 0x2f4]
mov ecx, edi
mov dword [ebp - 0x334], eax
lea eax, [ebp - 0x2f9]
push eax
lea eax, [ebp - 0x334]
push eax
push 0x537a80
call fcn.0045a710
push eax
add eax, 0x10
mov ecx, edi
push eax
push esi
lea eax, [ebp - 0x338]
push eax
call fcn.0040a350
mov esi, dword [ebp - 0x338]
lea edx, [ebp - 0x2e8]
lea ecx, [esi + 0x14]
lea esi, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x46dc05
sub edx, esi
lea eax, [ebp - 0x2e8]
sar edx, 1
push edx
push eax
call fcn.00407f80
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov edx, dword [ebp - 0x2f4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46dc46
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x318], 0
je 0x46dd4f
lea eax, [ebp - 0x2e8]
push eax
lea ecx, [ebp - 0x314]
call fcn.004093d0
mov dword [ebp - 4], 0xe
lea eax, [ebp - 0x314]
push eax
call fcn.00436b30
add esp, 4
mov esi, eax
mov ebx, edx
mov dword [ebp - 4], 0xffffffff
or ecx, 0xffffffff
mov edi, dword [ebp - 0x314]
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x46dca4
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
or esi, ebx
je 0x46dd4f
mov edi, dword [ebp - 0x318]
lea ecx, [ebp - 0x2e8]
mov eax, dword [edi]
nop word [eax + eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x46dce6
test dx, dx
je 0x46dce2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x46dce6
add eax, 4
add ecx, 4
test dx, dx
jne 0x46dcc0
xor eax, eax
jmp 0x46dceb
sbb eax, eax
or eax, 1
test eax, eax
jns 0x46dd1e
lea ecx, [ebp - 0x2e8]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46dd00
sub ecx, edx
lea eax, [ebp - 0x2e8]
sar ecx, 1
push ecx
push eax
mov ecx, edi
call fcn.00407f80
mov ebx, dword [ebp - 0x33c]
test ebx, ebx
je 0x46dd4f
lea ecx, [ebp - 0xdc]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46dd31
sub ecx, edx
lea eax, [ebp - 0xdc]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.00407f80
mov eax, dword [ebp - 0x304]
inc eax
mov dword [ebp - 0x304], eax
cmp eax, dword [ebp + 0xc]
jge 0x46dd6e
mov ebx, dword [ebp - 0x2f8]
mov esi, eax
jmp 0x46d660
mov edi, dword [ebp - 0x308]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004ac4b8
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.00404400
push 0x8007000e
call fcn.00404400
push 0x80004005
call fcn.00404400
call fcn.0048bf41
nop dword [eax]
jl case.0x46d99a.22
inc esi
add byte [ebp + ebx*8 - 0x226dffba], bl
inc esi
add byte [esi + 0x46dd], ah
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [eax]
nop dword [eax]
mov eax, dword [0x9c0046d9]
fld qword [esi]
xchg edx, eax
fld qword [esi]
cmpsb byte [esi], byte es:[edi]
fld qword [esi]
add byte [ebx], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add dword [ebx], eax
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add al, byte [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add al, byte [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add ah, cl
int3