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

Disassembly:
push rbx
push rbp
push rsi
push r12
push r13
push r15
sub rsp, 0x28
mov r9, qword [rdx]
mov r13, rcx
mov r15, r8
mov r10, rdx
xorps xmm2, xmm2
xorps xmm1, xmm1
mov rax, qword [r9]
mov rcx, rax
sub rcx, qword [r9 + 8]
mov qword [rsp + 0x78], rcx
cmp rax, qword [r9 + 0x10]
je 0x14000b17b
cmp byte [rax], 0x2d
jne 0x14000b17b
inc rax
mov r12b, 1
mov qword [r9], rax
mov r9, qword [rdx]
mov rax, qword [r9]
jmp 0x14000b17e
xor r12b, r12b
xor ebp, ebp
mov qword [rsp + 0x60], rdi
xor sil, sil
mov qword [rsp + 0x20], r14
mov ebx, ebp
mov byte [rsp + 0x68], sil
mov r11d, ebp
cmp rax, qword [r9 + 0x10]
je 0x14000b97e
movsx ecx, byte [rax]
movsd xmm3, qword [0x1401259a8]
cmp cl, 0x30
jne 0x14000b281
inc rax
mov edi, ebp
mov qword [r9], rax
mov rdx, qword [rdx]
xor r14b, r14b
mov rax, qword [rdx]
mov esi, ebp
cmp rax, qword [rdx + 0x10]
je 0x14000b577
cmp byte [rax], 0x2e
jne 0x14000b577
inc rax
mov qword [rdx], rax
mov rcx, qword [r10]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b566
movzx edx, byte [rax]
cmp dl, 0x30
jl 0x14000b566
cmp dl, 0x39
jg 0x14000b566
movzx r9d, byte [rsp + 0x68]
test r14b, r14b
jne 0x14000b510
test r9b, r9b
mov eax, edi
movabs r8, 0x1fffffffffffff
cmovne rax, rbx
mov rbx, rax
nop dword [rax + rax]
mov rdx, qword [r10]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000b4e1
movsx ecx, byte [rax]
cmp cl, 0x30
jl 0x14000b4e1
cmp cl, 0x39
jg 0x14000b4e1
cmp rbx, r8
ja 0x14000b4e1
inc rax
sub ecx, 0x30
mov qword [rdx], rax
dec esi
lea rax, [rbx + rbx*4]
lea rbx, [rcx + rax*2]
lea eax, [r11 + 1]
test rbx, rbx
cmove eax, r11d
mov r11d, eax
jmp 0x14000b230
cmp cl, 0x31
jl 0x14000b97e
cmp cl, 0x39
jg 0x14000b97e
inc rax
lea edi, [rcx - 0x30]
mov qword [r9], rax
mov rdx, qword [rdx]
test r12b, r12b
je 0x14000b2fd
nop dword [rax]
nop dword [rax + rax]
mov rdx, qword [r10]
mov rcx, qword [rdx]
cmp rcx, qword [rdx + 0x10]
je 0x14000b1c0
movsx r8d, byte [rcx]
mov rax, rdx
cmp r8b, 0x30
jl 0x14000b353
cmp r8b, 0x39
jg 0x14000b353
cmp edi, 0xccccccc
jb 0x14000b2e7
jne 0x14000b349
cmp r8b, 0x38
jg 0x14000b349
lea edi, [rdi + rdi*4]
inc r11d
lea edi, [rdi - 0x18]
lea rax, [rcx + 1]
lea edi, [r8 + rdi*2]
mov qword [rdx], rax
jmp 0x14000b2b0
mov rcx, qword [rdx]
mov r9, rdx
cmp rcx, qword [rdx + 0x10]
je 0x14000b1c0
movsx r8d, byte [rcx]
mov rax, rdx
cmp r8b, 0x30
jl 0x14000b353
cmp r8b, 0x39
jg 0x14000b353
cmp edi, 0x19999999
jb 0x14000b330
jne 0x14000b349
cmp r8b, 0x35
jg 0x14000b349
lea edi, [rdi + rdi*4]
inc r11d
lea rax, [rcx + 1]
lea edi, [rdi - 0x18]
mov qword [r9], rax
mov rdx, qword [r10]
lea edi, [r8 + rdi*2]
jmp 0x14000b2fd
mov sil, 1
mov ebx, edi
mov byte [rsp + 0x68], sil
xor r14b, r14b
test sil, sil
je 0x14000b3ec
test r12b, r12b
je 0x14000b447
movabs r8, 0xccccccccccccccc
nop dword [rax]
nop word [rax + rax]
mov rdx, qword [r10]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000b1c3
movsx ecx, byte [rax]
cmp cl, 0x30
jl 0x14000b3e9
cmp cl, 0x39
jg 0x14000b3e9
cmp rbx, r8
jb 0x14000b3a9
jne 0x14000b3bf
cmp cl, 0x38
jg 0x14000b3bf
inc rax
sub ecx, 0x30
mov qword [rdx], rax
inc r11d
lea rax, [rbx + rbx*4]
lea rbx, [rcx + rax*2]
jmp 0x14000b380
xorps xmm1, xmm1
test rbx, rbx
js 0x14000b3ce
cvtsi2sd xmm1, rbx
jmp 0x14000b3e6
mov rax, rbx
mov rcx, rbx
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r14b, 1
mov rax, rdx
mov rdx, rax
test r14b, r14b
je 0x14000b1c3
nop dword [rax + rax]
mov rcx, qword [r10]
mov rdx, rcx
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b1c3
movsx r8d, byte [rax]
cmp r8b, 0x30
jl 0x14000b1c3
cmp r8b, 0x39
jg 0x14000b1c3
inc rax
mulsd xmm1, xmm3
mov qword [rcx], rax
lea eax, [r8 - 0x30]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
jmp 0x14000b400
movabs r9, 0x1999999999999999
nop dword [rax]
nop word [rax + rax]
mov rdx, qword [r10]
mov r8, qword [rdx]
cmp r8, qword [rdx + 0x10]
je 0x14000b1c3
movsx ecx, byte [r8]
mov rax, rdx
cmp cl, 0x30
jl 0x14000b3ec
cmp cl, 0x39
jg 0x14000b3ec
cmp rbx, r9
jb 0x14000b495
jne 0x14000b4ac
cmp cl, 0x35
jg 0x14000b4ac
lea rax, [r8 + 1]
sub ecx, 0x30
mov qword [rdx], rax
inc r11d
lea rax, [rbx + rbx*4]
lea rbx, [rcx + rax*2]
jmp 0x14000b460
xorps xmm1, xmm1
test rbx, rbx
js 0x14000b4c1
cvtsi2sd xmm1, rbx
mov r14b, 1
jmp 0x14000b400
mov rax, rbx
mov rcx, rbx
shr rcx, 1
and eax, 1
or rcx, rax
mov r14b, 1
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
jmp 0x14000b400
xorps xmm1, xmm1
test rbx, rbx
js 0x14000b4f0
cvtsi2sd xmm1, rbx
jmp 0x14000b508
mov rax, rbx
mov rcx, rbx
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r14b, 1
nop dword [rax + rax]
mov rcx, qword [r10]
mov rdx, rcx
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b57d
movsx r8d, byte [rax]
cmp r8b, 0x30
jl 0x14000b57d
cmp r8b, 0x39
jg 0x14000b57d
lea rdx, [rax + 1]
cmp r11d, 0x11
jge 0x14000b561
lea eax, [r8 - 0x30]
mulsd xmm1, xmm3
dec esi
movd xmm0, eax
lea eax, [r11 + 1]
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm1
comisd xmm0, xmm2
movaps xmm1, xmm0
cmovbe eax, r11d
mov r11d, eax
mov qword [rcx], rdx
jmp 0x14000b510
sub rax, qword [rcx + 8]
mov dword [r13 + 0x30], 0xe
jmp 0x14000b98a
movzx r9d, byte [rsp + 0x68]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000b6a7
cmp byte [rax], 0x65
je 0x14000b598
cmp byte [rax], 0x45
jne 0x14000b6a7
inc rax
mov qword [rdx], rax
test r14b, r14b
jne 0x14000b5d6
test r9b, r9b
mov eax, edi
mov rcx, rbx
xorps xmm1, xmm1
cmove rcx, rax
test rcx, rcx
js 0x14000b5be
cvtsi2sd xmm1, rcx
jmp 0x14000b5d3
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r14b, 1
mov rcx, qword [r10]
xor r8b, r8b
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b78c
cmp byte [rax], 0x2b
je 0x14000b5f6
cmp byte [rax], 0x2d
jne 0x14000b602
mov r8b, 1
inc rax
mov qword [rcx], rax
mov rcx, qword [r10]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b78c
movsx edx, byte [rax]
cmp dl, 0x30
jl 0x14000b78c
cmp dl, 0x39
jg 0x14000b78c
inc rax
lea ebp, [rdx - 0x30]
mov qword [rcx], rax
test r8b, r8b
je 0x14000b72f
mov r8, qword [r10]
lea ecx, [rsi + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
mov rax, qword [r8]
cmp rax, qword [r8 + 0x10]
je 0x14000b6a5
movsx edx, byte [rax]
cmp dl, 0x30
jl 0x14000b6a5
cmp dl, 0x39
jg 0x14000b6a5
lea ebp, [rbp + rbp*4]
inc rax
lea ebp, [rbp - 0x18]
mov qword [r8], rax
mov r8, qword [r10]
lea ebp, [rdx + rbp*2]
cmp ebp, r9d
jle 0x14000b653
mov rcx, r8
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b653
movzx edx, byte [rax]
cmp dl, 0x30
jl 0x14000b653
cmp dl, 0x39
jg 0x14000b653
inc rax
mov qword [rcx], rax
mov r8, qword [r10]
jmp 0x14000b681
neg ebp
test r14b, r14b
je 0x14000b7c4
lea ecx, [rsi + rbp]
cmp ecx, 0xfffffecc
jge 0x14000b79d
divsd xmm1, qword [0x1401259c0]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x14000b6fe
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x140123d80]
movaps xmm2, xmm1
sub rcx, rax
divsd xmm2, qword [rcx]
comisd xmm2, xmmword [0x1401259c8]
ja 0x14000b77a
test r12b, r12b
je 0x14000b70a
xorps xmm2, xmmword [0x1401259f0]
movaps xmm1, xmm2
mov rcx, r15
call fcn.14000f410
test al, al
jne 0x14000b98e
mov rax, qword [rsp + 0x78]
mov dword [r13 + 0x30], 0x10
jmp 0x14000b98a
mov r8d, 0x134
sub r8d, esi
nop dword [rax + rax]
mov rcx, qword [r10]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000b6a7
movsx edx, byte [rax]
cmp dl, 0x30
jl 0x14000b6a7
cmp dl, 0x39
jg 0x14000b6a7
lea ebp, [rbp + rbp*4]
inc rax
lea ebp, [rbp - 0x18]
mov qword [rcx], rax
lea ebp, [rdx + rbp*2]
cmp ebp, r8d
jle 0x14000b740
mov rax, qword [rsp + 0x78]
mov dword [r13 + 0x30], 0xd
jmp 0x14000b98a
sub rax, qword [rcx + 8]
mov dword [r13 + 0x30], 0xf
jmp 0x14000b98a
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x14000b6df
lea rcx, [0x140123d80]
movaps xmm2, xmm1
mulsd xmm2, qword [rax + rcx]
jmp 0x14000b6f0
cmp byte [rsp + 0x68], 0
mov rax, qword [r15 + 0x40]
je 0x14000b8eb
test r12b, r12b
je 0x14000b873
mov rdx, qword [r15 + 0x38]
neg rbx
sub rax, rdx
cmp rax, 0x10
jge 0x14000b7fe
mov edx, 1
lea rcx, [r15 + 0x20]
call fcn.14000aed0
mov rdx, qword [r15 + 0x38]
lea rax, [rdx + 0x10]
xorps xmm0, xmm0
mov qword [r15 + 0x38], rax
mov eax, 0x96
movups xmmword [rdx], xmm0
mov word [rdx + 0xe], ax
mov qword [rdx], rbx
test rbx, rbx
js 0x14000b858
movabs r8, 0xffffffff00000000
mov eax, 0x196
mov word [rdx + 0xe], ax
test r8, rbx
jne 0x14000b83e
mov eax, 0x1d6
mov word [rdx + 0xe], ax
test rbx, 0xffffffff80000000
jne 0x14000b98e
or ax, 0x20
mov word [rdx + 0xe], ax
jmp 0x14000b98e
cmp rbx, 0xffffffff80000000
jl 0x14000b98e
mov eax, 0xb6
mov word [rdx + 0xe], ax
jmp 0x14000b98e
mov rcx, qword [r15 + 0x38]
sub rax, rcx
cmp rax, 0x10
jge 0x14000b892
mov edx, 1
lea rcx, [r15 + 0x20]
call fcn.14000aed0
mov rcx, qword [r15 + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [r15 + 0x38], rax
mov eax, 0x116
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], ax
mov qword [rcx], rbx
test rbx, rbx
js 0x14000b8ba
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs r8, 0xffffffff00000000
test r8, rbx
jne 0x14000b8d1
or ax, 0x40
mov word [rcx + 0xe], ax
test rbx, 0xffffffff80000000
jne 0x14000b98e
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x14000b98e
mov rcx, qword [r15 + 0x38]
sub rax, rcx
test r12b, r12b
je 0x14000b93b
neg edi
cmp rax, 0x10
jge 0x14000b911
mov edx, 1
lea rcx, [r15 + 0x20]
call fcn.14000aed0
mov rcx, qword [r15 + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [r15 + 0x38], rax
test edi, edi
movsxd rax, edi
mov edx, 0x1f6
movups xmmword [rcx], xmm0
mov qword [rcx], rax
mov eax, 0xb6
cmovns ax, dx
mov word [rcx + 0xe], ax
jmp 0x14000b98e
cmp rax, 0x10
jge 0x14000b953
mov edx, 1
lea rcx, [r15 + 0x20]
call fcn.14000aed0
mov rcx, qword [r15 + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [r15 + 0x38], rax
mov eax, edi
shr edi, 0x1a
not di
movups xmmword [rcx], xmm0
mov qword [rcx], rax
and di, 0x20
mov eax, 0x1d6
or di, ax
mov word [rcx + 0xe], di
jmp 0x14000b98e
sub rax, qword [r9 + 8]
mov dword [r13 + 0x30], 3
mov qword [r13 + 0x38], rax
mov r14, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x60]
add rsp, 0x28
pop r15
pop r13
pop r12
pop rsi
pop rbp
pop rbx
ret
mov qword [rsp + 0x18], r8
push rbx
push rbp
push rsi
push rdi
push r12
push r13
sub rsp, 0x48
mov rsi, rdx
mov rbp, r8
mov rdx, qword [rdx]
mov r13, rcx
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000b9dc
inc rax
mov qword [rdx], rax
mov rdx, qword [r8 + 0x38]
lea r12, [r8 + 0x20]
mov rax, qword [r12 + 0x20]
sub rax, rdx
cmp rax, 0x10
jge 0x14000ba04
mov edx, 1
mov rcx, r12
call fcn.14000aed0
mov rdx, qword [r12 + 0x18]
lea rax, [rdx + 0x10]
xorps xmm0, xmm0
mov qword [r12 + 0x18], rax
mov ebx, 3
movups xmmword [rdx], xmm0
mov word [rdx + 0xe], bx
movabs rdi, 0x100002600
mov rcx, rsi
call fcn.14000f970
cmp al, 0x20
ja 0x14000ba4c
bt rdi, rax
jae 0x14000ba4c
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000ba26
inc rax
mov qword [rcx], rax
jmp 0x14000ba26
cmp dword [r13 + 0x30], 0
jne 0x14000bf76
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000ba99
cmp byte [rax], 0x7d
jne 0x14000ba99
inc rax
mov qword [rcx], rax
movabs rcx, 0xffff000000000000
mov rax, qword [rbp + 0x38]
mov word [rax - 2], bx
and qword [rax - 8], rcx
mov qword [rax - 0x10], 0
add rsp, 0x48
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov qword [rsp + 0x80], r14
mov qword [rsp + 0x40], r15
mov dword [rsp + 0x88], 0
mov rcx, qword [rsi]
lea rbx, [0x1401258a0]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bf59
cmp byte [rax], 0x22
jne 0x14000bf59
inc rax
mov qword [rsp + 0x20], r13
mov qword [rcx], rax
xor r15d, r15d
mov rbp, r13
mov dword [rsp + 0x28], r15d
mov rcx, rsi
call fcn.14000f970
mov rcx, qword [rsi]
cmp al, 0x5c
jne 0x14000bc60
mov rax, qword [rcx]
mov r14, rax
sub r14, qword [rcx + 8]
cmp rax, qword [rcx + 0x10]
je 0x14000bb10
inc rax
mov qword [rcx], rax
mov rcx, rsi
call fcn.14000f970
movzx edx, al
cmp byte [rdx + rbx], 0
je 0x14000bb3c
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bb33
inc rax
mov qword [rcx], rax
movzx ebx, byte [rdx + rbx]
jmp 0x14000bc86
cmp al, 0x75
jne 0x14000bd3c
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bb56
inc rax
mov qword [rcx], rax
xor ebx, ebx
xor edi, edi
nop word [rax + rax]
mov rcx, rsi
call fcn.14000f970
movsx edx, al
shl ebx, 4
add ebx, edx
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x14000bb7d
add ebx, 0xffffffd0
jmp 0x14000bb98
lea eax, [rdx - 0x41]
cmp al, 5
ja 0x14000bb89
add ebx, 0xffffffc9
jmp 0x14000bb98
sub dl, 0x61
cmp dl, 5
ja 0x14000bd32
add ebx, 0xffffffa9
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bbaa
inc rax
mov qword [rcx], rax
inc edi
cmp edi, 4
jl 0x14000bb60
cmp dword [r13 + 0x30], 0
jne 0x14000bcde
lea edi, [rbx - 0xd800]
cmp edi, 0x3ff
ja 0x14000bc3e
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bcd2
cmp byte [rax], 0x5c
jne 0x14000bcd2
inc rax
mov qword [rcx], rax
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bcd2
cmp byte [rax], 0x75
jne 0x14000bcd2
inc rax
mov r8, r14
mov qword [rcx], rax
mov rdx, rsi
mov rcx, r13
call fcn.14000b080
cmp dword [r13 + 0x30], 0
jne 0x14000bcde
add eax, 0xffff2400
cmp eax, 0x3ff
ja 0x14000bcc1
mov ebx, edi
shl ebx, 0xa
or ebx, eax
add ebx, 0x10000
mov edx, ebx
lea rcx, [rsp + 0x20]
call fcn.14000ac80
mov r15d, dword [rsp + 0x28]
lea rbx, [0x1401258a0]
mov rbp, qword [rsp + 0x20]
jmp 0x14000bae7
cmp al, 0x22
je 0x14000bd7f
cmp al, 0x20
jb 0x14000bd46
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
jne 0x14000bc7d
xor bl, bl
jmp 0x14000bc86
movzx ebx, byte [rax]
inc rax
mov qword [rcx], rax
mov rcx, qword [rbp + 0x18]
mov rax, qword [rbp + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x14000bca8
mov edx, 1
mov rcx, rbp
call fcn.14000ae20
mov rcx, qword [rbp + 0x18]
lea rax, [rcx + 1]
inc r15d
mov qword [rbp + 0x18], rax
mov byte [rcx], bl
lea rbx, [0x1401258a0]
jmp 0x14000bae2
mov dword [r13 + 0x30], 9
mov qword [r13 + 0x38], r14
jmp 0x14000bdbe
mov dword [r13 + 0x30], 9
mov qword [r13 + 0x38], r14
mov rbp, qword [rsp + 0x90]
cmp dword [r13 + 0x30], 0
jne 0x14000bf69
movabs rdi, 0x100002600
nop dword [rax + rax]
mov rcx, rsi
call fcn.14000f970
cmp al, 0x20
ja 0x14000be3f
movsx rax, al
bt rdi, rax
jae 0x14000be3f
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bd00
inc rax
mov qword [rcx], rax
jmp 0x14000bd00
mov dword [r13 + 0x30], 8
jmp 0x14000bcda
mov dword [r13 + 0x30], 0xa
jmp 0x14000bcda
mov rbp, qword [rsp + 0x90]
test al, al
mov rax, qword [rcx]
jne 0x14000bd6a
sub rax, qword [rcx + 8]
mov qword [r13 + 0x38], rax
mov dword [r13 + 0x30], 0xb
jmp 0x14000bce6
sub rax, qword [rcx + 8]
mov qword [r13 + 0x38], rax
mov dword [r13 + 0x30], 0xc
jmp 0x14000bce6
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bd8e
inc rax
mov qword [rcx], rax
mov rcx, qword [rbp + 0x18]
mov rax, qword [rbp + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x14000bdb0
mov edx, 1
mov rcx, rbp
call fcn.14000ae20
mov rcx, qword [rbp + 0x18]
lea rax, [rcx + 1]
inc r15d
mov qword [rbp + 0x18], rax
mov byte [rcx], 0
mov eax, dword [r13 + 0x30]
test eax, eax
jne 0x14000bcde
mov eax, r15d
lea edi, [r15 - 1]
sub qword [rbp + 0x18], rax
mov rcx, qword [r12 + 0x18]
mov rax, qword [r12 + 0x20]
mov rbx, qword [rbp + 0x18]
sub rax, rcx
cmp rax, 0x10
jge 0x14000bdfe
mov edx, 1
mov rcx, r12
call fcn.14000aed0
mov rcx, qword [r12 + 0x18]
mov rbp, qword [rsp + 0x90]
lea rax, [rcx + 0x10]
mov qword [r12 + 0x18], rax
lea rdx, [rsp + 0x30]
test rbx, rbx
mov dword [rsp + 0x38], edi
xorps xmm0, xmm0
lea rax, [0x140125690]
mov r8, qword [rbp + 0x10]
cmovne rax, rbx
mov qword [rsp + 0x30], rax
movups xmmword [rcx], xmm0
call fcn.14000fd10
jmp 0x14000bce6
cmp dword [r13 + 0x30], 0
jne 0x14000bf69
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bf4b
cmp byte [rax], 0x3a
jne 0x14000bf4b
inc rax
mov qword [rcx], rax
nop dword [rax]
mov rcx, rsi
call fcn.14000f970
cmp al, 0x20
ja 0x14000be94
movsx rax, al
bt rdi, rax
jae 0x14000be94
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000be70
jmp 0x14000be63
cmp dword [r13 + 0x30], 0
jne 0x14000bf69
mov r8, rbp
mov rdx, rsi
mov rcx, r13
call fcn.14000c450
cmp dword [r13 + 0x30], 0
jne 0x14000bf69
mov rcx, rsi
call fcn.14000c940
cmp dword [r13 + 0x30], 0
jne 0x14000bf69
mov rcx, qword [rsi]
mov ebx, dword [rsp + 0x88]
inc ebx
mov dword [rsp + 0x88], ebx
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000bf3d
movzx edx, byte [rax]
cmp dl, 0x2c
jne 0x14000bf0c
inc rax
mov rdx, rsi
mov qword [rcx], rax
mov rcx, r13
call fcn.14000c990
cmp dword [r13 + 0x30], 0
jne 0x14000bf69
jmp 0x14000bab1
cmp dl, 0x7d
jne 0x14000bf3d
inc rax
mov edx, ebx
mov qword [rcx], rax
mov rcx, rbp
call fcn.14000f500
test al, al
jne 0x14000bf69
mov rax, qword [rsi]
mov rcx, qword [rax]
sub rcx, qword [rax + 8]
mov qword [r13 + 0x38], rcx
mov dword [r13 + 0x30], 0x10
jmp 0x14000bf69
sub rax, qword [rcx + 8]
mov dword [r13 + 0x30], 6
jmp 0x14000bf65
sub rax, qword [rcx + 8]
mov dword [r13 + 0x30], 5
jmp 0x14000bf65
sub rax, qword [rcx + 8]
mov dword [r13 + 0x30], 4
mov qword [r13 + 0x38], rax
mov r14, qword [rsp + 0x80]
mov r15, qword [rsp + 0x40]
add rsp, 0x48
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov r14, rcx
movzx r12d, r9b
mov rcx, qword [rdx]
mov r13, r8
mov rsi, rdx
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c176
inc rax
mov qword [rcx], rax
mov rbx, r14
mov qword [rsp + 0x60], rbp
xor edi, edi
mov qword [rsp + 0x20], rbx
mov dword [rsp + 0x28], edi
lea r15, [0x1401258a0]
mov rcx, rsi
call fcn.14000f970
mov rcx, qword [rsi]
cmp al, 0x5c
jne 0x14000c2ba
mov rax, qword [rcx]
mov rbp, rax
sub rbp, qword [rcx + 8]
cmp rax, qword [rcx + 0x10]
je 0x14000c1b9
inc rax
mov qword [rcx], rax
mov rcx, rsi
call fcn.14000f970
movzx edx, al
cmp byte [rdx + r15], 0
je 0x14000c1e7
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c1dd
inc rax
mov qword [rcx], rax
movzx ebp, byte [rdx + r15]
jmp 0x14000c2e1
cmp al, 0x75
jne 0x14000c33b
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c201
inc rax
mov qword [rcx], rax
mov r8, rbp
mov rdx, rsi
mov rcx, r14
call fcn.14000b080
cmp dword [r14 + 0x30], 0
jne 0x14000c426
lea r15d, [rax - 0xd800]
cmp r15d, 0x3ff
ja 0x14000c2a0
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c32a
cmp byte [rax], 0x5c
jne 0x14000c32a
inc rax
mov qword [rcx], rax
mov rcx, qword [rsi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c32a
cmp byte [rax], 0x75
jne 0x14000c32a
inc rax
mov r8, rbp
mov qword [rcx], rax
mov rdx, rsi
mov rcx, r14
call fcn.14000b080
cmp dword [r14 + 0x30], 0
jne 0x14000c426
lea ecx, [rax - 0xdc00]
cmp ecx, 0x3ff
ja 0x14000c319
mov eax, r15d
shl eax, 0xa
or eax, ecx
add eax, 0x10000
mov edx, eax
lea rcx, [rsp + 0x20]
call fcn.14000ac80
mov edi, dword [rsp + 0x28]
mov rbx, qword [rsp + 0x20]
jmp 0x14000c189
cmp al, 0x22
je 0x14000c37d
cmp al, 0x20
jb 0x14000c34c
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
jne 0x14000c2d8
xor bpl, bpl
jmp 0x14000c2e1
movzx ebp, byte [rax]
inc rax
mov qword [rcx], rax
mov rcx, qword [rbx + 0x18]
mov rax, qword [rbx + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x14000c303
mov edx, 1
mov rcx, rbx
call fcn.14000ae20
mov rcx, qword [rbx + 0x18]
lea rax, [rcx + 1]
inc edi
mov qword [rbx + 0x18], rax
mov byte [rcx], bpl
mov dword [rsp + 0x28], edi
jmp 0x14000c190
mov dword [r14 + 0x30], 9
mov qword [r14 + 0x38], rbp
jmp 0x14000c3bb
mov dword [r14 + 0x30], 9
mov qword [r14 + 0x38], rbp
jmp 0x14000c426
mov dword [r14 + 0x30], 0xa
mov qword [r14 + 0x38], rbp
jmp 0x14000c426
test al, al
mov rax, qword [rcx]
jne 0x14000c368
sub rax, qword [rcx + 8]
mov qword [r14 + 0x38], rax
mov dword [r14 + 0x30], 0xb
jmp 0x14000c426
sub rax, qword [rcx + 8]
mov qword [r14 + 0x38], rax
mov dword [r14 + 0x30], 0xc
jmp 0x14000c426
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c38c
inc rax
mov qword [rcx], rax
mov rcx, qword [rbx + 0x18]
mov rax, qword [rbx + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x14000c3ae
mov edx, 1
mov rcx, rbx
call fcn.14000ae20
mov rcx, qword [rbx + 0x18]
lea rax, [rcx + 1]
inc edi
mov qword [rbx + 0x18], rax
mov byte [rcx], 0
mov eax, dword [r14 + 0x30]
test eax, eax
jne 0x14000c426
mov eax, edi
lea esi, [rdi - 1]
sub qword [rbx + 0x18], rax
mov rcx, qword [r13 + 0x38]
mov rax, qword [r13 + 0x40]
mov rbx, qword [rbx + 0x18]
sub rax, rcx
cmp rax, 0x10
jge 0x14000c3f3
mov edx, 1
lea rcx, [r13 + 0x20]
call fcn.14000aed0
mov rcx, qword [r13 + 0x38]
lea rax, [rcx + 0x10]
mov dword [rsp + 0x28], esi
mov qword [r13 + 0x38], rax
lea rdx, [rsp + 0x20]
mov r8, qword [r13 + 0x10]
lea rax, [0x140125690]
test rbx, rbx
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
cmovne rax, rbx
mov qword [rsp + 0x20], rax
call fcn.14000fd10
mov rbp, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rdi
sub rsp, 0x20
mov rbx, rdx
mov rbp, r8
mov rdx, qword [rdx]
mov rdi, rcx
mov r9, qword [rdx]
mov r10, qword [rdx + 0x10]
cmp r9, r10
jne 0x14000c47b
xor eax, eax
jmp 0x14000c47f
movzx eax, byte [r9]
movsx eax, al
add eax, 0xffffffde
cmp eax, 0x59
ja case.0x14000c4ab.35
lea r8, [0x140000000]
cdqe
movzx eax, byte [r8 + rax + 0xc8e0]
mov ecx, dword [r8 + rax*4 + 0xc8c4]
add rcx, r8
jmp rcx
mov rcx, rdx
cmp r9, r10
je 0x14000c4c5
lea rax, [r9 + 1]
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rcx, rdx
mov r9, qword [rdx]
cmp r9, qword [rcx + 0x10]
je 0x14000c547
cmp byte [r9], 0x75
jne 0x14000c547
lea rax, [r9 + 1]
mov qword [rcx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x6c
jne 0x14000c547
inc rax
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x6c
jne 0x14000c547
inc rax
mov qword [rdx], rax
mov rcx, qword [rbp + 0x38]
mov rax, qword [rbp + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x14000c529
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.14000aed0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
ret
mov rax, qword [rdx]
sub rax, qword [rdx + 8]
mov dword [rdi + 0x30], 3
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
ret
mov rcx, rdx
cmp r9, r10
je 0x14000c581
lea rax, [r9 + 1]
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rcx, rdx
mov r9, qword [rdx]
cmp r9, qword [rcx + 0x10]
je 0x14000c547
cmp byte [r9], 0x72
jne 0x14000c547
lea rax, [r9 + 1]
mov qword [rcx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x75
jne 0x14000c547
inc rax
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x65
jne 0x14000c547
inc rax
mov qword [rdx], rax
mov dl, 1
mov rcx, rbp
call fcn.14000f040
test al, al
jne 0x14000c794
mov rax, qword [rbx]
mov rcx, qword [rax]
sub rcx, qword [rax + 8]
mov dword [rdi + 0x30], 0x10
mov qword [rdi + 0x38], rcx
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
ret
mov rcx, rdx
cmp r9, r10
je 0x14000c611
lea rax, [r9 + 1]
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rcx, rdx
mov r9, qword [rdx]
cmp r9, qword [rcx + 0x10]
je 0x14000c547
cmp byte [r9], 0x61
jne 0x14000c547
lea rax, [r9 + 1]
mov qword [rcx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x6c
jne 0x14000c547
inc rax
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x73
jne 0x14000c547
inc rax
mov qword [rdx], rax
mov rdx, qword [rbx]
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x14000c547
cmp byte [rax], 0x65
jne 0x14000c547
inc rax
mov qword [rdx], rax
xor edx, edx
jmp 0x14000c5c4
xor r9d, r9d
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
jmp 0x14000c140
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
jmp 0x14000b9b0
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x38], r14
cmp r9, r10
je 0x14000c6e3
lea rax, [r9 + 1]
mov qword [rdx], rax
mov rcx, qword [rbp + 0x38]
mov rax, qword [rbp + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x14000c706
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.14000aed0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rbp + 0x38], rax
mov esi, 4
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], si
movabs r14, 0x100002600
mov rcx, rbx
call fcn.14000f970
cmp al, 0x20
ja 0x14000c751
movsx rax, al
bt r14, rax
jae 0x14000c751
mov rcx, qword [rbx]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c727
inc rax
mov qword [rcx], rax
jmp 0x14000c727
cmp dword [rdi + 0x30], 0
jne 0x14000c78a
mov rcx, qword [rbx]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c7a4
cmp byte [rax], 0x5d
jne 0x14000c7a4
inc rax
mov qword [rcx], rax
movabs rcx, 0xffff000000000000
mov rax, qword [rbp + 0x38]
mov word [rax - 2], si
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
mov rsi, qword [rsp + 0x30]
mov r14, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
ret
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.14000c450
cmp dword [rdi + 0x30], esi
jne 0x14000c78a
nop dword [rax]
inc esi
mov rcx, rbx
call fcn.14000f970
cmp al, 0x20
ja 0x14000c7ec
movsx rax, al
bt r14, rax
jae 0x14000c7ec
mov rcx, qword [rbx]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c7c2
inc rax
mov qword [rcx], rax
jmp 0x14000c7c2
cmp dword [rdi + 0x30], 0
jne 0x14000c78a
mov rcx, qword [rbx]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c892
cmp byte [rax], 0x2c
jne 0x14000c85b
inc rax
mov qword [rcx], rax
nop dword [rax]
mov rcx, rbx
call fcn.14000f970
cmp al, 0x20
ja 0x14000c834
movsx rax, al
bt r14, rax
jae 0x14000c834
mov rcx, qword [rbx]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x14000c810
jmp 0x14000c807
cmp dword [rdi + 0x30], 0
jne 0x14000c78a
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.14000c450
cmp dword [rdi + 0x30], 0
je 0x14000c7c0
jmp 0x14000c78a
cmp byte [rax], 0x5d
jne 0x14000c892
inc rax
mov edx, esi
mov qword [rcx], rax
mov rcx, rbp
call fcn.14000f470
test al, al
jne 0x14000c78a
mov rax, qword [rbx]
mov rcx, qword [rax]
sub rcx, qword [rax + 8]
mov qword [rdi + 0x38], rcx
mov dword [rdi + 0x30], 0x10
jmp 0x14000c78a
sub rax, qword [rcx + 8]
mov dword [rdi + 0x30], 7
mov qword [rdi + 0x38], rax
jmp 0x14000c78a
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
jmp 0x14000b130