Function at 0x401000
Capabilities:
Encode data using xor
Encrypt data using speck
Hide graphical window
Terminate process

Disassembly:
push 0
call dword [sym.imp.KERNEL32_GetModuleHandleA]
mov dword [0x415a40], eax
push 0x7f00
push 0
call dword [sym.imp.USER32_LoadIconA]
mov dword [0x415a44], eax
push 0x7f00
push 0
call dword [sym.imp.USER32_LoadCursorA]
mov dword [0x415a48], eax
mov eax, 1
cpuid
bt ecx, 0x1c
jae 0x401045
mov byte [0x41048e], 1
bt ecx, 0x14
jae 0x401054
mov byte [0x41048f], 1
jmp 0x401062
mov byte [0x415658], 1
mov byte [0x414fce], 0x13
mov edi, 0x54c930
xor eax, eax
mov ecx, 0x40
cld
rep stosd dword es:[edi], eax
call dword [sym.imp.KERNEL32_GetCurrentProcess]
push 0x41591c
push 0x415918
push eax
call dword [sym.imp.KERNEL32_GetProcessAffinityMask]
mov ecx, 0x54c930
mov ebx, dword [0x415918]
xor edx, edx
mov eax, ebx
dec ebx
and ebx, eax
xor eax, ebx
inc edx
mov dword [ecx], eax
add ecx, 4
test ebx, ebx
jne 0x401095
mov dword [0x41590e], edx
push 0
call dword [sym.imp.USER32_GetSystemMetrics]
push eax
push 1
call dword [sym.imp.USER32_GetSystemMetrics]
mov edx, eax
pop eax
mov dword [0x4e5ae1], eax
mov dword [0x4e5ae5], edx
and eax, 0xfffffffc
mov word [0x54cc48], ax
sub eax, 0x190
and eax, 0xfffffffc
mov ebx, eax
mov word [0x54cc4c], ax
shr eax, 1
mov dword [0x4105d0], eax
and edx, 0xfffffffc
mov word [0x54cc4a], dx
sub edx, 0x46
and edx, 0xfffffffc
mov word [0x54cc4e], dx
mov ecx, edx
shr ecx, 1
mov dword [0x4105d4], ecx
movzx eax, word [0x54cc4c]
movzx ebx, word [0x54cc4e]
sub eax, 6
sub ebx, 6
mov edi, 0x4158fb
mov word [edi], ax
mov word [edi + 2], bx
cvtdq2ps xmm0, xmmword [0x4105d0]
movaps xmmword [0x54c6a0], xmm0
dec eax
dec ebx
cvtsi2ss xmm0, eax
cvtsi2ss xmm1, ebx
movss dword [0x4105e8], xmm0
movss dword [0x4105ec], xmm1
mov esi, 0x414eff
xor eax, eax
mov ebx, 0x14
cmp word [0x54cc4e], 0x384
cmovb eax, ebx
cmp ax, word [esi + 8]
jne 0x4011b5
or edi, 0xffffffff
movzx eax, word [esi + 8]
cdq
div ebx
imul eax, eax, 0xd
sub eax, 0xb
mov word [esi + 4], ax
add eax, 0xc
mov word [esi + 8], ax
add esi, 0x1f
cmp word [esi], di
jne 0x401175
mov eax, 0x42680
sub dword [0x41056a], eax
sub eax, 0x3e80
sub dword [0x41056e], eax
sub dword [0x410572], 0xaa
movzx eax, word [0x54cc4c]
movzx edx, word [0x54cc4e]
imul edx, eax
shr edx, 2
add edx, 0xc8
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd50], eax
pop edx
add edx, 0x10000
shl edx, 2
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd3c], eax
pop edx
shl edx, 2
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd34], eax
pop edx
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54ccfc], eax
pop edx
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd40], eax
pop edx
shl edx, 2
add edx, 0xffff
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd38], eax
pop edx
shr ebx, 2
push edx
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd4c], eax
pop edx
shr edx, 2
mov eax, edx
call fcn.00407d2a
mov dword [0x54cd48], eax
mov eax, 0x241999
mov eax, eax
call fcn.00407d2a
mov dword [0x54cd00], eax
mov eax, 0x60000
mov eax, eax
call fcn.00407d2a
mov dword [0x54cd6c], eax
mov ecx, 0x54d134
mov dword [ecx], 0x28
movzx eax, word [0x54cc4c]
mov dword [ecx + 4], eax
movzx edx, word [0x54cc4e]
neg edx
xor esi, esi
mov dword [ecx + 8], edx
mov word [ecx + 0xc], 1
mov word [ecx + 0xe], 0x20
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], esi
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x1c], esi
mov dword [ecx + 0x20], esi
mov dword [ecx + 0x24], esi
mov ecx, 0x54d1ac
mov dword [ecx], 0x28
mov ebx, 2
mov dword [ecx + 4], ebx
neg ebx
mov dword [ecx + 8], ebx
mov word [ecx + 0xc], 1
mov word [ecx + 0xe], 0x20
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], esi
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x1c], esi
mov dword [ecx + 0x20], esi
mov dword [ecx + 0x24], esi
mov ecx, 0x54d15c
mov dword [ecx], 0x28
mov dword [ecx + 4], 0x190
mov ebx, 0x3de
movzx eax, word [0x54cc4e]
cmp ebx, eax
cmova ebx, eax
neg ebx
mov dword [ecx + 8], ebx
mov word [ecx + 0xc], 1
mov word [ecx + 0xe], 0x20
mov dword [ecx + 0x10], 0
xor eax, eax
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], eax
xor eax, eax
mov ecx, 0x54d184
mov dword [ecx], 0x28
mov dword [ecx + 4], 0x1f4
mov dword [ecx + 8], 0xffffffe2
mov word [ecx + 0xc], 1
mov word [ecx + 0xe], 0x20
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], eax
mov ecx, 0x41593c
xor ebx, ebx
mov dword [ecx], ebx
mov dword [ecx + 4], ebx
movzx eax, word [0x54cc48]
mov dword [ecx + 8], eax
movzx edx, word [0x54cc4a]
mov dword [ecx + 0xc], edx
push 0
push 0x80c80000
push 0x41593c
call dword [sym.imp.USER32_AdjustWindowRectEx]
push 0x415a30
call dword [sym.imp.USER32_RegisterClassA]
xor edx, edx
mov ecx, dword [0x415948]
mov eax, dword [0x415944]
sub ecx, dword [0x415940]
sub eax, dword [0x41593c]
push 0
push dword [0x415a40]
push 0
push 0
push ecx
push eax
push edx
push edx
push 0x10cf0000
push str.Ave_Cruce_Salus_Mea
push str.Win3ds
push edx
call dword [sym.imp.USER32_CreateWindowExA]
mov dword [0x54d12c], eax
push dword [0x54d12c]
call dword [sym.imp.USER32_GetDC]
mov dword [0x54d130], eax
push 5
push dword [0x54d12c]
call dword [sym.imp.USER32_ShowWindow]
cld
lea esi, [0x410576]
lea edi, [0x4e5abf]
mov ecx, 0x11
rep movsw word es:[edi], word [esi]
mov ebx, 0x413260
mov ecx, 0x50
shl ecx, 4
dec word [ebx]
add ebx, 2
loop 0x401444
push 0x4109a4
push 0x100
call fcn.0040ae51
push 0x4123fc
push 0xfb
call fcn.0040ae51
push 0x4115a4
push 0x132
call fcn.0040ae51
push 0x412fc0
push 0x38
call fcn.0040ae51
mov eax, 0x412fc0
mov ecx, 0x38
mov edx, 0x80000000
movd xmm1, edx
shufps xmm1, xmm1, 0
movups xmm0, xmmword [eax]
shufps xmm0, xmm0, 0xf6
xorps xmm0, xmm1
movlps qword [eax + 4], xmm0
add eax, 0xc
loop 0x40149f
mov esi, 0x412fc0
mov edi, 0x4e5ae9
mov ecx, 0xa8
cld
rep movsd dword es:[edi], dword [esi]
call fcn.00403430
movzx eax, word [0x54cc4e]
shr eax, 1
cvtsi2ss xmm0, eax
movss dword [0x41055a], xmm0
call fcn.0040c36f
push 0x54cdf8
push 0x54d108
push 0x54d114
push 0x54cc50
mov ecx, 0x41594c
movups xmm0, xmmword [esp]
add esp, 0x10
call fcn.0040ef34
mov eax, 0x73726966
mov bl, 0x66
call fcn.00403195
call fcn.004076c3
mov edi, 0x410620
mov ecx, 3
call fcn.0040c399
call fcn.0040b51d
call fcn.0040b618
mov edi, 0x58f8e0
call fcn.0040b2a4
call fcn.0040aef7
call fcn.0040b4c8
mov ecx, 0x40000
mov esi, 9
mov edi, dword [0x54cd00]
call fcn.004051f8
xor eax, eax
call fcn.00407bc6
call fcn.00403005
cmp byte [0x415181], 0
jne 0x401593
cmp byte [0x415105], 0
jne 0x401593
cmp byte [0x4151fd], 1
je 0x401593
cmp byte [0x41523b], 0
jne 0x401593
push 8
call dword [sym.imp.KERNEL32_Sleep]
push 0
push 0
push 0
push 0
push 0x415920
call dword [sym.imp.USER32_PeekMessageA]
or eax, eax
je 0x401562
push 0
push 0
push 0
push 0x415920
call dword [sym.imp.USER32_GetMessageA]
or eax, eax
je 0x4015d7
push 0x415920
call dword [sym.imp.USER32_TranslateMessage]
push 0x415920
call dword [sym.imp.USER32_DispatchMessageA]
jmp 0x401562
push dword [0x54d130]
push dword [0x54d12c]
call dword [sym.imp.USER32_ReleaseDC]
push dword [0x54d12c]
call dword [sym.imp.USER32_DestroyWindow]
push dword [0x415928]
call dword [sym.imp.KERNEL32_ExitProcess]