Function at 0x438a90
Capabilities:
Get file version info
Query or enumerate registry value

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5e31b8
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x268
mov eax, dword [0x660ff8]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x26c], ecx
mov byte [ebp - 0x235], 0
call fcn.0040cf77
mov ecx, eax
test ecx, ecx
je 0x439164
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
push 0x62bf34
lea ecx, [ebp - 0x24c]
mov dword [ebp - 4], 0
call fcn.0040d730
test al, al
jne 0x438b28
push 0x62bf34
lea ecx, [ebp - 0x24c]
call fcn.0040d8d0
xor edi, edi
mov dword [ebp - 4], 1
mov dword [ebp - 0x264], edi
mov dword [ebp - 0x260], edi
mov dword [ebp - 0x25c], edi
mov dword [ebp - 0x258], edi
mov dword [ebp - 0x254], edi
mov dword [ebp - 0x250], edi
lea eax, [ebp - 0x234]
mov byte [ebp - 4], 3
push eax
push 0x20019
push edi
push str.SOFTWAREClasses.pdf
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x234], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x43903c
mov esi, dword [ebp - 0x234]
mov dword [ebp - 0x254], eax
mov dword [ebp - 0x234], eax
lea eax, [ebp - 0x234]
push eax
push edi
lea eax, [ebp - 0x23c]
mov dword [ebp - 0x258], esi
push eax
push edi
push 0x62bf34
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43903c
mov eax, dword [ebp - 0x23c]
cmp eax, 1
je 0x438bd4
cmp eax, 2
jne 0x43903c
mov esi, dword [ebp - 0x234]
lea ecx, [ebp - 0x264]
shr esi, 1
lea eax, [esi + 1]
push eax
call fcn.0042b8c0
push dword [ebp - 0x260]
mov edi, dword [ebp - 0x264]
lea ecx, [ebp - 0x23c]
push edi
mov dword [ebp - 0x23c], 0
call fcn.00439930
add esp, 8
lea eax, [esi + esi]
mov esi, dword [ebp - 0x258]
mov dword [ebp - 0x234], eax
lea eax, [ebp - 0x234]
push eax
push edi
lea eax, [ebp - 0x23c]
push eax
push 0
push 0x62bf34
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43903c
mov eax, dword [ebp - 0x23c]
cmp eax, 1
je 0x438c58
cmp eax, 2
jne 0x43903c
mov ecx, dword [ebp - 0x234]
test edi, edi
je 0x438c85
test ecx, ecx
je 0x438c80
test cl, 1
jne 0x43903c
mov eax, ecx
shr eax, 1
cmp word [edi + eax*2 - 2], 0
je 0x438c85
jmp 0x43903c
xor eax, eax
mov word [edi], ax
shr ecx, 1
mov dword [ebp - 0x23c], ecx
test esi, esi
je 0x438ca2
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x258], 0
mov dword [ebp - 0x254], 0
call fcn.0040cf77
mov ecx, eax
test ecx, ecx
je 0x43916e
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x268], eax
xorps xmm0, xmm0
mov dword [ebp - 0x220], 0
xor eax, eax
mov dword [ebp - 0x21c], 7
movups xmmword [ebp - 0x230], xmm0
mov word [ebp - 0x230], ax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x230]
push dword [ebp - 0x23c]
push edi
call fcn.0040a38d
cmp dword [ebp - 0x21c], 8
lea eax, [ebp - 0x230]
cmovae eax, dword [ebp - 0x230]
push eax
lea eax, [ebp - 0x268]
push str.SOFTWAREClasses_s_shellOpencommand
push eax
call fcn.00439910
mov esi, dword [ebp - 0x268]
lea eax, [ebp - 0x234]
add esp, 0xc
mov dword [ebp - 0x234], 0
push eax
push 0x20019
push 0
push esi
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x438fbf
mov eax, dword [ebp - 0x258]
xor ecx, ecx
test eax, eax
je 0x438d78
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, eax
mov eax, dword [ebp - 0x234]
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x254], 0
test ecx, ecx
jne 0x438fbf
mov dword [ebp - 0x234], ecx
lea ecx, [ebp - 0x234]
push ecx
push 0
lea ecx, [ebp - 0x23c]
push ecx
push 0
push 0x62bf34
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x438fbf
mov eax, dword [ebp - 0x23c]
cmp eax, 1
je 0x438dd6
cmp eax, 2
jne 0x438fbf
mov eax, dword [ebp - 0x234]
lea ecx, [ebp - 0x264]
shr eax, 1
push eax
mov dword [ebp - 0x234], eax
call fcn.0042b8c0
push dword [ebp - 0x260]
mov edi, dword [ebp - 0x264]
lea ecx, [ebp - 0x240]
push edi
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], edi
call fcn.00439930
add esp, 8
lea eax, [ebp - 0x234]
lea ecx, [ebp - 0x258]
push eax
push edi
push 0x62bf34
call fcn.0042c1d0
test eax, eax
jne 0x438fbf
push edi
lea ecx, [ebp - 0x248]
call fcn.0040d6b0
lea eax, [ebp - 0x240]
mov byte [ebp - 4], 6
push eax
push 0x631ed8
lea eax, [ebp - 0x234]
mov dword [ebp - 0x240], 1
push eax
lea ecx, [ebp - 0x248]
call fcn.004184b0
push eax
lea ecx, [ebp - 0x248]
mov byte [ebp - 4], 7
call fcn.00410070
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 6
call fcn.0040d690
mov eax, dword [ebp - 0x248]
cmp dword [eax - 0xc], 0
je 0x438fb4
lea ecx, [ebp - 0x270]
push ecx
push eax
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov dword [ebp - 0x278], eax
test eax, eax
je 0x438fb4
push eax
call fcn.005bed9d
add esp, 4
mov dword [ebp - 0x244], eax
test eax, eax
je 0x438fb4
push eax
push dword [ebp - 0x278]
push dword [ebp - 0x270]
push dword [ebp - 0x248]
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
jne 0x438f02
push dword [ebp - 0x244]
call fcn.005bc852
jmp 0x438fb1
mov edi, dword [sym.imp.VERSION.dll_VerQueryValueW]
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x234]
mov dword [ebp - 0x234], 0
push eax
push 0x631bbc
push dword [ebp - 0x244]
call edi
mov ecx, dword [ebp - 0x234]
movzx eax, word [ecx + 2]
push eax
movzx eax, word [ecx]
push eax
lea eax, [ebp - 0x218]
push str.StringFileInfo_04x_04xProductName
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x244]
call edi
test eax, eax
je 0x438fa0
cmp dword [ebp - 0x240], 0
jbe 0x438fa0
push dword [ebp - 0x234]
lea ecx, [ebp - 0x24c]
call fcn.0040d8d0
push dword [ebp - 0x244]
call fcn.005bc852
mov byte [ebp - 0x235], 1
jmp 0x438fab
push dword [ebp - 0x244]
call fcn.005bc852
mov edi, dword [ebp - 0x23c]
add esp, 4
lea ecx, [ebp - 0x248]
call fcn.0040d690
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x21c]
cmp ecx, 8
jb 0x439003
mov edx, dword [ebp - 0x230]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x438ff9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439178
push ecx
push edx
call fcn.005b0fc9
add esp, 8
xor eax, eax
mov dword [ebp - 0x220], 0
mov word [ebp - 0x230], ax
add esi, 0xfffffff0
mov dword [ebp - 0x21c], 7
or eax, 0xffffffff
mov byte [ebp - 4], 3
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43903c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov al, byte [ebp - 0x235]
mov byte [ebp - 0x274], al
call fcn.0040cf77
mov ecx, eax
test ecx, ecx
je 0x43917d
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x270], eax
cmp byte [ebp - 0x235], 0
mov ecx, 0x62cfc8
mov eax, 0x6356b4
mov byte [ebp - 4], 8
cmove eax, ecx
lea ecx, [ebp - 0x270]
push eax
call fcn.0040d8d0
mov esi, dword [ebp - 0x270]
mov ecx, dword [ebp - 0x26c]
push esi
push 0
push 0x1174f
mov ecx, dword [ecx]
call fcn.0041a290
mov byte [ebp - 4], 3
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4390c2
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x26c]
mov esi, dword [ebp - 0x24c]
push esi
push 0
mov ecx, dword [eax]
push 0x11750
call fcn.0041a290
mov eax, dword [ebp - 0x258]
test eax, eax
je 0x4390ee
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [ebp - 4], 1
test edi, edi
je 0x439127
mov eax, dword [ebp - 0x25c]
sub eax, edi
sar eax, 1
lea ecx, [eax + eax]
mov eax, edi
cmp ecx, 0x1000
jb 0x43911d
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439187
push ecx
push edi
call fcn.005b0fc9
add esp, 8
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439146
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.005b0d47
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0x80004005
call fcn.00402449
push 0x80004005
call fcn.00402449
call fcn.005b7faf
push 0x80004005
call fcn.00402449
call fcn.005b7faf
int3