Function at 0x40d500
Capabilities:
Create thread
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x453170
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x465100]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push str.QQPCDetector.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
xor edi, edi
mov dword [0x49c198], eax
cmp eax, edi
je 0x40d894
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.RunDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d57c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d57a
lea ecx, [ebp - 0x10]
push ecx
push str.RunDetector
call eax
test eax, eax
je 0x40d57a
mov eax, dword [ebp - 0x10]
jmp 0x40d57c
xor eax, eax
mov dword [0x49c16c], eax
mov eax, dword [0x49c198]
push str.GetDectectorResult
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d5bc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d5ba
lea edx, [ebp - 0x10]
push edx
push str.GetDectectorResult
call eax
test eax, eax
je 0x40d5ba
mov eax, dword [ebp - 0x10]
jmp 0x40d5bc
xor eax, eax
mov dword [0x49c170], eax
mov eax, dword [0x49c198]
push str.WaitDetectorComplete
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d5fc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d5fa
lea ecx, [ebp - 0x10]
push ecx
push str.WaitDetectorComplete
call eax
test eax, eax
je 0x40d5fa
mov eax, dword [ebp - 0x10]
jmp 0x40d5fc
xor eax, eax
mov dword [0x49c174], eax
mov eax, dword [0x49c198]
push str.CancelDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d63c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d63a
lea edx, [ebp - 0x10]
push edx
push str.CancelDetector
call eax
test eax, eax
je 0x40d63a
mov eax, dword [ebp - 0x10]
jmp 0x40d63c
xor eax, eax
mov dword [0x49c178], eax
mov eax, dword [0x49c198]
push str.InitDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d67c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d67a
lea ecx, [ebp - 0x10]
push ecx
push str.InitDetector
call eax
test eax, eax
je 0x40d67a
mov eax, dword [ebp - 0x10]
jmp 0x40d67c
xor eax, eax
mov dword [0x49c17c], eax
mov eax, dword [0x49c198]
push str.UnInitDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d6bc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d6ba
lea edx, [ebp - 0x10]
push edx
push str.UnInitDetector
call eax
test eax, eax
je 0x40d6ba
mov eax, dword [ebp - 0x10]
jmp 0x40d6bc
xor eax, eax
mov dword [0x49c180], eax
mov eax, dword [0x49c198]
push str.SetGroupId
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d6fc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d6fa
lea ecx, [ebp - 0x10]
push ecx
push str.SetGroupId
call eax
test eax, eax
je 0x40d6fa
mov eax, dword [ebp - 0x10]
jmp 0x40d6fc
xor eax, eax
mov dword [0x49c184], eax
mov eax, dword [0x49c198]
push str.RunDetectorEx
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d73c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d73a
lea edx, [ebp - 0x10]
push edx
push str.RunDetectorEx
call eax
test eax, eax
je 0x40d73a
mov eax, dword [ebp - 0x10]
jmp 0x40d73c
xor eax, eax
mov dword [0x49c188], eax
mov eax, dword [0x49c198]
push str.GetDectectorResultEx
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d77c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d77a
lea ecx, [ebp - 0x10]
push ecx
push str.GetDectectorResultEx
call eax
test eax, eax
je 0x40d77a
mov eax, dword [ebp - 0x10]
jmp 0x40d77c
xor eax, eax
mov dword [0x49c18c], eax
mov eax, dword [0x49c198]
push str.WaitDetectorCompleteEx
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40d7bc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d7ba
lea edx, [ebp - 0x10]
push edx
push str.WaitDetectorCompleteEx
call eax
test eax, eax
je 0x40d7ba
mov eax, dword [ebp - 0x10]
jmp 0x40d7bc
xor eax, eax
mov dword [0x49c190], eax
mov eax, dword [0x49c198]
push str.InitLoadLoadParam
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
je 0x40d7de
mov ecx, eax
jmp 0x40d800
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40d7fe
lea ecx, [ebp - 0x10]
push ecx
push str.InitLoadLoadParam
call eax
test eax, eax
je 0x40d7fe
mov ecx, dword [ebp - 0x10]
jmp 0x40d800
xor ecx, ecx
mov eax, dword [0x49c198]
mov dword [0x49c194], ecx
cmp eax, edi
je 0x40d894
cmp dword [0x49c16c], edi
je 0x40d894
cmp dword [0x49c170], edi
je 0x40d894
cmp dword [0x49c174], edi
je 0x40d894
cmp dword [0x49c178], edi
je 0x40d894
cmp dword [0x49c17c], edi
je 0x40d894
cmp dword [0x49c184], edi
je 0x40d894
cmp ecx, edi
je 0x40d894
lea esi, [ebp - 0x10]
call fcn.004086c0
push 1
mov edx, esi
push edx
mov dword [ebp - 4], 1
call fcn.0040ceb0
test eax, eax
je 0x40d875
mov ecx, dword [0x49c19c]
mov eax, dword [ecx]
mov edx, dword [ebp - 0x10]
mov eax, dword [eax + 0x18]
push edx
call eax
lea eax, [ebp - 0x10]
call fcn.00408780
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [0x49c16c], edi
mov dword [0x49c170], edi
mov dword [0x49c174], edi
mov dword [0x49c178], edi
mov dword [0x49c17c], edi
mov dword [0x49c180], edi
mov dword [0x49c194], edi
cmp eax, edi
je 0x40d8cf
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x49c198], edi
cmp dword [0x49c19c], edi
je 0x40d932
mov edx, dword [0x4660e4]
mov eax, dword [edx + 0xc]
mov ecx, 0x4660e4
call eax
add eax, 0x10
mov dword [ebp - 0x10], eax
push edi
lea ecx, [ebp - 0x10]
push ecx
mov dword [ebp - 4], edi
call fcn.0040ceb0
mov esi, dword [ebp - 0x10]
test eax, eax
je 0x40d90f
mov ecx, dword [0x49c19c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x18]
push esi
call eax
lea eax, [esi - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d932
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0040d970
mov dword [0x49c1ac], eax
cmp eax, edi
jne 0x40d959
push edi
push edi
push 0x49c168
push 0x40dc10
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [0x49c1a8], eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret