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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
sub rsp, 0x20
mov rbp, r8
mov rsi, rdx
mov rbx, rcx
test r9d, r9d
je 0x140031941
mov dword [0x1400ea698], 0x76c
mov dword [0x1400ea68c], 0xffffffff
movzx eax, byte [rdx]
mov qword [rsp + 0x30], rdi
test al, al
je 0x1400320bb
movzx ecx, al
xor edi, edi
call fcn.140077c80
test eax, eax
je 0x140031988
movzx ecx, byte [rbx]
call fcn.140077c80
test eax, eax
je 0x140031980
nop dword [rax + rax]
movzx ecx, byte [rbx + 1]
inc rbx
call fcn.140077c80
test eax, eax
jne 0x140031970
inc rsi
jmp 0x1400320b0
movzx edx, byte [rsi]
inc rsi
cmp dl, 0x25
jne case.0x1400319c4.37
lea r8, [0x140000000]
nop
movzx edx, byte [rsi]
inc rsi
lea eax, [rdx - 0x25]
cmp eax, 0x54
ja case.0x1400319c4.59
cdqe
movzx eax, byte [r8 + rax + 0x32174]
mov ecx, dword [r8 + rax*4 + 0x32118]
add rcx, r8
jmp rcx
test edi, edi
jne case.0x1400319c4.59
mov edi, 1
jmp 0x1400319a0
test edi, edi
jne case.0x1400319c4.59
mov edi, 2
jmp 0x1400319a0
test edi, edi
jne case.0x1400319c4.59
xor r9d, r9d
lea rdx, str._m__d__y
mov r8, rbp
mov rcx, rbx
call fcn.140031910
mov rbx, rax
test rax, rax
jne 0x1400320b0
xor eax, eax
jmp 0x140032102
test edi, edi
jne case.0x1400319c4.59
xor r9d, r9d
lea rdx, str._H:_M
mov r8, rbp
mov rcx, rbx
call fcn.140031910
mov rbx, rax
test rax, rax
je case.0x1400319c4.59
jmp 0x1400320b0
test edi, edi
jne case.0x1400319c4.59
xor r9d, r9d
lea rdx, str._I:_M:_S__p
mov r8, rbp
mov rcx, rbx
call fcn.140031910
mov rbx, rax
test rax, rax
je case.0x1400319c4.59
jmp 0x1400320b0
test edi, edi
jne case.0x1400319c4.59
xor r9d, r9d
lea rdx, str._H:_M:_S
mov r8, rbp
mov rcx, rbx
call fcn.140031910
mov rbx, rax
test rax, rax
je case.0x1400319c4.59
jmp 0x1400320b0
test edi, 0xfffffffe
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x63
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop dword [rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x63
jg 0x140031ae2
test r8d, r8d
je 0x140031ae2
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031ae2
cmp cl, 0x39
jbe 0x140031aa0
cmp r9d, 0x63
ja case.0x1400319c4.59
imul eax, r9d, 0x64
mov dword [0x1400ea698], eax
jmp 0x1400320b0
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x1f
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop dword [rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x1f
jg 0x140031b62
test r8d, r8d
je 0x140031b62
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031b62
cmp cl, 0x39
jbe 0x140031b20
lea eax, [r9 - 1]
cmp eax, 0x1e
ja case.0x1400319c4.59
mov dword [rbp + 0xc], r9d
jmp 0x1400320b0
test edi, edi
jne case.0x1400319c4.59
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, reloc.WS2_32.dll_socket
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x17
jg 0x140031be4
test r8d, r8d
je 0x140031be4
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031be4
cmp cl, 0x39
jbe 0x140031ba2
cmp r9d, 0x17
ja case.0x1400319c4.59
mov dword [rbp + 8], r9d
jmp 0x1400320b0
test edi, edi
jne case.0x1400319c4.59
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, reloc.WS2_32.dll_inet_ntoa
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0xc
jg 0x140031c63
test r8d, r8d
je 0x140031c63
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031c63
cmp cl, 0x39
jbe 0x140031c21
lea eax, [r9 - 1]
cmp eax, 0xb
ja case.0x1400319c4.59
mov dword [rbp + 8], r9d
jmp 0x1400320b0
test edi, edi
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x16e
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop word [rax + rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x16e
jg 0x140031ce5
test r8d, r8d
je 0x140031ce5
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031ce5
cmp cl, 0x39
jbe 0x140031ca0
lea eax, [r9 - 1]
cmp eax, 0x16d
ja case.0x1400319c4.59
mov dword [rbp + 0x1c], eax
jmp 0x1400320b0
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x3b
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x3b
jg 0x140031d62
test r8d, r8d
je 0x140031d62
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031d62
cmp cl, 0x39
jbe 0x140031d20
cmp r9d, 0x3b
ja case.0x1400319c4.59
mov dword [rbp + 4], r9d
jmp 0x1400320b0
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, reloc.WS2_32.dll_inet_ntoa
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop word [rax + rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0xc
jg 0x140031de2
test r8d, r8d
je 0x140031de2
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031de2
cmp cl, 0x39
jbe 0x140031da0
lea eax, [r9 - 1]
cmp eax, 0xb
ja case.0x1400319c4.59
mov dword [rbp + 0x10], eax
jmp 0x1400320b0
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x3d
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop dword [rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x3d
jg 0x140031e62
test r8d, r8d
je 0x140031e62
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031e62
cmp cl, 0x39
jbe 0x140031e20
cmp r9d, 0x3d
ja case.0x1400319c4.59
mov dword [rbp], r9d
jmp 0x1400320b0
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, gethostname
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop word [rax + rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x35
jg 0x140031ee2
test r8d, r8d
je 0x140031ee2
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031ee2
cmp cl, 0x39
jbe 0x140031ea0
cmp r9d, 0x35
ja case.0x1400319c4.59
jmp 0x1400320b0
test edi, 0xfffffffd
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 6
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 6
jg 0x140031f55
test r8d, r8d
je 0x140031f55
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031f55
cmp cl, 0x39
jbe 0x140031f13
cmp r9d, 6
ja case.0x1400319c4.59
mov dword [rbp + 0x18], r9d
jmp 0x1400320b0
test edi, 0xfffffffe
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x270f
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop word [rax + rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x270f
jg 0x140031fd5
test r8d, r8d
je 0x140031fd5
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140031fd5
cmp cl, 0x39
jbe 0x140031f90
cmp r9d, 0x270f
ja case.0x1400319c4.59
lea eax, [r9 - 0x76c]
mov dword [0x1400ea68c], 0xffffffff
mov dword [rbp + 0x14], eax
jmp 0x1400320b0
test edi, 0xfffffffc
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
mov r8d, 0x63
lea eax, [rcx - 0x30]
cmp al, 9
ja case.0x1400319c4.59
xor edx, edx
nop dword [rax]
lea r9d, [rdx - 0x30]
movzx eax, cl
add r9d, eax
inc rbx
mov eax, 0x66666667
imul r8d
mov r8d, edx
lea edx, [r9 + r9*4]
sar r8d, 2
add edx, edx
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edx, 0x63
jg 0x140032062
test r8d, r8d
je 0x140032062
movzx ecx, byte [rbx]
cmp cl, 0x30
jb 0x140032062
cmp cl, 0x39
jbe 0x140032020
cmp r9d, 0x63
ja case.0x1400319c4.59
mov dword [0x1400ea68c], r9d
jmp 0x1400320b0
test edi, edi
jne case.0x1400319c4.59
movzx ecx, byte [rbx]
call fcn.140077c80
test eax, eax
je 0x1400320b0
nop dword [rax]
movzx ecx, byte [rbx + 1]
inc rbx
call fcn.140077c80
test eax, eax
jne 0x140032090
jmp 0x1400320b0
movzx eax, byte [rbx]
inc rbx
cmp dl, al
jne case.0x1400319c4.59
movzx eax, byte [rsi]
test al, al
jne 0x140031951
mov eax, dword [0x1400ea68c]
cmp eax, 0xffffffff
je 0x1400320ff
cmp dword [0x1400ea698], 0x76c
jne 0x1400320ea
cmp eax, 0x44
jg 0x1400320df
add eax, 0x64
mov dword [rbp + 0x14], eax
jmp 0x1400320ff
mov eax, dword [0x1400ea68c]
mov dword [rbp + 0x14], eax
jmp 0x1400320ff
mov ecx, dword [0x1400ea698]
add ecx, 0xfffff894
add ecx, dword [0x1400ea68c]
mov dword [rbp + 0x14], ecx
mov rax, rbx
mov rdi, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x40]
add rsp, 0x20
pop rsi
ret