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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov r15, qword [rcx + 0x140]
lea r12, [rcx + 0xbb8]
mov rdi, qword [r8]
mov r13, r8
mov r14, rdx
mov qword [rsp + 0x60], rdi
mov rsi, rcx
mov qword [rsp + 0x70], r15
mov r8, rdi
mov rcx, r15
mov edx, 0xa
mov rbp, r15
call fcn.140145d40
xor ebx, ebx
mov rcx, rax
mov rdx, rbp
test rax, rax
je 0x140128bce
mov rax, qword [rsi + 0x140]
lea r8, [rcx + 1]
sub rax, rcx
mov rcx, r12
dec rax
add qword [r13], rax
mov qword [rsi + 0x140], r8
sub r8, rbp
call fcn.140125950
test eax, eax
jne 0x140128a9b
cmp dword [rsi + 0x13c], ebx
jne 0x140128364
mov rcx, r12
call fcn.1400dfc60
mov rcx, r12
mov rbx, rax
call fcn.1400d5df0
mov r8, rbx
mov rdx, rax
mov rcx, rsi
call fcn.1401291b0
cmp eax, 2
je 0x140128a68
xor ebx, ebx
mov rcx, r12
call fcn.1400d5df0
mov r15, rax
cmp byte [rax], 0xa
je 0x14012878a
cmp byte [rax], 0xd
je 0x14012878a
mov edx, dword [rsi + 0x13c]
mov ebp, 2
lea ecx, [rdx + 1]
mov dword [rsi + 0x13c], ecx
test edx, edx
jne 0x140128693
mov rax, qword [r14 + 0x2e0]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x140128596
mov al, byte [r15]
mov rbx, r15
jmp 0x1401283c8
cmp al, 0x20
je 0x1401283c3
cmp al, 9
jne 0x1401283cc
inc rbx
mov al, byte [rbx]
test al, al
jne 0x1401283bb
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rbx
call fcn.14014ae60
test eax, eax
jne 0x14012847d
movsx edx, byte [rbx + 5]
mov ecx, edx
sub ecx, 0x31
je 0x1401284be
sub ecx, 1
je 0x140128406
cmp ecx, 1
jne 0x140128ad1
mov al, byte [rbx + 6]
mov bpl, 9
cmp al, 0x20
je 0x140128415
cmp al, bpl
jne 0x14012847d
lea eax, [rdx - 0x30]
mov r8b, 0x30
lea r9d, [rax + rax*4]
mov al, byte [rbx + 7]
sub al, r8b
add r9d, r9d
cmp al, bpl
ja 0x14012847d
mov al, byte [rbx + 8]
sub al, r8b
cmp al, bpl
ja 0x14012847d
mov al, byte [rbx + 9]
sub al, r8b
cmp al, bpl
ja 0x14012847d
movsx eax, byte [rbx + 7]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 8]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 9]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x150], ecx
mov al, byte [rbx + 0xa]
cmp al, 0x20
je 0x14012855c
sub al, bpl
cmp al, 4
jbe 0x14012855c
mov rcx, r12
call fcn.1400dfc60
mov rcx, r12
mov rbx, rax
call fcn.1400d5df0
mov rdx, rax
mov r8, rbx
mov rcx, rsi
call fcn.1401291b0
cmp eax, 1
jne 0x140128b26
mov dword [rsi + 0x150], 0xc8
mov byte [r14 + 0x399], 0xa
jmp 0x14012867d
cmp byte [rbx + 6], 0x2e
jne 0x140128b1a
mov al, byte [rbx + 7]
mov r8b, 0x30
sub al, r8b
cmp al, 1
ja 0x140128b1a
mov al, byte [rbx + 8]
mov bpl, 9
cmp al, 0x20
je 0x1401284ec
cmp al, bpl
jne 0x140128b1a
movsx r9d, byte [rbx + 7]
mov al, byte [rbx + 9]
sub r9d, 0x26
sub al, r8b
cmp al, bpl
ja 0x140128b1a
mov al, byte [rbx + 0xa]
sub al, r8b
cmp al, bpl
ja 0x140128b1a
mov al, byte [rbx + 0xb]
sub al, r8b
cmp al, bpl
ja 0x140128b1a
movsx eax, byte [rbx + 9]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 0xa]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 0xb]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x150], ecx
mov al, byte [rbx + 0xc]
cmp al, 0x20
je 0x14012855c
cmp al, bpl
je 0x14012855c
sub al, 0xa
cmp al, 3
ja 0x140128b1a
cmp ecx, 0x64
jl 0x140128b0e
mov ecx, r9d
sub ecx, 0xa
je 0x140128576
cmp ecx, 1
jne 0x140128add
mov byte [r14 + 0x399], r9b
cmp r9b, 0x14
jae 0x14012867d
mov rax, qword [r14 + 0x368]
or dword [rax], 0xffffffff
jmp 0x14012867d
bt ecx, 0x12
jae 0x140128b28
mov al, byte [r15]
mov rbx, r15
jmp 0x1401285b5
cmp al, 0x20
je 0x1401285b0
cmp al, 9
jne 0x1401285b9
inc rbx
mov al, byte [rbx]
test al, al
jne 0x1401285a8
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rbx
call fcn.14014ae60
test eax, eax
jne 0x140128b26
mov al, byte [rbx + 5]
mov cl, 0x30
sub al, cl
mov bpl, 9
cmp al, bpl
ja 0x140128b4b
cmp byte [rbx + 6], 0x2e
jne 0x140128b4b
mov al, byte [rbx + 7]
sub al, cl
cmp al, bpl
ja 0x140128b4b
mov al, byte [rbx + 8]
cmp al, 0x20
je 0x140128611
cmp al, bpl
jne 0x140128b4b
mov al, byte [rbx + 9]
sub al, cl
cmp al, bpl
ja 0x140128b4b
mov al, byte [rbx + 0xa]
sub al, cl
cmp al, bpl
ja 0x140128b4b
mov al, byte [rbx + 0xb]
sub al, cl
cmp al, bpl
ja 0x140128b4b
movsx eax, byte [rbx + 9]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 0xa]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 0xb]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x150], ecx
mov al, byte [rbx + 0xc]
cmp al, 0x20
je 0x140128675
cmp al, bpl
je 0x140128675
sub al, 0xa
cmp al, 3
ja 0x140128b4b
mov byte [r14 + 0x399], reloc.WS2_32.dll_inet_addr
mov rdx, r14
mov rcx, rsi
call fcn.140128e40
test eax, eax
jne 0x140128a9b
lea ebp, [rax + 6]
mov rcx, r12
call fcn.1400d5df0
mov rcx, r12
mov rbx, rax
call fcn.1400dfc60
mov r8, rax
xor edx, edx
mov rcx, rbx
mov rdi, rax
call fcn.140145d40
test rax, rax
jne 0x140128b3c
mov ecx, dword [rsi + 0x13c]
cmp ecx, 2
jl 0x1401286f2
cmp byte [rbx], 0x20
je 0x1401286d4
cmp byte [rbx], 9
jne 0x1401286d9
cmp ecx, 2
jg 0x1401286f2
mov r8, rdi
mov edx, 0x3a
mov rcx, rbx
call fcn.140145d40
test rax, rax
je 0x140128b33
mov r8, r15
mov rdx, r14
mov rcx, rsi
call fcn.140127670
xor ecx, ecx
test eax, eax
jne 0x140128a9b
mov ebx, dword [rsi + 0x150]
mov edi, ebp
or edi, 1
cmp byte [rsi + 0x9ec], cl
mov rcx, r12
cmove edi, ebp
call fcn.1400dfc60
mov r9, rax
mov r8, r15
mov edx, 1
mov rcx, rsi
call fcn.140132170
mov rcx, r12
call fcn.1400dfc60
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.140134a60
xor ebx, ebx
test eax, eax
jne 0x140128a9b
mov rcx, r12
call fcn.1400dfc60
add qword [rsi + 0x1298], rax
mov rcx, r12
call fcn.1400dfc60
add qword [rsi + 0x110], rax
jmp 0x140128a3e
mov ecx, dword [rsi + 0x150]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x140128803
sub ecx, 0x64
je 0x1401287cc
cmp ecx, 1
je 0x1401287b4
lea rdi, [rsi + 0x1c2]
mov dword [rsi + 0x13c], ebx
mov byte [rdi], 1
jmp 0x1401287fb
cmp dword [rsi + 0x16c], 2
je 0x140128b55
lea rdi, [rsi + 0x1c2]
mov byte [rdi], bl
jmp 0x1401287fb
lea rdi, [rsi + 0x1c2]
mov dword [rsi + 0x13c], ebx
mov byte [rdi], 1
cmp dword [rsi + 0x168], ebx
jle 0x1401287fb
or dword [rsi + 0x154], 2
xor edx, edx
mov rcx, rsi
mov dword [rsi + 0x168], ebx
call fcn.14011e5f0
mov rbx, rdi
xor r15d, r15d
jmp 0x140128861
xor r15d, r15d
lea rdi, [rsi + 0x1c2]
cmp qword [rsi + 0xf0], 0xffffffffffffffff
mov rbx, rdi
mov byte [rdi], r15b
jne 0x140128866
cmp byte [rsi + 0x1c7], r15b
jne 0x140128866
cmp byte [r14 + 0x2ce], r15b
jne 0x140128866
cmp byte [r14 + 0x399], 0xb
jne 0x140128866
mov rax, qword [r14 + 0x2e0]
test dword [rax + 0x84], 0x40000
jne 0x140128866
cmp byte [rsi + 0x1262], 5
je 0x140128866
lea edx, [r15 + 2]
mov rcx, r14
call fcn.140130bb0
cmp byte [rbx], r15b
jne 0x140128876
mov rcx, rsi
call fcn.140128dc0
test eax, eax
jne 0x140128a9b
mov eax, dword [rsi + 0x150]
sub eax, 0x64
cmp eax, 0x64
mov al, byte [rsi + 0x9ec]
sbb ebx, ebx
and ebx, 0x10
neg al
sbb ecx, ecx
neg ecx
add ecx, 2
or ebx, ecx
mov rcx, r12
call fcn.1400dfc60
mov rcx, r12
mov r15, rax
call fcn.1400d5df0
mov r8, rax
mov r9, r15
mov edx, ebx
mov rcx, rsi
call fcn.140134a60
xor ebx, ebx
test eax, eax
jne 0x140128a9b
mov r9, qword [rsi + 0x110]
movsxd rcx, r15d
add qword [rsi + 0x1298], rcx
add r9, rcx
mov qword [rsi + 0x110], r9
mov rcx, rsi
mov r8d, dword [rsi + 0x150]
call fcn.140129560
test al, al
jne 0x140128bb8
lea eax, [r8 - 0x64]
cmp eax, 0x63
cmova r9, rbx
mov qword [rsi + 0x118], r9
call fcn.140126a70
test eax, eax
jne 0x140128a9b
cmp dword [rsi + 0x150], 0x12c
jl 0x140128a36
cmp byte [r14 + 0x2d8], bl
jne 0x140128a1d
cmp byte [r14 + 0x2ce], bl
jne 0x140128a1d
cmp byte [rsi + 0x1277], bl
jne 0x140128a25
movzx ecx, byte [rsi + 0x1262]
sub ecx, 1
je 0x14012896b
sub ecx, 1
je 0x14012896b
sub ecx, 1
je 0x14012896b
cmp ecx, 1
jne 0x140128a1d
xor edx, edx
mov rcx, rsi
call fcn.14011e5f0
cmp byte [rsi + 0x1c4], bl
jne 0x140128a1d
cmp dword [rsi + 0x150], 0x1a1
jne 0x1401289c1
cmp byte [rsi + 0x126b], bl
je 0x1401289c1
mov rcx, qword [rsi + 0x1120]
mov byte [rsi + 0x126c], 1
call qword [fcn.140151530]
lea rdx, [rsi + 0xf0]
mov rcx, rsi
mov qword [rsi + 0x190], rax
call fcn.14012a240
jmp 0x140128a1d
cmp byte [rsi + 0x9e8], bl
je 0x1401289e0
cmp dword [rsi + 0x168], ebx
jle 0x140128a1d
or dword [rsi + 0x154], 2
mov dword [rsi + 0x168], ebx
jmp 0x140128a1d
mov edx, 2
mov rcx, r14
call fcn.140130bb0
lea rdx, [rsi + 0xf0]
mov rcx, rsi
call fcn.14012a240
test eax, eax
jne 0x140128a9b
mov byte [rsi + 0x1c4], 1
cmp byte [rsi + 0x126b], bl
je 0x140128a1d
mov dword [rsi + 0x168], 3
cmp byte [rsi + 0x1277], bl
je 0x140128a36
cmp qword [r14 + 0x308], 0xffffffffffffffff
je 0x140128a36
or dword [rsi + 0x154], 2
cmp byte [rdi], bl
je 0x140128b71
mov rcx, r12
call fcn.1401259b0
mov rbp, qword [rsi + 0x140]
cmp byte [rbp], bl
je 0x140128a99
mov r8, qword [r13]
mov edx, 0xa
mov rcx, rbp
call fcn.140145d40
jmp 0x1401282f2
mov edx, 2
mov rcx, r14
call fcn.140130bb0
xor eax, eax
cmp byte [rsi + 0xa05], al
je 0x140128c3c
mov byte [rsi + 0x1c2], al
cmp qword [r13], rax
je 0x140128ab0
mov dword [rsi + 0x138], 1
xor eax, eax
mov rbx, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rsp + 0x60]
mov dword [rsi + 0x138], 2
mov qword [r13], rax
mov rax, qword [rsp + 0x70]
mov qword [rsi + 0x140], rax
jmp 0x140128a99
lea rdx, str.Unsupported_HTTP_version_in_response
jmp 0x140128c43
mov eax, 0x66666667
mov rcx, rsi
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.140132250
jmp 0x140128c4b
lea rdx, str.Unsupported_response_code_in_HTTP_response
jmp 0x140128c43
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
jmp 0x140128c43
xor ebx, ebx
mov byte [rsi + 0x1c2], bl
jmp 0x140128a99
lea rdx, str.Header_without_colon
jmp 0x140128b43
lea rdx, str.Nul_byte_in_header
mov rcx, rsi
call fcn.140132250
mov eax, 8
jmp 0x140128a9b
mov dword [rsi + 0x16c], 3
mov byte [rsi + 0x1c2], 1
mov dword [rsi + 0x13c], ebx
jmp 0x140128c4b
mov rcx, qword [rsp + 0x78]
cmp byte [rsi + 0x1cc], bl
je 0x140128b85
mov byte [rcx], 1
mov al, 1
jmp 0x140128b87
mov al, byte [rcx]
cmp qword [rsi + 0xf8], rbx
jne 0x140128b95
mov byte [rcx], 1
jmp 0x140128b99
test al, al
je 0x140128ba0
and dword [rsi + 0x154], 0xfffffffe
mov r9, r15
mov r8, rbp
mov edx, 1
mov rcx, rsi
call fcn.140132170
jmp 0x140128a99
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.140132250
mov eax, reloc.WS2_32.dll_shutdown
jmp 0x140128a9b
mov r8, qword [r13]
mov rcx, r12
call fcn.140125950
test eax, eax
jne 0x140128a9b
cmp dword [rsi + 0x13c], ebx
jne 0x140128a99
mov rcx, r12
call fcn.1400dfc60
mov rcx, r12
mov rbx, rax
call fcn.1400d5df0
mov r8, rbx
mov rdx, rax
mov rcx, rsi
call fcn.1401291b0
cmp eax, 2
jne 0x140128a99
xor ebx, ebx
mov dword [rsi + 0x138], eax
mov edx, eax
mov byte [rsi + 0x1c2], bl
mov rcx, r14
call fcn.140130bb0
cmp byte [rsi + 0xa05], bl
jne 0x140128a99
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rsi
call fcn.140132250
mov eax, 1
jmp 0x140128a9b