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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x456000
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x468100]
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 [0x49f278], eax
cmp eax, edi
je 0x40ffd4
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 0x40fcbc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fcba
lea ecx, [ebp - 0x10]
push ecx
push str.RunDetector
call eax
test eax, eax
je 0x40fcba
mov eax, dword [ebp - 0x10]
jmp 0x40fcbc
xor eax, eax
mov dword [0x49f24c], eax
mov eax, dword [0x49f278]
push str.GetDectectorResult
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fcfc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fcfa
lea edx, [ebp - 0x10]
push edx
push str.GetDectectorResult
call eax
test eax, eax
je 0x40fcfa
mov eax, dword [ebp - 0x10]
jmp 0x40fcfc
xor eax, eax
mov dword [0x49f250], eax
mov eax, dword [0x49f278]
push str.WaitDetectorComplete
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fd3c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fd3a
lea ecx, [ebp - 0x10]
push ecx
push str.WaitDetectorComplete
call eax
test eax, eax
je 0x40fd3a
mov eax, dword [ebp - 0x10]
jmp 0x40fd3c
xor eax, eax
mov dword [0x49f254], eax
mov eax, dword [0x49f278]
push str.CancelDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fd7c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fd7a
lea edx, [ebp - 0x10]
push edx
push str.CancelDetector
call eax
test eax, eax
je 0x40fd7a
mov eax, dword [ebp - 0x10]
jmp 0x40fd7c
xor eax, eax
mov dword [0x49f258], eax
mov eax, dword [0x49f278]
push str.InitDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fdbc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fdba
lea ecx, [ebp - 0x10]
push ecx
push str.InitDetector
call eax
test eax, eax
je 0x40fdba
mov eax, dword [ebp - 0x10]
jmp 0x40fdbc
xor eax, eax
mov dword [0x49f25c], eax
mov eax, dword [0x49f278]
push str.UnInitDetector
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fdfc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fdfa
lea edx, [ebp - 0x10]
push edx
push str.UnInitDetector
call eax
test eax, eax
je 0x40fdfa
mov eax, dword [ebp - 0x10]
jmp 0x40fdfc
xor eax, eax
mov dword [0x49f260], eax
mov eax, dword [0x49f278]
push str.SetGroupId
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fe3c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fe3a
lea ecx, [ebp - 0x10]
push ecx
push str.SetGroupId
call eax
test eax, eax
je 0x40fe3a
mov eax, dword [ebp - 0x10]
jmp 0x40fe3c
xor eax, eax
mov dword [0x49f264], eax
mov eax, dword [0x49f278]
push str.RunDetectorEx
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fe7c
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fe7a
lea edx, [ebp - 0x10]
push edx
push str.RunDetectorEx
call eax
test eax, eax
je 0x40fe7a
mov eax, dword [ebp - 0x10]
jmp 0x40fe7c
xor eax, eax
mov dword [0x49f268], eax
mov eax, dword [0x49f278]
push str.GetDectectorResultEx
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40febc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40feba
lea ecx, [ebp - 0x10]
push ecx
push str.GetDectectorResultEx
call eax
test eax, eax
je 0x40feba
mov eax, dword [ebp - 0x10]
jmp 0x40febc
xor eax, eax
mov dword [0x49f26c], eax
mov eax, dword [0x49f278]
push str.WaitDetectorCompleteEx
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x40fefc
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40fefa
lea edx, [ebp - 0x10]
push edx
push str.WaitDetectorCompleteEx
call eax
test eax, eax
je 0x40fefa
mov eax, dword [ebp - 0x10]
jmp 0x40fefc
xor eax, eax
mov dword [0x49f270], eax
mov eax, dword [0x49f278]
push str.InitLoadLoadParam
push eax
mov ebx, eax
mov dword [ebp - 0x10], edi
call esi
mov dword [ebp - 0x10], eax
cmp eax, edi
je 0x40ff1e
mov ecx, eax
jmp 0x40ff40
push str.DllGetClassObject
push ebx
call esi
cmp eax, edi
je 0x40ff3e
lea ecx, [ebp - 0x10]
push ecx
push str.InitLoadLoadParam
call eax
test eax, eax
je 0x40ff3e
mov ecx, dword [ebp - 0x10]
jmp 0x40ff40
xor ecx, ecx
mov eax, dword [0x49f278]
mov dword [0x49f274], ecx
cmp eax, edi
je 0x40ffd4
cmp dword [0x49f24c], edi
je 0x40ffd4
cmp dword [0x49f250], edi
je 0x40ffd4
cmp dword [0x49f254], edi
je 0x40ffd4
cmp dword [0x49f258], edi
je 0x40ffd4
cmp dword [0x49f25c], edi
je 0x40ffd4
cmp dword [0x49f264], edi
je 0x40ffd4
cmp ecx, edi
je 0x40ffd4
lea esi, [ebp - 0x10]
call fcn.004086a0
push 1
mov edx, esi
push edx
mov dword [ebp - 4], 1
call fcn.0040f570
test eax, eax
je 0x40ffb5
mov ecx, dword [0x49f27c]
mov eax, dword [ecx]
mov edx, dword [ebp - 0x10]
mov eax, dword [eax + 0x18]
push edx
call eax
lea eax, [ebp - 0x10]
call fcn.00408870
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 [0x49f24c], edi
mov dword [0x49f250], edi
mov dword [0x49f254], edi
mov dword [0x49f258], edi
mov dword [0x49f25c], edi
mov dword [0x49f260], edi
mov dword [0x49f274], edi
cmp eax, edi
je 0x41000f
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x49f278], edi
cmp dword [0x49f27c], edi
je 0x410072
mov edx, dword [0x4690e4]
mov eax, dword [edx + 0xc]
mov ecx, 0x4690e4
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.0040f570
mov esi, dword [ebp - 0x10]
test eax, eax
je 0x41004f
mov ecx, dword [0x49f27c]
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 0x410072
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.004100b0
mov dword [0x49f28c], eax
cmp eax, edi
jne 0x410099
push edi
push edi
push 0x49f248
push 0x410350
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [0x49f288], 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