Function at 0x1800078c0
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.0x180006fb7.35
lea r8, [0x180000000]
cdqe
movzx eax, byte [r8 + rax + 0x73f4]
mov edx, dword [r8 + rax*4 + 0x73d8]
add rdx, r8
jmp rdx
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000701a
inc rax
mov qword [rbx], rax
mov rax, qword [rbp + 0x40]
sub rax, qword [rbp + 0x38]
cmp rax, 0x10
jge 0x180006ff8
lea rcx, [rbp + 0x20]
call fcn.180008500
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 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000701a
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.1800082e0
test al, al
jne 0x18000734f
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 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x18000701a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000701a
inc rax
xor edx, edx
jmp 0x180007060
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 0x180007450
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 0x180007121
lea rcx, [rbp + 0x20]
call fcn.180008500
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 0x18000716b
bt r14, rax
jae 0x18000716b
inc rcx
jmp 0x180007158
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 0x180007345
mov rax, qword [rbx]
cmp byte [rax], 0x7d
jne 0x1800071ba
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 0x180007345
xor esi, esi
nop dword [rax]
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x180007390
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x180007450
cmp dword [rdi + 0x30], 0
jne 0x180007345
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 0x180007213
bt r14, rax
jae 0x180007213
inc rcx
jmp 0x180007200
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 0x180007345
mov rax, qword [rbx]
cmp byte [rax], 0x3a
jne 0x180007383
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 0x180007263
bt r14, rax
jae 0x180007263
inc rcx
jmp 0x180007250
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 0x180007345
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180006f70
cmp dword [rdi + 0x30], 0
jne 0x180007345
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 0x1800072c3
bt r14, rax
jae 0x1800072c3
inc rcx
jmp 0x1800072b0
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 0x180007345
mov rax, qword [rbx]
inc esi
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180007331
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 0x180007313
bt r14, rax
jae 0x180007313
inc rcx
jmp 0x180007300
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 0x1800071c0
jmp 0x180007345
cmp cl, 0x7d
je 0x18000735f
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.1800081c0
test al, al
jne 0x180007345
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x180007341
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x180007341
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
jmp 0x180007341
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 0x1800076d0
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 0x1800078c0
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, [0x18026c7f0]
nop
movzx eax, byte [rbx]
cmp al, 0x5c
jne 0x1800075d0
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 0x1800074e5
inc rbx
mov byte [rcx], r8b
inc rcx
mov qword [rbp - 0x28], rcx
jmp 0x1800074a3
cmp dl, 0x75
jne 0x18000760d
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 0x180007514
add edx, 0xffffffd0
jmp 0x18000752b
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x180007520
add edx, 0xffffffc9
jmp 0x18000752b
sub cl, 0x61
cmp cl, 5
ja 0x180007541
add edx, 0xffffffa9
inc rbx
inc r8d
mov qword [rbp - 0x30], rbx
cmp r8d, 4
jl 0x180007500
lea rdi, [r13 + 0x30]
jmp 0x180007551
lea rdi, [r13 + 0x30]
xor edx, edx
mov dword [rdi], 8
mov qword [rdi + 8], r14
cmp dword [rdi], 0
jne 0x18000765b
lea esi, [rdx - 0xd800]
cmp esi, 0x3ff
ja 0x1800075b6
cmp byte [rbx], 0x5c
jne 0x180007601
inc rbx
mov qword [rbp - 0x30], rbx
cmp byte [rbx], 0x75
jne 0x180007601
lea rax, [rbx + 1]
mov r8, r14
lea rdx, [rbp - 0x30]
mov qword [rbp - 0x30], rax
mov rcx, r13
call fcn.1800083f0
cmp dword [rdi], 0
jne 0x1800075f7
add eax, 0xffff2400
cmp eax, 0x3ff
ja 0x1800075ed
mov edx, esi
shl edx, 0xa
or edx, eax
add edx, 0x10000
lea rcx, [rbp - 0x30]
call fcn.180008460
mov r15, qword [rbp - 0x20]
mov rcx, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x30]
jmp 0x1800074a7
cmp al, 0x22
je 0x180007646
cmp al, 0x20
jb 0x18000761d
inc rbx
mov byte [rcx], al
inc rcx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rcx
jmp 0x1800074b0
mov dword [rdi], 9
mov qword [rdi + 8], r14
mov r15, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x30]
jmp 0x18000765b
mov dword [rdi], 9
mov qword [rdi + 8], r14
jmp 0x18000765b
lea rdi, [r13 + 0x30]
mov dword [rdi], 0xa
mov qword [rdi + 8], r14
jmp 0x18000765b
test al, al
lea rdi, [r13 + 0x30]
mov rax, rbx
jne 0x180007637
sub rax, r15
mov dword [rdi], 0xb
mov qword [rdi + 8], rax
jmp 0x18000765b
sub rax, r15
mov dword [rdi], 0xc
mov qword [rdi + 8], rax
jmp 0x18000765b
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 0x1800076a6
mov r8d, dword [rbp - 0x28]
mov rdx, r12
mov rcx, qword [rbp + 0x40]
sub r8d, r12d
dec r8d
cmp byte [rbp + 0x48], 0
je 0x180007690
call fcn.180008250
jmp 0x180007695
call fcn.180008250
test al, al
jne 0x1800076a6
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 0x18000770d
lea rcx, [r8 + 0x20]
call fcn.180008500
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 0x180007757
bt r14, rax
jae 0x180007757
inc rcx
jmp 0x180007744
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 0x18000789e
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x1800077a6
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 0x18000789e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.180006f70
cmp dword [rdi + 0x30], esi
jne 0x18000789e
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 0x1800077e7
bt r14, rax
jae 0x1800077e7
inc rcx
jmp 0x1800077d4
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 0x18000789e
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180007866
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 0x180007834
bt r14, rax
jae 0x180007834
inc rdx
jmp 0x180007821
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 0x18000789e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180006f70
cmp dword [rdi + 0x30], 0
je 0x1800077c0
jmp 0x18000789e
cmp cl, 0x5d
jne 0x18000788f
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.180008130
test al, al
jne 0x18000789e
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x18000789a
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 0x18000792b
inc r9
mov dl, 1
mov qword [rbp - 0x50], r9
jmp 0x18000792d
xor dl, dl
movsx ecx, byte [r9]
xor r13d, r13d
movsd xmm2, qword [0x1802725b8]
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 0x180007969
lea rdx, [r9 + 1]
mov r12d, r13d
mov qword [rbp - 0x50], rdx
xor r10b, r10b
jmp 0x180007b83
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x1800080f0
lea r8, [r9 + 1]
lea eax, [rcx - 0x30]
movzx ecx, byte [r8]
test dl, dl
je 0x1800079de
cmp cl, 0x30
jl 0x180007a2f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007a2f
nop dword [rax + rax]
cmp eax, 0xccccccc
jb 0x1800079b5
jne 0x180007a2a
mov rdx, r9
cmp cl, 0x38
ja 0x180007a2a
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 0x180007a2f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x1800079a0
jmp 0x180007a2f
cmp cl, 0x30
jl 0x180007a2f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007a2f
nop
cmp eax, 0x19999999
jb 0x180007a01
jne 0x180007a2a
mov rdx, r9
cmp cl, 0x35
ja 0x180007a2a
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 0x180007a2f
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x1800079f0
jmp 0x180007a2f
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 0x180007b7b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp byte [rbp - 0x60], r13b
je 0x180007afa
movzx ecx, byte [r8]
cmp cl, 0x30
jl 0x180007b7b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp cl, 0x39
jg 0x180007b7b
mov r9, r8
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
movabs r10, 0xccccccccccccccc
xor r15b, r15b
cmp rdi, r10
jb 0x180007aa8
jne 0x180007ade
mov r9, r8
cmp cl, 0x38
ja 0x180007ade
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 0x180007ad5
mov r8, rdx
mov r9, rdx
cmp cl, 0x39
jle 0x180007a96
movzx r10d, r11b
jmp 0x180007b7b
mov rcx, rdi
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x180007c2b
cvtsi2sd xmm1, rcx
jmp 0x180007c40
movzx r9d, byte [r8]
cmp r9b, 0x30
jl 0x180007b7b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp r9b, 0x39
jg 0x180007b7b
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 0x180007b46
jne 0x180007ae1
mov r10, r8
cmp r9b, 0x35
ja 0x180007ae1
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 0x180007b76
mov r8, rdx
mov r10, rdx
cmp r9b, 0x39
jle 0x180007b30
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 0x180007d33
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x50], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007d20
mov byte [rbp + 0x58], r9b
mov r8, rdx
mov r12d, r10d
test r15b, r15b
jne 0x180007ca4
test r9b, r9b
jne 0x180007bc7
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 0x180007c1c
mov r8, rax
cmp rdi, r9
ja 0x180007c1c
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 0x180007c11
inc r14d
cmp byte [rdx], 0x30
mov rcx, rdx
mov rax, rdx
jge 0x180007be0
xorps xmm1, xmm1
test rdi, rdi
js 0x180007c85
cvtsi2sd xmm1, rdi
jmp 0x180007c9d
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 0x180007b76
mov rcx, rdx
nop
cmp al, 0x39
ja 0x180007b76
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 0x180007c50
jmp 0x180007b76
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 0x180007d36
movzx r10d, byte [rdx]
mov r9, r8
mov rcx, r8
cmp r10b, 0x39
jg 0x180007d36
cmp r14d, 0x11
jge 0x180007cf6
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 0x180007cf1
inc r14d
mov rcx, r9
jmp 0x180007d01
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 0x180007cb7
jmp 0x180007d36
sub rdx, rbx
mov dword [rsi + 0x30], 0xe
mov qword [rsi + 0x38], rdx
jmp 0x1800080fe
mov r8, rdx
cmp byte [r8], 0x65
je 0x180007d46
cmp byte [r8], 0x45
jne 0x180007ea6
movzx r14d, byte [rbp + 0x58]
inc r8
mov qword [rbp - 0x50], r8
test r15b, r15b
jne 0x180007d89
mov rcx, rdi
test r14b, r14b
jne 0x180007d62
mov ecx, r12d
xorps xmm1, xmm1
test rcx, rcx
js 0x180007d71
cvtsi2sd xmm1, rcx
jmp 0x180007d86
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 0x180007d9b
cmp cl, 0x2d
jne 0x180007da7
mov dl, 1
movzx ecx, byte [r8 + 1]
inc r8
mov qword [rbp - 0x50], r8
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180007e93
movzx r9d, byte [r8 + 1]
inc r8
movsx r13d, cl
sub r13d, 0x30
mov qword [rbp - 0x50], r8
test dl, dl
je 0x180007e4c
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 0x180007e47
cmp r9b, 0x39
ja 0x180007e47
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 0x180007e3d
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x180007e3d
mov rcx, rdx
cmp al, 0x39
ja 0x180007e39
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rdx, r8
mov rcx, r8
cmp al, 0x30
jge 0x180007e23
mov qword [rbp - 0x50], rdx
movzx r9d, byte [rdx]
cmp r9b, 0x30
jge 0x180007df2
neg r13d
jmp 0x180007eab
mov edx, 0x134
sub edx, r11d
cmp r9b, 0x30
jl 0x180007eab
nop word [rax + rax]
cmp r9b, 0x39
ja 0x180007eab
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 0x180007efb
cmp byte [r9], 0x30
mov r8, r9
jl 0x180007eab
movzx r9d, byte [r9]
jmp 0x180007e60
sub r8, rbx
mov dword [rsi + 0x30], 0xf
mov qword [rsi + 0x38], r8
jmp 0x1800080fe
movzx r14d, byte [rbp + 0x58]
test r15b, r15b
je 0x180007f78
lea ecx, [r11 + r13]
cmp ecx, 0xfffffecc
jge 0x180007f0f
mulsd xmm1, qword [0x180272048]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x180007ef1
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x18026c8f0]
movaps xmm6, xmm1
sub rcx, rax
divsd xmm6, qword [rcx]
comisd xmm6, xmmword [0x180272770]
jbe 0x180007f2f
mov rax, qword [rbp - 0x58]
mov dword [rsi + 0x30], 0xd
mov qword [rsi + 0x38], rax
jmp 0x1800080fe
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x180007ee0
lea rcx, [0x18026c8f0]
movaps xmm6, xmm1
mulsd xmm6, qword [rax + rcx]
jmp 0x180007ef1
cmp byte [rbp - 0x60], 0
je 0x180007f3c
xorps xmm6, xmmword [0x180273020]
mov rbx, qword [rbp + 0x50]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x180007f57
lea rcx, [rbx + 0x20]
call fcn.180008500
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 0x1800080fe
mov rsi, qword [rbp + 0x50]
mov rax, qword [rsi + 0x40]
sub rax, qword [rsi + 0x38]
test r14b, r14b
je 0x180008068
cmp byte [rbp - 0x60], 0
je 0x180007ffc
neg rdi
cmp rax, 0x10
jge 0x180007fa5
lea rcx, [rsi + 0x20]
call fcn.180008500
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 0x180007fe4
movabs rdx, 0xffffffff00000000
mov eax, 0x196
mov word [rcx + 0xe], ax
test rdx, rdi
jne 0x18000804e
mov eax, 0x1d6
jmp 0x18000804a
cmp rdi, 0xffffffff80000000
jl 0x1800080fe
mov word [rcx + 0xe], 0xb6
jmp 0x1800080fe
cmp rax, 0x10
jge 0x18000800b
lea rcx, [rsi + 0x20]
call fcn.180008500
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 0x180008037
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs rdx, 0xffffffff00000000
test rdx, rdi
jne 0x18000804e
or ax, 0x40
mov word [rcx + 0xe], ax
test rdi, 0xffffffff80000000
jne 0x1800080fe
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x1800080fe
cmp byte [rbp - 0x60], 0
je 0x1800080af
neg r12d
cmp rax, 0x10
jge 0x180008080
lea rcx, [rsi + 0x20]
call fcn.180008500
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 0x1800080fe
cmp rax, 0x10
jge 0x1800080be
lea rcx, [rsi + 0x20]
call fcn.180008500
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 0x1800080fe
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