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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x834
mov eax, dword [0x6319d0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x834], ecx
lea eax, [ebp - 0x828]
push eax
push 0x20019
xor ebx, ebx
mov ecx, 0xa
mov esi, str.SystemCurrentControlSetEnumMODEMWAVE
lea edi, [ebp - 0x414]
rep movsd dword es:[edi], dword [esi]
push ebx
lea ecx, [ebp - 0x414]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x81c], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x46d3a4
push 0x104
lea edx, [ebp - 0x108]
push edx
push eax
mov eax, dword [ebp - 0x828]
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
jne 0x46d34c
nop
inc ebx
cmp dword [ebp - 0x81c], 0
mov dword [ebp - 0x830], ebx
jne 0x46d34c
xor eax, eax
jmp 0x46d0a0
mov cl, byte [ebp + eax - 0x414]
mov byte [ebp + eax - 0x20c], cl
inc eax
test cl, cl
jne 0x46d0a0
lea edi, [ebp - 0x20c]
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d0c0
mov cx, word [0x5cd28c]
lea eax, [ebp - 0x108]
mov word [edi], cx
mov edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46d0e0
lea edi, [ebp - 0x20c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d0f0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
lea edx, [ebp - 0x82c]
push edx
push 0x20019
mov ecx, eax
push 0
lea eax, [ebp - 0x20c]
push eax
and ecx, 3
push reloc.OLEAUT32.dll_SysReAllocString
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x46d32a
mov edx, dword [ebp - 0x82c]
push 0x104
lea ecx, [ebp - 0x108]
push ecx
xor ebx, ebx
push ebx
push edx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
jne 0x46d317
jmp 0x46d160
inc ebx
cmp dword [ebp - 0x81c], 0
jne 0x46d317
xor eax, eax
mov cl, byte [ebp + eax - 0x20c]
mov byte [ebp + eax - 0x310], cl
inc eax
test cl, cl
jne 0x46d170
lea edi, [ebp - 0x310]
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d190
mov ax, word [0x5cd28c]
mov word [edi], ax
lea eax, [ebp - 0x108]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46d1b0
lea edi, [ebp - 0x310]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d1c0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x824]
push ecx
push 0x20019
push 0
lea edx, [ebp - 0x310]
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x46d2f5
mov edx, dword [ebp - 0x824]
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp - 0x820]
push eax
lea ecx, [ebp - 0x108]
push ecx
push 0
push 0
push str.HardwareID
mov edi, 0x104
push edx
mov dword [ebp - 0x820], edi
call esi
test eax, eax
jne 0x46d2e8
mov eax, dword [ebp - 0x834]
add eax, 0x134
push eax
lea ecx, [ebp - 0x108]
push ecx
call fcn.00599e8d
add esp, 8
test eax, eax
jne 0x46d2e8
mov ecx, dword [ebp - 0x824]
lea edx, [ebp - 0x820]
push edx
lea eax, [ebp - 0x108]
push eax
push 0
push 0
push str.Driver
push ecx
mov dword [ebp - 0x820], edi
call esi
test eax, eax
jne 0x46d2e8
mov dword [ebp - 0x81c], 1
mov cl, byte [ebp + eax - 0x310]
mov byte [ebp + eax - 0x61c], cl
inc eax
test cl, cl
jne 0x46d290
mov ecx, 0xa
mov esi, str.SystemCurrentControlSetControlClass_
lea edi, [ebp - 0x518]
lea eax, [ebp - 0x108]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x46d2c0
lea edi, [ebp - 0x518]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d2d2
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebp - 0x824]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x82c]
push 0x104
lea eax, [ebp - 0x108]
push eax
push ebx
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
je 0x46d160
mov edx, dword [ebp - 0x82c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [ebp - 0x830]
mov ecx, dword [ebp - 0x828]
push 0x104
lea eax, [ebp - 0x108]
push eax
push ebx
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
je 0x46d080
mov edx, dword [ebp - 0x828]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x81c], 0
je 0x46d3a4
push 0
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x818]
call fcn.0047aa50
push 1
push 1
push 0
lea eax, [ebp - 0x61c]
push eax
lea ecx, [ebp - 0x818]
call fcn.0047aeb0
push 1
push 1
push 0
lea ecx, [ebp - 0x518]
push ecx
lea ecx, [ebp - 0x818]
call fcn.0047aeb0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00599ed4
mov esp, ebp
pop ebp
ret