Function at 0x4041a0
Capabilities:
Enumerate threads

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov esi, dword [ebp + 0xc]
mov eax, dword [0x45a454]
xor eax, ebp
mov dword [esp + 0x60], eax
xor edi, edi
push esi
push dword [ebp + 8]
call fcn.00402240
add esp, 8
test al, al
jne 0x4047c9
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
je 0x404247
mov edi, eax
push str._dummy_debug_proc_12
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 0x38], eax
test eax, eax
je 0x404251
push str.InjectLibrarySafe:_Injecting_threads
call fcn.00401b00
add esp, 4
push 0x100
call fcn.0040d2dc
add esp, 4
mov dword [esp + 8], eax
call fcn.004116c5
mov ebx, eax
mov esi, edx
call fcn.004116ae
mov ecx, eax
mov eax, ebx
xor eax, 0x989680
mov dword [esp + 4], esi
or eax, esi
mov dword [esp + 0x34], edi
jne 0x40425b
mov edi, 0x64
mov eax, ecx
mov esi, edx
mul edi
imul ecx, esi, 0x64
add ecx, edx
jmp 0x4042d1
mov edi, 0x75
jmp 0x4047c9
mov edi, 0x76
jmp 0x4047c9
push dword [esp + 4]
push ebx
push edx
mov dword [esp + 0x24], ecx
push ecx
mov dword [esp + 0x24], edx
call fcn.0040d430
mov edi, eax
mov ecx, edx
mov edx, 0x3b9aca00
mul edx
mov dword [esp + 0xc], eax
imul eax, ecx, 0x3b9aca00
add eax, edx
mov dword [esp + 0x10], eax
mov esi, ebx
mov ebx, edi
imul ebx, dword [esp + 4]
mov eax, edi
mul esi
add edx, ebx
imul ecx, esi
add ecx, edx
mov edx, dword [esp + 0x18]
sub edx, eax
mov edi, dword [esp + 0x14]
sbb edi, ecx
mov eax, edx
mov ecx, 0x3b9aca00
mul ecx
imul ecx, edi, 0x3b9aca00
add edx, ecx
push dword [esp + 4]
push esi
push edx
push eax
call fcn.0040d430
mov ecx, edx
add eax, dword [esp + 0xc]
adc ecx, dword [esp + 0x10]
mov edi, dword [esp + 8]
mov edx, edi
add edx, 0x100
mov dword [esp + 0x14], edx
add eax, 0xf08eb000
mov dword [esp + 0x30], eax
adc ecx, 0x1b
mov dword [esp + 0x2c], ecx
xor esi, esi
mov dword [esp + 4], edi
jmp 0x404321
mov dword [esp + 4], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0x3e8
lea eax, [esp + 0x40]
push eax
call fcn.004047f0
add esp, 4
call fcn.004116c5
mov edi, eax
mov ebx, edx
call fcn.004116ae
mov ecx, eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], edi
xor edi, 0x989680
or edi, ebx
jne 0x404370
mov eax, ecx
mov ecx, 0x64
mul ecx
mov ecx, edx
imul edx, dword [esp + 0xc], 0x64
add edx, ecx
mov edi, dword [esp + 8]
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
jmp 0x4043fe
mov edx, ebx
push edx
mov dword [esp + 0x28], edx
push dword [esp + 0x14]
push dword [esp + 0x14]
mov dword [esp + 0x34], ecx
push ecx
call fcn.0040d430
mov dword [esp + 0x18], esi
mov esi, eax
mov ecx, edx
mov edx, 0x3b9aca00
mul edx
mov dword [esp + 0x20], eax
imul eax, ecx, 0x3b9aca00
add eax, edx
mov dword [esp + 0x1c], eax
mov edi, esi
imul edi, ebx
mov eax, esi
mov esi, dword [esp + 0x18]
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
mul dword [esp + 0x10]
add edx, edi
mov edi, dword [esp + 8]
imul ecx, dword [esp + 0x10]
add ecx, edx
mov edx, dword [esp + 0x28]
sub edx, eax
sbb dword [esp + 0xc], ecx
mov eax, edx
mov ecx, 0x3b9aca00
mul ecx
imul ecx, dword [esp + 0xc], 0x3b9aca00
add edx, ecx
push dword [esp + 0x24]
push dword [esp + 0x14]
push edx
push eax
call fcn.0040d430
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x1c]
cmp eax, dword [esp + 0x30]
sbb edx, dword [esp + 0x2c]
jge 0x40477a
mov edx, dword [esp + 4]
cmp edx, edi
jne 0x404664
push dword [ebp + 8]
push 4
call sub.KERNEL32.dll_CreateToolhelp32Snapshot
mov ecx, eax
lea eax, [esp + 0x44]
xorps xmm0, xmm0
movsd qword [eax + 0x10], xmm0
xorps xmm0, xmm0
movups xmmword [eax], xmm0
mov dword [esp + 0x40], 0x1c
lea eax, [esp + 0x40]
push eax
mov dword [esp + 0x10], ecx
push ecx
call sub.KERNEL32.dll_Thread32First
mov dword [esp + 0x1c], eax
test eax, eax
je 0x40462a
mov dword [esp + 4], edi
mov dword [esp + 0x18], esi
jmp 0x4044a7
mov eax, dword [esp + 8]
push edx
push eax
call fcn.0040d311
add esp, 8
mov eax, dword [esp + 0x20]
lea eax, [edi + eax*8]
mov dword [esp + 4], eax
lea eax, [edi + esi*8]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x18]
nop word [eax + eax]
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x40]
push eax
push ecx
call sub.KERNEL32.dll_Thread32Next
test eax, eax
je 0x404642
mov eax, dword [ebp + 8]
cmp dword [esp + 0x4c], eax
jne 0x404490
mov byte [esp + 0x3f], 0
lea eax, [esp + 0x3f]
push eax
push 0x404a60
push dword [esp + 0x50]
call dword [sym.imp.USER32.dll_EnumThreadWindows]
cmp byte [esp + 0x3f], 0
je 0x404490
mov ebx, esi
mov esi, dword [esp + 0x48]
mov ecx, dword [ebp + 0x10]
call dword [0x457158]
push esi
push dword [esp + 0x38]
push dword [esp + 0x40]
push 3
call ecx
test eax, eax
je 0x404512
mov ecx, eax
mov dword [esp + 0x10], esi
mov edx, dword [esp + 4]
cmp edx, dword [esp + 0x14]
je 0x404538
mov eax, dword [esp + 0x10]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
mov dword [esp + 4], edx
jmp 0x404527
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str.InjectLibrarySafe:_SetWindowsHookEx_failed_for_thread_id__x:__x
call fcn.00401b00
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov esi, ebx
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
jmp 0x404494
mov dword [esp + 0x14], ecx
sub edx, edi
mov eax, edx
sar eax, 3
mov dword [esp + 8], edi
lea edi, [eax + 1]
mov esi, eax
shr esi, 1
mov ecx, 0x1fffffff
sub ecx, esi
add esi, eax
cmp esi, edi
mov ebx, edi
mov dword [esp + 0x20], edi
cmovbe esi, edi
cmp eax, ecx
mov eax, 0x1fffffff
cmova esi, eax
cmp esi, 0x20000000
jae 0x4047de
lea eax, [esi*8]
cmp esi, 0x200
mov dword [esp + 4], edx
jb 0x4045b8
cmp esi, 0x1ffffffc
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
jae 0x4047de
add eax, 0x23
push eax
call fcn.0040d2dc
add esp, 4
lea edi, [eax + 0x23]
and edi, 0xffffffe0
mov dword [edi - 4], eax
mov edx, dword [esp + 4]
jmp 0x4045d5
test esi, esi
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
je 0x4045d3
push eax
mov edi, edx
call fcn.0040d2dc
mov edx, edi
add esp, 4
mov edi, eax
jmp 0x4045d5
xor edi, edi
mov eax, dword [esp + 0x10]
mov dword [edi + edx], eax
mov eax, dword [esp + 0x14]
mov dword [edi + edx + 4], eax
push edx
push dword [esp + 0xc]
push edi
call fcn.00426e20
add esp, 0xc
cmp dword [esp + 8], 0
je 0x404471
mov edx, dword [esp + 4]
cmp edx, 0x1000
jb 0x404463
mov ecx, dword [esp + 8]
mov eax, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, eax
cmp ecx, 0x20
jae 0x4047e3
add edx, 0x23
jmp 0x404467
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.EnumerateInjectableThreads:_failed_to_get_threads_snapshot:__x_n
call fcn.00401b00
add esp, 8
mov dword [esp + 4], edi
mov ecx, dword [esp + 0xc]
mov eax, ecx
inc eax
cmp eax, 2
jb 0x404655
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x1c], 0
je 0x40478d
mov edx, dword [esp + 4]
cmp edi, edx
mov dword [esp + 8], edi
je 0x404740
mov dword [esp + 4], edx
jmp 0x404690
inc esi
mov edx, dword [esp + 4]
add edi, 8
cmp edi, edx
je 0x404710
push dword [edi + 4]
push 0
push 0x5b0
push dword [edi]
call ebx
test eax, eax
jne 0x404680
mov ebx, esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp eax, 0x5a4
je 0x4046bb
cmp esi, 0x718
jne 0x4046d3
mov dword [edi], 0
push dword [edi + 4]
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
mov dword [edi + 4], 0
jmp 0x4046e3
push esi
push dword [edi]
push str.InjectLibrarySafe:_PostThreadMessage__x__failed:__x
call fcn.00401b00
add esp, 0xc
cmp esi, 0x718
mov edx, dword [esp + 4]
je 0x404701
cmp esi, 0x5a4
mov esi, ebx
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
je 0x404685
jmp 0x404773
mov esi, ebx
mov ebx, dword [sym.imp.USER32.dll_PostThreadMessageW]
jmp 0x404685
mov edi, dword [esp + 8]
mov eax, edi
cmp edi, edx
je 0x404742
nop word [eax + eax]
cmp dword [eax], 0
je 0x404742
cmp dword [eax + 4], 0
je 0x404742
add eax, 8
cmp eax, edx
jne 0x404720
jmp 0x404304
mov eax, edi
cmp eax, edx
je 0x404300
lea ecx, [eax + 8]
jmp 0x404753
add ecx, 8
cmp ecx, edx
je 0x404300
cmp dword [ecx], 0
je 0x404750
cmp dword [ecx + 4], 0
je 0x404750
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
jmp 0x404750
mov edi, 0x73
jmp 0x404796
mov dword [esp + 8], edi
xor eax, eax
cmp esi, 6
mov edi, 0x74
cmovge edi, eax
jmp 0x404796
mov dword [esp + 8], edi
mov edi, 0x77
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x4047c9
mov eax, dword [esp + 0x14]
sub eax, ecx
mov edx, eax
cmp eax, 0x1000
jb 0x4047bf
mov eax, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, eax
cmp ecx, 0x20
jae 0x4047e3
add edx, 0x23
mov ecx, eax
push edx
push ecx
call fcn.0040d311
add esp, 8
mov ecx, dword [esp + 0x60]
xor ecx, ebp
call fcn.0040d348
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.00402170
call fcn.0042eda3
int3