Function at 0x40ad69
Capabilities:
Accept command line arguments
Execute anti-debugging instructions
Get memory capacity

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffea8
pushfd
push ecx
btc ecx, 0x13
pop ecx
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
push edx
call fcn.0040b194
pop edx
jmp 0x40ada0
xor eax, eax
cpuid
pushfd
push esi
rcl esi, 0x15
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
pushfd
push eax
setb al
pop eax
pushal
call sub.KERNEL32.DLL_GetCommandLineA
popal
popfd
mov edi, dword [ebp + 8]
pushfd
push esi
btc esi, 0x1c
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
pcmpeqw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcess
popfd
popal
mov eax, ebx
stosd dword es:[edi], eax
pushfd
push ecx
shl ecx, 0x19
pop ecx
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
paddb mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThread
popfd
popal
rdtsc
pushfd
push ebx
bts ebx, 0x15
pop ebx
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
push ebx
push esi
pushfd
add ebx, esi
popfd
pop esi
pop ebx
pushal
pushfd
call sub.KERNEL32.DLL_GetCommandLineA
popfd
popal
mov dword [ebp - 0xc], edx
pushfd
push eax
bts eax, 0xa
pop eax
pushal
call sub.KERNEL32.DLL_GetLastError
popal
popfd
pavgw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCommandLineA
popfd
popal
mov dword [ebp - 8], eax
pushfd
push ebx
ror ebx, 0x1c
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentProcess
popal
popfd
pushfd
push ebx
seta bl
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
push 0x3e8
call sub.KERNEL32.DLL_Sleep
rdtsc
pushfd
push edx
btr edx, 0x10
pop edx
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
push eax
push ebx
pushfd
or eax, ebx
popfd
pop ebx
pop eax
pushal
pushfd
call sub.KERNEL32.DLL_GetCommandLineA
popfd
popal
push edx
pushfd
push ebx
rcr ebx, 0x1a
pop ebx
pushal
call sub.KERNEL32.DLL_GetCommandLineA
popal
popfd
push edx
push edx
pushfd
cmovne edx, edx
popfd
pop edx
pop edx
pushal
pushfd
call sub.KERNEL32.DLL_GetLastError
popfd
popal
push eax
pushfd
push edx
shl edx, 0x15
pop edx
pushal
call sub.KERNEL32.DLL_GetLastError
popal
popfd
fcos
pushal
pushfd
call sub.KERNEL32.DLL_GetTickCount
popfd
popal
fild qword [esp]
push dword [ebp - 0xc]
push dword [ebp - 8]
fild qword [esp]
pushfd
push eax
rol eax, 0
pop eax
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
pushfd
push ecx
setb cl
pop ecx
pushal
call sub.KERNEL32.DLL_GetCommandLineA
popal
popfd
fsubp st(1)
push 0xf4240
fidiv dword [esp]
pushfd
push eax
rol eax, 0xc
pop eax
pushal
call sub.KERNEL32.DLL_GetCommandLineA
popal
popfd
push ebx
push edx
pushfd
cmovle ebx, edx
popfd
pop edx
pop ebx
pushal
pushfd
call sub.KERNEL32.DLL_GetTickCount
popfd
popal
frndint
fistp dword [esp]
pop eax
add esp, 0x10
pushfd
push eax
btr eax, 0x18
pop eax
pushal
call sub.KERNEL32.DLL_GetCurrentProcess
popal
popfd
psadbw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcess
popfd
popal
bswap eax
stosd dword es:[edi], eax
call sub.KERNEL32.DLL_GetTickCount
mov ecx, 0x3e8
pushfd
push ecx
ror ecx, 0xf
pop ecx
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
push eax
push ecx
pushfd
mov eax, ecx
popfd
pop ecx
pop eax
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcessId
popfd
popal
xor edx, edx
idiv ecx
bswap eax
stosd dword es:[edi], eax
mov dword [ebp - 0xb8], 0x9c
lea eax, [ebp - 0xb8]
push eax
call sub.KERNEL32.DLL_GetVersionExA
mov eax, dword [ebp - 0xb4]
xchg ah, al
stosw word es:[edi], ax
mov eax, dword [ebp - 0xb0]
xchg ah, al
pushfd
push ebx
sar ebx, 0x11
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
pcmpgtd mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThreadId
popfd
popal
stosw word es:[edi], ax
mov eax, dword [ebp - 0xac]
pushfd
push eax
bts eax, 0x12
pop eax
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
psadbw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetTickCount
popfd
popal
xchg ah, al
pushfd
push esi
rol esi, 0xf
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
paddsb mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcess
popfd
popal
stosw word es:[edi], ax
mov ax, word [ebp - 0x24]
xchg ah, al
stosw word es:[edi], ax
mov ax, word [ebp - 0x22]
xchg ah, al
stosw word es:[edi], ax
push edi
pushfd
push ecx
rcr ecx, 2
pop ecx
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
pushfd
push eax
setb al
pop eax
pushal
call sub.KERNEL32.DLL_GetCommandLineA
popal
popfd
lea edi, [ebp - 0xd8]
pushfd
push esi
bt esi, 0xb
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentProcess
popal
popfd
push edx
call fcn.0040b194
pop edx
jmp 0x40b04e
mov ecx, 0x20
xor eax, eax
rep stosb byte es:[edi], al
pushfd
push edx
btr edx, 0x1a
pop edx
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
pushfd
push ebx
setnp bl
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
lea eax, [ebp - 0xd8]
push eax
call sub.KERNEL32.DLL_GlobalMemoryStatus
pushfd
push ebx
shl ebx, 0x18
pop ebx
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
pop edi
mov eax, dword [ebp - 0xd0]
shr eax, 0xa
bswap eax
stosd dword es:[edi], eax
mov eax, dword [ebp - 0xcc]
pushfd
push ecx
rcr ecx, 0x1b
pop ecx
pushal
call sub.KERNEL32.DLL_GetLastError
popal
popfd
pushfd
push ebx
setne bl
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
shr eax, 0xa
pushfd
push ecx
rcr ecx, 0x1b
pop ecx
pushal
call sub.KERNEL32.DLL_GetCurrentProcess
popal
popfd
fsubp st(1)
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcess
popfd
popal
bswap eax
pushfd
push ecx
ror ecx, 0x13
pop ecx
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
fsubp st(1)
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThread
popfd
popal
stosd dword es:[edi], eax
cmp dword [0x4219f7], 0
je 0x40b136
push 0
pushfd
push edx
rol edx, 0xb
pop edx
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
pushfd
push ecx
dec cl
pop ecx
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
push 0x80
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 4]
push eax
call dword [0x4219f7]
mov eax, dword [ebp - 4]
jmp 0x40b155
pushfd
push ebx
bts ebx, 0x18
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
psubusw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcessId
popfd
popal
mov ax, 0xffff
xchg ah, al
stosw word es:[edi], ax
mov eax, dword [ebp + 0xc]
stosd dword es:[edi], eax
sub edi, dword [ebp + 8]
mov eax, edi
pushfd
push esi
rcr esi, 0x15
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
push edx
call fcn.0040b194
pop edx
jmp 0x40b190
leave
ret 8