Function at 0x473a20
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53a7ad
mov eax, dword fs:[0]
push eax
mov eax, 0x33c0
call fcn.004fa800
mov eax, dword [0x5954a0]
xor eax, ebp
mov dword [ebp - 0x18], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x33c8], ecx
mov dword [ebp - 0x319c], 0
lea eax, [ebp - 0x30fc]
mov dword [ebp - 0x3100], eax
push 3
mov ecx, dword [ebp + 0xc]
push ecx
lea ecx, [ebp - 0x3100]
call fcn.00470670
lea edx, [ebp - 0x3100]
mov dword [ebp - 0x33cc], edx
mov dword [ebp - 4], 0
mov esi, dword [ebp - 0x33cc]
sub esp, 0x84
mov ecx, 0x21
mov edi, esp
rep movsd dword es:[edi], dword [esi]
push str.CFileDecode::GetAppFileFormFileExts___s_
call fcn.0047c040
add esp, 0x88
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3100]
mov dword [ebp - 0x31a0], eax
lea ecx, [ebp - 0x30fc]
cmp dword [ebp - 0x31a0], ecx
je 0x473ae6
mov edx, dword [ebp - 0x31a0]
push edx
call fcn.004f84cf
add esp, 4
xor eax, eax
mov word [ebp - 0x81c], ax
push 0x7fe
push 0
lea ecx, [ebp - 0x81a]
push ecx
call fcn.004f8090
add esp, 0xc
xor edx, edx
mov word [ebp - 0x102c], dx
push 0x3fe
push 0
lea eax, [ebp - 0x102a]
push eax
call fcn.004f8090
add esp, 0xc
push 0x400
lea ecx, [ebp - 0x102c]
push ecx
push 1
push 0x567128
mov edx, dword [ebp + 0xc]
push edx
push SysReAllocStringLen
mov ecx, dword [ebp - 0x33c8]
call fcn.004730f0
test eax, eax
je 0x473b92
lea eax, [ebp - 0x81c]
push eax
lea ecx, [ebp - 0x102c]
push ecx
mov ecx, dword [ebp - 0x33c8]
call fcn.00473640
test eax, eax
je 0x473b92
lea edx, [ebp - 0x81c]
push edx
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov eax, dword [ebp - 0x319c]
or eax, 1
mov dword [ebp - 0x319c], eax
mov eax, dword [ebp + 8]
jmp 0x47442b
xor ecx, ecx
mov word [ebp - 0xc2c], cx
push 0x3fe
push 0
lea edx, [ebp - 0xc2a]
push edx
call fcn.004f8090
add esp, 0xc
mov eax, dword [ebp + 0xc]
push eax
push str._sOpenWithProgids
lea ecx, [ebp - 0xc2c]
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0x54a41c
mov edx, dword [ebp + 0xc]
push edx
call fcn.004f937f
add esp, 8
test eax, eax
jne 0x474135
mov dword [ebp - 0x1040], 0
push 0x54a418
call fcn.0047c040
add esp, 4
call fcn.004c02e6
push eax
lea ecx, [ebp - 0x1044]
call fcn.004514d0
mov dword [ebp - 4], 1
push str.SOFTWARECAXASHAREDCAXA_EXB_VIEW
lea ecx, [ebp - 0x1048]
call fcn.0044f380
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x1048]
mov dword [ebp - 0x31b4], eax
lea ecx, [ebp - 0x1040]
push ecx
push 0x20219
push 0
mov edx, dword [ebp - 0x31b4]
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x103c], eax
cmp dword [ebp - 0x103c], 0
jne 0x473e16
push 0x54a3ac
call fcn.0047c040
add esp, 4
mov byte [ebp - 0x2054], 0
push 0xfff
push 0
lea eax, [ebp - 0x2053]
push eax
call fcn.004f8090
add esp, 0xc
mov dword [ebp - 0x205c], 0x1000
mov dword [ebp - 0x1050], 0
push str.Path
lea ecx, [ebp - 0x2058]
call fcn.0044f380
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x2058]
mov dword [ebp - 0x31c0], ecx
lea edx, [ebp - 0x205c]
push edx
lea eax, [ebp - 0x2054]
push eax
lea ecx, [ebp - 0x1050]
push ecx
push 0
mov edx, dword [ebp - 0x31c0]
push edx
mov eax, dword [ebp - 0x1040]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x104c], eax
cmp dword [ebp - 0x104c], 0
je 0x473d5e
mov ecx, dword [ebp - 0x1040]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x567128
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov edx, dword [ebp - 0x319c]
or edx, 1
mov dword [ebp - 0x319c], edx
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2058]
call fcn.0044f990
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x1048]
call fcn.0044f990
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1044]
call fcn.0044f990
mov eax, dword [ebp + 8]
jmp 0x47442b
mov eax, dword [ebp - 0x1040]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x2054]
test ecx, ecx
jne 0x473d81
mov dword [ebp - 0x31d8], 0
jmp 0x473d96
lea edx, [ebp - 0x2054]
push edx
call fcn.004f810a
add esp, 4
mov dword [ebp - 0x31d8], eax
mov eax, dword [ebp - 0x31d8]
push eax
lea ecx, [ebp - 0x2054]
push ecx
lea ecx, [ebp - 0x1044]
call fcn.0044fb50
mov edx, str.Bin32CEXBVIEWER.exe
test edx, edx
jne 0x473dc4
mov dword [ebp - 0x31dc], 0
jmp 0x473dd7
push str.Bin32CEXBVIEWER.exe
call fcn.004f810a
add esp, 4
mov dword [ebp - 0x31dc], eax
mov eax, dword [ebp - 0x31dc]
push eax
push str.Bin32CEXBVIEWER.exe
lea ecx, [ebp - 0x1044]
call fcn.0044ecb0
mov ecx, dword [ebp - 0x1044]
push ecx
push str.PATH__s_
call fcn.0047c040
add esp, 8
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2058]
call fcn.0044f990
jmp 0x4740bc
push str.OPEN_OFTWARECAXASHAREDCAXA_EXB_VIEW______FALSE
call fcn.0047c040
add esp, 4
mov dword [ebp - 0x2068], 0
push str.SOFTWARECAXACAXA_DRAFT_MECHANICAL11.0
lea ecx, [ebp - 0x2064]
call fcn.0044f380
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x2064]
mov dword [ebp - 0x31f4], edx
lea eax, [ebp - 0x2068]
push eax
push 0x20219
push 0
mov ecx, dword [ebp - 0x31f4]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x2060], eax
cmp dword [ebp - 0x2060], 0
jne 0x4740a0
mov byte [ebp - 0x3074], 0
push 0xfff
push 0
lea edx, [ebp - 0x3073]
push edx
call fcn.004f8090
add esp, 0xc
mov dword [ebp - 0x307c], 0x1000
mov dword [ebp - 0x2070], 0
push 0x54a2b4
call fcn.0047c040
add esp, 4
push str.InstallDir
lea ecx, [ebp - 0x3078]
call fcn.0044f380
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x3078]
mov dword [ebp - 0x3208], eax
lea ecx, [ebp - 0x307c]
push ecx
lea edx, [ebp - 0x3074]
push edx
lea eax, [ebp - 0x2070]
push eax
push 0
mov ecx, dword [ebp - 0x3208]
push ecx
mov edx, dword [ebp - 0x2068]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x206c], eax
cmp dword [ebp - 0x206c], 0
je 0x473f88
mov eax, dword [ebp - 0x2068]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x567128
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov ecx, dword [ebp - 0x319c]
or ecx, 1
mov dword [ebp - 0x319c], ecx
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x3078]
call fcn.0044f990
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2064]
call fcn.0044f990
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x1048]
call fcn.0044f990
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1044]
call fcn.0044f990
mov eax, dword [ebp + 8]
jmp 0x47442b
lea edx, [ebp - 0x3074]
test edx, edx
jne 0x473f9e
mov dword [ebp - 0x322c], 0
jmp 0x473fb3
lea eax, [ebp - 0x3074]
push eax
call fcn.004f810a
add esp, 4
mov dword [ebp - 0x322c], eax
mov ecx, dword [ebp - 0x322c]
push ecx
lea edx, [ebp - 0x3074]
push edx
lea ecx, [ebp - 0x1044]
call fcn.0044fb50
mov eax, str._bin32CDRAFT_M.exe
test eax, eax
jne 0x473fe1
mov dword [ebp - 0x3230], 0
jmp 0x473ff4
push str._bin32CDRAFT_M.exe
call fcn.004f810a
add esp, 4
mov dword [ebp - 0x3230], eax
mov ecx, dword [ebp - 0x3230]
push ecx
push str._bin32CDRAFT_M.exe
lea ecx, [ebp - 0x1044]
call fcn.0044ecb0
mov edx, dword [ebp - 0x1044]
mov dword [ebp - 0x3234], edx
lea eax, [ebp - 0x3180]
mov dword [ebp - 0x3184], eax
push 3
mov ecx, dword [ebp - 0x3234]
push ecx
lea ecx, [ebp - 0x3184]
call fcn.00470670
lea edx, [ebp - 0x3184]
mov dword [ebp - 0x3238], edx
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x3238]
mov ecx, dword [eax]
mov dword [ebp - 0x323c], ecx
mov edx, dword [ebp - 0x323c]
push edx
call fcn.0047c040
add esp, 4
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x3184]
mov dword [ebp - 0x3240], eax
lea ecx, [ebp - 0x3180]
cmp dword [ebp - 0x3240], ecx
je 0x474091
mov edx, dword [ebp - 0x3240]
push edx
call fcn.004f84cf
add esp, 4
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x3078]
call fcn.0044f990
mov eax, dword [ebp - 0x2068]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2064]
call fcn.0044f990
mov ecx, dword [ebp - 0x1040]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [ebp - 0x1044]
sub edx, 0x10
mov dword [ebp - 0x324c], edx
mov eax, dword [ebp - 0x324c]
push eax
call fcn.0044fd30
add esp, 4
mov dword [ebp - 0x3250], eax
mov ecx, dword [ebp - 0x3250]
add ecx, 0x10
mov edx, dword [ebp + 8]
mov dword [edx], ecx
mov eax, dword [ebp - 0x319c]
or eax, 1
mov dword [ebp - 0x319c], eax
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x1048]
call fcn.0044f990
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1044]
call fcn.0044f990
mov eax, dword [ebp + 8]
jmp 0x47442b
push str.__tcscmp_pFileExt___T__.EXB_______0
call fcn.0047c040
add esp, 4
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x828], 0
lea ecx, [ebp - 0x828]
push ecx
lea edx, [ebp - 0x14]
push edx
lea eax, [ebp - 0xc2c]
push eax
push SysReAllocStringLen
mov ecx, dword [ebp - 0x33c8]
call fcn.004732a0
mov eax, dword [ebp - 0x828]
shl eax, 9
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004b304f
add esp, 4
mov dword [ebp - 0x3188], eax
mov eax, dword [ebp - 0x3188]
mov dword [ebp - 0x1038], eax
cmp dword [ebp - 0x1038], 0
jne 0x4741e6
mov eax, dword [ebp - 0x828]
shl eax, 9
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004b304f
add esp, 4
mov dword [ebp - 0x318c], eax
mov eax, dword [ebp - 0x318c]
mov dword [ebp - 0x1038], eax
cmp dword [ebp - 0x1038], 0
jne 0x474213
push 0x567128
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov ecx, dword [ebp - 0x319c]
or ecx, 1
mov dword [ebp - 0x319c], ecx
mov eax, dword [ebp + 8]
jmp 0x47442b
mov edx, dword [ebp - 0x828]
shl edx, 9
shl edx, 1
push edx
push 0
mov eax, dword [ebp - 0x1038]
push eax
call fcn.004f8090
add esp, 0xc
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x1034], 0
mov dword [ebp - 0x1030], 0
mov ecx, dword [ebp - 0x1038]
mov dword [ebp - 0x824], ecx
lea edx, [ebp - 0x820]
push edx
push 0x20019
push 0
lea eax, [ebp - 0xc2c]
push eax
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x4742bf
mov ecx, dword [ebp - 0x1038]
mov dword [ebp - 0x3190], ecx
mov edx, dword [ebp - 0x3190]
push edx
call fcn.004b3044
add esp, 4
push 0x567128
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov eax, dword [ebp - 0x319c]
or eax, 1
mov dword [ebp - 0x319c], eax
mov eax, dword [ebp + 8]
jmp 0x47442b
mov dword [ebp - 0x1034], 0
jmp 0x4742da
mov ecx, dword [ebp - 0x1034]
add ecx, 1
mov dword [ebp - 0x1034], ecx
mov edx, dword [ebp - 0x1034]
cmp edx, dword [ebp - 0x828]
jae 0x47433e
mov dword [ebp - 0x1030], 0x200
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x1030]
push eax
mov ecx, dword [ebp - 0x824]
push ecx
mov edx, dword [ebp - 0x1034]
push edx
mov eax, dword [ebp - 0x820]
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0x103
jne 0x47432a
jmp 0x47433e
mov ecx, dword [ebp - 0x824]
add ecx, 0x400
mov dword [ebp - 0x824], ecx
jmp 0x4742cb
mov edx, dword [ebp - 0x820]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1038]
mov dword [ebp - 0x824], eax
mov dword [ebp - 0x1034], 0
jmp 0x474372
mov ecx, dword [ebp - 0x1034]
add ecx, 1
mov dword [ebp - 0x1034], ecx
mov edx, dword [ebp - 0x1034]
cmp edx, dword [ebp - 0x828]
jae 0x4743f1
lea eax, [ebp - 0x81c]
push eax
mov ecx, dword [ebp - 0x824]
push ecx
mov ecx, dword [ebp - 0x33c8]
call fcn.00473640
test eax, eax
je 0x4743db
mov edx, dword [ebp - 0x1038]
mov dword [ebp - 0x3194], edx
mov eax, dword [ebp - 0x3194]
push eax
call fcn.004b3044
add esp, 4
lea ecx, [ebp - 0x81c]
push ecx
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov edx, dword [ebp - 0x319c]
or edx, 1
mov dword [ebp - 0x319c], edx
mov eax, dword [ebp + 8]
jmp 0x47442b
mov eax, dword [ebp - 0x824]
add eax, 0x400
mov dword [ebp - 0x824], eax
jmp 0x474363
mov ecx, dword [ebp - 0x1038]
mov dword [ebp - 0x3198], ecx
mov edx, dword [ebp - 0x3198]
push edx
call fcn.004b3044
add esp, 4
push 0x567128
mov ecx, dword [ebp + 8]
call fcn.0044f380
mov eax, dword [ebp - 0x319c]
or eax, 1
mov dword [ebp - 0x319c], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.004f8124
mov esp, ebp
pop ebp
ret 8