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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x47196e
mov eax, dword fs:[0]
push eax
sub esp, 0x110
push ebx
push esi
push edi
mov eax, dword [0x492fb4]
xor eax, esp
push eax
lea eax, [esp + 0x120]
mov dword fs:[0], eax
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
push edi
lea eax, [ebx + 0x28]
call fcn.004206a7
mov dword [esp + 0x14], eax
test eax, eax
jne 0x423112
mov esi, dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [esp + 0x24]
push eax
call esi
and dword [esp + 0x128], 0
lea eax, [edi - 0x7d0]
cmp eax, 0xa
ja case.default.0x4229bf
movzx eax, byte [eax + 0x42313d]
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp dword [eax*4 + 0x42312d]
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x4229e0
mov esi, 0x8002000f
lea eax, [esp + 0x24]
push eax
call edi
mov eax, esi
jmp 0x423112
mov eax, dword [eax + 8]
cmp eax, 4
jae 0x4229ef
mov esi, 0x8002000e
jmp 0x4229d2
cmp eax, 5
ja 0x4229e8
lea eax, [esp + 0x74]
push eax
call esi
lea eax, [esp + 0x54]
push eax
call esi
lea eax, [esp + 0x84]
push eax
call esi
lea eax, [esp + 0x64]
push eax
call esi
lea eax, [esp + 0x3c]
push eax
call esi
mov eax, dword [ebp + 0x1c]
mov byte [esp + 0x128], 5
cmp dword [eax + 8], 4
mov esi, eax
mov eax, dword [esi]
jne 0x422a66
add eax, 0x30
push eax
lea eax, [esp + 0x78]
push eax
call fcn.004233dd
mov eax, dword [esi]
add eax, 0x20
push eax
lea eax, [esp + 0x58]
push eax
call fcn.004233dd
mov eax, dword [esi]
add eax, 0x10
push eax
lea eax, [esp + 0x88]
push eax
call fcn.004233dd
lea eax, [esp + 0x64]
jmp 0x422aab
add eax, 0x40
push eax
lea eax, [esp + 0x78]
push eax
call fcn.004233dd
mov eax, dword [esi]
add eax, 0x30
push eax
lea eax, [esp + 0x58]
push eax
call fcn.004233dd
mov eax, dword [esi]
add eax, 0x20
push eax
lea eax, [esp + 0x88]
push eax
call fcn.004233dd
mov eax, dword [esi]
add eax, 0x10
push eax
lea eax, [esp + 0x68]
push eax
call fcn.004233dd
lea eax, [esp + 0x3c]
push dword [esi]
push eax
call fcn.004233dd
push 8
pop eax
mov ecx, eax
cmp cx, word [esp + 0x74]
je 0x422aef
lea eax, [esp + 0x3c]
push eax
call edi
lea eax, [esp + 0x64]
push eax
call edi
lea eax, [esp + 0x84]
push eax
call edi
lea eax, [esp + 0x54]
push eax
call edi
lea eax, [esp + 0x74]
push eax
call edi
mov esi, 0x80020008
jmp 0x4229d2
mov ecx, eax
cmp cx, word [esp + 0x54]
jne 0x422abf
cmp cx, word [esp + 0x84]
jne 0x422abf
cmp ax, word [esp + 0x64]
jne 0x422abf
cmp dword [esi + 8], 4
jbe 0x422b50
push 3
pop eax
cmp ax, word [esp + 0x3c]
jne 0x422abf
cmp dword [esp + 0x44], 1
jge 0x422b50
lea eax, [esp + 0x3c]
push eax
call edi
lea eax, [esp + 0x64]
push eax
call edi
lea eax, [esp + 0x84]
push eax
call edi
lea eax, [esp + 0x54]
push eax
call edi
lea eax, [esp + 0x74]
push eax
call edi
mov esi, 0x80070057
jmp 0x4229d2
push dword [esp + 0x7c]
lea ecx, [esp + 0x1c]
call fcn.00401be2
mov byte [esp + 0x128], 6
mov eax, dword [esp + 0x18]
xor esi, esi
cmp dword [eax - 0xc], esi
jne 0x422b7a
lea ecx, [eax - 0x10]
call fcn.0040267a
jmp 0x422b20
push dword [esp + 0x5c]
lea ecx, [esp + 0x20]
call fcn.00401be2
mov byte [esp + 0x128], 7
mov eax, dword [esp + 0x1c]
cmp dword [eax - 0xc], esi
jne 0x422ba9
lea ecx, [eax - 0x10]
call fcn.0040267a
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
jmp 0x422b73
push dword [esp + 0x8c]
lea ecx, [esp + 0x24]
call fcn.00401be2
mov byte [esp + 0x128], 8
mov eax, dword [esp + 0x20]
cmp dword [eax - 0xc], esi
jne 0x422bdb
lea ecx, [eax - 0x10]
call fcn.0040267a
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
jmp 0x422b9b
push dword [esp + 0x6c]
lea ecx, [esp + 0x54]
call fcn.00401be2
mov byte [esp + 0x128], 9
mov eax, dword [esp + 0x50]
cmp dword [eax - 0xc], esi
jne 0x422c0a
lea ecx, [eax - 0x10]
call fcn.0040267a
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
jmp 0x422bcd
cmp dword [ebx + 0x1a8], esi
jne 0x422c25
lea esi, [ebx + 0x90]
call fcn.00431e1b
mov dword [esp + 0x14], eax
test eax, eax
jne 0x422c90
mov eax, dword [ebp + 0x1c]
cmp dword [eax + 8], 4
jbe 0x422c70
mov esi, dword [ebx + 0x144]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], eax
cmp esi, ecx
jae 0x422c65
lea eax, [ebx + 0x188]
mov edi, ecx
call fcn.0040bd0b
test eax, eax
lea eax, [ebx + 0x138]
jne 0x422c61
mov ecx, dword [esp + 0x14]
jmp 0x422c6b
mov ecx, esi
jmp 0x422c6b
lea eax, [ebx + 0x138]
call fcn.004331b8
push dword [esp + 0x50]
lea eax, [ebx + 0x90]
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
push eax
call fcn.004318e7
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x50]
add ecx, 0xfffffff0
call fcn.0040267a
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.0040267a
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
call fcn.0040267a
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
call fcn.0040267a
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [esp + 0x3c]
push eax
call esi
lea eax, [esp + 0x64]
push eax
call esi
lea eax, [esp + 0x84]
push eax
call esi
lea eax, [esp + 0x54]
push eax
call esi
mov byte [esp + 0x128], 0
lea eax, [esp + 0x74]
jmp 0x4230fa
cmp dword [ebp + 0x20], 0
jne 0x422d19
mov eax, dword [ebp + 0x24]
lea esi, [esp + 0xa0]
mov dword [esp + 0xa0], eax
call fcn.00420f41
mov esi, eax
jmp 0x4229d2
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4229cd
cmp dword [eax + 8], 1
jne 0x4229e8
push dword [eax]
lea ecx, [esp + 0xb8]
call fcn.0041d670
push 8
pop eax
mov byte [esp + 0x128], 0xa
cmp ax, word [esp + 0xb4]
je 0x422d5d
lea eax, [esp + 0xb4]
jmp 0x422ae2
push dword [esp + 0xbc]
lea ecx, [esp + 0x3c]
call fcn.00401be2
mov byte [esp + 0x128], 0xb
mov eax, dword [esp + 0x38]
cmp dword [eax - 0xc], 0
jne 0x422d93
lea ecx, [eax - 0x10]
call fcn.0040267a
lea eax, [esp + 0xb4]
jmp 0x422b43
lea ecx, [ebx + 0x90]
push eax
push ecx
call fcn.00431e72
cmp dword [ebp + 0xc], 0x7d1
mov esi, eax
jne 0x422e29
push 3
pop eax
mov word [esp + 0x24], ax
cmp byte [esi], 0
jne 0x422e24
and dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x38]
add ecx, 0xfffffff0
call fcn.0040267a
lea eax, [esp + 0xb4]
mov byte [esp + 0x128], 0
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
push eax
call esi
xor eax, eax
cmp ax, word [esp + 0x24]
je 0x422e14
lea eax, [esp + 0x24]
push eax
push dword [ebp + 0x20]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp dword [esp + 0x14], 0
je 0x422e14
push dword [ebp + 0xc]
mov ecx, dword [ebp + 0x1c]
push dword [esp + 0x18]
push ebx
call fcn.00420d91
and dword [esp + 0x14], 0
lea eax, [esp + 0x24]
push eax
call esi
mov eax, dword [esp + 0x14]
jmp 0x423112
mov eax, dword [esi + 0x18]
jmp 0x422e4a
mov eax, dword [ebp + 0xc]
cmp eax, 0x7d2
jne 0x422e55
push 3
pop eax
mov word [esp + 0x24], ax
cmp byte [esi], 0
je 0x422db8
push esi
call fcn.0043164e
xor edx, edx
mov ecx, 0x3e8
div ecx
jmp 0x422e70
cmp eax, 0x7d9
jne 0x422e79
push 3
pop eax
mov word [esp + 0x24], ax
cmp byte [esi], 0
je 0x422db8
mov eax, dword [esi + 0x44]
mov dword [esp + 0x2c], eax
jmp 0x422dbd
cmp eax, 0x7d3
jne 0x422eed
call fcn.00431509
push eax
lea ecx, [esp + 0xa0]
call fcn.004233b7
mov edi, dword [esi + 4]
mov eax, dword [esp + 0x9c]
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
dec edi
je 0x422ec8
dec edi
je 0x422ec1
dec edi
lea esi, [esp + 0x24]
je 0x422eba
push str.suspended
jmp 0x422ee3
push str.completed
jmp 0x422ee3
push str.failed
jmp 0x422edf
push esi
call fcn.0043164e
test eax, eax
jne 0x422ed9
push str.starting
jmp 0x422edf
call fcn.0042278c
push eax
lea esi, [esp + 0x28]
call fcn.00408ec3
jmp 0x422dbd
cmp eax, 0x7da
jne 0x422dbd
push dword [esp + 0x38]
lea eax, [esp + 0xd8]
push eax
lea eax, [ebx + 0x90]
push eax
call fcn.00431d7c
mov byte [esp + 0x128], 0xc
push dword [ebx + 0x88]
and dword [esp + 0x9c], 0
lea eax, [esp + 0xd8]
push eax
lea ecx, [esp + 0xa0]
call fcn.004226d3
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x422f5f
mov esi, dword [esp + 0x98]
test esi, esi
je 0x422f53
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [ebp + 0x20]
push 9
pop ecx
mov word [eax], cx
mov dword [eax + 8], esi
lea esi, [esp + 0xd4]
call fcn.004315b2
mov ecx, dword [esp + 0x38]
add ecx, 0xfffffff0
call fcn.0040267a
lea eax, [esp + 0xb4]
push eax
call edi
mov esi, ebx
jmp 0x4229d2
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4229cd
cmp dword [eax + 8], 1
jne 0x4229e8
push dword [eax]
lea ecx, [esp + 0xc8]
call fcn.0041d670
push 8
pop eax
mov byte [esp + 0x128], 0xd
cmp ax, word [esp + 0xc4]
je 0x422fcc
lea eax, [esp + 0xc4]
jmp 0x422ae2
cmp dword [ebp + 0xc], 0x7d4
jne 0x422fdf
mov dword [esp + 0x14], 0x80004001
jmp 0x423040
cmp dword [ebp + 0xc], 0x7d5
jne 0x423040
push dword [esp + 0xcc]
lea ecx, [esp + 0x50]
call fcn.00401be2
push str.normal
lea eax, [esp + 0x50]
push eax
mov byte [esp + 0x130], 0xe
xor esi, esi
call fcn.00401c47
test eax, eax
jne 0x423018
inc esi
jmp 0x42302e
push str.aggressive
lea eax, [esp + 0x50]
push eax
call fcn.00401c47
test eax, eax
jne 0x42302e
push 2
pop esi
mov ecx, dword [esp + 0x4c]
add ecx, 0xfffffff0
mov dword [ebx + 0x138], esi
call fcn.0040267a
mov byte [esp + 0x128], 0
lea eax, [esp + 0xc4]
jmp 0x4230f4
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4229cd
cmp dword [eax + 8], 1
jne 0x4229e8
push dword [eax]
lea ecx, [esp + 0xa8]
call fcn.0041d670
push 9
pop eax
cmp ax, word [esp + 0xa4]
je 0x423098
lea eax, [esp + 0xa4]
push eax
call edi
mov esi, 0x80020005
jmp 0x4229d2
cmp dword [ebp + 0xc], 0x7d6
jne 0x4230b1
lea eax, [esp + 0xa4]
push eax
lea eax, [ebx + 0x1d0]
jmp 0x4230e1
cmp dword [ebp + 0xc], 0x7d7
jne 0x4230ca
lea eax, [esp + 0xa4]
push eax
lea eax, [ebx + 0x1d4]
jmp 0x4230e1
cmp dword [ebp + 0xc], 0x7d8
jne 0x4230ed
lea eax, [esp + 0xa4]
push eax
lea eax, [ebx + 0x1d8]
push eax
call fcn.0042275a
pop ecx
pop ecx
mov dword [esp + 0x14], eax
lea eax, [esp + 0xa4]
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
push eax
call esi
jmp 0x422df8
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, 0x80020003
mov ecx, dword [esp + 0x120]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24