Function at 0x40d040
Capabilities:
Encode data using xor
Terminate process

Disassembly:
push esi
sub esp, 0x14
call fcn.0043dc90
test al, al
je 0x40d2a5
call dword [sym.imp.USER32.dll_GetInputState]
mov esi, eax
call fcn.004355f0
test al, al
je 0x40d2a0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [esp + 8], 0x92db8c8f
mov dword [esp + 0xc], 0x667cba62
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40d0d9
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xb3ed6688
and eax, 0x33ed6688
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x58
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40d0a0
mov dword [esp + 8], 0x26bf85c5
mov dword [esp + 0xc], 0x683f9a43
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40d139
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xc4ad44bc
and eax, 0xc4ad44bc
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x54
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40d100
test esi, esi
je 0x40d218
mov dword [esp + 8], 0xcfcec929
mov byte [esp + 0xc], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40d18e
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
add eax, 0x8ca2632
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 6
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40d160
mov dword [esp + 8], 0x691f8523
mov dword [esp + 0xc], 0xd3a8c49a
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40d218
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x454e7de4
and eax, 0xc54e7de4
lea edx, [edx + eax*2]
mov eax, edx
and eax, ecx
xor edx, ecx
sub edx, eax
lea ecx, [edx + eax*2]
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 0x74
and eax, 0xb
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40d1c0
mov dword [esp + 8], 0xf2f3f0f1
mov dword [esp + 0xc], 0xeeefeced
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40d28d
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx edx, byte [esp + eax + 8]
lea eax, [ecx + edx]
add eax, 0x8ed1382c
add ecx, 0x8ed1382c
mov esi, edx
not esi
or esi, ecx
lea ecx, [edx + esi]
inc ecx
sub eax, ecx
mov edx, eax
xor edx, ecx
not ecx
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
add al, 0x24
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40d240
call fcn.0040e3b0
test al, al
je 0x40d2a0
call fcn.00410f00
call fcn.0040fe80
call fcn.0043edd0
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]