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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rdi, rcx
mov rsi, r8
mov rcx, qword [rdx]
mov rbx, rdx
movsx eax, byte [rcx]
add eax, 0xffffffde
cmp eax, 0x59
ja case.0x140009326.35
lea rdx, [0x140000000]
cdqe
movzx eax, byte [rdx + rax + 0x95bc]
mov r9d, dword [rdx + rax*4 + 0x95a0]
add r9, rdx
jmp r9
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x140009383
inc rax
mov rcx, rsi
mov qword [rbx], rax
call fcn.140003970
test al, al
jne 0x140009566
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 3
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x72
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x140009383
inc rax
mov dl, 1
mov rcx, rsi
mov qword [rbx], rax
call fcn.140003920
jmp 0x140009359
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x61
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x140009383
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x140009383
inc rax
xor edx, edx
mov rcx, rsi
mov qword [rbx], rax
call fcn.140003920
jmp 0x140009359
xor r9d, r9d
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x140009620
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x140009ad0
lea rax, [rcx + 1]
mov qword [rsp + 0x30], rbp
mov qword [rbx], rax
mov rcx, qword [r8 + 0x38]
mov rax, qword [r8 + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x140009479
lea rcx, [r8 + 0x20]
call fcn.140003c80
mov rcx, qword [rsi + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rsi + 0x38], rax
mov r9d, 4
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], r9w
mov rcx, qword [rbx]
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009561
cmp byte [rax], 0x5d
jne 0x1400094d4
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rsi + 0x38]
mov word [rax - 2], r9w
and qword [rax - 8], rcx
xor ebp, ebp
mov qword [rax - 0x10], rbp
jmp 0x140009561
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
xor ebp, ebp
call fcn.1400092e0
cmp dword [rdi + 0x30], ebp
jne 0x140009561
nop dword [rax]
mov rcx, qword [rbx]
inc ebp
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009561
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x140009536
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009561
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.1400092e0
cmp dword [rdi + 0x30], 0
je 0x1400094f0
jmp 0x140009561
cmp cl, 0x5d
jne 0x140009576
inc rax
mov edx, ebp
mov rcx, rsi
mov qword [rbx], rax
call fcn.140003590
test al, al
jne 0x140009561
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
mov qword [rdi + 0x38], rax
mov rbp, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 7
jmp 0x14000955d
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x140009c90
mov rax, rsp
push rbp
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov qword [rbp - 0x40], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r12
movaps xmmword [rax - 0x28], xmm6
movzx r14d, r9b
mov r15, r8
mov rdi, rcx
movups xmm1, xmmword [rdx]
movups xmmword [rbp - 0x38], xmm1
movsd xmm0, qword [rdx + 0x10]
movsd qword [rbp - 0x28], xmm0
mov qword [rbp - 0x20], rdx
movq r8, xmm1
inc r8
mov rax, r8
mov rsi, r8
lea r12, [0x14012b0d0]
mov r10, qword [rbp - 0x28]
lea rdx, [r8 + 0xf]
and rdx, 0xfffffffffffffff0
cmp r8, rax
jne 0x140009756
mov rax, r8
cmp r8, rdx
je 0x1400096c6
nop dword [rax]
movzx ecx, byte [rax]
cmp cl, 0x22
je 0x14000974a
cmp cl, 0x5c
je 0x14000974a
cmp cl, 0x20
jb 0x14000974a
inc rax
cmp rax, rdx
jne 0x1400096a0
movdqu xmm4, xmmword [str.________________]
movdqu xmm5, xmmword [0x14012afb0]
movdqu xmm3, xmmword [0x14012b1e0]
movdqu xmm2, xmmword [rax]
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm4
movdqa xmm1, xmm2
pcmpeqb xmm1, xmm5
pmaxub xmm2, xmm3
pcmpeqb xmm2, xmm3
por xmm1, xmm0
por xmm1, xmm2
pmovmskb ecx, xmm1
test cx, cx
jne 0x140009741
nop dword [rax + rax]
add rax, 0x10
movdqu xmm2, xmmword [rax]
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm4
movdqa xmm1, xmm2
pcmpeqb xmm1, xmm5
pmaxub xmm2, xmm3
pcmpeqb xmm2, xmm3
por xmm1, xmm0
por xmm1, xmm2
pmovmskb ecx, xmm1
test cx, cx
je 0x140009710
movzx ecx, cx
bsf ecx, ecx
add rax, rcx
mov r8, rax
mov qword [rbp - 0x38], rax
jmp 0x140009845
cmp r8, rdx
je 0x14000978c
nop dword [rax + rax]
movzx ecx, byte [r8]
cmp cl, 0x22
je 0x140009841
cmp cl, 0x5c
je 0x140009841
cmp cl, 0x20
jb 0x140009841
mov byte [rax], cl
inc rax
inc r8
cmp r8, rdx
jne 0x140009760
movdqu xmm5, xmmword [str.________________]
movdqu xmm6, xmmword [0x14012afb0]
movdqu xmm4, xmmword [0x14012b1e0]
movdqu xmm3, xmmword [r8]
movdqa xmm1, xmm3
pcmpeqb xmm1, xmm5
movdqa xmm2, xmm3
pcmpeqb xmm2, xmm6
movdqa xmm0, xmm3
pmaxub xmm0, xmm4
pcmpeqb xmm0, xmm4
por xmm2, xmm1
por xmm2, xmm0
pmovmskb ecx, xmm2
test cx, cx
jne 0x14000981e
nop word [rax + rax]
movdqu xmmword [rax], xmm3
add r8, 0x10
add rax, 0x10
movdqu xmm3, xmmword [r8]
movdqa xmm1, xmm3
pcmpeqb xmm1, xmm5
movdqa xmm2, xmm3
pcmpeqb xmm2, xmm6
movdqa xmm0, xmm3
pmaxub xmm0, xmm4
pcmpeqb xmm0, xmm4
por xmm2, xmm1
por xmm2, xmm0
pmovmskb ecx, xmm2
test cx, cx
je 0x1400097e0
movzx ecx, cx
bsf edx, ecx
add rdx, r8
cmp r8, rdx
je 0x140009841
nop dword [rax]
movzx ecx, byte [r8]
mov byte [rax], cl
inc rax
inc r8
cmp r8, rdx
jne 0x140009830
mov qword [rbp - 0x38], r8
mov qword [rbp - 0x30], rax
mov rbx, rax
movzx ecx, byte [r8]
cmp cl, 0x5c
jne 0x1400099cd
mov r11, r8
sub r11, r10
inc r8
mov qword [rbp - 0x38], r8
movzx edx, byte [r8]
movzx r9d, byte [rdx + r12]
test r9b, r9b
je 0x140009882
inc r8
mov byte [rax], r9b
inc rax
jmp 0x140009683
cmp dl, 0x75
jne 0x1400099f2
inc r8
mov qword [rbp - 0x38], r8
xor edx, edx
xor r9d, r9d
nop word [rax + rax]
movsx ecx, byte [r8]
shl edx, 4
add edx, ecx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1400098b5
add edx, 0xffffffd0
jmp 0x1400098cc
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x1400098c1
add edx, 0xffffffc9
jmp 0x1400098cc
sub cl, 0x61
cmp cl, 5
ja 0x1400098e1
add edx, 0xffffffa9
inc r8
mov qword [rbp - 0x38], r8
inc r9d
cmp r9d, 4
jl 0x1400098a0
mov eax, dword [rdi + 0x30]
jmp 0x1400098f3
mov dword [rdi + 0x30], 8
mov qword [rdi + 0x38], r11
xor edx, edx
mov eax, 8
test eax, eax
jne 0x140009a95
lea r10d, [rdx - 0xd800]
cmp r10d, 0x3ff
ja 0x1400099b7
cmp byte [r8], 0x5c
jne 0x1400099e4
inc r8
mov qword [rbp - 0x38], r8
cmp byte [r8], 0x75
jne 0x1400099e4
inc r8
mov qword [rbp - 0x38], r8
xor ecx, ecx
xor r9d, r9d
nop word [rax + rax]
movsx edx, byte [r8]
shl ecx, 4
add ecx, edx
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140009955
add ecx, 0xffffffd0
jmp 0x14000996c
lea eax, [rdx - 0x41]
cmp al, 5
ja 0x140009961
add ecx, 0xffffffc9
jmp 0x14000996c
sub dl, 0x61
cmp dl, 5
ja 0x140009981
add ecx, 0xffffffa9
inc r8
mov qword [rbp - 0x38], r8
inc r9d
cmp r9d, 4
jl 0x140009940
mov eax, dword [rdi + 0x30]
jmp 0x140009993
mov dword [rdi + 0x30], 8
mov qword [rdi + 0x38], r11
xor ecx, ecx
mov eax, 8
test eax, eax
jne 0x140009a95
add ecx, 0xffff2400
cmp ecx, 0x3ff
ja 0x1400099e4
mov edx, r10d
shl edx, 0xa
or edx, ecx
add edx, 0x10000
lea rcx, [rbp - 0x38]
call fcn.14000a2a0
mov rax, qword [rbp - 0x30]
mov r8, qword [rbp - 0x38]
jmp 0x14000967f
cmp cl, 0x22
je 0x140009a1f
cmp cl, 0x20
jb 0x140009a00
inc r8
mov byte [rbx], cl
inc rax
jmp 0x140009683
mov eax, 9
mov dword [rdi + 0x30], eax
mov qword [rdi + 0x38], r11
jmp 0x140009a34
mov eax, 0xa
mov dword [rdi + 0x30], eax
mov qword [rdi + 0x38], r11
jmp 0x140009a34
sub r8, r10
mov qword [rdi + 0x38], r8
test cl, cl
jne 0x140009a15
mov eax, 0xb
mov dword [rdi + 0x30], eax
jmp 0x140009a34
mov eax, 0xc
mov dword [rdi + 0x30], eax
jmp 0x140009a34
inc r8
mov qword [rbp - 0x38], r8
mov byte [rax], 0
lea rbx, [rax + 1]
mov qword [rbp - 0x30], rbx
mov eax, dword [rdi + 0x30]
test eax, eax
jne 0x140009a95
sub rbx, rsi
dec rbx
mov rcx, qword [r15 + 0x38]
mov rax, qword [r15 + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x140009a5c
lea rcx, [r15 + 0x20]
call fcn.140003c80
mov rcx, qword [r15 + 0x38]
lea rax, [rcx + 0x10]
mov qword [r15 + 0x38], rax
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
mov eax, 0x405
mov word [rcx + 0xe], ax
movabs rax, 0xffff000000000000
and qword [rcx + 8], rax
lea rax, [0x14012b1f0]
test rsi, rsi
cmovne rax, rsi
mov dword [rcx], ebx
or qword [rcx + 8], rax
mov rax, qword [rbp - 0x20]
movups xmm0, xmmword [rbp - 0x38]
movups xmmword [rax], xmm0
movsd xmm1, qword [rbp - 0x28]
movsd qword [rax + 0x10], xmm1
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x30]
mov r12, qword [r11 + 0x38]
movaps xmm6, xmmword [rsp + 0x50]
mov rsp, r11
pop r15
pop r14
pop rbp
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
inc qword [rdx]
mov rdi, rcx
mov rcx, qword [r8 + 0x38]
mov rbp, r8
mov rax, qword [r8 + 0x40]
mov rbx, rdx
sub rax, rcx
cmp rax, 0x10
jge 0x140009b0e
lea rcx, [r8 + 0x20]
call fcn.140003c80
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rbp + 0x38], rax
mov r9d, 3
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], r9w
mov rcx, qword [rbx]
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009c6e
cmp byte [rax], 0x7d
jne 0x140009b69
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rbp + 0x38]
mov word [rax - 2], r9w
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x140009c6e
xor esi, esi
nop dword [rax + rax]
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x140009c5f
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x140009620
cmp dword [rdi + 0x30], 0
jne 0x140009c6e
mov rcx, qword [rbx]
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009c6e
cmp byte [rax], 0x3a
jne 0x140009c52
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009c6e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.1400092e0
cmp dword [rdi + 0x30], 0
jne 0x140009c6e
mov rcx, qword [rbx]
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140009c6e
movzx ecx, byte [rax]
inc esi
cmp cl, 0x2c
jne 0x140009c1c
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.140001550
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
je 0x140009b70
jmp 0x140009c6e
cmp cl, 0x7d
je 0x140009c2e
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 6
jmp 0x140009c6a
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.140003620
test al, al
jne 0x140009c6e
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x140009c6a
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x140009c6a
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov qword [rbp - 0x38], 0xfffffffffffffffe
mov qword [rax + 8], rbx
movaps xmmword [rax - 0x48], xmm6
mov r13, rcx
movups xmm0, xmmword [rdx]
movups xmmword [rbp - 0x30], xmm0
movsd xmm6, qword [rdx + 0x10]
movsd qword [rbp - 0x20], xmm6
mov qword [rbp - 0x18], rdx
movq r8, xmm0
mov rax, r8
mov r15, qword [rbp - 0x20]
sub rax, r15
mov qword [rbp - 0x40], rax
xorps xmm3, xmm3
xorps xmm1, xmm1
cmp byte [r8], 0x2d
jne 0x140009d00
inc r8
mov qword [rbp - 0x30], r8
mov r12b, 1
jmp 0x140009d03
xor r12b, r12b
xor edi, edi
mov r10d, edi
xor dl, dl
mov byte [rbp + 0x58], dl
mov ebx, edi
movsx eax, byte [r8]
movsd xmm2, qword [0x140134480]
cmp al, 0x30
jne 0x140009d32
mov r11d, edi
lea rdx, [r8 + 1]
mov qword [rbp - 0x30], rdx
xor r14b, r14b
jmp 0x140009ef6
cmp al, 0x31
jl 0x14000a22c
cmp al, 0x39
jg 0x14000a22c
inc r8
mov qword [rbp - 0x30], r8
lea r11d, [rax - 0x30]
movzx ecx, byte [r8]
mov rax, r8
test r12b, r12b
je 0x140009d95
cmp cl, 0x30
jl 0x140009dd9
cmp cl, 0x39
jg 0x140009dd9
cmp r11d, 0xccccccc
jb 0x140009d73
jne 0x140009dd1
cmp cl, 0x38
jg 0x140009dd1
lea r8, [rax + 1]
mov qword [rbp - 0x30], r8
lea r11d, [r11 + r11*4]
movsx eax, byte [rax]
lea r11d, [r11 - 0x18]
lea r11d, [rax + r11*2]
inc ebx
movzx ecx, byte [r8]
mov rax, r8
jmp 0x140009d59
cmp cl, 0x30
jl 0x140009dd9
cmp cl, 0x39
jg 0x140009dd9
cmp r11d, 0x19999999
jb 0x140009daf
jne 0x140009dd1
cmp cl, 0x35
jg 0x140009dd1
lea r8, [rax + 1]
mov qword [rbp - 0x30], r8
lea r11d, [r11 + r11*4]
movsx eax, byte [rax]
lea r11d, [r11 - 0x18]
lea r11d, [rax + r11*2]
inc ebx
movzx ecx, byte [r8]
mov rax, r8
jmp 0x140009d95
mov dl, 1
mov byte [rbp + 0x58], dl
mov r10d, r11d
xor r14b, r14b
mov r9, rax
test dl, dl
je 0x140009eb1
movzx ecx, byte [rax]
test r12b, r12b
je 0x140009e3f
cmp cl, 0x30
jl 0x140009eb1
movzx eax, byte [r8]
movabs rdx, 0xccccccccccccccc
cmp al, 0x39
jg 0x140009eb1
cmp r10, rdx
jb 0x140009e19
jne 0x140009e87
cmp al, 0x38
jg 0x140009e87
lea r8, [r9 + 1]
mov qword [rbp - 0x30], r8
movsx ecx, byte [r9]
sub ecx, 0x30
lea rax, [r10 + r10*4]
lea r10, [rcx + rax*2]
inc ebx
movzx eax, byte [r8]
mov r9, r8
cmp al, 0x30
jl 0x140009eb1
jmp 0x140009e06
cmp cl, 0x30
jl 0x140009eb1
movzx eax, byte [r8]
movabs rdx, 0x1999999999999999
cmp al, 0x39
jg 0x140009eb1
cmp r10, rdx
jb 0x140009e61
jne 0x140009e87
cmp al, 0x35
jg 0x140009e87
lea r8, [r9 + 1]
mov qword [rbp - 0x30], r8
movsx ecx, byte [r9]
sub ecx, 0x30
lea rax, [r10 + r10*4]
lea r10, [rcx + rax*2]
inc ebx
movzx eax, byte [r8]
mov r9, r8
cmp al, 0x30
jl 0x140009eb1
jmp 0x140009e52
xorps xmm1, xmm1
test r10, r10
js 0x140009e96
cvtsi2sd xmm1, r10
jmp 0x140009eae
mov rax, r10
mov rcx, r10
and eax, 1
shr rcx, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r14b, 1
mov rdx, r9
test r14b, r14b
je 0x140009ef6
cmp byte [r9], 0x30
jl 0x140009ef6
movzx eax, byte [r8]
mov rdx, r9
cmp al, 0x39
jg 0x140009ef6
lea rdx, [r9 + 1]
mov qword [rbp - 0x30], rdx
movsx eax, byte [r9]
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm2
addsd xmm0, xmm1
movaps xmm1, xmm0
movzx eax, byte [rdx]
mov r9, rdx
cmp al, 0x30
jge 0x140009ec3
mov esi, edi
cmp byte [rdx], 0x2e
jne 0x14000a00e
lea r8, [rdx + 1]
mov qword [rbp - 0x30], r8
movzx eax, byte [r8]
cmp al, 0x30
jl 0x14000a046
cmp al, 0x39
jg 0x14000a046
mov rdx, r8
test r14b, r14b
jne 0x140009fbe
mov rcx, r8
mov eax, r11d
cmp byte [rbp + 0x58], sil
cmovne rax, r10
mov r10, rax
movzx r9d, byte [r8]
movabs r14, 0x1fffffffffffff
nop dword [rax + rax]
mov rdx, rcx
cmp r9b, 0x39
jg 0x140009f91
cmp r10, r14
ja 0x140009f91
lea r8, [rcx + 1]
mov qword [rbp - 0x30], r8
movsx ecx, byte [rcx]
sub ecx, 0x30
lea rax, [r10 + r10*4]
lea r10, [rcx + rax*2]
dec esi
movzx r9d, byte [r8]
mov rcx, r8
mov rdx, r8
lea eax, [rbx + 1]
test r10, r10
cmove eax, ebx
mov ebx, eax
cmp r9b, 0x30
jge 0x140009f50
xorps xmm1, xmm1
test r10, r10
js 0x140009fa0
cvtsi2sd xmm1, r10
jmp 0x140009fb8
mov rcx, r10
shr rcx, 1
mov rax, r10
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r14b, 1
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x14000a00e
mov rax, rdx
mov rdx, rax
cmp byte [r8], 0x39
jg 0x14000a00e
lea rdx, [rax + 1]
mov r8, rdx
mov qword [rbp - 0x30], rdx
cmp ebx, 0x11
jge 0x14000a005
movsx eax, byte [rax]
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm2
addsd xmm0, xmm1
movaps xmm1, xmm0
dec esi
lea eax, [rbx + 1]
comisd xmm0, xmm3
cmovbe eax, ebx
mov ebx, eax
mov rax, rdx
cmp byte [r8], 0x30
jge 0x140009fc5
movzx eax, byte [rdx]
cmp al, 0x65
je 0x14000a01d
cmp al, 0x45
jne 0x14000a125
inc rdx
mov qword [rbp - 0x30], rdx
test r14b, r14b
jne 0x14000a06c
mov eax, r11d
mov rcx, r10
cmp byte [rbp + 0x58], dil
cmove rcx, rax
xorps xmm1, xmm1
test rcx, rcx
js 0x14000a054
cvtsi2sd xmm1, rcx
jmp 0x14000a069
lea rax, [r13 + 0x30]
mov edx, 0xe
jmp 0x14000a235
mov rax, rcx
shr rax, 1
and ecx, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r14b, 1
xor cl, cl
movzx eax, byte [rdx]
cmp al, 0x2b
je 0x14000a07b
cmp al, 0x2d
jne 0x14000a085
mov cl, 1
inc rdx
movzx eax, byte [rdx]
mov qword [rbp - 0x30], rdx
cmp al, 0x30
jl 0x14000a1a6
cmp al, 0x39
jg 0x14000a1a6
lea r8, [rdx + 1]
mov qword [rbp - 0x30], r8
movsx edi, al
sub edi, 0x30
movzx r9d, byte [r8]
test cl, cl
je 0x14000a158
lea ecx, [rsi + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp r9b, 0x30
jl 0x14000a123
mov r9, r8
nop
cmp byte [r8], 0x39
jg 0x14000a123
lea r8, [r9 + 1]
mov qword [rbp - 0x30], r8
lea edi, [rdi + rdi*4]
movsx eax, byte [r9]
lea edi, [rdi - 0x18]
lea edi, [rax + rdi*2]
mov r9, r8
cmp edi, edx
jle 0x14000a11d
movzx eax, byte [r8]
cmp al, 0x30
jl 0x14000a11d
mov rcx, r8
nop dword [rax]
mov r9, rcx
cmp al, 0x39
jg 0x14000a119
lea r8, [rcx + 1]
movzx eax, byte [r8]
mov rcx, r8
mov r9, r8
cmp al, 0x30
jge 0x14000a100
mov qword [rbp - 0x30], r8
cmp byte [r8], 0x30
jge 0x14000a0d0
neg edi
test r14b, r14b
je 0x14000a1d4
lea edx, [rdi + rsi]
movaps xmm0, xmm1
call fcn.1400014f0
comisd xmm0, xmmword [0x1401344b8]
jbe 0x14000a1ba
mov dword [r13 + 0x30], 0xd
mov r8, qword [rbp - 0x40]
mov qword [r13 + 0x38], r8
jmp 0x14000a244
mov edx, 0x134
sub edx, esi
cmp r9b, 0x30
jl 0x14000a125
mov rax, r8
cmp byte [r8], 0x39
jg 0x14000a125
lea r8, [rax + 1]
mov qword [rbp - 0x30], r8
lea edi, [rdi + rdi*4]
movsx eax, byte [rax]
lea edi, [rdi - 0x18]
lea edi, [rax + rdi*2]
cmp edi, edx
jg 0x14000a191
mov rax, r8
cmp byte [r8], 0x30
jl 0x14000a125
jmp 0x14000a168
mov dword [r13 + 0x30], 0xd
lea rcx, [r13 + 0x38]
mov r8, qword [rbp - 0x40]
jmp 0x14000a241
sub rdx, r15
mov dword [r13 + 0x30], 0xf
mov qword [r13 + 0x38], rdx
jmp 0x14000a244
test r12b, r12b
je 0x14000a1c6
xorps xmm0, xmmword [0x140134550]
movaps xmm1, xmm0
mov rcx, qword [rbp + 0x50]
call fcn.1400036b0
jmp 0x14000a216
mov rcx, qword [rbp + 0x50]
cmp byte [rbp + 0x58], 0
je 0x14000a1fb
test r12b, r12b
je 0x14000a1f1
not r10
lea rdx, [r10 + 1]
call fcn.1400037a0
jmp 0x14000a216
mov rdx, r10
call fcn.140003710
jmp 0x14000a216
test r12b, r12b
je 0x14000a20e
not r11d
lea edx, [r11 + 1]
call fcn.1400038c0
jmp 0x14000a216
mov edx, r11d
call fcn.140003850
test al, al
jne 0x14000a244
mov dword [r13 + 0x30], 0x10
mov r8, qword [rbp - 0x40]
mov qword [r13 + 0x38], r8
jmp 0x14000a244
lea rax, [rcx + 0x30]
mov edx, 3
mov rcx, rax
sub r8, r15
add rcx, 8
mov dword [rax], edx
mov qword [rcx], r8
movups xmm0, xmmword [rbp - 0x30]
mov rax, qword [rbp + 0x48]
movups xmmword [rax], xmm0
movsd qword [rax + 0x10], xmm6
mov rbx, qword [rsp + 0xa0]
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret