Function at 0x431b90
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x46385b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x214
mov ax, word [0x47a15c]
push ebx
push ebp
push esi
push edi
mov word [esp + 0x1c], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x1e]
lea edx, [esp + 0x1c]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x14]
mov esi, 1
stosw word es:[edi], ax
push ecx
lea eax, [esp + 0x1c]
push edx
push eax
push str.installpath
push str.SOFTWAREJiangmin
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], 0x104
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x431d59
lea ecx, [esp + 0x1c]
push str.AntiViruskvxp.kxp
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
je 0x431d59
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x431d59
mov eax, dword [0x46f42c]
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x10]
lea edx, [esp + 0x1c]
push ecx
push edx
mov dword [esp + 0x234], 0
call fcn.00402170
add esp, 8
test eax, eax
je 0x431d1f
mov eax, dword [esp + 0x10]
push str.2.0.7.1221
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jl 0x431d1f
mov ecx, 0x473ee8
test ecx, ecx
jne 0x431c84
xor edi, edi
jmp 0x431c91
push 0x473ee8
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
mov esi, dword [esp + 0x234]
mov eax, dword [esi]
cmp dword [eax - 0xc], 1
jg 0x431ca5
cmp edi, dword [eax - 4]
jle 0x431cb8
mov ecx, esi
call fcn.004083e0
push edi
mov ecx, esi
call fcn.00408040
test eax, eax
je 0x431cde
mov eax, dword [esi]
lea ebx, [edi + edi]
push ebx
lea edx, [edi + edi + 2]
push 0x473ee8
push edx
push eax
call fcn.00407060
mov ecx, dword [esi]
add esp, 0x10
mov dword [ecx - 8], edi
mov edx, dword [esi]
mov word [ebx + edx], 0
mov eax, dword [esp + 0x10]
mov edx, dword [0x46f430]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x431e44
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x431e44
mov edx, dword [esp + 0x10]
add edx, 0xfffffff4
push edx
call fcn.004535f0
add esp, 4
mov eax, 1
jmp 0x431e4d
mov eax, dword [esp + 0x10]
mov edx, dword [0x46f430]
mov dword [esp + 0x22c], 0xffffffff
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x431d59
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x431d59
mov edx, dword [esp + 0x10]
add edx, 0xfffffff4
push edx
call fcn.004535f0
add esp, 4
push 0x473df0
call fcn.004065f0
add esp, 4
test eax, eax
je 0x431dc3
mov eax, 0x473e88
test eax, eax
jne 0x431d77
xor ebp, ebp
jmp 0x431d84
push 0x473e88
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, eax
mov ebx, dword [esp + 0x234]
mov eax, dword [ebx]
cmp dword [eax - 0xc], esi
jg 0x431d97
cmp ebp, dword [eax - 4]
jle 0x431dae
mov ecx, ebx
call fcn.004083e0
push ebp
mov ecx, ebx
call fcn.00408040
test eax, eax
je 0x431e44
lea eax, [ebp + ebp]
lea ecx, [ebp + ebp + 2]
cmp ecx, eax
jb 0x431e37
mov ecx, eax
mov esi, 0x473e88
jmp 0x431e27
push str.KSysmon
call fcn.004065f0
add esp, 4
test eax, eax
je 0x431e4b
mov eax, 0x473e2c
test eax, eax
jne 0x431de1
xor ebp, ebp
jmp 0x431dee
push 0x473e2c
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, eax
mov ebx, dword [esp + 0x234]
mov eax, dword [ebx]
cmp dword [eax - 0xc], esi
jg 0x431e01
cmp ebp, dword [eax - 4]
jle 0x431e14
mov ecx, ebx
call fcn.004083e0
push ebp
mov ecx, ebx
call fcn.00408040
test eax, eax
je 0x431e44
lea eax, [ebp + ebp]
lea ecx, [ebp + ebp + 2]
cmp ecx, eax
jb 0x431e37
mov ecx, eax
mov esi, 0x473e2c
mov edi, dword [ebx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx]
mov dword [ecx - 8], ebp
mov edx, dword [ebx]
mov word [eax + edx], 0
mov eax, 1
jmp 0x431e4d
xor eax, eax
mov ecx, dword [esp + 0x224]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x220
ret