Function at 0x1400954a0
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
sub rsp, 0x30
mov rax, qword [r8]
mov rbx, rcx
mov rcx, qword [rcx + 0x138]
mov r15, r8
mov r14, rdx
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x20], rcx
mov rdi, rcx
lea r13, [rbx + 0xc98]
mov r12, rcx
mov rsi, rax
mov rbp, rax
mov r8, rax
mov edx, 0xa
call fcn.1401f9080
mov rcx, rax
mov rdx, r12
test rax, rax
je 0x140095ef3
lea r8, [rcx + 1]
sub rdi, rax
lea rax, [rsi - 1]
mov rcx, r13
add rax, rdi
xor ebp, ebp
mov qword [r15], rax
mov qword [rbx + 0x138], r8
sub r8, r12
call fcn.1400801d0
test eax, eax
jne 0x140095d74
cmp dword [rbx + 0x134], eax
jne 0x14009556c
mov rcx, r13
call fcn.140080230
mov rcx, r13
mov rdi, rax
call fcn.140080240
mov r8, rax
mov r9, rdi
mov rdx, r14
mov rcx, rbx
call fcn.140096660
cmp eax, 2
je 0x140095d41
mov rcx, r13
call fcn.140080240
mov r15, rax
movzx ecx, byte [rax]
cmp cl, 0xa
je 0x14009594b
cmp cl, 0xd
je 0x14009594b
mov edx, dword [rbx + 0x134]
mov edi, 2
lea ecx, [rdx + 1]
mov dword [rbx + 0x134], ecx
test edx, edx
jne 0x1400958a7
mov rax, qword [r14 + 0x2e8]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x1400957b0
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x1400955e3
nop dword [rax]
cmp al, 0x20
je 0x1400955d8
cmp al, 9
jne 0x1400955e3
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x1400955d0
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rdi
call fcn.140208ea0
test eax, eax
jne 0x140095685
movsx edx, byte [rdi + 5]
mov ecx, edx
sub ecx, 0x31
je 0x1400956c6
sub ecx, 1
je 0x14009561d
cmp ecx, 1
jne 0x140095da9
movzx eax, byte [rdi + 6]
cmp al, 0x20
je 0x140095629
cmp al, 9
jne 0x140095685
movsx ecx, byte [rdi + 7]
lea eax, [rdx - 0x30]
lea r9d, [rax + rax*4]
add r9d, r9d
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140095685
movsx edx, byte [rdi + 8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140095685
movsx r8d, byte [rdi + 9]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140095685
lea ecx, [rcx + rcx*4]
lea ecx, [rdx + rcx*2]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [r8 + rcx*2]
mov dword [rbx + 0x148], ecx
movzx eax, byte [rdi + 0xa]
cmp al, 0x20
je 0x140095751
sub al, 9
cmp al, 4
jbe 0x140095751
mov rcx, r13
call fcn.140080230
mov rcx, r13
mov rdi, rax
call fcn.140080240
mov rdx, rax
mov r8, rdi
mov rcx, rbx
call fcn.140096570
cmp eax, 1
jne 0x140095e2e
mov dword [rbx + 0x148], Ordinal_208
mov byte [r14 + 0x4d9], 0xa
jmp 0x140095891
cmp byte [rdi + 6], 0x2e
jne 0x140095e0b
movsx ecx, byte [rdi + 7]
lea eax, [rcx - 0x30]
cmp al, 1
ja 0x140095e0b
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x1400956ef
cmp al, 9
jne 0x140095e0b
lea r9d, [rcx - 0x26]
movsx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140095e0b
movsx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140095e0b
movsx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140095e0b
lea ecx, [rcx + rcx*4]
lea ecx, [rdx + rcx*2]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [r8 + rcx*2]
mov dword [rbx + 0x148], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x140095751
cmp al, 9
je 0x140095751
sub al, 0xa
cmp al, 3
ja 0x140095e0b
cmp ecx, 0x64
jl 0x140095df2
mov ecx, r9d
sub ecx, 0xa
je 0x14009576b
cmp ecx, 1
jne 0x140095dbf
mov byte [r14 + 0x4d9], r9b
cmp dword [rbx + 0x164], 3
jne 0x140095790
cmp r9b, 0x14
je 0x140095790
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rbx
call fcn.14008b2f0
cmp byte [r14 + 0x4d9], 0x14
jae 0x140095891
mov rax, qword [r14 + 0x4a0]
mov dword [rax], 0xffffffff
jmp 0x140095891
bt ecx, 0x12
jae 0x140095e2e
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x1400957d8
cmp al, 0x20
je 0x1400957cd
cmp al, 9
jne 0x1400957d8
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x1400957c5
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rdi
call fcn.140208ea0
test eax, eax
jne 0x140095e2e
movzx eax, byte [rdi + 5]
sub al, 0x30
cmp al, 9
ja 0x140095e24
cmp byte [rdi + 6], 0x2e
jne 0x140095e24
movzx eax, byte [rdi + 7]
sub al, 0x30
cmp al, 9
ja 0x140095e24
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x14009582b
cmp al, 9
jne 0x140095e24
movsx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140095e24
movsx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140095e24
movsx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140095e24
lea ecx, [rcx + rcx*4]
lea ecx, [rdx + rcx*2]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [r8 + rcx*2]
mov dword [rbx + 0x148], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x140095889
cmp al, 9
je 0x140095889
sub al, 0xa
cmp al, 3
ja 0x140095e24
mov byte [r14 + 0x4d9], 0xb
mov rdx, r14
mov rcx, rbx
call fcn.1400961a0
test eax, eax
jne 0x140095d74
lea edi, [rax + 6]
mov rcx, rbx
call fcn.140096f00
test eax, eax
jne 0x140095d74
mov r8, r15
mov rdx, r14
mov rcx, rbx
call fcn.140094400
test eax, eax
jne 0x140095d74
mov esi, edi
mov rcx, r13
or esi, 1
cmp byte [rbx + 0xaab], al
cmove esi, edi
mov edi, dword [rbx + 0x148]
call fcn.140080230
mov r9, rax
mov r8, r15
mov edx, 1
mov rcx, rbx
call fcn.14008b120
mov rcx, r13
call fcn.140080230
mov edx, esi
mov r9, rax
or edx, 0x10
lea eax, [rdi - 0x64]
cmp eax, 0x64
mov r8, r15
mov rcx, rbx
cmovae edx, esi
call fcn.14008b490
test eax, eax
jne 0x140095d74
mov rcx, r13
call fcn.140080230
mov rdx, rax
xor r8d, r8d
mov rcx, rbx
call fcn.140093030
test eax, eax
jne 0x140095d74
jmp 0x140095d11
mov ecx, dword [rbx + 0x148]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x1400959e2
sub ecx, 0x64
je 0x1400959a6
cmp ecx, 1
je 0x140095983
lea rsi, [rbx + 0x1c2]
mov dword [rbx + 0x134], ebp
mov byte [rsi], 1
lea r15, [rbx + 0xf0]
jmp 0x140095a66
cmp dword [rbx + 0x164], 2
je 0x140095e3a
lea rsi, [rbx + 0x1c2]
mov byte [rsi], 0
lea r15, [rbx + 0xf0]
jmp 0x140095a66
cmp dword [rbx + 0x160], 0
lea rsi, [rbx + 0x1c2]
mov byte [rsi], 1
mov dword [rbx + 0x134], ebp
jle 0x1400959d6
or dword [rbx + 0x14c], 2
xor edx, edx
mov rcx, rbx
mov dword [rbx + 0x160], ebp
call fcn.14007a060
lea r15, [rbx + 0xf0]
jmp 0x140095a66
cmp dword [rbx + 0x164], 2
jne 0x1400959f7
mov rcx, qword [rbx + 0xd8]
call fcn.14007a170
lea rdi, [rbx + 0x1c2]
lea r15, [rbx + 0xf0]
mov byte [rdi], 0
cmp qword [r15], 0xffffffffffffffff
mov rsi, rdi
jne 0x140095a66
cmp byte [rbx + 0x1c7], 0
jne 0x140095a66
cmp byte [r14 + 0x2ce], 0
jne 0x140095a66
cmp byte [r14 + 0x4d9], 0xb
jne 0x140095a66
mov rax, qword [r14 + 0x2e8]
test dword [rax + 0x84], 0x40000
jne 0x140095a66
cmp byte [rbx + 0x138a], 5
je 0x140095a66
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rbx
call fcn.14008b2f0
mov edx, 2
mov rcx, r14
call fcn.14008c270
cmp byte [rsi], 0
jne 0x140095a7b
mov rcx, rbx
call fcn.140096110
test eax, eax
jne 0x140095d74
cmp byte [r14 + 0x2ce], 0
je 0x140095ac5
mov eax, dword [rbx + 0x148]
cmp eax, 0x191
jne 0x140095a9e
cmp dword [r14 + 0x348], 2
je 0x140095aaf
jmp 0x140095ac5
cmp eax, 0x197
jne 0x140095ac5
cmp dword [r14 + 0x34c], 2
jne 0x140095ac5
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbx
call fcn.14008b2f0
mov byte [rbx + 0x1391], 1
cmp byte [rbx + 0xaab], 0
mov edi, ebp
mov eax, dword [rbx + 0x148]
mov rcx, r13
setne dil
sub eax, 0x64
add edi, 2
cmp eax, 0x64
sbb eax, eax
and eax, 0x10
or edi, eax
call fcn.140080230
mov rcx, r13
mov rbp, rax
call fcn.140080240
mov r8, rax
mov r9, rbp
mov edx, edi
mov rcx, rbx
call fcn.14008b490
test eax, eax
jne 0x140095d74
xor r8d, r8d
mov rdx, rbp
mov rcx, rbx
call fcn.140093030
test eax, eax
jne 0x140095d74
mov r8d, dword [rbx + 0x148]
mov rcx, rbx
call fcn.140096af0
test al, al
jne 0x140095edd
lea eax, [r8 - 0x64]
cmp eax, 0x63
ja 0x140095b51
mov eax, dword [rbx + 0x128]
jmp 0x140095b53
xor eax, eax
mov dword [rbx + 0x12c], eax
call fcn.140093310
test eax, eax
jne 0x140095d74
cmp dword [rbx + 0x148], 0x12c
jl 0x140095d08
cmp byte [r14 + 0x2d8], al
jne 0x140095cdf
cmp byte [r14 + 0x2ce], al
jne 0x140095cdf
cmp byte [rbx + 0x139f], al
jne 0x140095ce8
movzx ecx, byte [rbx + 0x138a]
sub ecx, 1
je 0x140095bbb
sub ecx, 1
je 0x140095bbb
sub ecx, 1
je 0x140095bbb
cmp ecx, 1
jne 0x140095cdf
xor edx, edx
mov rcx, rbx
call fcn.14007a060
cmp byte [rbx + 0x1c4], 0
jne 0x140095cdf
cmp dword [rbx + 0x148], 0x1a1
jne 0x140095c66
cmp byte [rbx + 0x1393], 0
je 0x140095c66
cmp qword [rbx + 0x108], 0
jne 0x140095c0f
cmp dword [rbx + 0x160], 1
jne 0x140095c0f
lea rdx, str.Got_HTTP_failure_417_while_waiting_for_a_100
mov rcx, rbx
call fcn.14008b2f0
jmp 0x140095c3e
lea rdx, str.Got_HTTP_failure_417_while_sending_data
mov rcx, rbx
call fcn.14008b2f0
mov edx, 2
mov rcx, r14
call fcn.14008c270
mov rdx, r14
mov rcx, rbx
call fcn.140096960
test eax, eax
jne 0x140095d74
mov rcx, qword [rbx + 0x1238]
mov byte [rbx + 0x1394], 1
call qword [case.0x140087590.1]
mov rdx, r15
mov rcx, rbx
mov qword [rbx + 0x188], rax
call fcn.140097fd0
jmp 0x140095cdf
cmp byte [rbx + 0xaa7], 0
mov rcx, rbx
je 0x140095c9a
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.14008b2f0
cmp dword [rbx + 0x160], 0
jle 0x140095cdf
or dword [rbx + 0x14c], 2
mov dword [rbx + 0x160], 0
jmp 0x140095cdf
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.14008b2f0
mov edx, 2
mov rcx, r14
call fcn.14008c270
mov rdx, r15
mov rcx, rbx
call fcn.140097fd0
test eax, eax
jne 0x140095d74
mov byte [rbx + 0x1c4], 1
cmp byte [rbx + 0x1393], al
je 0x140095cdf
mov dword [rbx + 0x160], 3
cmp byte [rbx + 0x139f], 0
je 0x140095d08
cmp qword [r14 + 0x310], 0xffffffffffffffff
je 0x140095d08
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rbx
call fcn.14008b2f0
or dword [rbx + 0x14c], 2
cmp byte [rsi], 0
je 0x140095e6a
mov rcx, r13
call fcn.140080250
mov rdi, qword [rbx + 0x138]
cmp byte [rdi], 0
je 0x140095d72
mov r15, qword [rsp + 0x80]
mov r12, rdi
mov rcx, rdi
mov rsi, qword [r15]
mov rbp, rsi
mov r8, rsi
jmp 0x1400954f1
mov edx, 2
mov rcx, r14
call fcn.14008c270
cmp byte [rbx + 0xac8], 0
je 0x140095f63
mov byte [rbx + 0x1c2], 0
cmp qword [r15], 0
je 0x140095d89
mov dword [rbx + 0x130], 1
xor eax, eax
mov rbx, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rsp + 0x70]
mov dword [rbx + 0x130], 2
mov qword [r15], rax
mov rax, qword [rsp + 0x20]
mov qword [rbx + 0x138], rax
jmp 0x140095d72
lea rdx, str.Unsupported_HTTP_version_in_response
mov rcx, rbx
call fcn.14008b200
mov eax, 1
jmp 0x140095d74
mov eax, 0x66666667
mov rcx, rbx
imul r9d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov r8d, edx
lea eax, [rdx + rdx*4]
add eax, eax
lea rdx, str.Unsupported_HTTP_version___u._d__in_response
sub r9d, eax
call fcn.14008b200
mov eax, 1
jmp 0x140095d74
lea rdx, str.Unsupported_response_code_in_HTTP_response
mov rcx, rbx
call fcn.14008b200
mov eax, 1
jmp 0x140095d74
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
mov rcx, rbx
call fcn.14008b200
mov eax, 1
jmp 0x140095d74
mov eax, 8
jmp 0x140095d74
mov byte [rbx + 0x1c2], 0
jmp 0x140095d72
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rbx
call fcn.14008b2f0
mov eax, 1
mov dword [rbx + 0x164], 3
mov byte [rbx + 0x1c2], 1
mov dword [rbx + 0x134], ebp
jmp 0x140095d74
cmp byte [rbx + 0x1cc], 0
jne 0x140095e95
mov rax, qword [r14 + 0x2e8]
test dword [rax + 0x84], 0x40000
je 0x140095ea2
cmp dword [rbx + 0x9f0], 2
jne 0x140095ea2
cmp qword [r15], 0xffffffffffffffff
jg 0x140095ea2
mov rax, qword [rsp + 0x88]
mov byte [rax], 1
jmp 0x140095eaa
mov rax, qword [rsp + 0x88]
cmp qword [rbx + 0xf8], 0
jne 0x140095eb9
mov byte [rax], 1
jmp 0x140095ebe
cmp byte [rax], 0
je 0x140095ec5
and dword [rbx + 0x14c], 0xfffffffe
mov r9, rbp
mov r8, r12
mov edx, 1
mov rcx, rbx
call fcn.14008b120
jmp 0x140095d72
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.14008b200
mov eax, socket
jmp 0x140095d74
mov r8, rbp
mov rcx, r13
call fcn.1400801d0
test eax, eax
jne 0x140095d74
cmp dword [rbx + 0x134], eax
jne 0x140095d72
mov rcx, r13
call fcn.140080230
mov rcx, r13
mov rdi, rax
call fcn.140080240
mov r8, rax
mov r9, rdi
mov rdx, r14
mov rcx, rbx
call fcn.140096660
cmp eax, 2
jne 0x140095d72
mov edx, eax
mov byte [rbx + 0x1c2], 0
mov rcx, r14
mov dword [rbx + 0x130], eax
call fcn.14008c270
cmp byte [rbx + 0xac8], 0
jne 0x140095d72
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rbx
call fcn.14008b200
mov eax, 1
jmp 0x140095d74