Function at 0x424525
Capabilities:
Create thread
Terminate thread

Disassembly:
push ebp
lea ebp, [esp - 0x1c8]
sub esp, 0x248
mov eax, dword [0x4c3a10]
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 [0x4d1a4c], ebx
jne 0x4245af
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
xor edi, edi
cmp dword [0x4d19f4], ebx
jne 0x424590
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov edi, eax
cmp edi, ebx
je 0x42463d
push str.ZwQueryInformationFile
push edi
call esi
mov dword [0x4d19f4], eax
cmp eax, ebx
je 0x42463d
push str.NtQuerySystemInformation
push edi
call esi
mov dword [0x4d1a48], eax
cmp eax, ebx
je 0x42463d
mov dword [0x4d1a4c], 1
push ebx
push ebx
push 3
push ebx
push ebx
push connect
push 0x4b4bd8
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 0x424850
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 0x42462a
push ebx
push esi
push edi
push 0x10
call dword [0x4d1a48]
cmp eax, ebx
mov dword [ebp - 0x6c], eax
jge 0x424644
push 0x8000
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
add esi, esi
cmp esi, 0x4000000
ja 0x42462a
cmp dword [ebp - 0x6c], 0xc0000004
je 0x4245e0
cmp dword [ebp - 0x6c], ebx
jge 0x424644
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x424850
xor eax, eax
jmp 0x424853
xor esi, esi
cmp dword [edi], ebx
jbe 0x42467e
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 0x424669
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ecx, dword [ebp - 0x64]
cmp dword [ecx], eax
je 0x424674
add dword [ebp - 0x64], 0x10
inc esi
cmp esi, dword [edi]
jb 0x424650
jmp 0x42467e
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 0x424849
lea eax, [edi + 0xa]
mov dword [ebp - 0x6c], eax
mov cl, byte [ebp - 0x65]
cmp byte [eax - 2], cl
jne 0x424832
push dword [eax - 6]
push ebx
push 0x40
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov dword [ebp - 0x74], eax
cmp eax, ebx
je 0x424832
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 0x424832
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 0x4243f2
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 0x424750
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 0x42482f
push dword [ebp - 0x70]
call esi
cmp dword [edi + 0x210], ebx
jge 0x424776
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 0x42482f
xor eax, eax
push 0x206
mov word [ebp - 0x44], ax
lea eax, [ebp - 0x42]
push ebx
push eax
call fcn.004766d0
mov ebx, dword [ebp - 0x64]
lea eax, [ebp - 0x44]
push eax
call fcn.00424447
add esp, 0x10
test eax, eax
jne 0x4247b4
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 0x42482d
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x60]
call fcn.00401900
add edi, 0xa
push edi
lea ecx, [ebp - 0x60]
call fcn.00401987
cmp dword [ebp - 0x48], 8
mov eax, dword [ebp - 0x5c]
jae 0x4247d8
lea eax, [ebp - 0x5c]
push dword [ebp - 0x80]
push eax
call fcn.00479db7
pop ecx
pop ecx
test eax, eax
jne 0x424821
push dword [ebp - 0x80]
lea ecx, [ebp - 0x60]
call fcn.00401a3e
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 0x424821
push dword [ebp - 0x64]
call esi
push 0
push 1
lea ecx, [ebp - 0x60]
call fcn.00401a62
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 0x42469a
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.0047674a
add ebp, 0x1c8
leave
ret