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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x20
mov rbp, qword [rsp + 0x70]
lea rsi, [rcx + 0xf0]
mov r13, r9
mov qword [rsp + 0x50], r12
mov r15, r8
mov r14, rdx
mov rbx, rcx
mov qword [rbp], 0
nop dword [rax + rax]
mov r8, r13
mov edx, 0xa
mov rcx, r15
call sub.VCRUNTIME140.dll_memchr
mov rdi, rax
mov rdx, r15
test rax, rax
je 0x14015d8c1
sub rdi, r15
lea r12, [rbx + 0xc80]
inc rdi
mov rcx, r12
mov r8, rdi
call fcn.140142710
test eax, eax
jne 0x14015d75c
add qword [rbp], rdi
add r15, rdi
sub r13, rdi
mov qword [rsp + 0x60], r15
cmp dword [rsi + 0x44], eax
jne 0x14015cec4
mov rcx, r12
call fcn.140142770
mov rcx, r12
mov rbp, rax
call fcn.140142780
mov rdx, rax
mov rax, qword [r14 + 0x318]
test dword [rax + 0x84], 0x40000
je 0x14015ceae
xor edi, edi
lea rcx, str.RTSP_
cmp rbp, 5
mov eax, 5
setae dil
cmp rbp, 5
cmova rbp, rax
mov r8, rbp
call fcn.140153770
test eax, eax
mov ecx, 2
cmovne ecx, edi
jmp 0x14015cebb
mov r8, rbp
mov rcx, rbx
call fcn.14015e0d0
mov ecx, eax
cmp ecx, 2
je 0x14015d732
mov rcx, r12
call fcn.140142780
mov r15, rax
movzx ecx, byte [rax]
cmp cl, 0xa
je 0x14015d2f3
cmp cl, 0xd
je 0x14015d2f3
mov ecx, dword [rsi + 0x44]
mov ebp, 4
lea eax, [rcx + 1]
mov dword [rsi + 0x44], eax
test ecx, ecx
jne 0x14015d205
mov rax, qword [r14 + 0x318]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x14015d107
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x14015cf33
nop dword [rax + rax]
cmp al, 0x20
je 0x14015cf28
cmp al, 9
jne 0x14015cf33
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x14015cf20
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strncmp
test eax, eax
jne 0x14015cfde
movzx ecx, byte [rdi + 5]
movzx eax, cl
cmp cl, 0x31
je 0x14015d01c
sub al, 0x32
cmp al, 1
ja 0x14015d778
movzx eax, byte [rdi + 6]
cmp al, 0x20
je 0x14015cf76
cmp al, 9
jne 0x14015cfde
movsx eax, cl
movzx ecx, byte [rdi + 7]
sub eax, 0x30
lea r9d, [rax + rax*4]
add r9d, r9d
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x14015cfde
movzx edx, byte [rdi + 8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x14015cfde
movzx r8d, byte [rdi + 9]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x14015cfde
movsx eax, cl
lea ecx, [rax + rax*4]
movsx eax, dl
lea ecx, [rax + rcx*2]
movsx eax, r8b
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x50], ecx
movzx ecx, byte [rdi + 0xa]
lea eax, [rcx - 9]
cmp al, bpl
jbe 0x14015d0ae
cmp cl, 0x20
je 0x14015d0ae
mov rcx, r12
call fcn.140142770
mov rcx, r12
mov rdi, rax
call fcn.140142780
mov rdx, rax
mov r8, rdi
mov rcx, rbx
call fcn.14015e0d0
cmp eax, 1
jne 0x14015d7fa
mov dword [rsi + 0x50], reloc.WLDAP32.dll_Ordinal_200
mov byte [r14 + 0x73d], 0xa
jmp 0x14015d1ef
cmp byte [rdi + 6], 0x2e
jne 0x14015d7d7
movzx ecx, byte [rdi + 7]
lea eax, [rcx - 0x30]
cmp al, 1
ja 0x14015d7d7
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x14015d045
cmp al, 9
jne 0x14015d7d7
movsx r9d, cl
movzx ecx, byte [rdi + 9]
sub r9d, 0x26
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x14015d7d7
movzx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x14015d7d7
movzx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x14015d7d7
movsx eax, cl
lea ecx, [rax + rax*4]
movsx eax, dl
lea ecx, [rax + rcx*2]
movsx eax, r8b
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x50], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x14015d0ae
sub al, 9
cmp al, bpl
ja 0x14015d7d7
cmp dword [rsi + 0x50], 0x64
jl 0x14015d7c1
lea eax, [r9 - 0xa]
cmp eax, 1
ja 0x14015d78e
mov byte [r14 + 0x73d], r9b
cmp dword [rsi + 0x6c], 3
jne 0x14015d0e7
cmp r9b, 0x14
je 0x14015d0e7
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rbx
call fcn.14014e800
cmp byte [r14 + 0x73d], 0x14
jae 0x14015d1ef
mov rax, qword [r14 + 0x700]
mov dword [rax], 0xffffffff
jmp 0x14015d1ef
bt ecx, 0x12
jae 0x14015d7fa
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x14015d133
nop dword [rax]
cmp al, 0x20
je 0x14015d128
cmp al, 9
jne 0x14015d133
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x14015d120
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strncmp
test eax, eax
jne 0x14015d7fa
movzx eax, byte [rdi + 5]
sub al, 0x30
cmp al, 9
ja 0x14015d7f0
cmp byte [rdi + 6], 0x2e
jne 0x14015d7f0
movzx eax, byte [rdi + 7]
sub al, 0x30
cmp al, 9
ja 0x14015d7f0
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x14015d186
cmp al, 9
jne 0x14015d7f0
movzx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x14015d7f0
movzx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x14015d7f0
movzx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x14015d7f0
movsx eax, cl
lea ecx, [rax + rax*4]
movsx eax, dl
lea ecx, [rax + rcx*2]
movsx eax, r8b
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x50], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x14015d1e7
sub al, 9
cmp al, bpl
ja 0x14015d7f0
mov byte [r14 + 0x73d], 0xb
mov rdx, r14
mov rcx, rbx
call fcn.14015dce0
test eax, eax
jne 0x14015d75c
lea ebp, [rax + 0xc]
mov rcx, rbx
call fcn.14015ea60
test eax, eax
jne 0x14015d75c
mov r8, r15
mov rdx, r14
mov rcx, rbx
call fcn.14015bca0
test eax, eax
jne 0x14015d75c
mov edi, dword [rsi + 0x50]
mov rcx, r12
call fcn.140142770
mov r9, rax
mov r8, r15
mov edx, 1
mov rcx, rbx
call fcn.14014e590
mov rcx, r12
call fcn.140142770
mov edx, ebp
mov r9, rax
or edx, 0x20
lea eax, [rdi - 0x64]
cmp eax, 0x64
mov r8, r15
mov rcx, rbx
cmovae edx, ebp
call fcn.14014ed60
test eax, eax
jne 0x14015d75c
mov rcx, r12
call fcn.140142770
mov r9d, 0x4b000
cmp rax, r9
jae 0x14015d2c7
add dword [rbx + 0x12c], eax
add dword [rbx + 0x1398], eax
mov edx, dword [rbx + 0x12c]
add dword [rbx + 0x128], eax
mov ecx, dword [rbx + 0x1398]
cmp edx, r9d
jbe 0x14015d2b0
mov r8d, edx
jmp 0x14015d2d1
cmp ecx, 0x5dc000
jbe 0x14015d716
mov r8, rcx
mov r9d, 0x5dc000
jmp 0x14015d2d1
mov r8d, dword [rbx + 0x12c]
add r8, rax
test r8, r8
je 0x14015d716
lea rdx, str.Too_large_response_headers:__zu____u
mov rcx, rbx
call fcn.14014e670
mov eax, Ordinal_60
jmp 0x14015d75c
mov ecx, dword [rsi + 0x50]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x14015d360
sub ecx, 0x64
je 0x14015d331
cmp ecx, 1
je 0x14015d31b
mov byte [rsi + 0xcc], 1
mov dword [rsi + 0x44], 0
jmp 0x14015d3d4
cmp dword [rsi + 0x6c], 2
je 0x14015d806
mov byte [rsi + 0xcc], 0
jmp 0x14015d3d4
cmp dword [rsi + 0x68], 0
mov byte [rsi + 0xcc], 1
mov dword [rsi + 0x44], 0
jle 0x14015d3d4
or dword [rsi + 0x54], 2
xor edx, edx
mov rcx, rbx
mov dword [rsi + 0x68], 0
call fcn.14013c280
jmp 0x14015d3d4
cmp dword [rsi + 0x6c], 2
jne 0x14015d372
mov rcx, qword [rbx + 0xd8]
call fcn.14013c3d0
cmp qword [rsi], 0xffffffffffffffff
mov byte [rsi + 0xcc], 0
jne 0x14015d3d4
cmp byte [rsi + 0xd3], 0
jne 0x14015d3d4
cmp byte [r14 + 0x2fe], 0
jne 0x14015d3d4
cmp byte [r14 + 0x73d], 0xb
jne 0x14015d3d4
mov rax, qword [r14 + 0x318]
test dword [rax + 0x84], 0x40000
jne 0x14015d3d4
cmp byte [rbx + 0x132a], 5
je 0x14015d3d4
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rbx
call fcn.14014e800
mov edx, 2
mov rcx, r14
call fcn.14014ffe0
cmp byte [rsi + 0xcc], 0
jne 0x14015d3ed
mov rcx, rbx
call fcn.14015dc50
test eax, eax
jne 0x14015d75c
cmp byte [r14 + 0x2fe], 0
je 0x14015d481
mov eax, dword [rbx + 0x140]
cmp eax, 0x191
jne 0x14015d412
cmp dword [r14 + 0x3e0], 2
je 0x14015d423
cmp eax, 0x197
jne 0x14015d439
cmp dword [r14 + 0x3e4], 2
jne 0x14015d439
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbx
call fcn.14014e800
mov byte [rbx + 0x1331], 1
cmp byte [r14 + 0x2fe], 0
je 0x14015d481
mov eax, dword [rbx + 0x140]
cmp eax, 0x191
jne 0x14015d45a
cmp dword [r14 + 0x4d8], 1
je 0x14015d46b
cmp eax, 0x197
jne 0x14015d481
cmp dword [r14 + 0x4dc], 1
jne 0x14015d481
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbx
call fcn.14014e800
mov byte [rbx + 0x1331], 1
cmp dword [r14 + 0x4d8], 3
jne 0x14015d4a2
cmp dword [rbx + 0x140], 0x191
je 0x14015d4a2
mov dword [r14 + 0x4d8], 4
cmp dword [r14 + 0x4dc], 3
jne 0x14015d4c3
cmp dword [rbx + 0x140], 0x197
je 0x14015d4c3
mov dword [r14 + 0x4dc], 4
mov eax, dword [rsi + 0x50]
mov edi, 4
sub eax, 0x64
mov rcx, r12
cmp eax, 0x64
mov eax, 0x24
cmovb edi, eax
call fcn.140142770
mov rcx, r12
mov rbp, rax
call fcn.140142780
mov r8, rax
mov r9, rbp
mov edx, edi
mov rcx, rbx
call fcn.14014ed60
test eax, eax
jne 0x14015d75c
mov r9d, 0x4b000
cmp rbp, r9
jae 0x14015d549
add dword [rbx + 0x12c], ebp
add dword [rbx + 0x1398], ebp
mov ecx, dword [rbx + 0x12c]
add dword [rbx + 0x128], ebp
mov eax, dword [rbx + 0x1398]
cmp ecx, r9d
jbe 0x14015d537
mov r8d, ecx
jmp 0x14015d553
cmp eax, 0x5dc000
jbe 0x14015d55c
mov r8, rax
mov r9d, 0x5dc000
jmp 0x14015d553
mov r8d, dword [rbx + 0x12c]
add r8, rbp
test r8, r8
jne 0x14015d2da
mov rcx, rbx
call fcn.14015e610
test al, al
jne 0x14015d8a7
mov eax, dword [rsi + 0x50]
sub eax, 0x64
cmp eax, 0x63
ja 0x14015d57f
mov eax, dword [rbx + 0x128]
jmp 0x14015d581
xor eax, eax
mov dword [rbx + 0x130], eax
call fcn.14015ac90
test eax, eax
jne 0x14015d75c
cmp dword [rsi + 0x50], 0x12c
jl 0x14015d709
cmp byte [r14 + 0x308], al
jne 0x14015d6e3
cmp byte [r14 + 0x2fe], al
jne 0x14015d6e3
cmp byte [rbx + 0x133f], al
jne 0x14015d6ec
movzx eax, byte [rbx + 0x132a]
dec al
cmp al, 3
ja 0x14015d6e3
xor edx, edx
mov rcx, rbx
call fcn.14013c280
cmp byte [rsi + 0xd0], 0
jne 0x14015d6e3
cmp dword [rsi + 0x50], 0x1a1
jne 0x14015d676
cmp byte [rbx + 0x1333], 0
je 0x14015d676
cmp qword [rsi + 0x18], 0
jne 0x14015d61f
cmp dword [rsi + 0x68], 1
jne 0x14015d61f
lea rdx, str.Got_HTTP_failure_417_while_waiting_for_a_100
mov rcx, rbx
call fcn.14014e800
jmp 0x14015d64e
lea rdx, str.Got_HTTP_failure_417_while_sending_data
mov rcx, rbx
call fcn.14014e800
mov edx, 2
mov rcx, r14
call fcn.14014ffe0
mov rdx, r14
mov rcx, rbx
call fcn.14015e440
test eax, eax
jne 0x14015d75c
mov rcx, qword [rbx + 0x11d0]
mov byte [rbx + 0x1334], 1
call qword [case.0x14014a45f.1]
mov rdx, rsi
mov rcx, rbx
mov qword [rbx + 0x180], rax
call fcn.140153cd0
jmp 0x14015d6e3
cmp byte [rbx + 0xa8f], 0
mov rcx, rbx
je 0x14015d6a1
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.14014e800
cmp dword [rsi + 0x68], 0
jle 0x14015d6e3
or dword [rsi + 0x54], 2
mov dword [rsi + 0x68], 0
jmp 0x14015d6e3
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.14014e800
mov edx, 2
mov rcx, r14
call fcn.14014ffe0
mov rdx, rsi
mov rcx, rbx
call fcn.140153cd0
test eax, eax
jne 0x14015d75c
mov byte [rsi + 0xd0], 1
cmp byte [rbx + 0x1333], al
je 0x14015d6e3
mov dword [rsi + 0x68], 3
cmp byte [rbx + 0x133f], 0
je 0x14015d709
cmp qword [r14 + 0x340], 0xffffffffffffffff
je 0x14015d709
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rbx
call fcn.14014e800
or dword [rsi + 0x54], 2
cmp byte [rsi + 0xcc], 0
je 0x14015d834
mov rcx, r12
call fcn.140142790
test r13, r13
je 0x14015d75a
mov r15, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x70]
jmp 0x14015ce00
mov edx, 2
mov rcx, r14
call fcn.14014ffe0
cmp byte [rbx + 0xab1], 0
je 0x14015d93f
mov byte [rsi + 0xcc], 0
mov byte [rsi + 0xcd], 1
xor eax, eax
mov r12, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop rdi
pop rsi
ret
lea rdx, str.Unsupported_HTTP_version_in_response
mov rcx, rbx
call fcn.14014e670
mov eax, 1
jmp 0x14015d75c
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.14014e670
mov eax, 1
jmp 0x14015d75c
lea rdx, str.Unsupported_response_code_in_HTTP_response
mov rcx, rbx
call fcn.14014e670
mov eax, 1
jmp 0x14015d75c
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
mov rcx, rbx
call fcn.14014e670
mov eax, 1
jmp 0x14015d75c
mov eax, 8
jmp 0x14015d75c
mov byte [rsi + 0xcc], 0
jmp 0x14015d75a
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rbx
call fcn.14014e800
mov eax, 1
mov dword [rsi + 0x6c], 3
mov byte [rsi + 0xcc], 1
mov dword [rsi + 0x44], 0
jmp 0x14015d75c
cmp byte [rbx + 0x1c8], 0
jne 0x14015d85f
mov rax, qword [r14 + 0x318]
test dword [rax + 0x84], 0x40000
je 0x14015d866
cmp dword [rbx + 0x9e0], 2
jne 0x14015d866
cmp qword [rsi], 0xffffffffffffffff
jg 0x14015d866
mov byte [rsi + 0xcf], 1
cmp qword [rsi + 8], 0
jne 0x14015d874
mov byte [rsi + 0xcf], 1
lea rcx, [rbx + 0xc80]
call fcn.140142770
lea rcx, [rbx + 0xc80]
mov rsi, rax
call fcn.140142780
mov r8, rax
mov r9, rsi
mov edx, 1
mov rcx, rbx
call fcn.14014e590
jmp 0x14015d75a
mov r8d, dword [rsi + 0x50]
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.14014e670
mov eax, reloc.WLDAP32.dll_Ordinal_22
jmp 0x14015d75c
mov r8, r13
lea rcx, [rbx + 0xc80]
call fcn.140142710
test eax, eax
jne 0x14015d75c
mov rax, qword [rsp + 0x70]
add qword [rax], r13
cmp dword [rsi + 0x44], 0
jne 0x14015d75a
lea rcx, [rbx + 0xc80]
call fcn.140142770
lea rcx, [rbx + 0xc80]
mov rdi, rax
call fcn.140142780
mov r8, rax
mov r9, rdi
mov rdx, r14
mov rcx, rbx
call fcn.14015e1a0
cmp eax, 2
jne 0x14015d75a
mov edx, eax
mov word [rsi + 0xcc], 0x100
mov rcx, r14
call fcn.14014ffe0
cmp byte [rbx + 0xab1], 0
jne 0x14015d75a
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rbx
call fcn.14014e670
mov eax, 1
jmp 0x14015d75c