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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5b2fec
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
push ebx
push esi
push edi
mov eax, dword [0x6b06f8]
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 0x47d626
cmp edi, eax
je 0x47d62b
call fcn.0057451a
cmp dword [esp + 0x1c], esi
je 0x47e972
test ebx, ebx
je 0x47d64a
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x47e972
cmp dword [ebp + 0x14], 0
je 0x47d65c
mov eax, dword [ebp + 0x14]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test edi, edi
jne 0x47d752
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d679
call fcn.0057451a
mov esi, dword [esp + 0x1c]
mov edx, dword [esi + 8]
add esi, 8
cmp dword [edx - 0xc], 0
mov dword [esp + 0x30], esi
je 0x47e8a9
mov eax, dword [0x6c7718]
mov edx, dword [eax + 0xc]
mov ecx, 0x6c7718
call edx
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0xc0], 1
mov eax, dword [0x6c7718]
mov edx, dword [eax + 0xc]
mov ecx, 0x6c7718
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 0x47d759
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d6f2
call fcn.0057451a
mov eax, dword [esi]
push eax
lea edi, [esp + 0x1b]
call fcn.0047eac0
test al, al
je 0x47e1e0
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
mov byte [esp + 0xc0], 4
mov ecx, 0x67f90c
test ecx, 0xffff0000
jne 0x47d75d
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47d76d
push esi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.0040cde1
jmp 0x47d76d
mov eax, dword [edi]
jmp 0x47d66b
mov eax, dword [eax]
jmp 0x47d6e4
push 0x18
push 0x67f90c
lea eax, [esp + 0x4c]
call fcn.0040b33c
mov byte [esp + 0xc0], 5
mov ebx, dword [esp + 0x18]
test ebx, ebx
jne 0x47d7fc
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d792
call fcn.0057451a
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x90]
push eax
lea esi, [esp + 0x4c]
call fcn.004136d2
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 0x47d80e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47d800
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47d800
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47d7ef
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 0x47d80e
mov eax, dword [ebx]
jmp 0x47d784
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b33c
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 0x47d839
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 0x47d861
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x47d877
push str._x64_
lea ecx, [esp + 0x24]
push ecx
call fcn.00426229
test ebx, ebx
jne 0x47d94a
call fcn.0057451a
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x47d894
call fcn.0057451a
mov edi, dword [esp + 0x1c]
lea eax, [esp + 0x5c]
push eax
add edi, 8
push edi
call fcn.00478f70
mov esi, eax
mov byte [esp + 0xc0], 9
test ebx, ebx
jne 0x47d951
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d8cd
call fcn.0057451a
lea edx, [esp + 0x84]
push 0x67769c
lea ecx, [edi + 4]
push edx
call fcn.0040fc53
mov byte [esp + 0xc8], 0xa
push esi
lea ecx, [esp + 0xbc]
push ecx
mov esi, eax
call fcn.004136d2
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 0x47d966
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47d958
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47d958
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47d941
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 0x47d966
mov eax, dword [ebx]
jmp 0x47d886
mov eax, dword [ebx]
jmp 0x47d8bf
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b33c
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 0x47d991
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 0x47d9bc
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 0x47d9e4
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 [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x2c], edi
mov byte [esp + 0xc0], 0x10
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0xc0], 0x12
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
call eax
add eax, 0x10
cmp byte [esp + 0x17], 0
je 0x47ddd2
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 0x47da90
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47daa0
push esi
push eax
lea edx, [esp + 0x3c]
push edx
call fcn.0040cde1
jmp 0x47daa0
push 6
push str.CLSID_
lea eax, [esp + 0x3c]
call fcn.0040b33c
mov byte [esp + 0xc0], 0x14
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47db62
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47dac9
call fcn.0057451a
mov eax, dword [esp + 0x1c]
add eax, 8
push eax
lea edx, [esp + 0x54]
push edx
lea esi, [esp + 0x3c]
call fcn.004136d2
mov byte [esp + 0xc8], 0x15
lea ecx, [esp + 0x6c]
push str.InProcServer32
push ecx
mov ecx, eax
call fcn.0040fc53
mov byte [esp + 0xd0], 0x16
mov eax, dword [eax]
push 1
mov edx, eax
lea ecx, [esp + 0xb0]
call fcn.0047d260
add esp, 0x14
mov byte [esp + 0xc0], 0x17
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [edi - 0x10]
cmp eax, esi
je 0x47db77
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47db69
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47db69
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47db55
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 0x47db77
mov eax, dword [eax]
jmp 0x47dabb
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x34]
call fcn.0040b33c
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 0x47dba2
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 0x47dbca
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 0x47dbf2
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 0x47dc1a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
call eax
add eax, 0x10
mov dword [esp + 0x4c], eax
mov byte [esp + 0xc0], 0x1c
test ebx, ebx
jne 0x47dc60
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47dc70
push esi
push eax
lea edx, [esp + 0x54]
push edx
call fcn.0040cde1
jmp 0x47dc70
push 6
push str.CLSID_
lea eax, [esp + 0x54]
call fcn.0040b33c
mov byte [esp + 0xc0], 0x1d
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47dd31
call fcn.0057451a
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x47dc99
call fcn.0057451a
lea eax, [esi + 8]
push eax
lea eax, [esp + 0x78]
push eax
lea esi, [esp + 0x54]
call fcn.004136d2
mov byte [esp + 0xc8], 0x1e
lea ecx, [esp + 0xb4]
push 0x67236c
push ecx
mov ecx, eax
call fcn.0040fc53
mov byte [esp + 0xd0], 0x1f
mov eax, dword [eax]
push 1
mov edx, eax
lea ecx, [esp + 0x80]
call fcn.0047d260
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 0x47dd46
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47dd38
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47dd38
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47dd28
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 0x47dd46
mov eax, dword [eax]
jmp 0x47dc8b
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x30]
call fcn.0040b33c
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 0x47dd6e
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 0x47dd99
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 0x47ddc1
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 0x47e14e
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 0x47de11
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47de21
push esi
push eax
lea edx, [esp + 0x50]
push edx
call fcn.0040cde1
jmp 0x47de21
push 6
push str.CLSID_
lea eax, [esp + 0x50]
call fcn.0040b33c
mov byte [esp + 0xc0], 0x26
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47dee9
call fcn.0057451a
xor eax, eax
mov edi, dword [esp + 0x1c]
cmp edi, dword [eax + 0x14]
jne 0x47de4a
call fcn.0057451a
lea eax, [edi + 8]
push eax
lea eax, [esp + 0xa8]
push eax
lea esi, [esp + 0x50]
call fcn.004136d2
mov byte [esp + 0xc8], 0x27
lea ecx, [esp + 0x84]
push str.InProcServer32
push ecx
mov ecx, eax
call fcn.0040fc53
mov byte [esp + 0xd0], 0x28
mov eax, dword [eax]
push 0
mov edx, eax
lea ecx, [esp + 0xa8]
call fcn.0047d260
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 0x47df02
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47def0
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47def0
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47dedc
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 0x47defe
mov eax, dword [eax]
jmp 0x47de3c
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x34]
call fcn.0040b33c
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 0x47df2d
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 0x47df55
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 0x47df80
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 0x47dfa8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
mov byte [esp + 0xc0], 0x2e
test ebx, ebx
jne 0x47dfee
mov ecx, str.CLSID_
movzx esi, cx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47dffe
push esi
push eax
lea edx, [esp + 0x48]
push edx
call fcn.0040cde1
jmp 0x47dffe
push 6
push str.CLSID_
lea eax, [esp + 0x48]
call fcn.0040b33c
mov byte [esp + 0xc0], 0x2f
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e0b5
call fcn.0057451a
xor eax, eax
cmp edi, dword [eax + 0x14]
jne 0x47e023
call fcn.0057451a
lea eax, [edi + 8]
push eax
lea eax, [esp + 0x64]
push eax
lea esi, [esp + 0x48]
call fcn.004136d2
mov byte [esp + 0xc8], 0x30
lea ecx, [esp + 0x60]
push 0x67236c
push ecx
mov ecx, eax
call fcn.0040fc53
mov byte [esp + 0xd0], 0x31
mov eax, dword [eax]
push 0
mov edx, eax
lea ecx, [esp + 0x68]
call fcn.0047d260
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 0x47e0ca
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e0bc
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e0bc
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e0ac
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 0x47e0ca
mov eax, dword [eax]
jmp 0x47e019
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x30]
call fcn.0040b33c
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 0x47e0f2
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 0x47e11a
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 0x47e142
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 0x47e16a
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 0x47e181
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 0x47e198
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 0x47e1bc
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 0x47e1e0
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 0x47e265
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47e1fd
call fcn.0057451a
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 8]
lea ebx, [esi + 8]
push eax
lea edi, [esp + 0x1b]
call fcn.0047e990
test al, al
je 0x47e4f5
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
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 0x47e269
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47e279
push esi
push eax
lea eax, [esp + 0x40]
push eax
call fcn.0040cde1
jmp 0x47e279
mov eax, dword [eax]
jmp 0x47e1ef
push 0x1a
push str.HKEY_CLASSES_ROOTTypeLib_
lea eax, [esp + 0x40]
call fcn.0040b33c
mov byte [esp + 0xc0], 0x3a
mov edi, dword [esp + 0x18]
test edi, edi
jne 0x47e2fd
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47e29e
call fcn.0057451a
lea edx, [esp + 0x68]
push ebx
push edx
lea esi, [esp + 0x40]
call fcn.004136d2
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 0x47e313
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e301
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e301
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e2f4
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 0x47e30f
mov eax, dword [edi]
jmp 0x47e290
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b33c
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 0x47e33b
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 0x47e363
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x47e379
push str._x64_
lea ecx, [esp + 0x24]
push ecx
call fcn.00426229
test edi, edi
jne 0x47e449
call fcn.0057451a
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x47e396
call fcn.0057451a
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0x80]
push eax
lea edi, [ebx + 8]
push edi
call fcn.00478f70
mov esi, eax
mov byte [esp + 0xc0], 0x3e
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e450
call fcn.0057451a
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x47e3d2
call fcn.0057451a
lea edx, [esp + 0x78]
push 0x67769c
lea ecx, [edi + 4]
push edx
call fcn.0040fc53
mov byte [esp + 0xc8], 0x3f
push esi
lea ecx, [esp + 0x7c]
push ecx
mov esi, eax
call fcn.004136d2
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 0x47e465
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e457
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e457
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e440
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 0x47e465
mov eax, dword [edi]
jmp 0x47e388
mov eax, dword [eax]
jmp 0x47e3c8
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b33c
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 0x47e48d
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 0x47e4b5
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 0x47e4e0
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 0x47e572
call fcn.0057451a
xor eax, eax
cmp esi, dword [eax + 0x14]
jne 0x47e50e
call fcn.0057451a
mov eax, dword [esi + 8]
lea ebx, [esi + 8]
push eax
lea edi, [esp + 0x1b]
call fcn.0047ebf0
test al, al
je 0x47e818
mov edx, dword [0x6c7718]
mov eax, dword [edx + 0xc]
mov ecx, 0x6c7718
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 0x47e576
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e8e
add esp, 4
test eax, eax
je 0x47e586
push esi
push eax
lea eax, [esp + 0x44]
push eax
call fcn.0040cde1
jmp 0x47e586
mov eax, dword [eax]
jmp 0x47e504
push 0x1c
push str.HKEY_CLASSES_ROOTInterface_
lea eax, [esp + 0x44]
call fcn.0040b33c
mov byte [esp + 0xc0], 0x45
mov edi, dword [esp + 0x18]
test edi, edi
jne 0x47e60d
call fcn.0057451a
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47e5ab
call fcn.0057451a
lea edx, [esp + 0x88]
push ebx
push edx
lea esi, [esp + 0x44]
call fcn.004136d2
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 0x47e623
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e611
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e611
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e604
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 0x47e61f
mov eax, dword [edi]
jmp 0x47e59d
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b33c
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 0x47e64e
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 0x47e676
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x47e68c
push str._x64_
lea ecx, [esp + 0x24]
push ecx
call fcn.00426229
test edi, edi
jne 0x47e762
call fcn.0057451a
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x47e6a9
call fcn.0057451a
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0xa0]
push eax
lea edi, [ebx + 8]
push edi
call fcn.00478f70
mov esi, eax
mov byte [esp + 0xc0], 0x49
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e769
call fcn.0057451a
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x47e6e5
call fcn.0057451a
lea edx, [esp + 0x98]
push 0x67769c
lea ecx, [edi + 4]
push edx
call fcn.0040fc53
mov byte [esp + 0xc8], 0x4a
push esi
lea ecx, [esp + 0x9c]
push ecx
mov esi, eax
call fcn.004136d2
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 0x47e77e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e770
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e770
call fcn.0040b401
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e759
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 0x47e77e
mov eax, dword [edi]
jmp 0x47e69b
mov eax, dword [eax]
jmp 0x47e6db
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b33c
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 0x47e7a9
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 0x47e7d4
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 0x47e7ff
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 0x47e8e7
mov edi, dword [esp + 0x24]
cmp dword [edi - 0xc], 0
jne 0x47e85a
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e8dc
call fcn.0057451a
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x47e843
call fcn.0057451a
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 0x47e923
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 0x47e882
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 0x47e8a9
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 0x47e8e3
call fcn.0057451a
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x47e8c6
call fcn.0057451a
mov ecx, dword [esi]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xa8]
jmp 0x47d60f
mov eax, dword [eax]
jmp 0x47e835
mov eax, dword [eax]
jmp 0x47e8b8
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 0x47e90f
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 0x47e959
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 0x47e94b
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 0x47e972
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