Function at 0x140007200
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
mov qword [rsp + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov r12, rcx
mov r14, rdx
lea rcx, [rsp + 0x68]
xor r15d, r15d
xor r13d, r13d
xor edi, edi
call qword [sym.imp.kernel32.dll_QueryPerformanceCounter]
mov ecx, dword [rsp + 0x68]
call fcn.140010614
cmp byte [r12], dil
je 0x1400074c5
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x28], rbp
nop dword [rax]
cmp r13d, 0x1387
jge 0x1400074b6
movsxd rsi, r13d
add rsi, r12
movzx ecx, byte [rsi]
cmp cl, 0x25
jne 0x140007495
cmp byte [rsi + 1], cl
jne 0x140007495
movzx edx, byte [rsi + 2]
lea rcx, [rsi + 2]
lea eax, [rdx - 0x49]
test al, 0xdf
je 0x140007447
lea eax, [rdx - 0x43]
test al, 0xdf
je 0x14000742a
lea eax, [rdx - 0x58]
test al, 0xdf
je 0x14000740d
lea eax, [rdx - 0x48]
test al, 0xdf
je 0x1400073ed
sub dl, 0x30
cmp dl, 9
ja 0x1400073e0
call fcn.140016c28
mov ebx, eax
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x1400072e1
mov ecx, edx
call fcn.140006df0
lea ecx, [rax + 3]
lea ebp, [rax + 4]
jmp 0x1400072e9
mov ecx, 3
lea ebp, [rcx + 1]
lea eax, [rbx + rdi]
cmp eax, 0x1387
jle 0x1400072fa
mov ebx, 0x1387
sub ebx, edi
lea eax, [rcx + r13]
movsxd rcx, eax
movzx edx, byte [rcx + r12]
lea eax, [rdx - 0x49]
test al, 0xdf
je 0x14000737a
lea eax, [rdx - 0x43]
test al, 0xdf
je 0x140007362
lea eax, [rdx - 0x58]
test al, 0xdf
je 0x14000734a
sub dl, 0x48
test dl, 0xdf
je 0x140007332
movzx eax, byte [rsi]
movsxd rcx, edi
mov byte [rcx + r14], al
jmp 0x14000749c
movsxd rdx, edi
mov ecx, ebx
add rdx, r14
call fcn.140007010
mov r15d, 1
jmp 0x1400074a3
movsxd rdx, edi
mov ecx, ebx
add rdx, r14
call fcn.140006ee0
mov r15d, 1
jmp 0x1400074a3
movsxd rdx, edi
mov ecx, ebx
add rdx, r14
call fcn.140006e20
mov r15d, 1
jmp 0x1400074a3
movsxd r15, edi
xor esi, esi
add r15, r14
movsxd r12, ebx
test ebx, ebx
jle 0x1400073cb
nop dword [rax]
cmp rsi, 0x1387
jge 0x1400073cb
call fcn.1400105e8
mov r8d, eax
mov eax, 0x66666667
imul r8d
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub r8d, ecx
add r8b, 0x30
mov byte [rsi + r15], r8b
inc rsi
cmp rsi, r12
jl 0x140007390
mov r12, qword [rsp + 0x60]
mov byte [rsi + r15], 0
mov r15d, 1
jmp 0x1400074a3
movsxd rax, edi
mov byte [rax + r14], 0x25
jmp 0x14000749c
mov r15d, 1
movsxd rdx, edi
add rdx, r14
mov ecx, r15d
call fcn.140007010
mov ebx, r15d
lea ebp, [r15 + 2]
jmp 0x1400074a3
mov r15d, 1
movsxd rdx, edi
add rdx, r14
mov ecx, r15d
call fcn.140006ee0
mov ebx, r15d
lea ebp, [r15 + 2]
jmp 0x1400074a3
mov r15d, 1
movsxd rdx, edi
add rdx, r14
mov ecx, r15d
call fcn.140006e20
mov ebx, r15d
lea ebp, [r15 + 2]
jmp 0x1400074a3
movsxd rsi, edi
mov r15d, 1
add rsi, r14
xor ebx, ebx
call fcn.1400105e8
mov r8d, eax
mov eax, 0x66666667
imul r8d
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub r8d, ecx
add r8b, 0x30
mov byte [rbx + rsi], r8b
inc rbx
cmp rbx, r15
jl 0x140007455
mov byte [rbx + rsi], 0
mov ebp, 3
mov ebx, r15d
jmp 0x1400074a3
movsxd rax, edi
mov byte [rax + r14], cl
mov ebx, 1
mov ebp, ebx
add r13d, ebp
add edi, ebx
movsxd rcx, r13d
cmp byte [rcx + r12], 0
jne 0x140007250
mov rbp, qword [rsp + 0x28]
mov rbx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x20]
movsxd rcx, edi
mov eax, r15d
mov byte [rcx + r14], 0
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret