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

Disassembly:
mov qword [rsp + 0x20], r9
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov r14, qword [rcx + 0x20]
lea rsi, [rcx + 0xc20]
mov qword [rsp + 0x70], r14
mov r15, r9
mov r12, r8
mov qword [r9], 0
mov r13, rdx
mov qword [rsp + 0x78], rbp
mov rbx, rcx
nop dword [rax]
mov r8, r12
mov edx, 0xa
mov rcx, r13
call fcn.18011fd40
mov rdi, rax
mov rdx, r13
mov rcx, rsi
test rax, rax
je 0x1800bba3c
sub rdi, r13
inc rdi
mov r8, rdi
call fcn.18009c4c0
test eax, eax
jne 0x1800bb94c
add qword [r15], rdi
sub r12, rdi
add r13, rdi
cmp dword [rbx + 0x12c], eax
jne 0x1800bb2e3
mov rcx, rsi
call fcn.18009c520
mov rcx, rsi
mov rdi, rax
call fcn.18009c530
mov r8, rdi
mov rdx, rax
mov rcx, rbx
call fcn.1800ba850
cmp eax, 2
je 0x1800bb961
lea rcx, [rbx + 0xc20]
call fcn.18009c530
mov rcx, rsi
mov r15, rax
call fcn.18009c520
movzx ecx, byte [r15]
mov rbp, rax
cmp cl, 0xa
je 0x1800bb828
cmp cl, 0xd
je 0x1800bb828
mov edx, dword [rbx + 0x12c]
mov edi, 4
lea ecx, [rdx + 1]
mov dword [rbx + 0x12c], ecx
test edx, edx
jne 0x1800bb6e9
xor esi, esi
mov dword [rbx + 0x138], esi
mov rax, qword [r14 + 0x360]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x1800bb4db
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x1800bb36c
cmp al, 0x20
je 0x1800bb361
cmp byte [rdi], 9
jne 0x1800bb36c
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x1800bb358
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rdi
call fcn.18011ffe0
test eax, eax
jne 0x1800bb412
movsx edx, byte [rdi + 5]
mov ecx, edx
sub ecx, 0x31
je 0x1800bb442
sub ecx, 1
je 0x1800bb3a6
cmp ecx, 1
jne 0x1800bb995
movzx eax, byte [rdi + 6]
cmp al, 0x20
je 0x1800bb3b2
cmp al, 9
jne 0x1800bb412
lea eax, [rdx - 0x30]
lea ecx, [rax + rax*4]
add ecx, ecx
mov dword [rbx + 0x138], ecx
movsx ecx, byte [rdi + 7]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1800bb412
movsx edx, byte [rdi + 8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x1800bb412
movsx r8d, byte [rdi + 9]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x1800bb412
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 + 0x13c], ecx
movzx eax, byte [rdi + 0xa]
cmp al, 0x20
je 0x1800bb5bf
sub al, 9
cmp al, 4
jbe 0x1800bb5bf
mov r8, rbp
mov rdx, r15
mov rcx, rbx
call fcn.1800ba850
cmp eax, 1
jne 0x1800bb9e1
mov dword [rbx + 0x13c], 0xc8
mov dword [rbx + 0x138], 0xa
jmp 0x1800bb5bf
cmp byte [rdi + 6], 0x2e
jne 0x1800bb4c2
movsx ecx, byte [rdi + 7]
lea eax, [rcx - 0x30]
cmp al, 1
ja 0x1800bb4c2
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x1800bb45f
cmp al, 9
jne 0x1800bb4c2
lea eax, [rcx - 0x26]
mov dword [rbx + 0x138], eax
movsx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1800bb4c2
movsx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x1800bb4c2
movsx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x1800bb4c2
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 + 0x13c], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x1800bb5bf
cmp al, 9
je 0x1800bb5bf
sub al, 0xa
cmp al, 3
jbe 0x1800bb5bf
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
mov rcx, rbx
call fcn.1800aa8a0
mov eax, 1
jmp 0x1800bb94c
bt ecx, 0x12
jae 0x1800bb9e1
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x1800bb504
cmp al, 0x20
je 0x1800bb4f9
cmp byte [rdi], 9
jne 0x1800bb504
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x1800bb4f0
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rdi
call fcn.18011ffe0
test eax, eax
jne 0x1800bb9e1
movzx eax, byte [rdi + 5]
sub al, 0x30
cmp al, 9
ja 0x1800bbaaf
cmp byte [rdi + 6], 0x2e
jne 0x1800bbaaf
movzx eax, byte [rdi + 7]
sub al, 0x30
cmp al, 9
ja 0x1800bbaaf
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x1800bb557
cmp al, 9
jne 0x1800bbaaf
movsx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1800bbaaf
movsx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x1800bbaaf
movsx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x1800bbaaf
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 + 0x13c], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x1800bb5b5
cmp al, 9
je 0x1800bb5b5
sub al, 0xa
cmp al, 3
ja 0x1800bbaaf
mov dword [rbx + 0x138], send
mov r9d, dword [rbx + 0x138]
mov ecx, r9d
sub ecx, 0xa
je 0x1800bb5d7
cmp ecx, 1
jne 0x1800bb9ab
mov byte [r14 + 0x668], r9b
mov eax, dword [rbx + 0x13c]
mov dword [rbx + 0x1258], eax
mov eax, dword [rbx + 0x138]
mov dword [rbx + 0x1260], eax
movzx eax, byte [rbx + 0x138]
mov byte [r14 + 0x668], al
movzx eax, byte [rbx + 0x1241]
test al, al
je 0x1800bb617
cmp eax, dword [rbx + 0x138]
jle 0x1800bb624
movzx eax, byte [rbx + 0x138]
mov byte [rbx + 0x1241], al
cmp qword [rbx + 0x1078], rsi
je 0x1800bb649
cmp byte [rbx + 0x1242], sil
jne 0x1800bb649
cmp dword [rbx + 0x13c], 0x1a0
jne 0x1800bb649
mov byte [rbx + 0x1da], 1
mov eax, dword [rbx + 0x138]
cmp eax, 0xa
jne 0x1800bb672
lea rdx, str.HTTP_1.0__assume_close_after_body
mov rcx, rbx
call fcn.1800aa960
mov edx, 1
mov rcx, r14
call fcn.1800ad550
jmp 0x1800bb696
cmp eax, 0x14
je 0x1800bb689
cmp dword [rbx + 0x144], 2
jne 0x1800bb696
cmp dword [rbx + 0x13c], 0x65
jne 0x1800bb696
mov rax, qword [r14 + 0x630]
mov dword [rax], 2
mov ecx, dword [rbx + 0x13c]
lea eax, [rcx - 0x64]
cmp eax, 0x63
setbe al
mov byte [rbx + 0x1db], al
sub ecx, 0xcc
je 0x1800bb6c8
cmp ecx, 0x64
jne 0x1800bb6dd
cmp byte [rbx + 0x520], sil
je 0x1800bb6c8
mov byte [rbx + 0x1334], 1
mov qword [rbx + 0xf0], rsi
mov qword [rbx + 0xf8], rsi
mov byte [rbx + 0x1db], 1
mov edi, ntohs
lea rsi, [rbx + 0xc20]
lea rcx, [rbx + 0xc20]
call fcn.18009c530
mov rcx, rsi
mov r14, rax
call fcn.18009c520
mov r8, rax
xor edx, edx
mov rcx, r14
mov rsi, rax
call fcn.18011fd40
test rax, rax
jne 0x1800bba08
mov edx, dword [rbx + 0x12c]
cmp edx, 2
jl 0x1800bb750
movzx ecx, byte [r14]
cmp cl, 0x20
je 0x1800bb732
cmp cl, 9
jne 0x1800bb737
cmp edx, 2
jg 0x1800bb750
mov r8, rsi
mov edx, 0x3a
mov rcx, r14
call fcn.18011fd40
test rax, rax
je 0x1800bb9ed
mov r14, qword [rsp + 0x70]
mov r9, rbp
mov rdx, r14
mov r8, r15
mov rcx, rbx
call fcn.1800b8cf0
test eax, eax
jne 0x1800bb94c
mov r9, rbp
mov r8, r15
mov edx, 1
mov rcx, rbx
call fcn.1800aa7b0
mov eax, dword [rbx + 0x13c]
sub eax, 0x64
cmp eax, 0x64
jae 0x1800bb792
or edi, 0x20
mov r9, rbp
mov r8, r15
mov edx, edi
mov rcx, rbx
call fcn.1800ab920
test eax, eax
jne 0x1800bb94c
mov edx, dword [rbx + 0x124]
mov r9d, 0x4b000
cmp rbp, r9
jae 0x1800bb7f2
mov ecx, dword [rbx + 0x12a0]
lea eax, [rdx + rbp]
add dword [rbx + 0x120], ebp
add ecx, ebp
mov dword [rbx + 0x12a0], ecx
mov dword [rbx + 0x124], eax
cmp eax, r9d
ja 0x1800bb7ed
cmp ecx, 0x5dc000
jbe 0x1800bb7ff
mov r9d, 0x5dc000
mov eax, ecx
mov r8d, eax
jmp 0x1800bb7f6
lea r8, [rdx + rbp]
test r8, r8
jne 0x1800bba23
lea rcx, [rbx + 0xc20]
call fcn.18009c540
test r12, r12
je 0x1800bb92d
mov r15, qword [rsp + 0x88]
lea rsi, [rbx + 0xc20]
jmp 0x1800bb270
mov r9, rbp
mov r8, r15
mov edx, 1
mov rcx, rbx
call fcn.1800aa7b0
mov eax, dword [rbx + 0x13c]
mov edx, 4
sub eax, 0x64
mov r9, rbp
cmp eax, 0x64
mov r8, r15
mov eax, 0x24
mov rcx, rbx
cmovb edx, eax
call fcn.1800ab920
test eax, eax
jne 0x1800bb94c
mov ecx, dword [rbx + 0x124]
mov r9d, 0x4b000
cmp rbp, r9
jae 0x1800bb8b7
mov r8d, dword [rbx + 0x12a0]
lea edx, [rcx + rbp]
add dword [rbx + 0x120], ebp
add r8d, ebp
mov dword [rbx + 0x12a0], r8d
mov dword [rbx + 0x124], edx
cmp edx, r9d
ja 0x1800bb8b2
cmp r8d, 0x5dc000
jbe 0x1800bb8c4
mov r9d, 0x5dc000
mov edx, r8d
mov r8d, edx
jmp 0x1800bb8bb
lea r8, [rcx + rbp]
test r8, r8
jne 0x1800bba23
lea rcx, [rbx + 0xc20]
call fcn.18009c540
mov eax, dword [rbx + 0x13c]
sub eax, 0x64
cmp eax, 0x63
ja 0x1800bb8e6
mov eax, dword [rbx + 0x120]
jmp 0x1800bb8e8
xor eax, eax
lea r9, [rsp + 0x20]
mov dword [rbx + 0x128], eax
mov r8, r12
mov rdx, r13
mov rcx, rbx
call fcn.1800ba920
test eax, eax
jne 0x1800bb94c
mov rax, qword [rsp + 0x20]
mov r15, qword [rsp + 0x88]
sub r12, rax
add r13, rax
add qword [r15], rax
cmp byte [rbx + 0x1d1], 0
je 0x1800bb92d
test r12, r12
jne 0x1800bb270
xor bpl, bpl
cmp byte [rbx + 0x1d1], 0
jne 0x1800bb94a
test bpl, bpl
jne 0x1800bb94a
lea rcx, [rbx + 0xc20]
call fcn.18009c4d0
xor eax, eax
mov rbp, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov edx, 2
mov rcx, r14
call fcn.1800ad550
cmp byte [r14 + 0x668], 0xa
jae 0x1800bbaa0
cmp byte [rbx + 0xa49], 0
je 0x1800bbac6
mov byte [rbx + 0x1d1], 0
mov bpl, 1
jmp 0x1800bb930
lea rdx, str.Unsupported_HTTP_version_in_response
mov rcx, rbx
call fcn.1800aa8a0
mov eax, 1
jmp 0x1800bb94c
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, rbx
call fcn.1800aa8a0
mov eax, 1
jmp 0x1800bb94c
mov byte [rbx + 0x1d1], sil
jmp 0x1800bb92d
lea rdx, str.Header_without_colon
mov rcx, rbx
mov edi, 8
call fcn.1800aa8a0
mov eax, edi
jmp 0x1800bb94c
lea rdx, str.Nul_byte_in_header
mov rcx, rbx
mov edi, 8
call fcn.1800aa8a0
mov eax, edi
jmp 0x1800bb94c
lea rdx, str.Too_large_response_headers:__zu____u
mov rcx, rbx
call fcn.1800aa8a0
mov eax, 0x38
jmp 0x1800bb94c
mov r8, r12
call fcn.18009c4c0
test eax, eax
jne 0x1800bb94c
add qword [r15], r12
cmp dword [rbx + 0x12c], eax
jne 0x1800bb92d
mov rcx, rsi
call fcn.18009c520
mov rcx, rsi
mov rdi, rax
call fcn.18009c530
mov r8, rdi
mov rdx, rax
mov rcx, rbx
call fcn.1800ba850
cmp eax, 2
jne 0x1800bb92d
mov edx, eax
mov byte [rbx + 0x1d1], 0
mov rcx, r14
call fcn.1800ad550
cmp byte [r14 + 0x668], 0xa
jb 0x1800bbab9
lea rdx, str.Invalid_status_line
mov rcx, rbx
call fcn.1800aa8a0
mov eax, 8
jmp 0x1800bb94c
cmp byte [rbx + 0xa49], 0
jne 0x1800bb990
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rbx
call fcn.1800aa8a0
mov eax, 1
jmp 0x1800bb94c