Function at 0x180006fb0
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.0x180006ff7.35
lea r8, [0x180000000]
cdqe
movzx eax, byte [r8 + rax + 0x7434]
mov edx, dword [r8 + rax*4 + 0x7418]
add rdx, r8
jmp rdx
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000705a
inc rax
mov qword [rbx], rax
mov rax, qword [rbp + 0x40]
sub rax, qword [rbp + 0x38]
cmp rax, 0x10
jge 0x180007038
lea rcx, [rbp + 0x20]
call fcn.180008550
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 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000705a
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.180008330
test al, al
jne 0x18000738f
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 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x18000705a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000705a
inc rax
xor edx, edx
jmp 0x1800070a0
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 0x180007490
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 0x180007161
lea rcx, [rbp + 0x20]
call fcn.180008550
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 0x1800071ab
bt r14, rax
jae 0x1800071ab
inc rcx
jmp 0x180007198
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 0x180007385
mov rax, qword [rbx]
cmp byte [rax], 0x7d
jne 0x1800071fa
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 0x180007385
xor esi, esi
nop dword [rax]
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x1800073d0
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x180007490
cmp dword [rdi + 0x30], 0
jne 0x180007385
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 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 0x180007385
mov rax, qword [rbx]
cmp byte [rax], 0x3a
jne 0x1800073c3
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 0x1800072a3
bt r14, rax
jae 0x1800072a3
inc rcx
jmp 0x180007290
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 0x180007385
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180006fb0
cmp dword [rdi + 0x30], 0
jne 0x180007385
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 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
jne 0x180007385
mov rax, qword [rbx]
inc esi
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180007371
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 0x180007353
bt r14, rax
jae 0x180007353
inc rcx
jmp 0x180007340
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 0x180007200
jmp 0x180007385
cmp cl, 0x7d
je 0x18000739f
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.180008210
test al, al
jne 0x180007385
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x180007381
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x180007381
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
jmp 0x180007381
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 0x180007710
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 0x180007900
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, [0x18026c7e0]
nop
movzx eax, byte [rbx]
cmp al, 0x5c
jne 0x180007610
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 0x180007525
inc rbx
mov byte [rcx], r8b
inc rcx
mov qword [rbp - 0x28], rcx
jmp 0x1800074e3
cmp dl, 0x75
jne 0x18000764d
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 0x180007554
add edx, 0xffffffd0
jmp 0x18000756b
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x180007560
add edx, 0xffffffc9
jmp 0x18000756b
sub cl, 0x61
cmp cl, 5
ja 0x180007581
add edx, 0xffffffa9
inc rbx
inc r8d
mov qword [rbp - 0x30], rbx
cmp r8d, 4
jl 0x180007540
lea rdi, [r13 + 0x30]
jmp 0x180007591
lea rdi, [r13 + 0x30]
xor edx, edx
mov dword [rdi], 8
mov qword [rdi + 8], r14
cmp dword [rdi], 0
jne 0x18000769b
lea esi, [rdx - 0xd800]
cmp esi, 0x3ff
ja 0x1800075f6
cmp byte [rbx], 0x5c
jne 0x180007641
inc rbx
mov qword [rbp - 0x30], rbx
cmp byte [rbx], 0x75
jne 0x180007641
lea rax, [rbx + 1]
mov r8, r14
lea rdx, [rbp - 0x30]
mov qword [rbp - 0x30], rax
mov rcx, r13
call fcn.180008440
cmp dword [rdi], 0
jne 0x180007637
add eax, 0xffff2400
cmp eax, 0x3ff
ja 0x18000762d
mov edx, esi
shl edx, 0xa
or edx, eax
add edx, 0x10000
lea rcx, [rbp - 0x30]
call fcn.1800084b0
mov r15, qword [rbp - 0x20]
mov rcx, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x30]
jmp 0x1800074e7
cmp al, 0x22
je 0x180007686
cmp al, 0x20
jb 0x18000765d
inc rbx
mov byte [rcx], al
inc rcx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rcx
jmp 0x1800074f0
mov dword [rdi], 9
mov qword [rdi + 8], r14
mov r15, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x30]
jmp 0x18000769b
mov dword [rdi], 9
mov qword [rdi + 8], r14
jmp 0x18000769b
lea rdi, [r13 + 0x30]
mov dword [rdi], 0xa
mov qword [rdi + 8], r14
jmp 0x18000769b
test al, al
lea rdi, [r13 + 0x30]
mov rax, rbx
jne 0x180007677
sub rax, r15
mov dword [rdi], 0xb
mov qword [rdi + 8], rax
jmp 0x18000769b
sub rax, r15
mov dword [rdi], 0xc
mov qword [rdi + 8], rax
jmp 0x18000769b
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 0x1800076e6
mov r8d, dword [rbp - 0x28]
mov rdx, r12
mov rcx, qword [rbp + 0x40]
sub r8d, r12d
dec r8d
cmp byte [rbp + 0x48], 0
je 0x1800076d0
call fcn.1800082a0
jmp 0x1800076d5
call fcn.1800082a0
test al, al
jne 0x1800076e6
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 0x18000774d
lea rcx, [r8 + 0x20]
call fcn.180008550
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 0x180007797
bt r14, rax
jae 0x180007797
inc rcx
jmp 0x180007784
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 0x1800078de
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x1800077e6
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 0x1800078de
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.180006fb0
cmp dword [rdi + 0x30], esi
jne 0x1800078de
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 0x180007827
bt r14, rax
jae 0x180007827
inc rcx
jmp 0x180007814
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 0x1800078de
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x1800078a6
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 0x180007874
bt r14, rax
jae 0x180007874
inc rdx
jmp 0x180007861
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 0x1800078de
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180006fb0
cmp dword [rdi + 0x30], 0
je 0x180007800
jmp 0x1800078de
cmp cl, 0x5d
jne 0x1800078cf
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.180008180
test al, al
jne 0x1800078de
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x1800078da
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 0x18000796b
inc r9
mov dl, 1
mov qword [rbp - 0x50], r9
jmp 0x18000796d
xor dl, dl
movsx ecx, byte [r9]
xor r13d, r13d
movsd xmm2, qword [0x1802725f0]
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 0x1800079a9
lea rdx, [r9 + 1]
mov r12d, r13d
mov qword [rbp - 0x50], rdx
xor r10b, r10b
jmp 0x180007bc3
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x180008133
lea r8, [r9 + 1]
lea eax, [rcx - 0x30]
movzx ecx, byte [r8]
test dl, dl
je 0x180007a1e
cmp cl, 0x30
jl 0x180007a6f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007a6f
nop dword [rax + rax]
cmp eax, 0xccccccc
jb 0x1800079f5
jne 0x180007a6a
mov rdx, r9
cmp cl, 0x38
ja 0x180007a6a
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 0x180007a6f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x1800079e0
jmp 0x180007a6f
cmp cl, 0x30
jl 0x180007a6f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007a6f
nop
cmp eax, 0x19999999
jb 0x180007a41
jne 0x180007a6a
mov rdx, r9
cmp cl, 0x35
ja 0x180007a6a
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 0x180007a6f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x180007a30
jmp 0x180007a6f
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 0x180007bbb
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp byte [rbp - 0x60], r13b
je 0x180007b3a
movzx ecx, byte [r8]
cmp cl, 0x30
jl 0x180007bbb
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp cl, 0x39
jg 0x180007bbb
mov r9, r8
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
movabs r10, 0xccccccccccccccc
xor r15b, r15b
cmp rdi, r10
jb 0x180007ae8
jne 0x180007b1e
mov r9, r8
cmp cl, 0x38
ja 0x180007b1e
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 0x180007b15
mov r8, rdx
mov r9, rdx
cmp cl, 0x39
jle 0x180007ad6
movzx r10d, r11b
jmp 0x180007bbb
mov rcx, rdi
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x180007c6b
cvtsi2sd xmm1, rcx
jmp 0x180007c80
movzx r9d, byte [r8]
cmp r9b, 0x30
jl 0x180007bbb
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp r9b, 0x39
jg 0x180007bbb
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 0x180007b86
jne 0x180007b21
mov r10, r8
cmp r9b, 0x35
ja 0x180007b21
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 0x180007bb6
mov r8, rdx
mov r10, rdx
cmp r9b, 0x39
jle 0x180007b70
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 0x180007d73
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x50], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007d60
mov byte [rbp + 0x58], r9b
mov r8, rdx
mov r12d, r10d
test r15b, r15b
jne 0x180007ce4
test r9b, r9b
jne 0x180007c07
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 0x180007c5c
mov r8, rax
cmp rdi, r9
ja 0x180007c5c
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 0x180007c51
inc r14d
cmp byte [rdx], 0x30
mov rcx, rdx
mov rax, rdx
jge 0x180007c20
xorps xmm1, xmm1
test rdi, rdi
js 0x180007cc5
cvtsi2sd xmm1, rdi
jmp 0x180007cdd
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 0x180007bb6
mov rcx, rdx
nop
cmp al, 0x39
ja 0x180007bb6
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 0x180007c90
jmp 0x180007bb6
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 0x180007d76
movzx r10d, byte [rdx]
mov r9, r8
mov rcx, r8
cmp r10b, 0x39
jg 0x180007d76
cmp r14d, 0x11
jge 0x180007d36
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 0x180007d31
inc r14d
mov rcx, r9
jmp 0x180007d41
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 0x180007cf7
jmp 0x180007d76
sub rdx, rbx
mov dword [rsi + 0x30], 0xe
mov qword [rsi + 0x38], rdx
jmp 0x180008141
mov r8, rdx
cmp byte [r8], 0x65
je 0x180007d86
cmp byte [r8], 0x45
jne 0x180007ee6
movzx r14d, byte [rbp + 0x58]
inc r8
mov qword [rbp - 0x50], r8
test r15b, r15b
jne 0x180007dc9
mov rcx, rdi
test r14b, r14b
jne 0x180007da2
mov ecx, r12d
xorps xmm1, xmm1
test rcx, rcx
js 0x180007db1
cvtsi2sd xmm1, rcx
jmp 0x180007dc6
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 0x180007ddb
cmp cl, 0x2d
jne 0x180007de7
mov dl, 1
movzx ecx, byte [r8 + 1]
inc r8
mov qword [rbp - 0x50], r8
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007ed3
movzx r9d, byte [r8 + 1]
inc r8
movsx r13d, cl
sub r13d, 0x30
mov qword [rbp - 0x50], r8
test dl, dl
je 0x180007e8c
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 0x180007e87
cmp r9b, 0x39
ja 0x180007e87
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 0x180007e7d
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x180007e7d
mov rcx, rdx
cmp al, 0x39
ja 0x180007e79
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rdx, r8
mov rcx, r8
cmp al, 0x30
jge 0x180007e63
mov qword [rbp - 0x50], rdx
movzx r9d, byte [rdx]
cmp r9b, 0x30
jge 0x180007e32
neg r13d
jmp 0x180007eeb
mov edx, 0x134
sub edx, r11d
cmp r9b, 0x30
jl 0x180007eeb
nop word [rax + rax]
cmp r9b, 0x39
ja 0x180007eeb
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 0x180007f3b
cmp byte [r9], 0x30
mov r8, r9
jl 0x180007eeb
movzx r9d, byte [r9]
jmp 0x180007ea0
sub r8, rbx
mov dword [rsi + 0x30], 0xf
mov qword [rsi + 0x38], r8
jmp 0x180008141
movzx r14d, byte [rbp + 0x58]
test r15b, r15b
je 0x180007fb8
lea ecx, [r11 + r13]
cmp ecx, 0xfffffecc
jge 0x180007f4f
mulsd xmm1, qword [0x180272088]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x180007f31
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x18026c8e0]
movaps xmm6, xmm1
sub rcx, rax
divsd xmm6, qword [rcx]
comisd xmm6, xmmword [0x1802727b0]
jbe 0x180007f6f
mov rax, qword [rbp - 0x58]
mov dword [rsi + 0x30], 0xd
mov qword [rsi + 0x38], rax
jmp 0x180008141
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x180007f20
lea rcx, [0x18026c8e0]
movaps xmm6, xmm1
mulsd xmm6, qword [rax + rcx]
jmp 0x180007f31
cmp byte [rbp - 0x60], 0
je 0x180007f7c
xorps xmm6, xmmword [0x180273050]
mov rbx, qword [rbp + 0x50]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x180007f97
lea rcx, [rbx + 0x20]
call fcn.180008550
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 0x180008141
mov rsi, qword [rbp + 0x50]
mov rax, qword [rsi + 0x40]
sub rax, qword [rsi + 0x38]
test r14b, r14b
je 0x1800080a8
cmp byte [rbp - 0x60], 0
je 0x18000803c
neg rdi
cmp rax, 0x10
jge 0x180007fe5
lea rcx, [rsi + 0x20]
call fcn.180008550
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 0x180008024
movabs rdx, 0xffffffff00000000
mov eax, 0x196
mov word [rcx + 0xe], ax
test rdx, rdi
jne 0x18000808e
mov eax, 0x1d6
jmp 0x18000808a
cmp rdi, 0xffffffff80000000
jl 0x180008141
mov word [rcx + 0xe], 0xb6
jmp 0x180008141
cmp rax, 0x10
jge 0x18000804b
lea rcx, [rsi + 0x20]
call fcn.180008550
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 0x180008077
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs rdx, 0xffffffff00000000
test rdx, rdi
jne 0x18000808e
or ax, 0x40
mov word [rcx + 0xe], ax
test rdi, 0xffffffff80000000
jne 0x180008141
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x180008141
cmp byte [rbp - 0x60], 0
je 0x1800080ef
neg r12d
cmp rax, 0x10
jge 0x1800080c0
lea rcx, [rsi + 0x20]
call fcn.180008550
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 0x180008141
cmp rax, 0x10
jge 0x1800080fe
lea rcx, [rsi + 0x20]
call fcn.180008550
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
mov qword [rcx], rax
and r12w, 0x20
mov eax, 0x1d6
or r12w, ax
mov word [rcx + 0xe], r12w
jmp 0x180008141
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