Function at 0x401110
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 8
push 0x40a9c4
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [0x4060f2], 0
jne 0x401663
lea eax, [esp + 4]
push eax
push 1
push 0
push str.SoftwareNational_InstrumentsMeasurement__Automation_Explorer
push 0x80000002
mov byte [0x4060f2], 1
mov dword [esp + 0x18], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x401663
mov edx, dword [esp + 4]
push ebx
push ebp
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push edi
lea ecx, [esp + 0x10]
push ecx
push 0x409160
push eax
push eax
push str.CurrentPath
mov ebp, 0x800
push edx
mov dword [esp + 0x28], ebp
call esi
mov ecx, dword [esp + 0x14]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0x10]
push eax
push 0x406d10
push 0
push 0
push 0x404470
mov ebx, 0x400
push ecx
mov dword [esp + 0x28], ebx
call edi
test eax, eax
jne 0x401231
lea edx, [esp + 0x10]
push edx
push 0x409960
push eax
push eax
mov eax, dword [esp + 0x24]
push str.CurrentVersion
push eax
mov dword [esp + 0x28], 0x1e
call esi
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push ecx
push 0x407110
push 0
push 0
push 0x404440
push edx
mov dword [esp + 0x28], 0xf
call edi
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0x408960
push 0
push 0
push str.Command
push ecx
mov dword [esp + 0x28], ebp
call esi
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x10]
push edx
push 0x406910
push 0
push 0
push 0x404428
push eax
mov dword [esp + 0x28], ebx
call edi
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push ecx
push 0x408140
push 0
push 0
push str.SelfRegisteredPath
push edx
mov dword [esp + 0x28], ebp
call esi
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0x406500
push 0
push 0
push 0x4043ec
push ecx
mov dword [esp + 0x28], ebx
call edi
test eax, eax
jne 0x4012f8
lea edx, [esp + 0x10]
push edx
push 0x408940
push eax
push eax
mov eax, dword [esp + 0x24]
push str.SelfRegisteredVersion
push eax
mov dword [esp + 0x28], 0x1e
call esi
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push ecx
push 0x406900
push 0
push 0
push 0x4043a8
push edx
mov dword [esp + 0x28], 0xf
call edi
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0x407940
push 0
push 0
push str.SelfRegisteredCommand
push ecx
mov dword [esp + 0x28], ebp
call esi
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x10]
push edx
push 0x406100
push 0
push 0
push 0x404364
push eax
mov dword [esp + 0x28], ebx
call edi
jmp 0x4013b6
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + 0x406d10]
mov byte [eax + 0x406500], cl
add eax, 1
test cl, cl
jne 0x401300
xor eax, eax
jmp 0x401320
mov cl, byte [eax + 0x406910]
mov byte [eax + 0x406100], cl
add eax, 1
test cl, cl
jne 0x401320
xor eax, eax
jmp 0x401340
mov cl, byte [eax + 0x407110]
mov byte [eax + 0x406900], cl
add eax, 1
test cl, cl
jne 0x401340
xor eax, eax
jmp 0x401360
movzx ecx, word [eax + 0x409160]
mov word [eax + 0x408140], cx
add eax, 2
test cx, cx
jne 0x401360
xor eax, eax
jmp 0x401380
movzx ecx, word [eax + 0x408960]
mov word [eax + 0x407940], cx
add eax, 2
test cx, cx
jne 0x401380
xor eax, eax
jmp 0x4013a0
movzx ecx, word [eax + 0x409960]
mov word [eax + 0x408940], cx
add eax, 2
test cx, cx
jne 0x4013a0
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push ecx
push 0x40a1a0
push 0
push 0
push str.CurrentMxsPath
push edx
mov dword [esp + 0x28], ebp
call esi
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0x407530
push 0
push 0
push 0x404334
push ecx
mov dword [esp + 0x28], ebx
call edi
test eax, eax
jne 0x401438
lea edx, [esp + 0x10]
push edx
push 0x40a9a0
push eax
push eax
mov eax, dword [esp + 0x24]
push str.CurrentMxsVersion
push eax
mov dword [esp + 0x28], 0x1e
call esi
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push ecx
push 0x407930
push 0
push 0
push 0x4042fc
push edx
mov dword [esp + 0x28], 0xf
call edi
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0x409980
push 0
push 0
push str.SelfRegisteredMxsPath
push ecx
mov dword [esp + 0x28], ebp
call esi
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x10]
push edx
push 0x407120
push 0
push 0
push 0x4042b8
push eax
mov dword [esp + 0x28], ebx
call edi
test eax, eax
jne 0x4014bc
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push ecx
push 0x40a180
push eax
push eax
push str.SelfRegisteredMxsVersion
push edx
mov dword [esp + 0x28], 0x1e
call esi
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0x407520
push 0
push 0
push 0x404268
push ecx
mov dword [esp + 0x28], 0xf
call edi
jmp 0x401536
xor eax, eax
mov edi, edi
mov cl, byte [eax + 0x407530]
mov byte [eax + 0x407120], cl
add eax, 1
test cl, cl
jne 0x4014c0
xor eax, eax
jmp 0x4014e0
mov cl, byte [eax + 0x407930]
mov byte [eax + 0x407520], cl
add eax, 1
test cl, cl
jne 0x4014e0
xor eax, eax
jmp 0x401500
movzx ecx, word [eax + 0x40a1a0]
mov word [eax + 0x409980], cx
add eax, 2
test cx, cx
jne 0x401500
xor eax, eax
jmp 0x401520
movzx ecx, word [eax + 0x40a9a0]
mov word [eax + 0x40a180], cx
add eax, 2
test cx, cx
jne 0x401520
cmp byte [0x407530], 0
pop edi
pop esi
pop ebp
pop ebx
jne 0x401563
xor eax, eax
jmp 0x401550
mov cl, byte [eax + 0x406d10]
mov byte [eax + 0x407530], cl
add eax, 1
test cl, cl
jne 0x401550
cmp byte [0x407930], 0
jne 0x401583
xor eax, eax
mov edi, edi
mov cl, byte [eax + 0x407110]
mov byte [eax + 0x407930], cl
add eax, 1
test cl, cl
jne 0x401570
cmp byte [0x407120], 0
jne 0x4015a3
xor eax, eax
mov edi, edi
mov cl, byte [eax + 0x406500]
mov byte [eax + 0x407120], cl
add eax, 1
test cl, cl
jne 0x401590
cmp byte [0x407520], 0
jne 0x4015c3
xor eax, eax
mov edi, edi
mov cl, byte [eax + 0x406900]
mov byte [eax + 0x407520], cl
add eax, 1
test cl, cl
jne 0x4015b0
cmp word [0x40a1a0], 0
jne 0x4015e6
xor eax, eax
nop
movzx ecx, word [eax + 0x409160]
mov word [eax + 0x40a1a0], cx
add eax, 2
test cx, cx
jne 0x4015d0
cmp word [0x40a9a0], 0
jne 0x401608
xor eax, eax
movzx ecx, word [eax + 0x409960]
mov word [eax + 0x40a9a0], cx
add eax, 2
test cx, cx
jne 0x4015f2
cmp word [0x409980], 0
jne 0x401636
xor eax, eax
jmp 0x401620
movzx ecx, word [eax + 0x408140]
mov word [eax + 0x409980], cx
add eax, 2
test cx, cx
jne 0x401620
cmp word [0x40a180], 0
jne 0x401658
xor eax, eax
movzx ecx, word [eax + 0x408940]
mov word [eax + 0x40a180], cx
add eax, 2
test cx, cx
jne 0x401642
mov edx, dword [esp + 4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x40a9c4
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
add esp, 8
ret