Function at 0x40b810
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x42b807
mov eax, dword fs:[0]
push eax
sub esp, 0x120
mov eax, dword [0x4424ac]
xor eax, esp
mov dword [esp + 0x11c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4424ac]
xor eax, esp
push eax
lea eax, [esp + 0x134]
mov dword fs:[0], eax
mov eax, dword [esp + 0x148]
mov esi, dword [esp + 0x144]
xor ebx, ebx
lea ecx, [esp + 0xc4]
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], ebx
call fcn.0040aa60
mov edi, 0xf
mov dword [esp + 0x13c], ebx
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa0], ebx
mov byte [esp + 0x90], bl
mov eax, esi
mov byte [esp + 0x13c], 1
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
cmp cl, bl
jne 0x40b8a0
sub eax, edx
push eax
push esi
lea ecx, [esp + 0x94]
call fcn.00403e70
mov eax, dword [esp + 0x90]
mov esi, 0x10
cmp dword [esp + 0xa4], esi
jae 0x40b8d5
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0xc8]
call fcn.0040ed90
test al, al
je 0x40c15e
lea ecx, [esp + 0xc4]
call fcn.0040d5c0
test al, al
je 0x40c15e
push 0x42f5f0
lea ecx, [esp + 0xc8]
call fcn.0040d920
test al, al
je 0x40c15e
lea ecx, [esp + 0xc4]
call fcn.0040d290
test al, al
je 0x40c15e
push str.install
lea ecx, [esp + 0xc8]
call fcn.0040d920
test al, al
je 0x40c0e1
lea ecx, [esp + 0xc4]
call fcn.0040d290
push str.system
lea ecx, [esp + 0xc8]
call fcn.0040d920
test al, al
je 0x40c0e1
lea esp, [esp]
push str.version
lea ecx, [esp + 0xac]
push ecx
lea ecx, [esp + 0xcc]
call fcn.00403580
mov dword [esp + 0x88], edi
mov dword [esp + 0x84], ebx
mov byte [esp + 0x74], bl
mov eax, dword [0x43700c]
cmp eax, 2
mov byte [esp + 0x13c], 3
je 0x40b9eb
cmp eax, 3
je 0x40b9eb
cmp eax, 1
je 0x40b9eb
cmp eax, 4
je 0x40b9db
cmp eax, 5
je 0x40b9db
cmp eax, 6
je 0x40b9cb
cmp eax, 7
jne 0x40ba08
push str.Win7
lea ecx, [esp + 0x74]
call fcn.004042c0
jmp 0x40b9fb
push str.WinVista
lea ecx, [esp + 0x74]
call fcn.004042c0
jmp 0x40b9fb
push 5
push str.WinXp
lea ecx, [esp + 0x78]
call fcn.004039d0
cmp dword [esp + 0x88], esi
mov eax, dword [esp + 0x74]
jae 0x40ba0c
lea eax, [esp + 0x74]
mov edx, dword [esp + 0x84]
push edx
push eax
mov eax, dword [esp + 0xc4]
push eax
push ebx
lea ecx, [esp + 0xb8]
call fcn.004028a0
test eax, eax
jne 0x40c06a
lea ecx, [esp + 0xc4]
call fcn.0040d290
push str.parameter
lea ecx, [esp + 0xc8]
call fcn.0040d920
test al, al
je 0x40c06a
lea ecx, [esp + 0xc4]
call fcn.0040d290
push str.registry
lea ecx, [esp + 0xc8]
call fcn.0040d920
test al, al
je 0x40c06a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
imul ecx, ecx, 0x214
lea ebp, [ecx + edx + 0x44]
mov edi, edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], ebx
mov byte [esp + 0x58], bl
push str.desc
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0xcc]
mov byte [esp + 0x144], 4
call fcn.00403580
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 5
call fcn.00403770
cmp dword [esp + 0x30], esi
mov byte [esp + 0x13c], 4
jb 0x40baea
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.0040eec8
add esp, 4
cmp dword [esp + 0x6c], esi
mov eax, dword [esp + 0x58]
jae 0x40baf8
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x68]
add ecx, 1
cmp ecx, 0x7ffffffe
lea edx, [ebp - 0x40]
ja 0x40c115
push ecx
push ebx
mov ecx, 0x40
call fcn.00401c80
cmp eax, ebx
jne 0x40c117
push str.root
lea ecx, [esp + 0xc8]
call fcn.0040d9a0
test al, al
je 0x40bbf5
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 6
call fcn.00403770
cmp dword [esp + 0x30], 0x10
mov byte [esp + 0x13c], 4
jb 0x40bb7d
mov eax, dword [esp + 0x1c]
push eax
call fcn.0040eec8
add esp, 4
mov eax, dword [esp + 0x6c]
cmp eax, 0x10
mov edx, dword [esp + 0x58]
mov esi, edx
jae 0x40bb90
lea esi, [esp + 0x58]
mov edi, str.HKEY_CURRENT_USER
mov ecx, 0x12
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40bba9
mov dword [ebp - 0x44], 0x80000001
jmp 0x40bbf3
cmp eax, 0x10
mov esi, edx
jae 0x40bbb4
lea esi, [esp + 0x58]
mov edi, str.HKEY_CLASSES_ROOT
mov ecx, 0x12
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40bbcd
mov dword [ebp - 0x44], 0x80000000
jmp 0x40bbf3
cmp eax, 0x10
mov esi, edx
jae 0x40bbd8
lea esi, [esp + 0x58]
xor edx, edx
mov edi, str.HKEY_USERS
mov ecx, 0xb
repe cmpsb byte [esi], byte es:[edi]
mov eax, edx
sete al
add eax, 0x80000002
mov dword [ebp - 0x44], eax
xor ebx, ebx
push str.path
lea ecx, [esp + 0xc8]
call fcn.0040d9a0
test al, al
je 0x40bc89
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 7
call fcn.00403770
mov esi, 0x10
cmp dword [esp + 0x30], esi
mov byte [esp + 0x13c], 4
jb 0x40bc50
mov edx, dword [esp + 0x1c]
push edx
call fcn.0040eec8
add esp, 4
cmp dword [esp + 0x6c], esi
mov eax, dword [esp + 0x58]
jae 0x40bc5e
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x68]
add ecx, 1
cmp ecx, 0x7ffffffe
ja 0x40c110
push ecx
push ebx
mov ecx, 0x104
mov edx, ebp
call fcn.00401c80
cmp eax, ebx
jne 0x40c117
jmp 0x40bc8e
mov esi, 0x10
push 0x42f55c
lea ecx, [esp + 0xc8]
call fcn.0040d9a0
test al, al
je 0x40bd1f
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 8
call fcn.00403770
cmp dword [esp + 0x30], esi
mov byte [esp + 0x13c], 4
jb 0x40bce4
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.0040eec8
add esp, 4
cmp dword [esp + 0x6c], esi
mov eax, dword [esp + 0x58]
jae 0x40bcf2
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x68]
add ecx, 1
cmp ecx, 0x7ffffffe
lea edx, [ebp + 0x104]
ja 0x40c115
push ecx
push ebx
mov ecx, 0x40
call fcn.00401c80
cmp eax, ebx
jne 0x40c117
push str.type
lea ecx, [esp + 0xc8]
call fcn.0040d9a0
test al, al
je 0x40c01c
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 9
call fcn.00403770
cmp dword [esp + 0x30], esi
mov byte [esp + 0x13c], 4
jb 0x40bd79
mov eax, dword [esp + 0x1c]
push eax
call fcn.0040eec8
add esp, 4
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x58]
cmp eax, esi
mov esi, edx
jae 0x40bd8b
lea esi, [esp + 0x58]
mov edi, str.REG_DWORD
mov ecx, 0xa
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40be16
push str.value
lea ecx, [esp + 0xc8]
mov dword [ebp + 0x144], 4
call fcn.0040d9a0
test al, al
je 0x40bf84
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 0xa
call fcn.00403770
lea ecx, [esp + 0x18]
mov byte [esp + 0x13c], 4
call fcn.004031e0
cmp dword [esp + 0x6c], 0x10
mov eax, dword [esp + 0x58]
jae 0x40be04
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.SHLWAPI.dll_StrToIntA]
mov dword [ebp + 0x14c], eax
jmp 0x40bf86
cmp eax, 0x10
mov esi, edx
jae 0x40be21
lea esi, [esp + 0x58]
mov edi, str.REG_SZ
mov ecx, 7
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40bed0
push str.value
lea ecx, [esp + 0xc8]
mov dword [ebp + 0x144], 1
call fcn.0040d9a0
test al, al
je 0x40bf84
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 0xb
call fcn.00403770
lea ecx, [esp + 0x18]
mov byte [esp + 0x13c], 4
call fcn.004031e0
cmp dword [esp + 0x6c], 0x10
mov eax, dword [esp + 0x58]
jae 0x40be9e
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x68]
add ecx, 1
cmp ecx, 0x7ffffffe
lea edx, [ebp + 0x150]
ja 0x40c115
push ecx
push ebx
mov ecx, 0x80
call fcn.00401c80
cmp eax, ebx
jne 0x40c117
jmp 0x40bf86
cmp eax, 0x10
mov esi, edx
jae 0x40bedb
lea esi, [esp + 0x58]
mov edi, str.REG_BINARY
mov ecx, 0xb
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c0f8
push str.value
lea ecx, [esp + 0xc8]
mov dword [ebp + 0x144], 3
call fcn.0040d9a0
test al, al
je 0x40bf84
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 0xc
call fcn.00403770
lea ecx, [esp + 0x18]
mov byte [esp + 0x13c], 4
call fcn.004031e0
cmp dword [esp + 0x6c], 0x10
mov eax, dword [esp + 0x58]
jae 0x40bf56
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x68]
add ecx, 1
cmp ecx, 0x7ffffffe
lea edx, [ebp + 0x150]
ja 0x40c115
push ecx
push ebx
mov ecx, 0x80
call fcn.00401c80
cmp eax, ebx
je 0x40bf86
jmp 0x40c117
xor ebx, ebx
push str.delete
lea ecx, [esp + 0xc8]
call fcn.0040d9a0
test al, al
je 0x40c006
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0xc8]
call fcn.00403560
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x148], 0xd
call fcn.00403770
mov esi, 0x10
cmp dword [esp + 0x50], esi
jb 0x40bfd9
mov eax, dword [esp + 0x3c]
push eax
call fcn.0040eec8
add esp, 4
cmp dword [esp + 0x6c], esi
mov eax, dword [esp + 0x58]
mov dword [esp + 0x50], 0xf
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x3c], bl
jae 0x40bff7
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.SHLWAPI.dll_StrToIntA]
mov dword [ebp + 0x148], eax
jmp 0x40c00c
mov dword [ebp + 0x148], ebx
add dword [esp + 0x14], 1
add ebp, 0x214
mov esi, 0x10
cmp dword [esp + 0x6c], esi
mov byte [esp + 0x13c], 3
jb 0x40c037
mov ecx, dword [esp + 0x58]
push ecx
call fcn.0040eec8
add esp, 4
mov dword [esp + 0x6c], 0xf
mov dword [esp + 0x68], ebx
mov byte [esp + 0x58], bl
push str.registry
lea ecx, [esp + 0xc8]
call fcn.0040d920
test al, al
mov esi, 0x10
mov edi, 0xf
jne 0x40ba90
cmp dword [esp + 0x88], esi
jb 0x40c080
mov edx, dword [esp + 0x74]
push edx
call fcn.0040eec8
add esp, 4
cmp dword [esp + 0xc0], esi
mov dword [esp + 0x88], edi
mov dword [esp + 0x84], ebx
mov byte [esp + 0x74], bl
mov byte [esp + 0x13c], 1
jb 0x40c0b3
mov eax, dword [esp + 0xac]
push eax
call fcn.0040eec8
add esp, 4
push str.system
lea ecx, [esp + 0xc8]
mov dword [esp + 0xc4], edi
mov dword [esp + 0xc0], ebx
mov byte [esp + 0xb0], bl
call fcn.0040d920
test al, al
jne 0x40b970
mov dword [esp + 0x114], ebx
mov dword [esp + 0x118], ebx
mov dword [esp + 0x120], ebx
jmp 0x40c135
lea ecx, [esp + 0x54]
mov byte [esp + 0x13c], 3
call fcn.004031e0
xor ebx, ebx
jmp 0x40c047
mov byte [ebp], bl
jmp 0x40c117
mov byte [edx], bl
lea ecx, [esp + 0x54]
call fcn.004031e0
lea ecx, [esp + 0x70]
call fcn.004031e0
lea ecx, [esp + 0xa8]
call fcn.004031e0
lea ecx, [esp + 0x8c]
call fcn.004031e0
lea ecx, [esp + 0xc4]
mov dword [esp + 0x13c], 0xffffffff
call fcn.0040ab10
mov eax, dword [esp + 0x14]
jmp 0x40c1a5
cmp dword [esp + 0xa4], esi
jb 0x40c177
mov ecx, dword [esp + 0x90]
push ecx
call fcn.0040eec8
add esp, 4
lea ecx, [esp + 0xc4]
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa0], ebx
mov byte [esp + 0x90], bl
mov dword [esp + 0x13c], 0xffffffff
call fcn.0040ab10
xor eax, eax
mov ecx, dword [esp + 0x134]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.00417b3b
add esp, 0x12c
ret