Function at 0x424781
Capabilities:
Create thread
Terminate thread

Disassembly:
push ebp
lea ebp, [esp - 0x1c8]
sub esp, 0x248
mov eax, dword [0x4c3a60]
xor eax, ebp
mov dword [ebp + 0x1c4], eax
mov eax, dword [ebp + 0x1d0]
push ebx
xor ebx, ebx
push esi
push edi
mov dword [ebp - 0x80], eax
cmp dword [0x4d1af4], ebx
jne 0x42480b
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
xor edi, edi
cmp dword [0x4d1a9c], ebx
jne 0x4247ec
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov edi, eax
cmp edi, ebx
je 0x424899
push str.ZwQueryInformationFile
push edi
call esi
mov dword [0x4d1a9c], eax
cmp eax, ebx
je 0x424899
push str.NtQuerySystemInformation
push edi
call esi
mov dword [0x4d1af0], eax
cmp eax, ebx
je 0x424899
mov dword [0x4d1af4], 1
push ebx
push ebx
push 3
push ebx
push ebx
push connect
push 0x4b4bb8
mov dword [ebp - 0x74], ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x70], eax
mov byte [ebp - 0x65], bl
cmp eax, 0xffffffff
je 0x424aac
or dword [ebp - 0x6c], 0xffffffff
mov esi, 0x1000
push 4
push 0x1000
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov edi, eax
mov dword [ebp - 0x78], edi
cmp edi, ebx
je 0x424886
push ebx
push esi
push edi
push 0x10
call dword [0x4d1af0]
cmp eax, ebx
mov dword [ebp - 0x6c], eax
jge 0x4248a0
push 0x8000
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
add esi, esi
cmp esi, 0x4000000
ja 0x424886
cmp dword [ebp - 0x6c], 0xc0000004
je 0x42483c
cmp dword [ebp - 0x6c], ebx
jge 0x4248a0
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x424aac
xor eax, eax
jmp 0x424aaf
xor esi, esi
cmp dword [edi], ebx
jbe 0x4248da
lea eax, [edi + 4]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x64]
movzx eax, word [eax + 6]
cmp eax, dword [ebp - 0x70]
jne 0x4248c5
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ecx, dword [ebp - 0x64]
cmp dword [ecx], eax
je 0x4248d0
add dword [ebp - 0x64], 0x10
inc esi
cmp esi, dword [edi]
jb 0x4248ac
jmp 0x4248da
shl esi, 4
mov al, byte [esi + edi + 8]
mov byte [ebp - 0x65], al
push dword [ebp - 0x70]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov dword [ebp - 0x7c], ebx
cmp dword [edi], ebx
jbe 0x424aa5
lea eax, [edi + 0xa]
mov dword [ebp - 0x6c], eax
mov cl, byte [ebp - 0x65]
cmp byte [eax - 2], cl
jne 0x424a8e
push dword [eax - 6]
push ebx
push 0x40
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov dword [ebp - 0x74], eax
cmp eax, ebx
je 0x424a8e
push 2
push ebx
push ebx
lea eax, [ebp - 0x64]
push eax
mov dword [ebp - 0x64], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
mov eax, dword [ebp - 0x6c]
movzx eax, word [eax]
push eax
push dword [ebp - 0x74]
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x424a8e
push 0x214
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push ebx
push ebx
mov edi, eax
mov eax, dword [ebp - 0x64]
push edi
push 0x42464e
push ebx
push ebx
mov dword [edi], eax
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 0x3e8
push eax
mov dword [ebp - 0x70], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x4249ac
push 2
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push dword [ebp - 0x70]
call esi
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push dword [ebp - 0x64]
call esi
jmp 0x424a8b
push dword [ebp - 0x70]
call esi
cmp dword [edi + 0x210], ebx
jge 0x4249d2
push dword [ebp - 0x64]
call esi
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x424a8b
xor eax, eax
push 0x206
mov word [ebp - 0x44], ax
lea eax, [ebp - 0x42]
push ebx
push eax
call fcn.00476cc0
mov ebx, dword [ebp - 0x64]
lea eax, [ebp - 0x44]
push eax
call fcn.004246a3
add esp, 0x10
test eax, eax
jne 0x424a10
push edi
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push dword [ebp - 0x64]
call esi
jmp 0x424a89
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x60]
call fcn.004018f6
add edi, 0xa
push edi
lea ecx, [ebp - 0x60]
call fcn.004019f8
cmp dword [ebp - 0x48], 8
mov eax, dword [ebp - 0x5c]
jae 0x424a34
lea eax, [ebp - 0x5c]
push dword [ebp - 0x80]
push eax
call fcn.0047a627
pop ecx
pop ecx
test eax, eax
jne 0x424a7d
push dword [ebp - 0x80]
lea ecx, [ebp - 0x60]
call fcn.00401aaf
push dword [ebp - 0x64]
call esi
push 3
push 0
push 0
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
mov eax, dword [ebp - 0x6c]
movzx eax, word [eax]
push eax
push dword [ebp - 0x74]
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x424a7d
push dword [ebp - 0x64]
call esi
push 0
push 1
lea ecx, [ebp - 0x60]
call fcn.00401ad3
xor ebx, ebx
mov edi, dword [ebp - 0x78]
inc dword [ebp - 0x7c]
mov eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x7c]
add eax, 0x10
mov dword [ebp - 0x6c], eax
cmp ecx, dword [edi]
jb 0x4248f6
mov dword [ebp - 0x74], 1
mov eax, dword [ebp - 0x74]
mov ecx, dword [ebp + 0x1c4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00476d3a
add ebp, 0x1c8
leave
ret