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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5bf6ac
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
push ebx
push esi
push edi
mov eax, dword [0x6c56f8]
xor eax, esp
push eax
lea eax, [esp + 0xb8]
mov dword fs:[0], eax
mov dword [esp + 0xa8], ecx
mov eax, dword [ecx + 0xf0]
mov eax, dword [eax]
mov edi, dword [ecx + 0xdc]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], eax
mov ebx, dword [ebp + 0x10]
mov esi, dword [ecx + 0xf0]
mov eax, dword [ecx + 0xdc]
test edi, edi
je 0x495db6
cmp edi, eax
je 0x495dbb
call fcn.0058204a
cmp dword [esp + 0x1c], esi
je 0x497108
test ebx, ebx
je 0x495dda
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x497108
cmp dword [ebp + 0x14], 0
je 0x495dec
mov eax, dword [ebp + 0x14]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test edi, edi
jne 0x495ee2
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x495e09
call fcn.0058204a
mov esi, dword [esp + 0x1c]
mov edx, dword [esi + 8]
add esi, 8
cmp dword [edx - 0xc], 0
mov dword [esp + 0x30], esi
je 0x49703f
mov eax, dword [0x6dc778]
mov edx, dword [eax + 0xc]
mov ecx, 0x6dc778
call edx
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0xc0], 1
mov eax, dword [0x6dc778]
mov edx, dword [eax + 0xc]
mov ecx, 0x6dc778
call edx
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0x18]
mov byte [esp + 0x17], 0
test eax, eax
jne 0x495ee9
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x495e82
call fcn.0058204a
mov eax, dword [esi]
push eax
lea edi, [esp + 0x1b]
call fcn.00497250
test al, al
je 0x496972
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
mov byte [esp + 0xc0], 4
mov ecx, 0x69133c
test ecx, 0xffff0000
jne 0x495eed
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x495efd
push esi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.0040cd66
jmp 0x495efd
mov eax, dword [edi]
jmp 0x495dfb
mov eax, dword [eax]
jmp 0x495e74
push 0x18
push 0x69133c
lea eax, [esp + 0x4c]
call fcn.0040b4fa
mov byte [esp + 0xc0], 5
mov ebx, dword [esp + 0x18]
test ebx, ebx
jne 0x495f8c
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x495f22
call fcn.0058204a
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x90]
push eax
lea esi, [esp + 0x4c]
call fcn.0041691a
add esp, 8
mov byte [esp + 0xc0], 6
mov ecx, dword [eax]
mov esi, dword [esp + 0x20]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x495f9e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x495f90
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x495f90
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x495f7f
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x18]
jmp 0x495f9e
mov eax, dword [ebx]
jmp 0x495f14
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b4fa
mov byte [esp + 0xc0], 5
mov eax, dword [esp + 0x8c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x495fc9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x495ff1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x496009
push str._x64_
lea ecx, [esp + 0x24]
push ecx
xor eax, eax
call fcn.0042b56a
test ebx, ebx
jne 0x4960dc
call fcn.0058204a
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x496026
call fcn.0058204a
mov edi, dword [esp + 0x1c]
lea eax, [esp + 0x5c]
push eax
add edi, 8
push edi
call fcn.00491700
mov esi, eax
mov byte [esp + 0xc0], 9
test ebx, ebx
jne 0x4960e3
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x49605f
call fcn.0058204a
lea edx, [esp + 0x84]
push 0x6880d4
lea ecx, [edi + 4]
push edx
call fcn.004116ea
mov byte [esp + 0xc8], 0xa
push esi
lea ecx, [esp + 0xbc]
push ecx
mov esi, eax
call fcn.0041691a
add esp, 0x10
mov byte [esp + 0xc0], 0xb
mov ecx, dword [eax]
mov esi, dword [esp + 0x24]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4960f8
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4960ea
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4960ea
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4960d3
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x24], ebx
jmp 0x4960f8
mov eax, dword [ebx]
jmp 0x496018
mov eax, dword [ebx]
jmp 0x496051
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0xa
mov eax, dword [esp + 0xb0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496123
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 9
mov eax, dword [esp + 0x84]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49614e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496176
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push ecx
push edx
push eax
call dword [ebp + 8]
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x2c], edi
mov byte [esp + 0xc0], 0x10
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0xc0], 0x12
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
cmp byte [esp + 0x17], 0
je 0x496564
mov dword [esp + 0x34], eax
mov byte [esp + 0xc0], 0x13
mov ebx, str.CLSID_
shr ebx, 0x10
mov dword [esp + 0x30], ebx
test ebx, ebx
jne 0x496222
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x496232
push esi
push eax
lea edx, [esp + 0x3c]
push edx
call fcn.0040cd66
jmp 0x496232
push 6
push str.CLSID_
lea eax, [esp + 0x3c]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x14
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4962f4
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x49625b
call fcn.0058204a
mov eax, dword [esp + 0x1c]
add eax, 8
push eax
lea edx, [esp + 0x54]
push edx
lea esi, [esp + 0x3c]
call fcn.0041691a
mov byte [esp + 0xc8], 0x15
lea ecx, [esp + 0x6c]
push str.InProcServer32
push ecx
mov ecx, eax
call fcn.004116ea
mov byte [esp + 0xd0], 0x16
mov eax, dword [eax]
push 1
mov edx, eax
lea ecx, [esp + 0xb0]
call fcn.004959f0
add esp, 0x14
mov byte [esp + 0xc0], 0x17
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [edi - 0x10]
cmp eax, esi
je 0x496309
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4962fb
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4962fb
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4962e7
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x30]
jmp 0x496309
mov eax, dword [eax]
jmp 0x49624d
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x34]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x16
mov eax, dword [esp + 0x9c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496334
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x15
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49635c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x14
mov eax, dword [esp + 0x50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496384
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x12
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4963ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
mov dword [esp + 0x4c], eax
mov byte [esp + 0xc0], 0x1c
test ebx, ebx
jne 0x4963f2
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x496402
push esi
push eax
lea edx, [esp + 0x54]
push edx
call fcn.0040cd66
jmp 0x496402
push 6
push str.CLSID_
lea eax, [esp + 0x54]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x1d
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4964c3
call fcn.0058204a
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x49642b
call fcn.0058204a
lea eax, [esi + 8]
push eax
lea eax, [esp + 0x78]
push eax
lea esi, [esp + 0x54]
call fcn.0041691a
mov byte [esp + 0xc8], 0x1e
lea ecx, [esp + 0xb4]
push 0x68242c
push ecx
mov ecx, eax
call fcn.004116ea
mov byte [esp + 0xd0], 0x1f
mov eax, dword [eax]
push 1
mov edx, eax
lea ecx, [esp + 0x80]
call fcn.004959f0
add esp, 0x14
mov byte [esp + 0xc0], 0x20
mov ecx, dword [eax]
mov esi, dword [esp + 0x28]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4964d8
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4964ca
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4964ca
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4964ba
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x28], ebx
jmp 0x4964d8
mov eax, dword [eax]
jmp 0x49641d
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x30]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x1f
mov eax, dword [esp + 0x6c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496500
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x1e
mov eax, dword [esp + 0xac]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49652b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x1d
mov eax, dword [esp + 0x74]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496553
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x12
mov eax, dword [esp + 0x4c]
jmp 0x4968e0
mov dword [esp + 0x48], eax
mov byte [esp + 0xc0], 0x25
mov ebx, str.CLSID_
shr ebx, 0x10
mov dword [esp + 0x30], ebx
test ebx, ebx
jne 0x4965a3
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x4965b3
push esi
push eax
lea edx, [esp + 0x50]
push edx
call fcn.0040cd66
jmp 0x4965b3
push 6
push str.CLSID_
lea eax, [esp + 0x50]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x26
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x49667b
call fcn.0058204a
xor eax, eax
mov edi, dword [esp + 0x1c]
cmp edi, dword [eax + 0x14]
jne 0x4965dc
call fcn.0058204a
lea eax, [edi + 8]
push eax
lea eax, [esp + 0xa8]
push eax
lea esi, [esp + 0x50]
call fcn.0041691a
mov byte [esp + 0xc8], 0x27
lea ecx, [esp + 0x84]
push str.InProcServer32
push ecx
mov ecx, eax
call fcn.004116ea
mov byte [esp + 0xd0], 0x28
mov eax, dword [eax]
push 0
mov edx, eax
lea ecx, [esp + 0xa8]
call fcn.004959f0
add esp, 0x14
mov byte [esp + 0xc0], 0x29
mov ecx, dword [eax]
mov esi, dword [esp + 0x2c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x496694
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x496682
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x496682
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x49666e
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x30]
jmp 0x496690
mov eax, dword [eax]
jmp 0x4965ce
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x34]
call fcn.0040b4fa
mov edi, dword [esp + 0x1c]
mov byte [esp + 0xc0], 0x28
mov eax, dword [esp + 0x94]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4966bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x27
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4966e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x26
mov eax, dword [esp + 0xa4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496712
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x12
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49673a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
mov byte [esp + 0xc0], 0x2e
test ebx, ebx
jne 0x496780
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x496790
push esi
push eax
lea edx, [esp + 0x48]
push edx
call fcn.0040cd66
jmp 0x496790
push 6
push str.CLSID_
lea eax, [esp + 0x48]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x2f
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x496847
call fcn.0058204a
xor eax, eax
cmp edi, dword [eax + 0x14]
jne 0x4967b5
call fcn.0058204a
lea eax, [edi + 8]
push eax
lea eax, [esp + 0x64]
push eax
lea esi, [esp + 0x48]
call fcn.0041691a
mov byte [esp + 0xc8], 0x30
lea ecx, [esp + 0x60]
push 0x68242c
push ecx
mov ecx, eax
call fcn.004116ea
mov byte [esp + 0xd0], 0x31
mov eax, dword [eax]
push 0
mov edx, eax
lea ecx, [esp + 0x68]
call fcn.004959f0
add esp, 0x14
mov byte [esp + 0xc0], 0x32
mov ecx, dword [eax]
mov esi, dword [esp + 0x28]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x49685c
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x49684e
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x49684e
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x49683e
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x28], ebx
jmp 0x49685c
mov eax, dword [eax]
jmp 0x4967ab
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x30]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x31
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496884
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x30
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4968ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x2f
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4968d4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x12
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4968fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x2c]
cmp dword [edi - 0xc], 0
je 0x496913
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x24]
push ecx
push edx
push edi
call dword [ebp + 8]
mov esi, dword [esp + 0x28]
cmp dword [esi - 0xc], 0
je 0x49692a
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x24]
push eax
push ecx
push esi
call dword [ebp + 8]
mov byte [esp + 0xc0], 0x10
lea eax, [esi - 0x10]
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x49694e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496972
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4969f7
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x49698f
call fcn.0058204a
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 8]
lea ebx, [esi + 8]
push eax
lea edi, [esp + 0x1b]
call fcn.00497120
test al, al
je 0x496c89
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
mov dword [esp + 0x38], eax
mov byte [esp + 0xc0], 0x39
mov ecx, str.HKEY_CLASSES_ROOTTypeLib_
test ecx, 0xffff0000
jne 0x4969fb
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x496a0b
push esi
push eax
lea eax, [esp + 0x40]
push eax
call fcn.0040cd66
jmp 0x496a0b
mov eax, dword [eax]
jmp 0x496981
push 0x1a
push str.HKEY_CLASSES_ROOTTypeLib_
lea eax, [esp + 0x40]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x3a
mov edi, dword [esp + 0x18]
test edi, edi
jne 0x496a8f
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x496a30
call fcn.0058204a
lea edx, [esp + 0x68]
push ebx
push edx
lea esi, [esp + 0x40]
call fcn.0041691a
add esp, 8
mov byte [esp + 0xc0], 0x3b
mov ecx, dword [eax]
mov esi, dword [esp + 0x20]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x496aa5
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x496a93
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x496a93
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x496a86
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x20], ebx
jmp 0x496aa1
mov eax, dword [edi]
jmp 0x496a22
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b4fa
mov edi, dword [esp + 0x18]
mov byte [esp + 0xc0], 0x3a
mov eax, dword [esp + 0x68]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496acd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496af5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x496b0d
push str._x64_
lea ecx, [esp + 0x24]
push ecx
xor eax, eax
call fcn.0042b56a
test edi, edi
jne 0x496bdd
call fcn.0058204a
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x496b2a
call fcn.0058204a
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0x80]
push eax
lea edi, [ebx + 8]
push edi
call fcn.00491700
mov esi, eax
mov byte [esp + 0xc0], 0x3e
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x496be4
call fcn.0058204a
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x496b66
call fcn.0058204a
lea edx, [esp + 0x78]
push 0x6880d4
lea ecx, [edi + 4]
push edx
call fcn.004116ea
mov byte [esp + 0xc8], 0x3f
push esi
lea ecx, [esp + 0x7c]
push ecx
mov esi, eax
call fcn.0041691a
add esp, 0x10
mov byte [esp + 0xc0], 0x40
mov ecx, dword [eax]
mov esi, dword [esp + 0x24]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x496bf9
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x496beb
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x496beb
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x496bd4
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x24], ebx
jmp 0x496bf9
mov eax, dword [edi]
jmp 0x496b1c
mov eax, dword [eax]
jmp 0x496b5c
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x3f
mov eax, dword [esp + 0x70]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496c21
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x3e
mov eax, dword [esp + 0x78]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496c49
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0x80]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496c74
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push ecx
push edx
push eax
call dword [ebp + 8]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x496d06
call fcn.0058204a
xor eax, eax
cmp esi, dword [eax + 0x14]
jne 0x496ca2
call fcn.0058204a
mov eax, dword [esi + 8]
lea ebx, [esi + 8]
push eax
lea edi, [esp + 0x1b]
call fcn.00497380
test al, al
je 0x496fae
mov edx, dword [0x6dc778]
mov eax, dword [edx + 0xc]
mov ecx, 0x6dc778
call eax
add eax, 0x10
mov dword [esp + 0x3c], eax
mov byte [esp + 0xc0], 0x44
mov ecx, str.HKEY_CLASSES_ROOTInterface_
test ecx, 0xffff0000
jne 0x496d0a
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e28
add esp, 4
test eax, eax
je 0x496d1a
push esi
push eax
lea eax, [esp + 0x44]
push eax
call fcn.0040cd66
jmp 0x496d1a
mov eax, dword [eax]
jmp 0x496c98
push 0x1c
push str.HKEY_CLASSES_ROOTInterface_
lea eax, [esp + 0x44]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x45
mov edi, dword [esp + 0x18]
test edi, edi
jne 0x496da1
call fcn.0058204a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x496d3f
call fcn.0058204a
lea edx, [esp + 0x88]
push ebx
push edx
lea esi, [esp + 0x44]
call fcn.0041691a
add esp, 8
mov byte [esp + 0xc0], 0x46
mov ecx, dword [eax]
mov esi, dword [esp + 0x20]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x496db7
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x496da5
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x496da5
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x496d98
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x20], ebx
jmp 0x496db3
mov eax, dword [edi]
jmp 0x496d31
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b4fa
mov edi, dword [esp + 0x18]
mov byte [esp + 0xc0], 0x45
mov eax, dword [esp + 0x88]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496de2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496e0a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x496e22
push str._x64_
lea ecx, [esp + 0x24]
push ecx
xor eax, eax
call fcn.0042b56a
test edi, edi
jne 0x496ef8
call fcn.0058204a
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x496e3f
call fcn.0058204a
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0xa0]
push eax
lea edi, [ebx + 8]
push edi
call fcn.00491700
mov esi, eax
mov byte [esp + 0xc0], 0x49
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x496eff
call fcn.0058204a
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x496e7b
call fcn.0058204a
lea edx, [esp + 0x98]
push 0x6880d4
lea ecx, [edi + 4]
push edx
call fcn.004116ea
mov byte [esp + 0xc8], 0x4a
push esi
lea ecx, [esp + 0x9c]
push ecx
mov esi, eax
call fcn.0041691a
add esp, 0x10
mov byte [esp + 0xc0], 0x4b
mov ecx, dword [eax]
mov esi, dword [esp + 0x24]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x496f14
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x496f06
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x496f06
call fcn.0040b5b4
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x496eef
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x24], ebx
jmp 0x496f14
mov eax, dword [edi]
jmp 0x496e31
mov eax, dword [eax]
jmp 0x496e71
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b4fa
mov byte [esp + 0xc0], 0x4a
mov eax, dword [esp + 0x90]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496f3f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 0x49
mov eax, dword [esp + 0x98]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496f6a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xc0], 3
mov eax, dword [esp + 0xa0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x496f95
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push ecx
push edx
push eax
call dword [ebp + 8]
test al, al
je 0x49707d
mov edi, dword [esp + 0x24]
cmp dword [edi - 0xc], 0
jne 0x496ff0
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x497072
call fcn.0058204a
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x496fd9
call fcn.0058204a
mov ecx, dword [ebp + 0xc]
push ecx
lea eax, [esi + 8]
mov eax, dword [eax]
push 0
push eax
call dword [ebp + 8]
test al, al
je 0x4970b9
mov byte [esp + 0xc0], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x497018
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xc0], 0xffffffff
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49703f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x497079
call fcn.0058204a
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x49705c
call fcn.0058204a
mov ecx, dword [esi]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xa8]
jmp 0x495d9f
mov eax, dword [eax]
jmp 0x496fcb
mov eax, dword [eax]
jmp 0x49704e
mov byte [esp + 0xc0], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4970a5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xc0], 0xffffffff
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
jmp 0x4970ef
mov byte [esp + 0xc0], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4970e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xc0], 0xffffffff
lea eax, [edi - 0x10]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497108
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10