Function at 0x14001f193
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rbx, r9
mov rbp, r8
mov rsi, rcx
mov r15, qword [rsp + 0xd8]
mov r14, qword [rsp + 0xd0]
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x50], r15
cmp byte [rdx], 0
je 0x14001f253
movzx ecx, byte [rdx + 1]
mov byte [rdx], 0
test rbx, rbx
je 0x14001f261
cmp r15, 2
jbe 0x14001f277
mov qword [rsp + 0x40], rdx
mov al, byte [rbp]
cmp cl, 0x1f
jbe 0x14001f28f
lea edx, [rax + 0x5f]
lea r8d, [rcx - 0x20]
movzx r8d, r8b
cmp dl, 0x5e
jae 0x14001f29b
imul r13, r8, 0x5e
movzx eax, dl
lea r8, [rax + r13]
add r8, 0xfffffffffffffa7e
add r13, rax
cmp r8, 0x92e
jae 0x14001f99f
lea rax, [0x1402a5c60]
movzx r13d, word [rax + r13*2 - 0xb04]
mov eax, r13d
shr eax, 0xc
or al, 0xe0
mov byte [r14], al
mov eax, r13d
jmp 0x14001f344
mov qword [rsp + 0x40], rdx
xor ecx, ecx
xor eax, eax
jmp 0x14001f36a
cmp byte [rsp + 0xe0], 0
je 0x14001f27d
mov word [rsi + 8], 0x102
mov byte [rsi + 0xa], 0
jmp 0x14001f281
mov byte [rsi + 8], 1
jmp 0x14001f281
mov byte [rsi + 8], 0
and qword [rsi], 0
and qword [rsi + 0x10], 0
jmp 0x14001f98b
lea edx, [rax + 0x7f]
cmp dl, 0x7e
jae 0x14001f2af
add al, 0xb3
jmp 0x14001f2bd
lea ecx, [rax + 0x7f]
cmp cl, 0x20
jae 0x14001f9c5
lea ecx, [rax - 0x4d]
jmp 0x14001fa43
lea edx, [rax - 0x61]
cmp dl, 0x1a
jae 0x14001f9d2
add al, 0xb9
mov edx, eax
movzx eax, cx
imul eax, eax, 0xb2
movzx r13d, dl
add r13d, eax
lea r8, [rsp + 0x26]
mov word [r8], r13w
lea r12, [0x1402a4328]
mov edx, 0x437
mov rcx, r12
call fcn.1400233b4
mov r9, rdx
test rax, rax
je 0x14001f31c
mov rcx, r9
dec rcx
cmp rcx, 0x437
jae 0x14001fc1b
lea rax, [0x1402a4b96]
add r13w, word [rax + r9*2 - 2]
sub r13w, word [r12 + r9*2 - 2]
jmp 0x14001f335
cmp r9, 0x437
jae 0x14001fc2c
lea rax, [0x1402a4b96]
movzx r13d, word [rax + r9*2]
movzx eax, r13w
mov ecx, eax
shr ecx, 0xc
or cl, 0xe0
mov byte [r14], cl
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [r14 + 1], al
mov ecx, 3
mov eax, 2
and r13b, 0x3f
or r13b, 0x80
mov byte [r14 + rax], r13b
mov eax, 1
lea rdx, [rbp + 1]
mov qword [rsp + 0x60], rdx
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], rbp
mov r9, rbx
sub r9, rax
jb 0x14001fc70
mov r10, r15
sub r10, rcx
jb 0x14001fc82
mov rdi, rsi
lea rdx, [rax + rbp]
cmp r10, r9
mov r11, r9
cmovb r11, r10
mov qword [rsp + 0x28], r14
lea r12, [r14 + rcx]
mov r8d, edx
xor r8d, r12d
test r8b, 7
jne 0x14001f3d2
mov r13d, edx
neg r13d
and r13d, 7
lea r8, [r13 + 0x10]
cmp r8, r11
jbe 0x14001f86e
xor r8d, r8d
mov rsi, rdi
cmp r8, r11
jae 0x14001f93c
mov r14b, byte [rdx + r8]
test r14b, r14b
js 0x14001f3f3
mov byte [r12 + r8], r14b
inc r8
jmp 0x14001f3d8
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x30]
add rax, r8
lea r13, [rcx + r8]
mov qword [rsp + 0x58], r13
add rcx, r8
add rcx, 2
cmp rcx, r15
jae 0x14001fac0
inc rax
mov r12, rax
lea eax, [r14 + 0x7f]
cmp al, 0x7d
ja 0x14001f9f1
cmp r12, rbx
jae 0x14001f9e3
mov cl, byte [rbp + r12]
lea rdi, [r12 + 1]
cmp al, 0x1f
jbe 0x14001f485
lea edx, [rcx + 0x5f]
add r14b, 0x5f
movzx r8d, r14b
cmp dl, 0x5e
jae 0x14001f492
imul r15, r8, 0x5e
movzx ecx, dl
lea r8, [r15 + rcx]
add r8, 0xfffffffffffffa7e
add r15, rcx
cmp r8, 0x92e
jae 0x14001f4b0
lea rax, [0x1402a5c60]
movzx eax, word [rax + r15*2 - 0xb04]
jmp 0x14001f663
lea edx, [rcx + 0x7f]
cmp dl, 0x7e
jae 0x14001f4a1
add cl, 0xb3
jmp 0x14001f4ac
lea eax, [rcx + 0x7f]
cmp al, 0x20
jae 0x14001f503
lea eax, [rcx - 0x4d]
jmp 0x14001f5db
lea edx, [rcx - 0x61]
cmp dl, 0x1a
jae 0x14001f516
add cl, 0xb9
mov edx, ecx
jmp 0x14001f522
cmp r15d, 0xa5
jae 0x14001f5a7
lea rax, [0x1402a94ec]
movzx eax, word [rax + r15*2]
cmp ax, 0x800
jb 0x14001f74d
movzx ecx, ax
mov edx, ecx
shr edx, 0xc
or dl, 0xe0
mov r8, qword [rsp + 0x28]
mov byte [r8 + r13], dl
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [r8 + r13 + 1], cl
and al, 0x3f
or al, 0x80
mov byte [r8 + r13 + 2], al
jmp 0x14001f68d
lea eax, [rcx - 0x61]
cmp al, 0x1a
jae 0x14001f5d0
lea eax, [rcx - 0x47]
jmp 0x14001f5db
lea edx, [rcx - 0x41]
cmp dl, 0x1a
jae 0x14001fb15
movzx eax, al
imul eax, eax, 0xb2
movzx r14d, dl
add r14d, eax
mov word [rsp + 0x26], r14w
mov edx, 0x437
lea rcx, [0x1402a4328]
lea r8, [rsp + 0x26]
call fcn.1400233b4
mov r9, rdx
test rax, rax
je 0x14001f585
mov rcx, r9
dec rcx
cmp rcx, 0x437
jae 0x14001fc1b
lea rax, [0x1402a4b96]
add r14w, word [rax + r9*2 - 2]
lea rax, [0x1402a4328]
sub r14w, word [rax + r9*2 - 2]
jmp 0x14001f59e
cmp r9, 0x437
jae 0x14001fc2c
lea rax, [0x1402a4b96]
movzx r14d, word [rax + r9*2]
movzx eax, r14w
jmp 0x14001f663
lea r8, [r15 - 0xf0e]
cmp r8, 0x1318
jae 0x14001f71b
lea rax, str.OsOGP
movzx eax, word [rax + r15*2 - 0x1e1c]
jmp 0x14001f663
lea eax, [rcx - 0x41]
cmp al, 0x1a
jae 0x14001fb15
imul rdx, r8, 0x54
movzx r14d, al
add r14, rdx
cmp r14, 0xc36
jae 0x14001fb15
mov word [rsp + 0x26], r14w
mov edx, 0x217
lea rcx, [0x1402a5404]
lea r8, [rsp + 0x26]
call fcn.1400233b4
mov r9, rdx
test rax, rax
je 0x14001f646
mov rcx, r9
dec rcx
cmp rcx, 0x217
jae 0x14001fc3a
lea rax, [0x1402a5832]
add r14w, word [rax + r9*2 - 2]
lea rax, [0x1402a5404]
sub r14w, word [rax + r9*2 - 2]
jmp 0x14001f65f
cmp r9, 0x217
jae 0x14001fc4b
lea rax, [0x1402a5832]
movzx r14d, word [rax + r9*2]
movzx eax, r14w
mov ecx, eax
shr ecx, 0xc
or cl, 0xe0
mov rdx, qword [rsp + 0x28]
mov byte [rdx + r13], cl
mov ecx, eax
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [rdx + r13 + 1], cl
and al, 0x3f
or al, 0x80
mov byte [rdx + r13 + 2], al
mov eax, 3
add r13, rax
cmp rdi, rbx
jae 0x14001fa00
lea rax, [r13 + 2]
mov r15, qword [rsp + 0x50]
cmp rax, r15
jae 0x14001fa06
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x28], rax
lea rdx, [rax + r13]
mov rax, qword [rsp + 0x60]
lea r8, [rax + r12]
xor ecx, ecx
mov r14b, byte [r8 + rcx]
test r14b, r14b
js 0x14001f707
lea rax, [r12 + rcx]
add rax, 2
mov byte [rdx + rcx], r14b
cmp r14b, 0x3b
ja 0x14001f88f
cmp rax, rbx
jae 0x14001f968
lea rax, [rcx + r13]
add rax, 3
cmp rax, r15
jae 0x14001f971
inc rcx
jmp 0x14001f6c9
add r13, rcx
mov qword [rsp + 0x58], r13
add r12, rcx
add r12, 2
jmp 0x14001f41f
cmp al, 0x27
jne 0x14001f739
cmp dl, 0xf
jae 0x14001f739
lea rax, [0x1402a9636]
movzx eax, word [rax + rcx*2]
test ax, ax
jne 0x14001f74d
jmp 0x14001fbdb
cmp al, 0x28
jne 0x14001f771
cmp dl, 0x10
jae 0x14001f771
lea rax, [0x1402a9654]
movzx eax, word [rax + rcx*2]
mov ecx, eax
shr ecx, 6
or cl, 0xc0
mov rdx, qword [rsp + 0x28]
mov byte [rdx + r13], cl
and al, 0x3f
or al, 0x80
mov byte [rdx + r13 + 1], al
mov eax, 2
jmp 0x14001f692
cmp al, 0x25
jne 0x14001f78a
cmp dl, 0x44
jae 0x14001f78a
lea rax, [0x1402a9674]
movzx eax, word [rax + rcx*2]
jmp 0x14001f663
add r15, 0xffffffffffffff44
cmp r15, 0x39f
jae 0x14001fbdb
mov word [rsp + 0x26], r15w
mov edx, 0x4d
lea rcx, [0x1402a96fc]
lea r8, [rsp + 0x26]
call fcn.1400233b4
mov r9, rdx
test rax, rax
je 0x14001f7ee
mov rcx, r9
dec rcx
cmp rcx, 0x4d
jae 0x14001fc5f
lea rax, [0x1402a9798]
add r15w, word [rax + r9*2 - 2]
lea rax, [0x1402a96fc]
sub r15w, word [rax + r9*2 - 2]
jmp 0x14001f804
cmp r9, 0x4d
jae 0x14001fc91
lea rax, [0x1402a9798]
movzx r15d, word [rax + r9*2]
cmp r15w, 0x80
jb 0x14001fbdb
cmp r15w, 0x800
jae 0x14001f83b
mov eax, r15d
shr eax, 6
or al, 0xc0
mov rcx, qword [rsp + 0x28]
mov byte [rcx + r13], al
and r15b, 0x3f
or r15b, 0x80
mov byte [rcx + r13 + 1], r15b
jmp 0x14001f767
movzx eax, r15w
mov ecx, eax
shr ecx, 0xc
or cl, 0xe0
mov rdx, qword [rsp + 0x28]
mov byte [rdx + r13], cl
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rdx + r13 + 1], al
and r15b, 0x3f
or r15b, 0x80
mov byte [rdx + r13 + 2], r15b
jmp 0x14001f68d
xor r8d, r8d
mov rsi, rdi
cmp r13, r8
je 0x14001f8a4
mov r14b, byte [rdx + r8]
test r14b, r14b
js 0x14001f3f8
mov byte [r12 + r8], r14b
inc r8
jmp 0x14001f874
add rcx, r13
inc rcx
mov qword [rsp + 0x58], rcx
mov r14, qword [rsp + 0x28]
jmp 0x14001f37d
lea r14, [r11 - 0x10]
mov rsi, qword [rsp + 0x28]
lea r13, [rsi + rcx]
add r13, 8
mov rsi, qword [rdx + r8]
mov rbp, qword [rdx + r8 + 8]
mov qword [r13 + r8 - 8], rsi
mov qword [r13 + r8], rbp
movabs rbx, 0x8080808080808080
and rsi, rbx
and rbp, rbx
mov rbx, rbp
or rbx, rsi
jne 0x14001f8ee
add r8, 0x10
cmp r8, r14
jbe 0x14001f8b5
jmp 0x14001f3d5
test rsi, rsi
je 0x14001f90a
bsf r9, rsi
shr r9d, 3
mov rsi, rdi
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x30]
jmp 0x14001f930
test rbp, rbp
je 0x14001f915
bsf r9, rbp
jmp 0x14001f91b
mov r9d, 0x40
mov rsi, rdi
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x30]
shr r9d, 3
add r9d, 8
add r8, r9
mov r14b, byte [rdx + r8]
jmp 0x14001f3fd
xor edx, edx
cmp r10, r9
setb dl
add rax, r11
add rcx, r11
mov r13, rcx
lea rcx, [rsp + 0x48]
and ecx, 0xffff00
or rcx, rdx
mov qword [rsi], rax
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], r13
jmp 0x14001f98b
mov byte [rsi + 8], 0
mov qword [rsi], rbx
jmp 0x14001f980
mov byte [rsi + 8], 1
lea rax, [r12 + rcx]
add rax, 2
mov qword [rsi], rax
lea rax, [rcx + r13]
inc rax
mov qword [rsi + 0x10], rax
mov rax, rsi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp r13d, 0xa5
jae 0x14001fa12
lea rax, [0x1402a94ec]
movzx r13d, word [rax + r13*2]
cmp r13w, 0x800
jae 0x14001f335
jmp 0x14001fb41
lea ecx, [rax - 0x61]
cmp cl, 0x1a
jae 0x14001fa3b
lea ecx, [rax - 0x47]
jmp 0x14001fa43
lea edx, [rax - 0x41]
cmp dl, 0x1a
jb 0x14001f2bf
jmp 0x14001fa9b
cmp byte [rsp + 0xe0], 0
je 0x14001fae3
mov word [rsi + 8], 0x102
mov byte [rsi + 0xa], 0
jmp 0x14001fb23
mov byte [rsi + 8], 0
jmp 0x14001fa0a
mov byte [rsi + 8], 1
mov qword [rsi], rdi
jmp 0x14001f962
lea r8, [r13 - 0xf0e]
cmp r8, 0x1318
jae 0x14001faf4
lea rax, str.OsOGP
movzx r13d, word [rax + r13*2 - 0x1e1c]
jmp 0x14001f240
lea ecx, [rax - 0x41]
cmp cl, 0x1a
jae 0x14001fa9b
imul rdx, r8, 0x54
movzx r13d, cl
add r13, rdx
cmp r13, 0xc36
jae 0x14001fa9b
lea r8, [rsp + 0x26]
mov word [r8], r13w
lea r12, [0x1402a5404]
mov edx, 0x217
mov rcx, r12
call fcn.1400233b4
mov r9, rdx
test rax, rax
je 0x14001faca
mov rcx, r9
dec rcx
cmp rcx, 0x217
jae 0x14001fc3a
lea rax, [0x1402a5832]
jmp 0x14001f30e
mov byte [rsi + 8], 2
test al, al
js 0x14001faae
mov word [rsi + 9], 1
jmp 0x14001f281
mov word [rsi + 9], 2
mov qword [rsi], 1
jmp 0x14001f285
mov edx, 1
jmp 0x14001f94d
cmp r9, 0x217
jae 0x14001fc4b
lea rax, [0x1402a5832]
jmp 0x14001f330
mov rcx, qword [rsp + 0x40]
mov byte [rcx], 1
mov byte [rcx + 1], al
mov byte [rsi + 8], 0
jmp 0x14001fb23
cmp cl, 0x27
jne 0x14001fb2b
cmp dl, 0xf
jae 0x14001fb2b
lea rcx, [0x1402a9636]
movzx r13d, word [rcx + rax*2]
test r13w, r13w
jne 0x14001fb41
jmp 0x14001fc0c
mov byte [rsi + 8], 2
test cl, cl
js 0x14001fb5b
mov word [rsi + 9], 1
mov qword [rsi], r12
jmp 0x14001f962
cmp cl, 0x28
jne 0x14001fb66
cmp dl, 0x10
jae 0x14001fb66
lea rcx, [0x1402a9654]
movzx r13d, word [rcx + rax*2]
mov eax, r13d
shr eax, 6
or al, 0xc0
mov byte [r14], al
mov ecx, 2
mov eax, 1
jmp 0x14001f359
mov word [rsi + 9], 2
jmp 0x14001fa0a
cmp cl, 0x25
jne 0x14001fb81
cmp dl, 0x44
jae 0x14001fb81
lea rcx, [0x1402a9674]
movzx r13d, word [rcx + rax*2]
jmp 0x14001f240
add r13, 0xffffffffffffff44
cmp r13, 0x39f
jae 0x14001fc0c
lea r8, [rsp + 0x26]
mov word [r8], r13w
lea r12, [0x1402a96fc]
mov edx, 0x4d
mov rcx, r12
call fcn.1400233b4
mov r9, rdx
test rax, rax
je 0x14001fbea
mov rcx, r9
dec rcx
cmp rcx, 0x4d
jae 0x14001fc5f
lea rax, [0x1402a9798]
add r13w, word [rax + r9*2 - 2]
sub r13w, word [r12 + r9*2 - 2]
jmp 0x14001fc00
mov word [rsi + 8], 0x202
mov byte [rsi + 0xa], 0
jmp 0x14001fa0a
cmp r9, 0x4d
jae 0x14001fc91
lea rax, [0x1402a9798]
movzx r13d, word [rax + r9*2]
cmp r13w, 0x80
jae 0x14001f9b4
mov word [rsi + 8], 0x202
mov byte [rsi + 0xa], 0
jmp 0x14001fab4
lea r8, [0x140292428]
mov edx, 0x437
call fcn.140011c70
lea r8, [0x140292410]
mov edx, 0x437
jmp 0x14001fc57
lea r8, [0x140292428]
mov edx, 0x217
call fcn.140011c70
lea r8, [0x140292410]
mov edx, 0x217
mov rcx, r9
call fcn.140011c70
lea r8, [0x140292428]
mov edx, 0x4d
call fcn.140011c70
lea r8, [0x1402924a8]
mov rcx, rax
mov rdx, rbx
call fcn.140015fd0
lea r8, [0x1402924c0]
mov rdx, r15
call fcn.140015fd0
lea r8, [0x140292410]
mov edx, 0x4d
jmp 0x14001fc57