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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5b2cdc
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
push ebx
push esi
push edi
mov eax, dword [0x6bd6f8]
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 0x47d2b6
cmp edi, eax
je 0x47d2bb
call fcn.005741fa
cmp dword [esp + 0x1c], esi
je 0x47e602
test ebx, ebx
je 0x47d2da
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x47e602
cmp dword [ebp + 0x14], 0
je 0x47d2ec
mov eax, dword [ebp + 0x14]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test edi, edi
jne 0x47d3e2
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d309
call fcn.005741fa
mov esi, dword [esp + 0x1c]
mov edx, dword [esi + 8]
add esi, 8
cmp dword [edx - 0xc], 0
mov dword [esp + 0x30], esi
je 0x47e539
mov eax, dword [0x6d50f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x6d50f8
call edx
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0xc0], 1
mov eax, dword [0x6d50f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x6d50f8
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 0x47d3e9
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d382
call fcn.005741fa
mov eax, dword [esi]
push eax
lea edi, [esp + 0x1b]
call fcn.0047e750
test al, al
je 0x47de70
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
mov byte [esp + 0xc0], 4
mov ecx, 0x68c0ac
test ecx, 0xffff0000
jne 0x47d3ed
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47d3fd
push esi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.0040cd79
jmp 0x47d3fd
mov eax, dword [edi]
jmp 0x47d2fb
mov eax, dword [eax]
jmp 0x47d374
push 0x18
push 0x68c0ac
lea eax, [esp + 0x4c]
call fcn.0040b13c
mov byte [esp + 0xc0], 5
mov ebx, dword [esp + 0x18]
test ebx, ebx
jne 0x47d48c
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d422
call fcn.005741fa
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x90]
push eax
lea esi, [esp + 0x4c]
call fcn.004136c3
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 0x47d49e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47d490
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47d490
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47d47f
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 0x47d49e
mov eax, dword [ebx]
jmp 0x47d414
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b13c
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 0x47d4c9
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 0x47d4f1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x47d507
push str._x64_
lea ecx, [esp + 0x24]
push ecx
call fcn.00425f36
test ebx, ebx
jne 0x47d5da
call fcn.005741fa
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x47d524
call fcn.005741fa
mov edi, dword [esp + 0x1c]
lea eax, [esp + 0x5c]
push eax
add edi, 8
push edi
call fcn.00478aa0
mov esi, eax
mov byte [esp + 0xc0], 9
test ebx, ebx
jne 0x47d5e1
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d55d
call fcn.005741fa
lea edx, [esp + 0x84]
push 0x68ba9c
lea ecx, [edi + 4]
push edx
call fcn.0040fc0a
mov byte [esp + 0xc8], 0xa
push esi
lea ecx, [esp + 0xbc]
push ecx
mov esi, eax
call fcn.004136c3
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 0x47d5f6
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47d5e8
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47d5e8
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47d5d1
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 0x47d5f6
mov eax, dword [ebx]
jmp 0x47d516
mov eax, dword [ebx]
jmp 0x47d54f
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b13c
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 0x47d621
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 0x47d64c
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 0x47d674
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 [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x2c], edi
mov byte [esp + 0xc0], 0x10
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0xc0], 0x12
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
call eax
add eax, 0x10
cmp byte [esp + 0x17], 0
je 0x47da62
mov dword [esp + 0x34], eax
mov byte [esp + 0xc0], 0x13
mov ebx, 0x68c1ec
shr ebx, 0x10
mov dword [esp + 0x30], ebx
test ebx, ebx
jne 0x47d720
mov ecx, 0x68c1ec
movzx esi, cx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47d730
push esi
push eax
lea edx, [esp + 0x3c]
push edx
call fcn.0040cd79
jmp 0x47d730
push 6
push 0x68c1ec
lea eax, [esp + 0x3c]
call fcn.0040b13c
mov byte [esp + 0xc0], 0x14
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47d7f2
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47d759
call fcn.005741fa
mov eax, dword [esp + 0x1c]
add eax, 8
push eax
lea edx, [esp + 0x54]
push edx
lea esi, [esp + 0x3c]
call fcn.004136c3
mov byte [esp + 0xc8], 0x15
lea ecx, [esp + 0x6c]
push str.InProcServer32
push ecx
mov ecx, eax
call fcn.0040fc0a
mov byte [esp + 0xd0], 0x16
mov eax, dword [eax]
push 1
mov edx, eax
lea ecx, [esp + 0xb0]
call fcn.0047cef0
add esp, 0x14
mov byte [esp + 0xc0], 0x17
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [edi - 0x10]
cmp eax, esi
je 0x47d807
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47d7f9
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47d7f9
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47d7e5
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 0x47d807
mov eax, dword [eax]
jmp 0x47d74b
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x34]
call fcn.0040b13c
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 0x47d832
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 0x47d85a
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 0x47d882
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 0x47d8aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
call eax
add eax, 0x10
mov dword [esp + 0x4c], eax
mov byte [esp + 0xc0], 0x1c
test ebx, ebx
jne 0x47d8f0
mov ecx, 0x68c1ec
movzx esi, cx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47d900
push esi
push eax
lea edx, [esp + 0x54]
push edx
call fcn.0040cd79
jmp 0x47d900
push 6
push 0x68c1ec
lea eax, [esp + 0x54]
call fcn.0040b13c
mov byte [esp + 0xc0], 0x1d
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47d9c1
call fcn.005741fa
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x47d929
call fcn.005741fa
lea eax, [esi + 8]
push eax
lea eax, [esp + 0x78]
push eax
lea esi, [esp + 0x54]
call fcn.004136c3
mov byte [esp + 0xc8], 0x1e
lea ecx, [esp + 0xb4]
push str.LocalServer32
push ecx
mov ecx, eax
call fcn.0040fc0a
mov byte [esp + 0xd0], 0x1f
mov eax, dword [eax]
push 1
mov edx, eax
lea ecx, [esp + 0x80]
call fcn.0047cef0
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 0x47d9d6
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47d9c8
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47d9c8
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47d9b8
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 0x47d9d6
mov eax, dword [eax]
jmp 0x47d91b
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x30]
call fcn.0040b13c
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 0x47d9fe
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 0x47da29
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 0x47da51
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 0x47ddde
mov dword [esp + 0x48], eax
mov byte [esp + 0xc0], 0x25
mov ebx, 0x68c1ec
shr ebx, 0x10
mov dword [esp + 0x30], ebx
test ebx, ebx
jne 0x47daa1
mov ecx, 0x68c1ec
movzx esi, cx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47dab1
push esi
push eax
lea edx, [esp + 0x50]
push edx
call fcn.0040cd79
jmp 0x47dab1
push 6
push 0x68c1ec
lea eax, [esp + 0x50]
call fcn.0040b13c
mov byte [esp + 0xc0], 0x26
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47db79
call fcn.005741fa
xor eax, eax
mov edi, dword [esp + 0x1c]
cmp edi, dword [eax + 0x14]
jne 0x47dada
call fcn.005741fa
lea eax, [edi + 8]
push eax
lea eax, [esp + 0xa8]
push eax
lea esi, [esp + 0x50]
call fcn.004136c3
mov byte [esp + 0xc8], 0x27
lea ecx, [esp + 0x84]
push str.InProcServer32
push ecx
mov ecx, eax
call fcn.0040fc0a
mov byte [esp + 0xd0], 0x28
mov eax, dword [eax]
push 0
mov edx, eax
lea ecx, [esp + 0xa8]
call fcn.0047cef0
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 0x47db92
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47db80
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47db80
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47db6c
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 0x47db8e
mov eax, dword [eax]
jmp 0x47dacc
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x34]
call fcn.0040b13c
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 0x47dbbd
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 0x47dbe5
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 0x47dc10
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 0x47dc38
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
mov byte [esp + 0xc0], 0x2e
test ebx, ebx
jne 0x47dc7e
mov ecx, 0x68c1ec
movzx esi, cx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47dc8e
push esi
push eax
lea edx, [esp + 0x48]
push edx
call fcn.0040cd79
jmp 0x47dc8e
push 6
push 0x68c1ec
lea eax, [esp + 0x48]
call fcn.0040b13c
mov byte [esp + 0xc0], 0x2f
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47dd45
call fcn.005741fa
xor eax, eax
cmp edi, dword [eax + 0x14]
jne 0x47dcb3
call fcn.005741fa
lea eax, [edi + 8]
push eax
lea eax, [esp + 0x64]
push eax
lea esi, [esp + 0x48]
call fcn.004136c3
mov byte [esp + 0xc8], 0x30
lea ecx, [esp + 0x60]
push str.LocalServer32
push ecx
mov ecx, eax
call fcn.0040fc0a
mov byte [esp + 0xd0], 0x31
mov eax, dword [eax]
push 0
mov edx, eax
lea ecx, [esp + 0x68]
call fcn.0047cef0
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 0x47dd5a
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47dd4c
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47dd4c
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47dd3c
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 0x47dd5a
mov eax, dword [eax]
jmp 0x47dca9
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x30]
call fcn.0040b13c
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 0x47dd82
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 0x47ddaa
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 0x47ddd2
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 0x47ddfa
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 0x47de11
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 0x47de28
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 0x47de4c
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 0x47de70
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 0x47def5
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47de8d
call fcn.005741fa
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 8]
lea ebx, [esi + 8]
push eax
lea edi, [esp + 0x1b]
call fcn.0047e620
test al, al
je 0x47e185
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
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 0x47def9
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47df09
push esi
push eax
lea eax, [esp + 0x40]
push eax
call fcn.0040cd79
jmp 0x47df09
mov eax, dword [eax]
jmp 0x47de7f
push 0x1a
push str.HKEY_CLASSES_ROOTTypeLib_
lea eax, [esp + 0x40]
call fcn.0040b13c
mov byte [esp + 0xc0], 0x3a
mov edi, dword [esp + 0x18]
test edi, edi
jne 0x47df8d
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47df2e
call fcn.005741fa
lea edx, [esp + 0x68]
push ebx
push edx
lea esi, [esp + 0x40]
call fcn.004136c3
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 0x47dfa3
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47df91
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47df91
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47df84
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 0x47df9f
mov eax, dword [edi]
jmp 0x47df20
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b13c
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 0x47dfcb
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 0x47dff3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x47e009
push str._x64_
lea ecx, [esp + 0x24]
push ecx
call fcn.00425f36
test edi, edi
jne 0x47e0d9
call fcn.005741fa
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x47e026
call fcn.005741fa
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0x80]
push eax
lea edi, [ebx + 8]
push edi
call fcn.00478aa0
mov esi, eax
mov byte [esp + 0xc0], 0x3e
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e0e0
call fcn.005741fa
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x47e062
call fcn.005741fa
lea edx, [esp + 0x78]
push 0x68ba9c
lea ecx, [edi + 4]
push edx
call fcn.0040fc0a
mov byte [esp + 0xc8], 0x3f
push esi
lea ecx, [esp + 0x7c]
push ecx
mov esi, eax
call fcn.004136c3
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 0x47e0f5
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e0e7
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e0e7
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e0d0
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 0x47e0f5
mov eax, dword [edi]
jmp 0x47e018
mov eax, dword [eax]
jmp 0x47e058
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b13c
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 0x47e11d
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 0x47e145
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 0x47e170
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 0x47e202
call fcn.005741fa
xor eax, eax
cmp esi, dword [eax + 0x14]
jne 0x47e19e
call fcn.005741fa
mov eax, dword [esi + 8]
lea ebx, [esi + 8]
push eax
lea edi, [esp + 0x1b]
call fcn.0047e880
test al, al
je 0x47e4a8
mov edx, dword [0x6d50f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x6d50f8
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 0x47e206
mov edx, ecx
movzx esi, dx
push esi
call fcn.00402e88
add esp, 4
test eax, eax
je 0x47e216
push esi
push eax
lea eax, [esp + 0x44]
push eax
call fcn.0040cd79
jmp 0x47e216
mov eax, dword [eax]
jmp 0x47e194
push 0x1c
push str.HKEY_CLASSES_ROOTInterface_
lea eax, [esp + 0x44]
call fcn.0040b13c
mov byte [esp + 0xc0], 0x45
mov edi, dword [esp + 0x18]
test edi, edi
jne 0x47e29d
call fcn.005741fa
xor eax, eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x14]
jne 0x47e23b
call fcn.005741fa
lea edx, [esp + 0x88]
push ebx
push edx
lea esi, [esp + 0x44]
call fcn.004136c3
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 0x47e2b3
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e2a1
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e2a1
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e294
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 0x47e2af
mov eax, dword [edi]
jmp 0x47e22d
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x28]
call fcn.0040b13c
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 0x47e2de
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 0x47e306
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x17], 0
je 0x47e31c
push str._x64_
lea ecx, [esp + 0x24]
push ecx
call fcn.00425f36
test edi, edi
jne 0x47e3f2
call fcn.005741fa
xor eax, eax
mov edx, dword [esp + 0x1c]
cmp edx, dword [eax + 0x14]
jne 0x47e339
call fcn.005741fa
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0xa0]
push eax
lea edi, [ebx + 8]
push edi
call fcn.00478aa0
mov esi, eax
mov byte [esp + 0xc0], 0x49
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e3f9
call fcn.005741fa
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x47e375
call fcn.005741fa
lea edx, [esp + 0x98]
push 0x68ba9c
lea ecx, [edi + 4]
push edx
call fcn.0040fc0a
mov byte [esp + 0xc8], 0x4a
push esi
lea ecx, [esp + 0x9c]
push ecx
mov esi, eax
call fcn.004136c3
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 0x47e40e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x47e400
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x47e400
call fcn.0040b201
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x47e3e9
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 0x47e40e
mov eax, dword [edi]
jmp 0x47e32b
mov eax, dword [eax]
jmp 0x47e36b
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea eax, [esp + 0x2c]
call fcn.0040b13c
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 0x47e439
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 0x47e464
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 0x47e48f
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 0x47e577
mov edi, dword [esp + 0x24]
cmp dword [edi - 0xc], 0
jne 0x47e4ea
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47e56c
call fcn.005741fa
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x47e4d3
call fcn.005741fa
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 0x47e5b3
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 0x47e512
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 0x47e539
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 0x47e573
call fcn.005741fa
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, dword [eax + 0x14]
jne 0x47e556
call fcn.005741fa
mov ecx, dword [esi]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xa8]
jmp 0x47d29f
mov eax, dword [eax]
jmp 0x47e4c5
mov eax, dword [eax]
jmp 0x47e548
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 0x47e59f
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 0x47e5e9
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 0x47e5db
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 0x47e602
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