Function at 0x1400df330
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x30
mov ebp, r9d
mov ebx, r8d
mov rdi, rdx
mov rsi, rcx
mov r14, qword [rdx + 8]
mov rax, qword [rdx + 0x20]
mov ecx, dword [rdx + 0x28]
imul rcx, rcx, 0x38
add rax, rcx
add rax, 0xffffffffffffffc8
movzx ecx, byte [r14 + 0x44]
cmp cl, 0x14
jne 0x1400df373
or byte [rax + 0x35], 0x80
movzx ecx, byte [r14 + 0x44]
cmp word [r14 + 0x10], 0x41
je 0x1400df387
cmp cl, 6
je 0x1400df387
cmp cl, 0x2d
jne 0x1400df395
jmp 0x1400df39d
and byte [rax + 0x34], 0xbf
movzx ecx, byte [r14 + 0x44]
cmp cl, 0x2d
je 0x1400df39d
movzx ecx, cl
cmp ecx, 0x15
jne 0x1400df3a1
or byte [rax + 0x34], 8
cmp word [r14 + 0x10], 0x2f
jne 0x1400df3d2
cmp byte [r14 + 0x44], 0x51
je 0x1400df47d
cmp dword [rax + 0x14], 0
je 0x1400df3cd
movzx ecx, byte [rax + 0x34]
mov edx, ebp
shl dl, 7
and cl, 0x7f
or cl, dl
mov byte [rax + 0x34], cl
jmp 0x1400df3d2
mov ecx, dword [rdi]
mov dword [rax + 0x14], ecx
movzx ecx, byte [r14 + 0x44]
cmp cl, 6
jne 0x1400df3fe
cmp word [r14 + 0x10], 0x2f
je 0x1400df47d
movzx ecx, byte [rax + 0x34]
mov edx, ebp
shl dl, 7
and cl, 0x7f
or cl, dl
mov byte [rax + 0x34], cl
movzx ecx, byte [r14 + 0x44]
cmp cl, 0xd
jne 0x1400df42d
mov rdx, qword [r14 + 0xd0]
mov cl, 0xd
test rdx, rdx
je 0x1400df442
cmp byte [rdx + 0x44], 0xd
je 0x1400df442
movzx ecx, byte [rax + 0x34]
mov edx, ebp
shl dl, 7
and cl, 0x7f
or cl, dl
mov byte [rax + 0x34], cl
movzx ecx, byte [r14 + 0x44]
cmp cl, 1
jne 0x1400df442
cmp dword [rax + 0x24], 0
jne 0x1400df47d
mov ecx, dword [rdi]
mov dword [rax + 0x24], ecx
movzx ecx, byte [r14 + 0x44]
cmp cl, 0xd
jne 0x1400df47d
cmp word [r14 + 0x10], 0x3c
jne 0x1400df47d
test byte [r14 + 0x40], 8
jne 0x1400df479
mov rcx, r14
nop dword [rax]
mov rcx, qword [rcx + 0xd8]
test rcx, rcx
je 0x1400df47d
cmp word [rcx + 0x10], 4
je 0x1400df460
test byte [rcx + 0x40], 8
je 0x1400df47d
or byte [rax + 0x36], 2
cmp byte [rsi + 0x6b], 0
je 0x1400df496
cmp word [r14 + 0x10], 0x3c
jne 0x1400df4a2
mov ecx, dword [rdi]
mov dword [rax + 0x18], ecx
cmp byte [rsi + 0x6b], 0
jne 0x1400df4a2
cmp word [r14 + 0x10], 0x3d
jne 0x1400df60e
movzx ecx, byte [r14 + 0x44]
cmp ecx, 0x1f
je 0x1400df4d4
cmp ecx, 0x66
jne 0x1400df4cd
mov rdx, qword [r14 + 0x20]
cmp rdx, 2
jb 0x1400df4cd
mov r8, qword [r14 + 0x18]
movzx edx, word [r8 + rdx - 2]
cmp edx, 0x7b24
je case.0x1400dfa0e.20
movzx r8d, word [r14 + 0x10]
jmp 0x1400df4e0
movzx r8d, word [r14 + 0x10]
cmp r8w, 0x2e
je case.0x1400dfa0e.51
movzx edx, r8w
mov r9d, edx
or r9d, 2
cmp r9d, 0x17
jne 0x1400df5b7
movzx ecx, word [r14 + 0x10]
add ecx, 0xffffffe7
cmp ecx, 0x2d
ja case.0x1400dfa0e.51
movabs rdx, 0x200000000801
bt rdx, rcx
jae case.0x1400dfa0e.51
movzx ecx, byte [r14 + 0x44]
movzx edx, cl
cmp edx, 0x3e
jg 0x1400df52f
cmp edx, 0x1e
je 0x1400df553
cmp edx, 0x3c
je 0x1400df66f
jmp 0x1400df53d
cmp edx, 0x3f
je 0x1400df66f
cmp edx, 0x68
je 0x1400df553
xor ecx, ecx
cmp qword [r14 + 0xc0], 0
je 0x1400df54b
mov ecx, dword [rdi]
mov dword [rax + 0x20], ecx
movzx ecx, byte [r14 + 0x44]
cmp cl, 0x5e
jne 0x1400df561
or byte [rax + 0x35], 8
movzx ecx, byte [r14 + 0x44]
cmp cl, 0x1b
jne 0x1400df66f
movzx ecx, byte [rsi + 0x6c]
cmp cl, 2
je 0x1400df66f
xor edx, edx
cmp cl, 1
setne dl
add edx, edx
add edx, dword [rdi]
mov dword [rax + 8], edx
mov dword [rax + 0x10], edx
cmp byte [rsi + 0x1e3], 2
movzx ecx, byte [rax + 0x34]
jl 0x1400df669
or cl, 8
mov byte [rax + 0x34], cl
cmp byte [rsi + 0x1e3], 3
setne dl
shl dl, 4
and cl, 0xef
or cl, dl
jmp 0x1400df66c
cmp cl, 0x65
je case.0x1400dfa0e.20
cmp r8w, 0x13
je case.0x1400dfa0e.20
cmp ecx, 0x1f
je 0x1400df9f8
cmp ecx, 0x66
jne 0x1400df5ee
cmp qword [r14 + 0x20], 0
je 0x1400df5ee
mov r9, qword [r14 + 0x18]
cmp byte [r9], 0x7d
je case.0x1400dfa0e.20
cmp r8w, 0x18
ja case.0x1400dfa0e.21
mov r8d, 0x1500000
bt r8d, edx
jb case.0x1400dfa0e.20
jmp case.0x1400dfa0e.21
mov rcx, qword [r14 + 0xd0]
jmp 0x1400df627
mov rcx, qword [rcx + 0xd0]
test rcx, rcx
je 0x1400df4a2
movzx edx, word [rcx + 0x10]
cmp edx, 4
jne 0x1400df656
cmp byte [rcx + 0x44], 0x40
je 0x1400df620
mov rdx, qword [rcx + 0xd8]
test rdx, rdx
je 0x1400df620
cmp dword [rdx + 0x4c], 0
jne 0x1400df620
jmp 0x1400df4a2
cmp edx, 0x3c
jne 0x1400df4a2
mov ecx, dword [rdi]
mov dword [rax + 0x18], ecx
jmp 0x1400df4a2
and cl, 0xef
mov byte [rax + 0x34], cl
cmp byte [r14 + 0x44], 0x1b
jne 0x1400df698
cmp byte [rsi + 0x6c], 2
jne 0x1400df698
mov ecx, dword [rsi + 0x9c]
add ecx, dword [rdi + 0x6c]
mov dword [rax + 8], ecx
mov dword [rax + 0x10], ecx
cmp byte [rsi + 0x1e3], 2
jl 0x1400df698
or byte [rax + 0x34], 8
movzx ecx, byte [r14 + 0x44]
cmp cl, 0x2d
jne 0x1400df6b3
mov ecx, dword [rsi + 0x9c]
add ecx, dword [rdi + 0x6c]
mov dword [rax + 8], ecx
movzx ecx, byte [r14 + 0x44]
cmp cl, 6
setne dl
cmp cl, 0xd
setne r8b
test dl, r8b
jne 0x1400df6dc
test bpl, bpl
je 0x1400df6dc
mov ecx, dword [rdi]
mov edx, dword [r14 + 0x54]
add ecx, edx
inc ecx
mov dword [rax + 0x10], ecx
movzx ecx, byte [r14 + 0x44]
movzx edx, cl
or edx, 2
cmp edx, 0x3e
jne 0x1400df6f1
mov ecx, dword [rdi]
mov dword [rax + 0xc], ecx
movzx ecx, byte [r14 + 0x44]
cmp cl, 0x5b
jne 0x1400df704
cmp byte [rsi + 0x24d], 1
jne 0x1400df704
mov ecx, dword [rdi]
mov dword [rax + 0x10], ecx
mov r15, r14
nop word [rax + rax]
mov r15, qword [r15 + 0xd0]
test r15, r15
je 0x1400df724
cmp word [r15 + 0x10], 4
je 0x1400df710
cmp word [r14 + 0x10], 4
jne 0x1400df75b
test r15, r15
je 0x1400df829
movzx ecx, byte [r15 + 0x44]
cmp cl, 6
je 0x1400df74b
movzx edx, cl
cmp edx, 0xd
jne 0x1400df931
test bpl, bpl
je 0x1400df7f7
xor ecx, ecx
jmp 0x1400df81d
test r15, r15
je 0x1400df72c
mov ecx, 0x1000
and ecx, dword [r14 + 0x40]
jne 0x1400df72c
cmp word [r15 + 0x10], 0x17
setne dl
movzx ecx, byte [r15 + 0x44]
test cl, cl
setne r8b
test dl, r8b
jne 0x1400df73a
cmp cl, 0x1f
je 0x1400df73a
mov r8d, dword [rdi + 0x28]
cmp r8, 2
jb 0x1400df73a
test byte [rax + 0x35], 0x10
jne 0x1400df73a
lea rdx, [r8 - 2]
mov rcx, qword [rdi + 0x20]
imul r9, rdx, 0x38
test byte [rcx + r9 + 0x35], 0x20
je 0x1400df7e9
test bpl, bpl
je 0x1400df7e9
imul r8, r8, 0x38
lea r9, [rcx + r8]
add r9, 0xffffffffffffffc8
cmp rcx, r9
je 0x1400df7e9
add r8, 0xffffffffffffffc8
xor edx, edx
nop dword [rax]
or byte [rcx + rdx + 0x34], 0x20
add rdx, 0x38
cmp r8, rdx
jne 0x1400df7d0
mov edx, dword [rdi + 0x28]
mov rcx, qword [rdi + 0x20]
add rdx, 0xfffffffffffffffe
imul rdx, rdx, 0x38
and byte [rcx + rdx + 0x35], 0xdf
jmp 0x1400df72c
cmp word [r15 + 0x10], 0x15
jne 0x1400df81b
cmp dword [r15 + 0x60], 1
ja 0x1400df81b
cmp byte [rsi + 0x5f], 0
je 0x1400df754
cmp byte [r14 + 0x44], 0x3e
jne 0x1400df754
mov cl, 0x20
movzx edx, byte [rax + 0x35]
and dl, 0xdf
or dl, cl
mov byte [rax + 0x35], dl
mov rcx, rsi
mov rdx, rdi
mov r8d, ebp
call fcn.1400e2780
mov rcx, rsi
mov rdx, rdi
call fcn.1400e2da0
mov rax, qword [rdi + 0x20]
mov ecx, dword [rdi + 0x28]
imul rcx, rcx, 0x38
movzx r12d, byte [rax + rcx - 4]
mov rcx, rsi
mov rdx, rdi
xor r8d, r8d
call fcn.1400e2f30
mov rcx, qword [rdi + 8]
mov eax, dword [rcx + 0xb8]
test eax, eax
je 0x1400df89c
nop
mov ecx, dword [rdi + 0x28]
cmp rcx, 1
je 0x1400df898
mov rdx, qword [rdi + 0x20]
imul r8, rcx, 0x38
mov r8d, dword [rdx + r8 - 8]
dec ecx
mov dword [rdi + 0x28], ecx
imul rcx, rcx, 0x38
mov dword [rdx + rcx - 8], r8d
dec eax
jne 0x1400df870
mov rcx, qword [rdi + 8]
test byte [rcx + 0x41], 0x10
je 0x1400df8c0
cmp byte [rsi + 0x146], 0
je 0x1400df8c0
mov eax, dword [rsi + 0x148]
mov rcx, qword [rdi + 0x20]
mov edx, dword [rdi + 0x28]
imul rdx, rdx, 0x38
sub dword [rcx + rdx - 0x2c], eax
movzx eax, byte [r14 + 0x44]
cmp al, 0x50
jne 0x1400df8db
cmp dword [rdi + 0x1c], 0
jne 0x1400df8e9
mov eax, dword [rdi]
inc eax
mov dword [rdi + 0x1c], eax
movzx eax, byte [r14 + 0x44]
cmp al, 0x1a
jne 0x1400df8e9
cmp dword [rdi + 0x1c], 0
je 0x1400df973
movzx eax, word [r14 + 0x10]
lea ecx, [rax - 4]
cmp ecx, 0x3e
ja 0x1400df928
mov edx, 0x7600
bt rdx, rcx
jae 0x1400df918
cmp dword [rdi + 0x1c], 0
je 0x1400df96f
cmp eax, 0x12
ja 0x1400df928
mov ecx, 0x76000
bt ecx, eax
jb 0x1400df97a
jmp 0x1400df928
movabs rax, 0x4000000000000003
bt rax, rcx
jb 0x1400df97a
mov dword [rdi + 0x1c], 0
jmp 0x1400df97a
movzx r8d, word [r15 + 0x10]
add r8d, 0xffffffeb
cmp r8d, 0x2c
ja 0x1400df829
movabs r9, 0x110000000001
bt r9, r8
jae 0x1400df829
cmp cl, 0x1f
je 0x1400df829
cmp edx, 0x4d
je 0x1400df829
jmp 0x1400df74b
mov eax, dword [rdi]
jmp 0x1400df977
mov eax, dword [rdi]
inc eax
mov dword [rdi + 0x1c], eax
mov eax, dword [r14 + 0x54]
add dword [rdi], eax
mov rax, qword [rdi + 8]
mov rax, qword [rax + 0xd8]
mov qword [rdi + 8], rax
test r12b, 0x60
mov byte [rsp + 0x28], bpl
sete byte [rsp + 0x20]
mov rcx, rsi
mov rdx, r14
mov r8, rdi
mov r9d, ebx
call fcn.1400e36b0
mov ebp, eax
mov rcx, qword [r14 + 0x28]
test rcx, rcx
je 0x1400df9c8
mov rax, qword [rcx]
mov rdx, rdi
mov r8, rsi
mov r9d, ebx
call qword [rax + 0x10]
test r15, r15
je 0x1400df9e7
mov rcx, qword [r15 + 0x28]
test rcx, rcx
je 0x1400df9e7
mov rax, qword [rcx]
mov rdx, rdi
mov r8, rsi
mov r9d, ebx
call qword [rax + 0x18]
add ebp, eax
mov eax, ebp
add rsp, 0x30
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
add edx, 0xffffffec
cmp edx, 0x1f
ja case.0x1400dfa0e.21
lea r8, [0x1400dfa38]
movsxd rdx, dword [r8 + rdx*4]
add rdx, r8
jmp rdx
cmp cl, 0x53
je case.0x1400dfa0e.20
cmp ecx, 0x64
je case.0x1400dfa0e.20
mov ecx, dword [r14 + 0x7c]
mov edx, dword [rdi + 0x18]
cmp ecx, edx
cmovb edx, ecx
mov dword [rdi + 0x18], edx
jmp case.0x1400dfa0e.20