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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x470c40
mov eax, dword fs:[0]
push eax
sub esp, 0x110
push ebx
push esi
push edi
mov eax, dword [0x491fb4]
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.0041f726
mov dword [esp + 0x14], eax
test eax, eax
jne 0x422127
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.0x4219d4
movzx eax, byte [eax + 0x422152]
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp dword [eax*4 + 0x422142]
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x4219f5
mov esi, 0x8002000f
lea eax, [esp + 0x24]
push eax
call edi
mov eax, esi
jmp 0x422127
mov eax, dword [eax + 8]
cmp eax, 4
jae 0x421a04
mov esi, 0x8002000e
jmp 0x4219e7
cmp eax, 5
ja 0x4219fd
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 0x421a7b
add eax, 0x30
push eax
lea eax, [esp + 0x78]
push eax
call fcn.004223f2
mov eax, dword [esi]
add eax, 0x20
push eax
lea eax, [esp + 0x58]
push eax
call fcn.004223f2
mov eax, dword [esi]
add eax, 0x10
push eax
lea eax, [esp + 0x88]
push eax
call fcn.004223f2
lea eax, [esp + 0x64]
jmp 0x421ac0
add eax, 0x40
push eax
lea eax, [esp + 0x78]
push eax
call fcn.004223f2
mov eax, dword [esi]
add eax, 0x30
push eax
lea eax, [esp + 0x58]
push eax
call fcn.004223f2
mov eax, dword [esi]
add eax, 0x20
push eax
lea eax, [esp + 0x88]
push eax
call fcn.004223f2
mov eax, dword [esi]
add eax, 0x10
push eax
lea eax, [esp + 0x68]
push eax
call fcn.004223f2
lea eax, [esp + 0x3c]
push dword [esi]
push eax
call fcn.004223f2
push 8
pop eax
mov ecx, eax
cmp cx, word [esp + 0x74]
je 0x421b04
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 0x4219e7
mov ecx, eax
cmp cx, word [esp + 0x54]
jne 0x421ad4
cmp cx, word [esp + 0x84]
jne 0x421ad4
cmp ax, word [esp + 0x64]
jne 0x421ad4
cmp dword [esi + 8], 4
jbe 0x421b65
push 3
pop eax
cmp ax, word [esp + 0x3c]
jne 0x421ad4
cmp dword [esp + 0x44], 1
jge 0x421b65
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 0x4219e7
push dword [esp + 0x7c]
lea ecx, [esp + 0x1c]
call fcn.00401b67
mov byte [esp + 0x128], 6
mov eax, dword [esp + 0x18]
xor esi, esi
cmp dword [eax - 0xc], esi
jne 0x421b8f
lea ecx, [eax - 0x10]
call fcn.004025c2
jmp 0x421b35
push dword [esp + 0x5c]
lea ecx, [esp + 0x20]
call fcn.00401b67
mov byte [esp + 0x128], 7
mov eax, dword [esp + 0x1c]
cmp dword [eax - 0xc], esi
jne 0x421bbe
lea ecx, [eax - 0x10]
call fcn.004025c2
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
jmp 0x421b88
push dword [esp + 0x8c]
lea ecx, [esp + 0x24]
call fcn.00401b67
mov byte [esp + 0x128], 8
mov eax, dword [esp + 0x20]
cmp dword [eax - 0xc], esi
jne 0x421bf0
lea ecx, [eax - 0x10]
call fcn.004025c2
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
jmp 0x421bb0
push dword [esp + 0x6c]
lea ecx, [esp + 0x54]
call fcn.00401b67
mov byte [esp + 0x128], 9
mov eax, dword [esp + 0x50]
cmp dword [eax - 0xc], esi
jne 0x421c1f
lea ecx, [eax - 0x10]
call fcn.004025c2
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
jmp 0x421be2
cmp dword [ebx + 0x1a8], esi
jne 0x421c3a
lea esi, [ebx + 0x90]
call fcn.004312b5
mov dword [esp + 0x14], eax
test eax, eax
jne 0x421ca5
mov eax, dword [ebp + 0x1c]
cmp dword [eax + 8], 4
jbe 0x421c85
mov esi, dword [ebx + 0x144]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], eax
cmp esi, ecx
jae 0x421c7a
lea eax, [ebx + 0x188]
mov edi, ecx
call fcn.0040bae4
test eax, eax
lea eax, [ebx + 0x138]
jne 0x421c76
mov ecx, dword [esp + 0x14]
jmp 0x421c80
mov ecx, esi
jmp 0x421c80
lea eax, [ebx + 0x138]
call fcn.0043261c
push dword [esp + 0x50]
lea eax, [ebx + 0x90]
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
push eax
call fcn.00430d77
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x50]
add ecx, 0xfffffff0
call fcn.004025c2
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.004025c2
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
call fcn.004025c2
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
call fcn.004025c2
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 0x42210f
cmp dword [ebp + 0x20], 0
jne 0x421d2e
mov eax, dword [ebp + 0x24]
lea esi, [esp + 0xa0]
mov dword [esp + 0xa0], eax
call fcn.0041ffb8
mov esi, eax
jmp 0x4219e7
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4219e2
cmp dword [eax + 8], 1
jne 0x4219fd
push dword [eax]
lea ecx, [esp + 0xb8]
call fcn.0041c7c0
push 8
pop eax
mov byte [esp + 0x128], 0xa
cmp ax, word [esp + 0xb4]
je 0x421d72
lea eax, [esp + 0xb4]
jmp 0x421af7
push dword [esp + 0xbc]
lea ecx, [esp + 0x3c]
call fcn.00401b67
mov byte [esp + 0x128], 0xb
mov eax, dword [esp + 0x38]
cmp dword [eax - 0xc], 0
jne 0x421da8
lea ecx, [eax - 0x10]
call fcn.004025c2
lea eax, [esp + 0xb4]
jmp 0x421b58
lea ecx, [ebx + 0x90]
push eax
push ecx
call fcn.0043130c
cmp dword [ebp + 0xc], 0x7d1
mov esi, eax
jne 0x421e3e
push 3
pop eax
mov word [esp + 0x24], ax
cmp byte [esi], 0
jne 0x421e39
and dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x38]
add ecx, 0xfffffff0
call fcn.004025c2
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 0x421e29
lea eax, [esp + 0x24]
push eax
push dword [ebp + 0x20]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp dword [esp + 0x14], 0
je 0x421e29
push dword [ebp + 0xc]
mov ecx, dword [ebp + 0x1c]
push dword [esp + 0x18]
push ebx
call fcn.0041fe08
and dword [esp + 0x14], 0
lea eax, [esp + 0x24]
push eax
call esi
mov eax, dword [esp + 0x14]
jmp 0x422127
mov eax, dword [esi + 0x18]
jmp 0x421e5f
mov eax, dword [ebp + 0xc]
cmp eax, 0x7d2
jne 0x421e6a
push 3
pop eax
mov word [esp + 0x24], ax
cmp byte [esi], 0
je 0x421dcd
push esi
call fcn.00430ade
xor edx, edx
mov ecx, 0x3e8
div ecx
jmp 0x421e85
cmp eax, 0x7d9
jne 0x421e8e
push 3
pop eax
mov word [esp + 0x24], ax
cmp byte [esi], 0
je 0x421dcd
mov eax, dword [esi + 0x44]
mov dword [esp + 0x2c], eax
jmp 0x421dd2
cmp eax, 0x7d3
jne 0x421f02
call fcn.00430999
push eax
lea ecx, [esp + 0xa0]
call fcn.004223cc
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 0x421edd
dec edi
je 0x421ed6
dec edi
lea esi, [esp + 0x24]
je 0x421ecf
push str.suspended
jmp 0x421ef8
push str.completed
jmp 0x421ef8
push str.failed
jmp 0x421ef4
push esi
call fcn.00430ade
test eax, eax
jne 0x421eee
push str.starting
jmp 0x421ef4
call fcn.004217a1
push eax
lea esi, [esp + 0x28]
call fcn.00408d11
jmp 0x421dd2
cmp eax, 0x7da
jne 0x421dd2
push dword [esp + 0x38]
lea eax, [esp + 0xd8]
push eax
lea eax, [ebx + 0x90]
push eax
call fcn.00431216
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.004216e8
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x421f74
mov esi, dword [esp + 0x98]
test esi, esi
je 0x421f68
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.00430a42
mov ecx, dword [esp + 0x38]
add ecx, 0xfffffff0
call fcn.004025c2
lea eax, [esp + 0xb4]
push eax
call edi
mov esi, ebx
jmp 0x4219e7
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4219e2
cmp dword [eax + 8], 1
jne 0x4219fd
push dword [eax]
lea ecx, [esp + 0xc8]
call fcn.0041c7c0
push 8
pop eax
mov byte [esp + 0x128], 0xd
cmp ax, word [esp + 0xc4]
je 0x421fe1
lea eax, [esp + 0xc4]
jmp 0x421af7
cmp dword [ebp + 0xc], 0x7d4
jne 0x421ff4
mov dword [esp + 0x14], 0x80004001
jmp 0x422055
cmp dword [ebp + 0xc], 0x7d5
jne 0x422055
push dword [esp + 0xcc]
lea ecx, [esp + 0x50]
call fcn.00401b67
push str.normal
lea eax, [esp + 0x50]
push eax
mov byte [esp + 0x130], 0xe
xor esi, esi
call fcn.00401bcc
test eax, eax
jne 0x42202d
inc esi
jmp 0x422043
push str.aggressive
lea eax, [esp + 0x50]
push eax
call fcn.00401bcc
test eax, eax
jne 0x422043
push 2
pop esi
mov ecx, dword [esp + 0x4c]
add ecx, 0xfffffff0
mov dword [ebx + 0x138], esi
call fcn.004025c2
mov byte [esp + 0x128], 0
lea eax, [esp + 0xc4]
jmp 0x422109
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4219e2
cmp dword [eax + 8], 1
jne 0x4219fd
push dword [eax]
lea ecx, [esp + 0xa8]
call fcn.0041c7c0
push 9
pop eax
cmp ax, word [esp + 0xa4]
je 0x4220ad
lea eax, [esp + 0xa4]
push eax
call edi
mov esi, 0x80020005
jmp 0x4219e7
cmp dword [ebp + 0xc], 0x7d6
jne 0x4220c6
lea eax, [esp + 0xa4]
push eax
lea eax, [ebx + 0x1d0]
jmp 0x4220f6
cmp dword [ebp + 0xc], 0x7d7
jne 0x4220df
lea eax, [esp + 0xa4]
push eax
lea eax, [ebx + 0x1d4]
jmp 0x4220f6
cmp dword [ebp + 0xc], 0x7d8
jne 0x422102
lea eax, [esp + 0xa4]
push eax
lea eax, [ebx + 0x1d8]
push eax
call fcn.0042176f
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 0x421e0d
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