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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
mov rax, qword [r8]
lea r13, [rcx + 0xb08]
mov rbx, qword [rcx + 0x148]
mov rdi, rax
mov qword [rbp - 0x18], rax
mov r15, rax
mov qword [rbp - 0x10], rbx
mov r8, rax
mov r14, rdx
mov rsi, rcx
mov edx, 0xa
mov rcx, rbx
mov r12, rbx
call fcn.140142b60
mov rcx, rax
mov rdx, rbx
test rax, rax
je 0x14013075e
sub rdi, rax
lea r8, [rcx + 1]
mov rcx, r13
lea rax, [rdi - 1]
mov rdi, qword [rbp + 0x50]
add rax, rbx
mov qword [rdi], rax
mov qword [rsi + 0x148], r8
sub r8, rbx
call fcn.1401150a8
xor r11d, r11d
test eax, eax
jne 0x140130659
mov ebx, dword [rsi + 0x144]
test ebx, ebx
jne 0x140130033
mov rcx, r13
call fcn.140115104
mov r9, rax
call fcn.140115100
mov r8, rax
mov rcx, rsi
call fcn.14012f7c4
lea edx, [rbx + 2]
cmp eax, edx
je 0x14013062c
xor r11d, r11d
jmp 0x140130038
mov edx, 2
mov rcx, r13
call fcn.140115100
mov r15, rax
cmp byte [rax], 0xa
je 0x1401302d4
cmp byte [rax], 0xd
je 0x1401302d4
lea ecx, [rbx + 1]
mov r12d, edx
mov dword [rsi + 0x144], ecx
test ebx, ebx
jne 0x14013022f
mov rax, qword [r14 + 0x200]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x1401301c7
lea rax, [rbp + 0x40]
mov dword [rbp - 0x2c], r11d
mov qword [rsp + 0x30], rax
lea rdi, [rsi + 0x158]
lea rax, [rbp - 0x30]
mov qword [rsp + 0x28], rdi
lea r9, [rbp - 0x2c]
mov qword [rsp + 0x20], rax
lea r8, [rbp - 0x28]
mov byte [rbp + 0x40], r11b
lea rdx, str._HTTP__1d._1d_c_3d_c
mov rcx, r15
call fcn.14011fbdc
mov r12d, 1
mov ebx, eax
cmp eax, r12d
jne 0x1401300fb
cmp dword [rbp - 0x28], 2
jl 0x1401300fb
mov r9, rdi
lea r8, [rbp - 0x24]
lea rdx, str._HTTP__1_23___d
mov rcx, r15
call fcn.14011fbdc
cmp eax, 2
jne 0x1401300fb
mov byte [r14 + 0x437], 0
lea ebx, [rax + 2]
mov byte [rbp - 0x30], 0x20
jmp 0x140130120
mov al, byte [rbp + 0x40]
sub al, 0x30
cmp al, 9
jbe 0x1401306c2
cmp ebx, 4
jl 0x14013015b
cmp dword [rdi], 0x64
jl 0x1401306c2
cmp byte [rbp - 0x30], 0x20
jne 0x1401306b9
mov eax, dword [rbp - 0x28]
lea ecx, [rax + rax*4]
mov eax, dword [rbp - 0x2c]
lea r9d, [rax + rcx*2]
mov ecx, r9d
mov dword [rbp - 0x2c], r9d
sub ecx, 0xa
je 0x140130142
cmp ecx, r12d
jne 0x14013068b
mov byte [r14 + 0x437], r9b
cmp r9b, 0x14
jae 0x1401301ba
mov rax, qword [r14 + 0x3f8]
or dword [rax], 0xffffffff
jmp 0x1401301ba
test ebx, ebx
jne 0x1401306b9
mov r8, rdi
lea rdx, str._HTTP__3d
mov rcx, r15
call fcn.14011fbdc
mov byte [r14 + 0x437], 0xa
test eax, eax
jne 0x140130218
mov rcx, r13
call fcn.140115104
mov r8, rax
call fcn.140115100
mov rdx, rax
mov rcx, rsi
call fcn.14012f734
cmp eax, r12d
jne 0x1401306d6
mov dword [rdi], 0xc8
mov ebx, r12d
mov byte [r14 + 0x437], 0xa
xor r11d, r11d
test ebx, ebx
je 0x1401306d9
jmp 0x140130218
bt ecx, 0x12
jae 0x1401306d9
lea rax, [rsi + 0x158]
mov rcx, r15
mov qword [rsp + 0x28], rax
lea r9, [rbp - 0x20]
lea rax, [rbp - 0x2f]
lea r8, [rbp - 0x1c]
mov qword [rsp + 0x20], rax
lea rdx, str._RTSP__1d._1d_c_3d
call fcn.14011fbdc
cmp eax, 4
jne 0x1401306d6
cmp byte [rbp - 0x2f], 0x20
jne 0x1401306d6
mov byte [r14 + 0x437], 0xb
mov rdx, r14
mov rcx, rsi
call fcn.14012fd58
test eax, eax
jne 0x140130659
lea r12d, [rax + 6]
mov rcx, rsi
call fcn.14012fec8
test eax, eax
jne 0x140130659
mov r8, r15
mov rdx, r14
mov rcx, rsi
call fcn.14012f7d0
xor ecx, ecx
test eax, eax
jne 0x140130659
mov ebx, dword [rsi + 0x158]
mov edi, r12d
or edi, 1
cmp byte [rsi + 0x93b], cl
mov rcx, r13
cmove edi, r12d
call fcn.140115104
mov r9, rax
mov r8, r15
mov edx, 1
mov rcx, rsi
call fcn.140120784
mov rcx, r13
call fcn.140115104
mov edx, edi
mov r9, rax
or edx, 0x10
lea eax, [rbx - 0x64]
cmp eax, 0x64
mov r8, r15
mov rcx, rsi
cmovae edx, edi
call fcn.14011ad4c
test eax, eax
jne 0x140130659
mov rcx, r13
call fcn.140115104
add qword [rsi + 0x11a0], rax
call fcn.140115104
add qword [rsi + 0x108], rax
jmp 0x140130605
mov ecx, dword [rsi + 0x158]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x140130355
sub ecx, 0x64
je 0x140130317
cmp ecx, 1
je 0x1401302ff
lea rbx, [rsi + 0x1ba]
mov dword [rsi + 0x144], r11d
mov byte [rbx], 1
jmp 0x140130349
cmp dword [rsi + 0x174], edx
je 0x1401306e5
lea rbx, [rsi + 0x1ba]
mov byte [rbx], r11b
jmp 0x140130349
lea rbx, [rsi + 0x1ba]
mov dword [rsi + 0x144], r11d
mov byte [rbx], 1
cmp dword [rsi + 0x170], r11d
jle 0x140130349
or dword [rsi + 0x15c], edx
mov rcx, rsi
mov dword [rsi + 0x170], r11d
call fcn.14011a88c
xor r11d, r11d
mov r10, rbx
lea r15, [rsi + 0xe8]
jmp 0x1401303af
lea rbx, [rsi + 0x1ba]
lea r15, [rsi + 0xe8]
mov byte [rbx], r11b
cmp qword [r15], 0xffffffffffffffff
mov r10, rbx
jne 0x1401303b4
cmp byte [rsi + 0x1bf], r11b
jne 0x1401303b4
cmp byte [r14 + 0x1e8], r11b
jne 0x1401303b4
cmp byte [r14 + 0x437], 0xb
jne 0x1401303b4
mov rax, qword [r14 + 0x200]
test dword [rax + 0x84], 0x40000
jne 0x1401303b4
cmp byte [rsi + 0x1058], 5
je 0x1401303b4
mov rcx, r14
call fcn.14011b28c
cmp byte [r10], r11b
jne 0x1401303c7
mov rcx, rsi
call fcn.14012fe50
xor r11d, r11d
test eax, eax
jne 0x140130659
cmp byte [r14 + 0x1e8], r11b
je 0x140130401
mov eax, dword [rsi + 0x158]
cmp eax, 0x191
jne 0x1401303e9
cmp dword [r14 + 0x2c8], 1
je 0x1401303fa
jmp 0x140130401
cmp eax, 0x197
jne 0x140130401
cmp dword [r14 + 0x2cc], 1
jne 0x140130401
mov byte [rsi + 0x1175], 1
cmp dword [r14 + 0x2c8], 3
jne 0x140130422
cmp dword [rsi + 0x158], 0x191
je 0x140130422
mov dword [r14 + 0x2c8], 4
cmp dword [r14 + 0x2cc], 3
jne 0x140130443
cmp dword [rsi + 0x158], 0x197
je 0x140130443
mov dword [r14 + 0x2cc], 4
mov al, byte [rsi + 0x93b]
mov rcx, r13
neg al
mov eax, dword [rsi + 0x158]
sbb edx, edx
sub eax, 0x64
neg edx
add edx, 2
cmp eax, 0x64
sbb eax, eax
and eax, 0x10
or edx, eax
call fcn.140115104
mov rdi, rax
call fcn.140115100
mov r8, rax
mov r9, rdi
mov rcx, rsi
call fcn.14011ad4c
xor r10d, r10d
test eax, eax
jne 0x140130659
mov r9, qword [rsi + 0x108]
movsxd rcx, edi
add qword [rsi + 0x11a0], rcx
add r9, rcx
mov qword [rsi + 0x108], r9
mov rcx, rsi
mov r8d, dword [rsi + 0x158]
call fcn.14012da30
test al, al
jne 0x140130748
lea eax, [r8 - 0x64]
cmp eax, 0x63
cmova r9, r10
mov qword [rsi + 0x110], r9
call fcn.14012d3f4
xor edx, edx
test eax, eax
jne 0x140130659
cmp dword [rsi + 0x158], 0x12c
jl 0x1401305fd
cmp byte [r14 + 0x1f2], dl
jne 0x1401305e4
cmp byte [r14 + 0x1e8], dl
jne 0x1401305e4
cmp byte [rsi + 0x1183], dl
jne 0x1401305ec
movzx ecx, byte [rsi + 0x1058]
sub ecx, 1
je 0x140130536
sub ecx, 1
je 0x140130536
sub ecx, 1
je 0x140130536
cmp ecx, 1
jne 0x1401305e4
mov rcx, rsi
call fcn.14011a88c
xor edx, edx
cmp byte [rsi + 0x1bc], dl
jne 0x1401305e4
cmp dword [rsi + 0x158], 0x1a1
jne 0x14013058a
cmp byte [rsi + 0x1177], dl
je 0x14013058a
mov rcx, qword [rsi + 0x1060]
mov byte [rsi + 0x1178], 1
call qword [case.0x14011d62c.0]
mov rdx, r15
mov rcx, rsi
mov qword [rsi + 0x198], rax
call fcn.140129e6c
xor edx, edx
jmp 0x1401305e4
cmp byte [rsi + 0x937], dl
je 0x1401305a9
cmp dword [rsi + 0x170], edx
jle 0x1401305e4
or dword [rsi + 0x15c], 2
mov dword [rsi + 0x170], edx
jmp 0x1401305e4
mov edx, 2
mov rcx, r14
call fcn.14011b28c
mov rcx, rsi
mov rdx, r15
call fcn.140129e6c
xor edx, edx
test eax, eax
jne 0x140130659
mov byte [rsi + 0x1bc], 1
cmp byte [rsi + 0x1177], dl
je 0x1401305e4
mov dword [rsi + 0x170], 3
cmp byte [rsi + 0x1183], dl
je 0x1401305fd
cmp qword [r14 + 0x228], 0xffffffffffffffff
je 0x1401305fd
or dword [rsi + 0x15c], 2
cmp byte [rbx], dl
je 0x140130702
mov rcx, r13
call fcn.14011503c
mov rbx, qword [rsi + 0x148]
xor eax, eax
cmp byte [rbx], al
je 0x140130657
mov rdi, qword [rbp + 0x50]
mov rdi, qword [rdi]
mov r15, rdi
mov r8, rdi
jmp 0x14012ffad
mov rcx, r14
call fcn.14011b28c
xor eax, eax
cmp byte [rsi + 0x956], al
je 0x1401307c7
mov byte [rsi + 0x1ba], al
cmp qword [rdi], rax
je 0x140130671
mov dword [rsi + 0x140], 1
xor eax, eax
mov rbx, qword [rsp + 0xb8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rbp - 0x18]
mov dword [rsi + 0x140], edx
mov qword [rdi], rax
mov rax, qword [rbp - 0x10]
mov qword [rsi + 0x148], rax
jmp 0x140130657
mov eax, 0x66666667
imul r9d
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov r8d, edx
lea ecx, [rdx + rdx*4]
add ecx, ecx
lea rdx, str.Unsupported_HTTP_version___u._d__in_response
sub r9d, ecx
mov rcx, rsi
call fcn.140120854
jmp 0x1401306d1
lea rdx, str.Unsupported_HTTP_version_in_response
jmp 0x1401306c9
lea rdx, str.Unsupported_response_code_in_HTTP_response
mov rcx, rsi
call fcn.140120854
mov eax, r12d
jmp 0x140130659
xor r11d, r11d
mov byte [rsi + 0x1ba], r11b
jmp 0x140130657
mov dword [rsi + 0x174], 3
mov byte [rsi + 0x1ba], 1
mov dword [rsi + 0x144], r11d
jmp 0x1401307d6
mov rcx, qword [rbp + 0x58]
cmp byte [rsi + 0x1c4], dl
je 0x140130715
mov byte [rcx], 1
mov al, 1
jmp 0x140130717
mov al, byte [rcx]
cmp qword [rsi + 0xf0], rdx
jne 0x140130725
mov byte [rcx], 1
jmp 0x140130729
test al, al
je 0x140130730
and dword [rsi + 0x15c], 0xfffffffe
mov r9, rdi
mov r8, r12
mov edx, 1
mov rcx, rsi
call fcn.140120784
jmp 0x140130657
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.140120854
mov eax, 0x16
jmp 0x140130659
mov r8, r15
mov rcx, r13
call fcn.1401150a8
xor ebx, ebx
test eax, eax
jne 0x140130659
cmp dword [rsi + 0x144], ebx
jne 0x140130657
mov rcx, r13
call fcn.140115104
mov r9, rax
call fcn.140115100
mov r8, rax
mov rcx, rsi
call fcn.14012f7c4
lea ecx, [rbx + 2]
cmp eax, ecx
jne 0x140130657
mov dword [rsi + 0x140], ecx
mov edx, ecx
mov rcx, r14
mov byte [rsi + 0x1ba], bl
call fcn.14011b28c
cmp byte [rsi + 0x956], bl
jne 0x140130657
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rsi
call fcn.140120854
mov eax, 1
jmp 0x140130659