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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r12
push r13
push r15
sub rsp, 0x2d0
mov rax, qword [0x1402a83b0]
xor rax, rsp
mov qword [rsp + 0x2c0], rax
mov edx, dword [rcx + 0x3e4]
xor edi, edi
or r13d, 0xffffffff
mov rbx, rcx
mov dword [rcx + 0x3fc], 0x10
mov r12d, edi
mov esi, edi
mov dword [rsp + 0x30], r13d
test edx, edx
je 0x1400f1af8
mov rcx, qword [rcx + 0x55ba0]
xor r8d, r8d
call fcn.1401c1f88
lea r8d, [rdi + 1]
lea rdx, [rsp + 0x40]
mov rcx, rbx
call fcn.140104c00
test eax, eax
je 0x1400f1af8
mov eax, dword [rsp + 0x44]
mov dword [rbx + 0x3fc], eax
movzx eax, word [rsp + 0x4c]
mov word [rbx + 0x4504], ax
movzx eax, word [rsp + 0x48]
mov word [rbx + 0x4506], ax
movsxd rdx, dword [rbx + 0x414]
test rdx, rdx
je 0x1400f1b48
lea rax, [rdx + rdx*2]
lea rcx, [rbx + 0x559c4]
xorps xmm1, xmm1
shl rax, 4
add rcx, rax
nop dword [rax]
movss xmm0, dword [rcx - 0x30]
lea rcx, [rcx - 0x30]
dec rdx
ucomiss xmm0, xmm1
jp 0x1400f1b33
je 0x1400f1b3b
movss dword [rbx + 0x3b4], xmm0
mov eax, dword [rbx + 0x3b4]
mov dword [rcx], eax
test rdx, rdx
jne 0x1400f1b20
movsxd rdx, dword [rbx + 0x414]
mov qword [rsp + 0x308], r14
mov r9d, edi
test edx, edx
je 0x1400f1c89
movzx r15d, word [rbx + 0x44f2]
movzx r12d, word [rbx + 0x44f0]
mov ebp, dword [rbx + 0x41c]
lea rcx, [rbx + 0x5599c]
mov eax, 3
mov edi, esi
nop word [rax + rax]
mov r11d, dword [rcx + 0x18]
mov r10d, dword [rcx - 4]
mov r14d, dword [rcx]
cmp edi, r11d
movzx r8d, r12w
cmovl edi, r11d
cmp edi, 3
cmovg edi, eax
movzx eax, r15w
imul r8d, eax
mov eax, r10d
imul eax, r14d
test ebp, ebp
je 0x1400f1bc7
imul r8d, ebp
imul eax, dword [rcx + 4]
cmp dword [rcx + 8], 6
jne 0x1400f1bd7
cmp r11d, 3
je 0x1400f1c69
or r10d, r14d
cmp r10d, 0x10000
jge 0x1400f1c69
test eax, eax
je 0x1400f1c69
cmp eax, r8d
jle 0x1400f1bf7
mov esi, 1
jmp 0x1400f1c05
jne 0x1400f1c69
mov eax, esi
inc esi
cmp dword [rbx + 0x40c], eax
jne 0x1400f1c69
movzx r15d, word [rcx - 4]
mov r13d, r9d
mov word [rbx + 0x44f2], r15w
movzx r12d, word [rcx]
mov word [rbx + 0x44f0], r12w
mov ebp, dword [rcx + 4]
mov dword [rbx + 0x41c], ebp
mov eax, dword [rcx + 8]
mov dword [rbx + 0x420], eax
mov eax, dword [rcx + 0x10]
mov dword [rbx + 0x3e0], eax
mov eax, dword [rcx + 0x14]
mov dword [rbx + 0x2462c], eax
mov eax, dword [rcx + 0x18]
mov dword [rbx + 0x418], eax
mov eax, dword [rcx + 0x20]
mov dword [rbx + 0x4464], eax
mov eax, dword [rcx + 0x24]
mov dword [rbx + 0x4468], eax
mov eax, dword [rcx + 0x28]
mov dword [rbx + 0x3b4], eax
inc r9d
add rcx, 0x30
mov eax, 3
cmp r9d, edx
jb 0x1400f1b90
mov dword [rsp + 0x34], edi
xor edi, edi
mov r12d, dword [rsp + 0x34]
cmp dword [rbx + 0x4454], 1
jne 0x1400f1c9c
test esi, esi
je 0x1400f1c9c
mov dword [rbx + 0x4454], esi
cmp dword [rbx + 0x4464], 0
jne 0x1400f1caf
mov dword [rbx + 0x4464], 0x7fffffff
cmp dword [rbx + 0x4468], 0
jne 0x1400f1cc2
mov dword [rbx + 0x4468], 0x7fffffff
test edx, edx
je 0x1400f1cf7
lea rcx, [rdx + 0x1c89]
lea rcx, [rcx + rcx*2]
shl rcx, 4
add rcx, rbx
nop dword [rax + rax]
mov eax, dword [rcx - 0x30]
lea rcx, [rcx - 0x30]
dec edx
test eax, eax
je 0x1400f1cf3
mov dword [rbx + 0x2462c], eax
test edx, edx
jne 0x1400f1ce0
lea r15, [0x1401033d0]
lea rdx, [0x1401035f0]
test r13d, r13d
js 0x1400f224d
cmp qword [rbx + 0x44720], 0
jne 0x1400f224d
mov ecx, dword [rbx + 0x420]
cmp ecx, 0x8002
ja 0x1400f1f56
je 0x1400f1e60
cmp ecx, 0x106
ja 0x1400f1ea2
je 0x1400f1e8f
cmp ecx, 1
jbe 0x1400f1d6f
lea eax, [rcx - 6]
cmp eax, 1
jbe 0x1400f1d5c
cmp ecx, 0x63
jne 0x1400f21ed
lea rax, [0x140105e20]
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
lea rdx, str.OLYMPUS
lea rcx, [rbx + 0x21d]
mov r8d, 7
call fcn.1401c25f0
test eax, eax
jne 0x1400f1dc1
movzx eax, word [rbx + 0x44f0]
movzx ecx, word [rbx + 0x44f2]
movsxd r8, r13d
imul ecx, eax
lea edx, [rcx + rcx*2]
lea rax, [r8 + r8*2]
add rax, rax
mov ecx, dword [rbx + rax*8 + 0x559b8]
add ecx, ecx
cmp ecx, edx
jne 0x1400f1dc1
mov dword [rbx + 0x44ec], 0x18
mov rcx, rdi
lea rdx, str.SONY
nop dword [rax + rax]
movzx eax, byte [rbx + rcx + 0x21d]
inc rcx
cmp al, byte [rdx + rcx - 1]
jne 0x1400f1e20
cmp rcx, 5
jne 0x1400f1dd0
cmp dword [rbx + 0x41c], 0xe
jae 0x1400f1e20
movzx eax, word [rbx + 0x44f0]
movzx edx, word [rbx + 0x44f2]
movsxd rcx, r13d
imul edx, eax
lea rax, [rcx + rcx*2]
add edx, edx
add rax, rax
cmp dword [rbx + rax*8 + 0x559b8], edx
jne 0x1400f1e20
mov dword [rbx + 0x41c], 0xe
movzx eax, word [rbx + 0x44f0]
movzx edx, word [rbx + 0x44f2]
movsxd rcx, r13d
imul edx, eax
lea rax, [rcx + rcx*2]
shl edx, 3
add rax, rax
mov eax, dword [rbx + rax*8 + 0x559b8]
lea ecx, [rax + rax*4]
cmp ecx, edx
jne 0x1400f1e60
mov dword [rbx + 0x44ec], 0x51
mov dword [rbx + 0x41c], 0xc
mov eax, dword [rbx + 0x41c]
cmp eax, 8
je 0x1400f217e
cmp eax, 0xc
je 0x1400f2157
cmp eax, 0xe
je 0x1400f20b6
cmp eax, 0x10
je 0x1400f20fc
jmp 0x1400f218c
lea rax, [0x140101ab0]
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
sub ecx, 0x7fff
je 0x1400f1ebe
cmp ecx, 2
je 0x1400f1f4b
mov dword [rbx + 0x4454], edi
jmp 0x1400f224d
movzx edx, word [rbx + 0x44f0]
movzx r8d, word [rbx + 0x44f2]
movsxd rax, r13d
lea rcx, [rax + rax*2]
imul r8d, edx
add rcx, rcx
mov eax, dword [rbx + rcx*8 + 0x559b8]
cmp eax, r8d
jne 0x1400f1f0e
lea rax, [0x140117900]
mov dword [rbx + 0x41c], 0xc
mov dword [rbx + 0x4440], 0xfff
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
mov ecx, dword [rbx + 0x41c]
lea eax, [rax*8]
imul ecx, r8d
cmp eax, ecx
je 0x1400f1f41
lea rax, [0x140117bd0]
add dx, 8
mov qword [rbx + 0x44720], rax
mov word [rbx + 0x44f0], dx
jmp 0x1400f224d
mov dword [rbx + 0x44ec], 0x4f
inc dword [rbx + 0x44ec]
jmp 0x1400f1e60
cmp ecx, 0x884c
ja 0x1400f21dd
je 0x1400f224d
sub ecx, 0x8005
je 0x1400f1e60
sub ecx, 0x5e
je 0x1400f224d
cmp ecx, 0x736
jne 0x1400f21ed
movzx r10d, word [rbx + 0x44f2]
movzx r8d, word [rbx + 0x44f0]
movsxd rax, r13d
lea rcx, [rax + rax*2]
mov eax, 0x66666667
add rcx, rcx
mov r9d, dword [rbx + rcx*8 + 0x559b8]
lea ecx, [r10 + 9]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, r8d
shl edx, 4
cmp edx, r9d
jne 0x1400f1fe9
lea rax, [0x1401080a0]
mov dword [rbx + 0x44ec], 1
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
imul r8d, r10d
lea eax, [r9 + r9]
lea ecx, [r8 + r8*2]
cmp ecx, eax
jne 0x1400f2023
lea rax, [0x1401080a0]
mov qword [rbx + 0x44720], rax
cmp byte [rbx + 0x25d], 0x4e
jne 0x1400f224d
mov dword [rbx + 0x44ec], 0x50
jmp 0x1400f224d
cmp ecx, r9d
jne 0x1400f2075
movsd xmm2, qword [0x140231660]
movsd xmm1, qword [0x140269a90]
lea rax, [0x1401075c0]
mov r9d, 1
mov rcx, rbx
mov dword [rsp + 0x20], 0xfff
mov qword [rbx + 0x44720], rax
call fcn.1400fb7e0
lea rcx, [rbx + 0x428]
xor edx, edx
mov r8d, 0x4018
call fcn.1401c0040
jmp 0x1400f2247
lea eax, [r8 + r8]
cmp eax, r9d
jne 0x1400f20a3
lea rax, [0x140118870]
mov dword [rbx + 0x44ec], 4
mov qword [rbx + 0x44720], rax
mov eax, 0x4d4d
mov word [rbx], ax
jmp 0x1400f224d
lea rax, [0x140107130]
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
movzx ecx, word [rbx + 0x44f2]
lea rax, [0x1401080a0]
movsxd rdx, r13d
mov qword [rbx + 0x44720], rax
movzx eax, word [rbx + 0x44f0]
imul ecx, eax
lea rax, [rdx + rdx*2]
imul r8d, ecx, 7
add rax, rax
mov ecx, dword [rbx + rax*8 + 0x559b8]
shl ecx, 2
cmp ecx, r8d
je 0x1400f218c
mov dword [rbx + 0x44ec], edi
lea rax, [0x140118870]
lea rcx, [rbx + 0x21d]
lea rdx, str.OLYMPUS
mov r8d, 7
mov qword [rbx + 0x44720], rax
call fcn.1401c25f0
test eax, eax
jne 0x1400f218c
movzx eax, word [rbx + 0x44f0]
movzx edx, word [rbx + 0x44f2]
movsxd rcx, r13d
imul edx, eax
lea rax, [rcx + rcx*2]
add rax, rax
imul eax, dword [rbx + rax*8 + 0x559b8], 7
cmp eax, edx
jle 0x1400f218c
lea rax, [0x140107b80]
jmp 0x1400f2185
movsxd rax, r13d
lea rcx, [rax + rax*2]
add rcx, rcx
cmp dword [rbx + rcx*8 + 0x559a8], 2
jne 0x1400f2175
mov dword [rbx + 0x44ec], 6
lea rax, [0x1401080a0]
jmp 0x1400f2185
lea rax, [0x1400f6b90]
mov qword [rbx + 0x44720], rax
cmp dword [rbx + 0x3d0], 9
jne 0x1400f224d
movzx eax, word [rbx + 0x44f0]
movzx edx, word [rbx + 0x44f2]
movsxd rcx, r13d
imul edx, eax
lea rax, [rcx + rcx*2]
imul edx, dword [rbx + 0x41c]
add rax, rax
mov ecx, dword [rbx + rax*8 + 0x559b8]
shl ecx, 3
cmp ecx, edx
jae 0x1400f224d
lea rax, [fcn.14016a580]
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
cmp ecx, 0xfde8
je 0x1400f2205
cmp ecx, 0xffff
je 0x1400f21f5
mov dword [rbx + 0x4454], edi
jmp 0x1400f224d
lea rax, [0x140110ed0]
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
movsxd rax, r13d
lea rcx, [rax + rax*2]
add rcx, rcx
mov eax, dword [rbx + rcx*8 + 0x559a8]
cmp eax, 2
je 0x1400f2240
cmp eax, 6
je 0x1400f2237
cmp eax, 0x8023
jne 0x1400f224d
lea rax, [0x140101fd0]
mov qword [rbx + 0x44720], rax
jmp 0x1400f224d
mov qword [rbx + 0x44720], rdx
jmp 0x1400f2247
mov qword [rbx + 0x44720], r15
mov dword [rbx + 0x3d0], edi
cmp dword [rbx + 0x4458], 0
jne 0x1400f22ec
cmp dword [rbx + 0x418], 3
jne 0x1400f2290
movsxd rax, r13d
lea rcx, [rax + rax*2]
add rcx, rcx
cmp dword [rbx + rcx*8 + 0x559b8], 0
je 0x1400f2290
cmp dword [rbx + 0x41c], 0xe
je 0x1400f2290
mov eax, dword [rbx + 0x420]
and eax, 0xfffffff0
cmp eax, 0x8000
jne 0x1400f22e6
cmp dword [rbx + 0x41c], 8
jne 0x1400f22ec
lea rdx, str.Phase
lea rcx, [rbx + 0x21d]
mov r8d, 5
call fcn.1401c25f0
test eax, eax
je 0x1400f22ec
lea rdx, [0x140222c04]
lea rcx, [rbx + 0x21d]
call fcn.140106e50
test rax, rax
jne 0x1400f22ec
lea rcx, [rbx + 0x29d]
lea rdx, str.DEBUG_RAW
call fcn.1401c2aac
test rax, rax
jne 0x1400f22ec
mov dword [rbx + 0x4454], edi
mov ebp, dword [rbx + 0x414]
mov r11d, edi
test ebp, ebp
je 0x1400f247e
mov r15d, dword [rsp + 0x30]
mov rsi, rdi
movsxd r14, r13d
lea r10, [rbx + 0x55998]
nop
cmp rsi, r14
je 0x1400f23a6
cmp dword [r10 + 0x1c], r12d
jne 0x1400f23a6
movzx ecx, word [rbx + 0x4506]
mov r8d, dword [rbx + 0x3fc]
movzx eax, word [rbx + 0x4504]
imul eax, ecx
imul r8d, r8d
mov r9d, dword [r10 + 8]
xor edx, edx
inc r8d
div r8d
imul r9d, r9d
mov ecx, eax
mov eax, dword [r10]
inc r9d
imul eax, dword [r10 + 4]
cdq
idiv r9d
cmp eax, ecx
jbe 0x1400f23a6
cmp dword [r10 + 0xc], 0x884c
je 0x1400f23a6
movzx eax, word [r10]
mov r15d, r11d
mov word [rbx + 0x4504], ax
movzx eax, word [r10 + 4]
mov word [rbx + 0x4506], ax
mov eax, dword [r10 + 0x14]
mov dword [rbx + 0x3e4], eax
mov eax, dword [r10 + 0x20]
mov dword [rbx + 0x3f0], eax
mov eax, dword [r10 + 8]
mov dword [rbx + 0x3fc], eax
inc r11d
inc rsi
add r10, 0x30
cmp r11d, ebp
jb 0x1400f2310
mov dword [rsp + 0x30], r15d
test r15d, r15d
lea r15, [0x1401033d0]
js 0x1400f247e
movsxd rax, dword [rsp + 0x30]
lea rcx, [rax + rax*2]
add rcx, rcx
mov eax, dword [rbx + rcx*8 + 0x559b4]
shl eax, 5
or dword [rbx + 0x3fc], eax
mov edx, dword [rbx + rcx*8 + 0x559a4]
test edx, edx
je 0x1400f2470
dec edx
je 0x1400f2421
cmp edx, 0xfde7
jne 0x1400f247e
cmp dword [rbx + rcx*8 + 0x559a8], 6
lea rax, [0x1401035f0]
cmove r15, rax
mov qword [rbx + 0x44730], r15
jmp 0x1400f247e
cmp dword [rbx + rcx*8 + 0x559a0], 8
jg 0x1400f2434
lea rax, [0x1401134e0]
jmp 0x1400f2477
lea rcx, str.Imacon
nop dword [rax + rax]
movzx eax, byte [rbx + rdi + 0x21d]
inc rdi
cmp al, byte [rcx + rdi - 1]
jne 0x1400f2460
cmp rdi, 7
jne 0x1400f2440
lea rax, [fcn.14016a580]
jmp 0x1400f2477
lea rax, [0x140103540]
mov qword [rbx + 0x44730], rax
jmp 0x1400f247e
lea rax, [0x1401038d0]
mov qword [rbx + 0x44728], rax
mov r14, qword [rsp + 0x308]
mov rcx, qword [rsp + 0x2c0]
xor rcx, rsp
call fcn.1401bd600
lea r11, [rsp + 0x2d0]
mov rbx, qword [r11 + 0x40]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r13
pop r12
pop rdi
pop rsi
ret