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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rdi
sub rsp, 0x40
mov rdi, rcx
mov rbp, r8
mov rcx, qword [rdx]
mov rbx, rdx
movsx eax, byte [rcx]
add eax, 0xffffffde
cmp eax, 0x59
ja case.0x180006fa7.35
lea r8, [0x180000000]
cdqe
movzx eax, byte [r8 + rax + 0x73e4]
mov edx, dword [r8 + rax*4 + 0x73c8]
add rdx, r8
jmp rdx
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000700a
inc rax
mov qword [rbx], rax
mov rax, qword [rbp + 0x40]
sub rax, qword [rbp + 0x38]
cmp rax, 0x10
jge 0x180006fe8
lea rcx, [rbp + 0x20]
call fcn.1800084f0
mov rcx, qword [rbp + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 3
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x72
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000700a
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.1800082d0
test al, al
jne 0x18000733f
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x61
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x18000700a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000700a
inc rax
xor edx, edx
jmp 0x180007050
xor r9d, r9d
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
jmp 0x180007440
lea rax, [rcx + 1]
mov qword [rsp + 0x50], rsi
mov qword [rbx], rax
mov rax, qword [rbp + 0x40]
sub rax, qword [rbp + 0x38]
mov qword [rsp + 0x58], r14
cmp rax, 0x10
jge 0x180007111
lea rcx, [rbp + 0x20]
call fcn.1800084f0
mov rcx, qword [rbp + 0x38]
xorps xmm0, xmm0
mov edx, 3
movabs r14, 0x100002600
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], dx
movups xmm0, xmmword [rbx]
movsd xmm1, qword [rbx + 0x10]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x18000715b
bt r14, rax
jae 0x18000715b
inc rcx
jmp 0x180007148
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x180007335
mov rax, qword [rbx]
cmp byte [rax], 0x7d
jne 0x1800071aa
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rbp + 0x38]
mov qword [rbp + 0x38], rax
mov word [rax - 2], dx
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x180007335
xor esi, esi
nop dword [rax]
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x180007380
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x180007440
cmp dword [rdi + 0x30], 0
jne 0x180007335
movups xmm0, xmmword [rbx]
movsd xmm1, qword [rbx + 0x10]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop dword [rax]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x180007203
bt r14, rax
jae 0x180007203
inc rcx
jmp 0x1800071f0
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x180007335
mov rax, qword [rbx]
cmp byte [rax], 0x3a
jne 0x180007373
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x180007253
bt r14, rax
jae 0x180007253
inc rcx
jmp 0x180007240
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x180007335
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180006f60
cmp dword [rdi + 0x30], 0
jne 0x180007335
movups xmm0, xmmword [rbx]
movsd xmm1, qword [rbx + 0x10]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop dword [rax]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1800072b3
bt r14, rax
jae 0x1800072b3
inc rcx
jmp 0x1800072a0
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x180007335
mov rax, qword [rbx]
inc esi
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180007321
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop dword [rax + rax]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x180007303
bt r14, rax
jae 0x180007303
inc rcx
jmp 0x1800072f0
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
je 0x1800071b0
jmp 0x180007335
cmp cl, 0x7d
je 0x18000734f
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 6
mov qword [rdi + 0x38], rax
mov rsi, qword [rsp + 0x50]
mov r14, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.1800081b0
test al, al
jne 0x180007335
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x180007331
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x180007331
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
jmp 0x180007331
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
jmp 0x1800076c0
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
jmp 0x1800078b0
mov rax, rsp
mov byte [rax + 0x20], r9b
mov qword [rax + 0x18], r8
push rbp
push rbx
push rdi
push r12
push r15
mov rbp, rsp
sub rsp, 0x50
movups xmm1, xmmword [rdx]
mov qword [rax - 0x30], r13
mov r13, rcx
movsd xmm0, qword [rdx + 0x10]
movq rbx, xmm1
movsd qword [rbp - 0x20], xmm0
mov r15, qword [rbp - 0x20]
inc rbx
movups xmmword [rbp - 0x30], xmm1
mov qword [rax + 8], rsi
mov rcx, rbx
mov qword [rbp - 0x28], rbx
mov r12, rbx
mov qword [rbp - 0x18], rdx
mov qword [rax - 0x38], r14
mov qword [rbp - 0x30], rbx
lea r8, [0x18026b7f0]
nop
movzx eax, byte [rbx]
cmp al, 0x5c
jne 0x1800075c0
movzx edx, byte [rbx + 1]
mov r14, rbx
sub r14, r15
inc rbx
mov qword [rbp - 0x30], rbx
movzx r8d, byte [rdx + r8]
test r8b, r8b
je 0x1800074d5
inc rbx
mov byte [rcx], r8b
inc rcx
mov qword [rbp - 0x28], rcx
jmp 0x180007493
cmp dl, 0x75
jne 0x1800075fd
inc rbx
xor edx, edx
mov qword [rbp - 0x30], rbx
xor r8d, r8d
nop word [rax + rax]
movsx ecx, byte [rbx]
shl edx, 4
add edx, ecx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007504
add edx, 0xffffffd0
jmp 0x18000751b
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x180007510
add edx, 0xffffffc9
jmp 0x18000751b
sub cl, 0x61
cmp cl, 5
ja 0x180007531
add edx, 0xffffffa9
inc rbx
inc r8d
mov qword [rbp - 0x30], rbx
cmp r8d, 4
jl 0x1800074f0
lea rdi, [r13 + 0x30]
jmp 0x180007541
lea rdi, [r13 + 0x30]
xor edx, edx
mov dword [rdi], 8
mov qword [rdi + 8], r14
cmp dword [rdi], 0
jne 0x18000764b
lea esi, [rdx - 0xd800]
cmp esi, 0x3ff
ja 0x1800075a6
cmp byte [rbx], 0x5c
jne 0x1800075f1
inc rbx
mov qword [rbp - 0x30], rbx
cmp byte [rbx], 0x75
jne 0x1800075f1
lea rax, [rbx + 1]
mov r8, r14
lea rdx, [rbp - 0x30]
mov qword [rbp - 0x30], rax
mov rcx, r13
call fcn.1800083e0
cmp dword [rdi], 0
jne 0x1800075e7
add eax, 0xffff2400
cmp eax, 0x3ff
ja 0x1800075dd
mov edx, esi
shl edx, 0xa
or edx, eax
add edx, 0x10000
lea rcx, [rbp - 0x30]
call fcn.180008450
mov r15, qword [rbp - 0x20]
mov rcx, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x30]
jmp 0x180007497
cmp al, 0x22
je 0x180007636
cmp al, 0x20
jb 0x18000760d
inc rbx
mov byte [rcx], al
inc rcx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rcx
jmp 0x1800074a0
mov dword [rdi], 9
mov qword [rdi + 8], r14
mov r15, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x30]
jmp 0x18000764b
mov dword [rdi], 9
mov qword [rdi + 8], r14
jmp 0x18000764b
lea rdi, [r13 + 0x30]
mov dword [rdi], 0xa
mov qword [rdi + 8], r14
jmp 0x18000764b
test al, al
lea rdi, [r13 + 0x30]
mov rax, rbx
jne 0x180007627
sub rax, r15
mov dword [rdi], 0xb
mov qword [rdi + 8], rax
jmp 0x18000764b
sub rax, r15
mov dword [rdi], 0xc
mov qword [rdi + 8], rax
jmp 0x18000764b
inc rbx
mov byte [rcx], 0
inc rcx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rcx
lea rdi, [r13 + 0x30]
cmp dword [rdi], 0
mov r14, qword [rsp + 0x40]
mov r13, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x80]
jne 0x180007696
mov r8d, dword [rbp - 0x28]
mov rdx, r12
mov rcx, qword [rbp + 0x40]
sub r8d, r12d
dec r8d
cmp byte [rbp + 0x48], 0
je 0x180007680
call fcn.180008240
jmp 0x180007685
call fcn.180008240
test al, al
jne 0x180007696
sub rbx, r15
mov dword [rdi], 0x10
mov qword [rdi + 8], rbx
mov rax, qword [rbp - 0x18]
movups xmm0, xmmword [rbp - 0x30]
movsd xmm1, qword [rbp - 0x20]
movups xmmword [rax], xmm0
movsd qword [rax + 0x10], xmm1
add rsp, 0x50
pop r15
pop r12
pop rdi
pop rbx
pop rbp
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r14
sub rsp, 0x40
inc qword [rdx]
mov rbp, r8
mov rax, qword [r8 + 0x40]
mov rbx, rdx
sub rax, qword [r8 + 0x38]
mov rdi, rcx
cmp rax, 0x10
jge 0x1800076fd
lea rcx, [r8 + 0x20]
call fcn.1800084f0
mov rcx, qword [rbp + 0x38]
xorps xmm0, xmm0
mov edx, 4
movabs r14, 0x100002600
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], dx
movups xmm0, xmmword [rbx]
movsd xmm1, qword [rbx + 0x10]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x180007747
bt r14, rax
jae 0x180007747
inc rcx
jmp 0x180007734
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x18000788e
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x180007796
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rbp + 0x38]
mov qword [rbp + 0x38], rax
mov word [rax - 2], dx
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x18000788e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.180006f60
cmp dword [rdi + 0x30], esi
jne 0x18000788e
nop
movups xmm0, xmmword [rbx]
inc esi
movsd xmm1, qword [rbx + 0x10]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1800077d7
bt r14, rax
jae 0x1800077d7
inc rcx
jmp 0x1800077c4
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x18000788e
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180007856
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rdx, qword [rsp + 0x20]
movsx rax, byte [rdx]
cmp al, 0x20
ja 0x180007824
bt r14, rax
jae 0x180007824
inc rdx
jmp 0x180007811
mov qword [rsp + 0x20], rdx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
movsd qword [rbx + 0x10], xmm1
cmp dword [rdi + 0x30], 0
jne 0x18000788e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180006f60
cmp dword [rdi + 0x30], 0
je 0x1800077b0
jmp 0x18000788e
cmp cl, 0x5d
jne 0x18000787f
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.180008120
test al, al
jne 0x18000788e
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x18000788a
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 7
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
add rsp, 0x40
pop r14
ret
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
movups xmm0, xmmword [rdx]
mov rsi, rcx
movaps xmmword [rsp + 0x60], xmm6
xorps xmm1, xmm1
movq r9, xmm0
movaps xmmword [rsp + 0x50], xmm7
movsd xmm7, qword [rdx + 0x10]
mov rax, r9
movsd qword [rbp - 0x40], xmm7
xorps xmm6, xmm6
mov rbx, qword [rbp - 0x40]
sub rax, rbx
cmp byte [r9], 0x2d
movups xmmword [rbp - 0x50], xmm0
mov qword [rbp - 0x58], rax
jne 0x18000791b
inc r9
mov dl, 1
mov qword [rbp - 0x50], r9
jmp 0x18000791d
xor dl, dl
movsx ecx, byte [r9]
xor r13d, r13d
movsd xmm2, qword [0x1802710f8]
xor r15b, r15b
mov byte [rbp - 0x60], dl
mov edi, r13d
mov qword [rsp + 0x78], r12
mov r14d, r13d
mov byte [rbp + 0x58], r15b
cmp cl, 0x30
jne 0x180007959
lea rdx, [r9 + 1]
mov r12d, r13d
mov qword [rbp - 0x50], rdx
xor r10b, r10b
jmp 0x180007b73
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x1800080e0
lea r8, [r9 + 1]
lea eax, [rcx - 0x30]
movzx ecx, byte [r8]
test dl, dl
je 0x1800079ce
cmp cl, 0x30
jl 0x180007a1f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007a1f
nop dword [rax + rax]
cmp eax, 0xccccccc
jb 0x1800079a5
jne 0x180007a1a
mov rdx, r9
cmp cl, 0x38
ja 0x180007a1a
lea ecx, [rax + rax*4]
inc r14d
movsx eax, byte [rdx]
lea r8, [rdx + 1]
lea eax, [rax + rcx*2]
movzx ecx, byte [r8]
add eax, 0xffffffd0
cmp cl, 0x30
jl 0x180007a1f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x180007990
jmp 0x180007a1f
cmp cl, 0x30
jl 0x180007a1f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007a1f
nop
cmp eax, 0x19999999
jb 0x1800079f1
jne 0x180007a1a
mov rdx, r9
cmp cl, 0x35
ja 0x180007a1a
lea ecx, [rax + rax*4]
inc r14d
movsx eax, byte [rdx]
lea r8, [rdx + 1]
lea eax, [rax + rcx*2]
movzx ecx, byte [r8]
add eax, 0xffffffd0
cmp cl, 0x30
jl 0x180007a1f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x1800079e0
jmp 0x180007a1f
mov r15b, 1
mov edi, eax
movzx r11d, r15b
mov rdx, r8
xor r15b, r15b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
mov r12d, eax
movzx r10d, r11b
test r11b, r11b
je 0x180007b6b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp byte [rbp - 0x60], r13b
je 0x180007aea
movzx ecx, byte [r8]
cmp cl, 0x30
jl 0x180007b6b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp cl, 0x39
jg 0x180007b6b
mov r9, r8
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
movabs r10, 0xccccccccccccccc
xor r15b, r15b
cmp rdi, r10
jb 0x180007a98
jne 0x180007ace
mov r9, r8
cmp cl, 0x38
ja 0x180007ace
movsx ecx, byte [r9]
lea rdx, [r9 + 1]
sub ecx, 0x30
mov qword [rbp - 0x50], rdx
lea rax, [rdi + rdi*4]
inc r14d
lea rdi, [rcx + rax*2]
movzx ecx, byte [rdx]
cmp cl, 0x30
jl 0x180007ac5
mov r8, rdx
mov r9, rdx
cmp cl, 0x39
jle 0x180007a86
movzx r10d, r11b
jmp 0x180007b6b
mov rcx, rdi
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x180007c1b
cvtsi2sd xmm1, rcx
jmp 0x180007c30
movzx r9d, byte [r8]
cmp r9b, 0x30
jl 0x180007b6b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp r9b, 0x39
jg 0x180007b6b
mov byte [rbp + 0x58], r11b
mov r10, r8
movabs r11, 0x1999999999999999
mov qword [rbp - 0x50], rdx
nop word [rax + rax]
xor r15b, r15b
mov rcx, rdi
cmp rdi, r11
jb 0x180007b36
jne 0x180007ad1
mov r10, r8
cmp r9b, 0x35
ja 0x180007ad1
movsx ecx, byte [r10]
lea rdx, [r10 + 1]
movzx r9d, byte [rdx]
lea rax, [rdi + rdi*4]
sub ecx, 0x30
mov qword [rbp - 0x50], rdx
inc r14d
lea rdi, [rcx + rax*2]
cmp r9b, 0x30
jl 0x180007b66
mov r8, rdx
mov r10, rdx
cmp r9b, 0x39
jle 0x180007b20
movzx r10d, byte [rbp + 0x58]
mov rbx, qword [rbp - 0x40]
mov rsi, qword [rbp + 0x40]
cmp byte [rdx], 0x2e
movzx r9d, r10b
mov r10d, r12d
mov r11d, r13d
jne 0x180007d23
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x50], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007d10
mov byte [rbp + 0x58], r9b
mov r8, rdx
mov r12d, r10d
test r15b, r15b
jne 0x180007c94
test r9b, r9b
jne 0x180007bb7
mov edi, r10d
mov byte [rbp + 0x58], r9b
mov rcx, rdx
movabs r9, 0x1fffffffffffff
mov rax, rdx
nop dword [rax + rax]
cmp byte [rdx], 0x39
jg 0x180007c0c
mov r8, rax
cmp rdi, r9
ja 0x180007c0c
lea rdx, [rcx + 1]
dec r11d
movsx ecx, byte [rcx]
lea rax, [rdi + rdi*4]
sub ecx, 0x30
mov qword [rbp - 0x50], rdx
mov r8, rdx
lea rdi, [rcx + rax*2]
test rdi, rdi
je 0x180007c01
inc r14d
cmp byte [rdx], 0x30
mov rcx, rdx
mov rax, rdx
jge 0x180007bd0
xorps xmm1, xmm1
test rdi, rdi
js 0x180007c75
cvtsi2sd xmm1, rdi
jmp 0x180007c8d
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x180007b66
mov rcx, rdx
nop
cmp al, 0x39
ja 0x180007b66
movsx eax, byte [rcx]
lea rdx, [rcx + 1]
sub eax, 0x30
mulsd xmm1, xmm2
mov qword [rbp - 0x50], rdx
mov rcx, rdx
movd xmm0, eax
movzx eax, byte [rdx]
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cmp al, 0x30
jge 0x180007c40
jmp 0x180007b66
mov rax, rdi
mov rcx, rdi
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
movzx ecx, byte [r8]
mov r15b, 1
cmp cl, 0x30
jl 0x180007d26
movzx r10d, byte [rdx]
mov r9, r8
mov rcx, r8
cmp r10b, 0x39
jg 0x180007d26
cmp r14d, 0x11
jge 0x180007ce6
lea rax, [r9 + 1]
mulsd xmm1, xmm2
mov qword [rbp - 0x50], rax
dec r11d
movsx eax, byte [r9]
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm1
comisd xmm0, xmm6
movaps xmm1, xmm0
jbe 0x180007ce1
inc r14d
mov rcx, r9
jmp 0x180007cf1
lea rax, [rcx + 1]
mov r9, rcx
mov qword [rbp - 0x50], rax
movzx r10d, byte [rcx + 1]
lea rax, [rcx + 1]
mov qword [rbp - 0x50], rax
lea r8, [r9 + 1]
mov r9, r8
mov rcx, r8
cmp r10b, 0x30
jge 0x180007ca7
jmp 0x180007d26
sub rdx, rbx
mov dword [rsi + 0x30], 0xe
mov qword [rsi + 0x38], rdx
jmp 0x1800080ee
mov r8, rdx
cmp byte [r8], 0x65
je 0x180007d36
cmp byte [r8], 0x45
jne 0x180007e96
movzx r14d, byte [rbp + 0x58]
inc r8
mov qword [rbp - 0x50], r8
test r15b, r15b
jne 0x180007d79
mov rcx, rdi
test r14b, r14b
jne 0x180007d52
mov ecx, r12d
xorps xmm1, xmm1
test rcx, rcx
js 0x180007d61
cvtsi2sd xmm1, rcx
jmp 0x180007d76
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r15b, 1
movzx ecx, byte [r8]
xor dl, dl
cmp cl, 0x2b
je 0x180007d8b
cmp cl, 0x2d
jne 0x180007d97
mov dl, 1
movzx ecx, byte [r8 + 1]
inc r8
mov qword [rbp - 0x50], r8
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007e83
movzx r9d, byte [r8 + 1]
inc r8
movsx r13d, cl
sub r13d, 0x30
mov qword [rbp - 0x50], r8
test dl, dl
je 0x180007e3c
lea ecx, [r11 + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
mov r10d, edx
sar r10d, 2
mov eax, r10d
shr eax, 0x1f
add r10d, eax
cmp r9b, 0x30
jl 0x180007e37
cmp r9b, 0x39
ja 0x180007e37
movsx eax, byte [r8]
lea r13d, [r13 + r13*4]
lea rdx, [r8 + 1]
lea r13d, [r13 - 0x18]
mov qword [rbp - 0x50], rdx
mov r8, rdx
lea r13d, [rax + r13*2]
cmp r13d, r10d
jle 0x180007e2d
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x180007e2d
mov rcx, rdx
cmp al, 0x39
ja 0x180007e29
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rdx, r8
mov rcx, r8
cmp al, 0x30
jge 0x180007e13
mov qword [rbp - 0x50], rdx
movzx r9d, byte [rdx]
cmp r9b, 0x30
jge 0x180007de2
neg r13d
jmp 0x180007e9b
mov edx, 0x134
sub edx, r11d
cmp r9b, 0x30
jl 0x180007e9b
nop word [rax + rax]
cmp r9b, 0x39
ja 0x180007e9b
movsx eax, byte [r8]
lea r13d, [r13 + r13*4]
lea r13d, [r13 - 0x18]
lea r9, [r8 + 1]
mov qword [rbp - 0x50], r9
lea r13d, [rax + r13*2]
cmp r13d, edx
jg 0x180007eeb
cmp byte [r9], 0x30
mov r8, r9
jl 0x180007e9b
movzx r9d, byte [r9]
jmp 0x180007e50
sub r8, rbx
mov dword [rsi + 0x30], 0xf
mov qword [rsi + 0x38], r8
jmp 0x1800080ee
movzx r14d, byte [rbp + 0x58]
test r15b, r15b
je 0x180007f68
lea ecx, [r11 + r13]
cmp ecx, 0xfffffecc
jge 0x180007eff
mulsd xmm1, qword [0x180270b88]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x180007ee1
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x18026b8f0]
movaps xmm6, xmm1
sub rcx, rax
divsd xmm6, qword [rcx]
comisd xmm6, xmmword [0x1802712b0]
jbe 0x180007f1f
mov rax, qword [rbp - 0x58]
mov dword [rsi + 0x30], 0xd
mov qword [rsi + 0x38], rax
jmp 0x1800080ee
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x180007ed0
lea rcx, [0x18026b8f0]
movaps xmm6, xmm1
mulsd xmm6, qword [rax + rcx]
jmp 0x180007ee1
cmp byte [rbp - 0x60], 0
je 0x180007f2c
xorps xmm6, xmmword [0x180271b50]
mov rbx, qword [rbp + 0x50]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x180007f47
lea rcx, [rbx + 0x20]
call fcn.1800084f0
mov rcx, qword [rbx + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], 0x216
movsd qword [rcx], xmm6
jmp 0x1800080ee
mov rsi, qword [rbp + 0x50]
mov rax, qword [rsi + 0x40]
sub rax, qword [rsi + 0x38]
test r14b, r14b
je 0x180008058
cmp byte [rbp - 0x60], 0
je 0x180007fec
neg rdi
cmp rax, 0x10
jge 0x180007f95
lea rcx, [rsi + 0x20]
call fcn.1800084f0
mov rcx, qword [rsi + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rsi + 0x38], rax
movups xmmword [rcx], xmm0
mov qword [rcx], rdi
mov word [rcx + 0xe], 0x96
test rdi, rdi
js 0x180007fd4
movabs rdx, 0xffffffff00000000
mov eax, 0x196
mov word [rcx + 0xe], ax
test rdx, rdi
jne 0x18000803e
mov eax, 0x1d6
jmp 0x18000803a
cmp rdi, 0xffffffff80000000
jl 0x1800080ee
mov word [rcx + 0xe], 0xb6
jmp 0x1800080ee
cmp rax, 0x10
jge 0x180007ffb
lea rcx, [rsi + 0x20]
call fcn.1800084f0
mov rcx, qword [rsi + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rsi + 0x38], rax
mov eax, 0x116
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], ax
mov qword [rcx], rdi
test rdi, rdi
js 0x180008027
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs rdx, 0xffffffff00000000
test rdx, rdi
jne 0x18000803e
or ax, 0x40
mov word [rcx + 0xe], ax
test rdi, 0xffffffff80000000
jne 0x1800080ee
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x1800080ee
cmp byte [rbp - 0x60], 0
je 0x18000809f
neg r12d
cmp rax, 0x10
jge 0x180008070
lea rcx, [rsi + 0x20]
call fcn.1800084f0
mov rcx, qword [rsi + 0x38]
xorps xmm0, xmm0
test r12d, r12d
mov edx, 0x1f6
lea rax, [rcx + 0x10]
mov qword [rsi + 0x38], rax
movsxd rax, r12d
movups xmmword [rcx], xmm0
mov qword [rcx], rax
mov eax, 0xb6
cmovns ax, dx
mov word [rcx + 0xe], ax
jmp 0x1800080ee
cmp rax, 0x10
jge 0x1800080ae
lea rcx, [rsi + 0x20]
call fcn.1800084f0
mov rcx, qword [rsi + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rsi + 0x38], rax
mov eax, r12d
shr r12d, 0x1a
not r12w
movups xmmword [rcx], xmm0
and r12w, 0x20
mov qword [rcx], rax
or r12w, 0x1d6
mov word [rcx + 0xe], r12w
jmp 0x1800080ee
sub r9, rbx
mov dword [rsi + 0x30], 3
mov qword [rsi + 0x38], r9
mov rax, qword [rbp + 0x48]
movups xmm0, xmmword [rbp - 0x50]
mov r12, qword [rsp + 0x78]
movaps xmm6, xmmword [rsp + 0x60]
movups xmmword [rax], xmm0
movsd qword [rax + 0x10], xmm7
movaps xmm7, xmmword [rsp + 0x50]
add rsp, 0x80
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbx
pop rbp
ret