Function at 0x1800085f0
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.0x180008637.35
lea r8, [0x180000000]
cdqe
movzx eax, byte [r8 + rax + 0x8a74]
mov edx, dword [r8 + rax*4 + 0x8a58]
add rdx, r8
jmp rdx
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000869a
inc rax
mov qword [rbx], rax
mov rax, qword [rbp + 0x40]
sub rax, qword [rbp + 0x38]
cmp rax, 0x10
jge 0x180008678
lea rcx, [rbp + 0x20]
call fcn.180009b80
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 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000869a
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.180009960
test al, al
jne 0x1800089cf
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 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x18000869a
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x18000869a
inc rax
xor edx, edx
jmp 0x1800086e0
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 0x180008ad0
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 0x1800087a1
lea rcx, [rbp + 0x20]
call fcn.180009b80
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 0x1800087eb
bt r14, rax
jae 0x1800087eb
inc rcx
jmp 0x1800087d8
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 0x1800089c5
mov rax, qword [rbx]
cmp byte [rax], 0x7d
jne 0x18000883a
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 0x1800089c5
xor esi, esi
nop dword [rax]
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x180008a10
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x180008ad0
cmp dword [rdi + 0x30], 0
jne 0x1800089c5
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 0x180008893
bt r14, rax
jae 0x180008893
inc rcx
jmp 0x180008880
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 0x1800089c5
mov rax, qword [rbx]
cmp byte [rax], 0x3a
jne 0x180008a03
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 0x1800088e3
bt r14, rax
jae 0x1800088e3
inc rcx
jmp 0x1800088d0
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 0x1800089c5
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.1800085f0
cmp dword [rdi + 0x30], 0
jne 0x1800089c5
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 0x180008943
bt r14, rax
jae 0x180008943
inc rcx
jmp 0x180008930
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 0x1800089c5
mov rax, qword [rbx]
inc esi
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x1800089b1
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 0x180008993
bt r14, rax
jae 0x180008993
inc rcx
jmp 0x180008980
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 0x180008840
jmp 0x1800089c5
cmp cl, 0x7d
je 0x1800089df
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.180009840
test al, al
jne 0x1800089c5
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x1800089c1
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x1800089c1
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
jmp 0x1800089c1
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 0x180008d50
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 0x180008f40
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, [0x18010a230]
nop
movzx eax, byte [rbx]
cmp al, 0x5c
jne 0x180008c50
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 0x180008b65
inc rbx
mov byte [rcx], r8b
inc rcx
mov qword [rbp - 0x28], rcx
jmp 0x180008b23
cmp dl, 0x75
jne 0x180008c8d
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 0x180008b94
add edx, 0xffffffd0
jmp 0x180008bab
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x180008ba0
add edx, 0xffffffc9
jmp 0x180008bab
sub cl, 0x61
cmp cl, 5
ja 0x180008bc1
add edx, 0xffffffa9
inc rbx
inc r8d
mov qword [rbp - 0x30], rbx
cmp r8d, 4
jl 0x180008b80
lea rdi, [r13 + 0x30]
jmp 0x180008bd1
lea rdi, [r13 + 0x30]
xor edx, edx
mov dword [rdi], 8
mov qword [rdi + 8], r14
cmp dword [rdi], 0
jne 0x180008cdb
lea esi, [rdx - 0xd800]
cmp esi, 0x3ff
ja 0x180008c36
cmp byte [rbx], 0x5c
jne 0x180008c81
inc rbx
mov qword [rbp - 0x30], rbx
cmp byte [rbx], 0x75
jne 0x180008c81
lea rax, [rbx + 1]
mov r8, r14
lea rdx, [rbp - 0x30]
mov qword [rbp - 0x30], rax
mov rcx, r13
call fcn.180009a70
cmp dword [rdi], 0
jne 0x180008c77
add eax, 0xffff2400
cmp eax, 0x3ff
ja 0x180008c6d
mov edx, esi
shl edx, 0xa
or edx, eax
add edx, 0x10000
lea rcx, [rbp - 0x30]
call fcn.180009ae0
mov r15, qword [rbp - 0x20]
mov rcx, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x30]
jmp 0x180008b27
cmp al, 0x22
je 0x180008cc6
cmp al, 0x20
jb 0x180008c9d
inc rbx
mov byte [rcx], al
inc rcx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rcx
jmp 0x180008b30
mov dword [rdi], 9
mov qword [rdi + 8], r14
mov r15, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x30]
jmp 0x180008cdb
mov dword [rdi], 9
mov qword [rdi + 8], r14
jmp 0x180008cdb
lea rdi, [r13 + 0x30]
mov dword [rdi], 0xa
mov qword [rdi + 8], r14
jmp 0x180008cdb
test al, al
lea rdi, [r13 + 0x30]
mov rax, rbx
jne 0x180008cb7
sub rax, r15
mov dword [rdi], 0xb
mov qword [rdi + 8], rax
jmp 0x180008cdb
sub rax, r15
mov dword [rdi], 0xc
mov qword [rdi + 8], rax
jmp 0x180008cdb
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 0x180008d26
mov r8d, dword [rbp - 0x28]
mov rdx, r12
mov rcx, qword [rbp + 0x40]
sub r8d, r12d
dec r8d
cmp byte [rbp + 0x48], 0
je 0x180008d10
call fcn.1800098d0
jmp 0x180008d15
call fcn.1800098d0
test al, al
jne 0x180008d26
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 0x180008d8d
lea rcx, [r8 + 0x20]
call fcn.180009b80
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 0x180008dd7
bt r14, rax
jae 0x180008dd7
inc rcx
jmp 0x180008dc4
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 0x180008f1e
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x180008e26
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 0x180008f1e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.1800085f0
cmp dword [rdi + 0x30], esi
jne 0x180008f1e
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 0x180008e67
bt r14, rax
jae 0x180008e67
inc rcx
jmp 0x180008e54
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 0x180008f1e
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180008ee6
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 0x180008eb4
bt r14, rax
jae 0x180008eb4
inc rdx
jmp 0x180008ea1
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 0x180008f1e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.1800085f0
cmp dword [rdi + 0x30], 0
je 0x180008e40
jmp 0x180008f1e
cmp cl, 0x5d
jne 0x180008f0f
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.1800097b0
test al, al
jne 0x180008f1e
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x180008f1a
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 0x180008fab
inc r9
mov dl, 1
mov qword [rbp - 0x50], r9
jmp 0x180008fad
xor dl, dl
movsx ecx, byte [r9]
xor r13d, r13d
movsd xmm2, qword [0x18010f5c8]
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 0x180008fe9
lea rdx, [r9 + 1]
mov r12d, r13d
mov qword [rbp - 0x50], rdx
xor r10b, r10b
jmp 0x180009203
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x180009770
lea r8, [r9 + 1]
lea eax, [rcx - 0x30]
movzx ecx, byte [r8]
test dl, dl
je 0x18000905e
cmp cl, 0x30
jl 0x1800090af
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x1800090af
nop dword [rax + rax]
cmp eax, 0xccccccc
jb 0x180009035
jne 0x1800090aa
mov rdx, r9
cmp cl, 0x38
ja 0x1800090aa
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 0x1800090af
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x180009020
jmp 0x1800090af
cmp cl, 0x30
jl 0x1800090af
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x1800090af
nop
cmp eax, 0x19999999
jb 0x180009081
jne 0x1800090aa
mov rdx, r9
cmp cl, 0x35
ja 0x1800090aa
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 0x1800090af
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x180009070
jmp 0x1800090af
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 0x1800091fb
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp byte [rbp - 0x60], r13b
je 0x18000917a
movzx ecx, byte [r8]
cmp cl, 0x30
jl 0x1800091fb
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp cl, 0x39
jg 0x1800091fb
mov r9, r8
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
movabs r10, 0xccccccccccccccc
xor r15b, r15b
cmp rdi, r10
jb 0x180009128
jne 0x18000915e
mov r9, r8
cmp cl, 0x38
ja 0x18000915e
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 0x180009155
mov r8, rdx
mov r9, rdx
cmp cl, 0x39
jle 0x180009116
movzx r10d, r11b
jmp 0x1800091fb
mov rcx, rdi
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x1800092ab
cvtsi2sd xmm1, rcx
jmp 0x1800092c0
movzx r9d, byte [r8]
cmp r9b, 0x30
jl 0x1800091fb
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp r9b, 0x39
jg 0x1800091fb
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 0x1800091c6
jne 0x180009161
mov r10, r8
cmp r9b, 0x35
ja 0x180009161
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 0x1800091f6
mov r8, rdx
mov r10, rdx
cmp r9b, 0x39
jle 0x1800091b0
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 0x1800093b3
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x50], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1800093a0
mov byte [rbp + 0x58], r9b
mov r8, rdx
mov r12d, r10d
test r15b, r15b
jne 0x180009324
test r9b, r9b
jne 0x180009247
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 0x18000929c
mov r8, rax
cmp rdi, r9
ja 0x18000929c
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 0x180009291
inc r14d
cmp byte [rdx], 0x30
mov rcx, rdx
mov rax, rdx
jge 0x180009260
xorps xmm1, xmm1
test rdi, rdi
js 0x180009305
cvtsi2sd xmm1, rdi
jmp 0x18000931d
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 0x1800091f6
mov rcx, rdx
nop
cmp al, 0x39
ja 0x1800091f6
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 0x1800092d0
jmp 0x1800091f6
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 0x1800093b6
movzx r10d, byte [rdx]
mov r9, r8
mov rcx, r8
cmp r10b, 0x39
jg 0x1800093b6
cmp r14d, 0x11
jge 0x180009376
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 0x180009371
inc r14d
mov rcx, r9
jmp 0x180009381
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 0x180009337
jmp 0x1800093b6
sub rdx, rbx
mov dword [rsi + 0x30], 0xe
mov qword [rsi + 0x38], rdx
jmp 0x18000977e
mov r8, rdx
cmp byte [r8], 0x65
je 0x1800093c6
cmp byte [r8], 0x45
jne 0x180009526
movzx r14d, byte [rbp + 0x58]
inc r8
mov qword [rbp - 0x50], r8
test r15b, r15b
jne 0x180009409
mov rcx, rdi
test r14b, r14b
jne 0x1800093e2
mov ecx, r12d
xorps xmm1, xmm1
test rcx, rcx
js 0x1800093f1
cvtsi2sd xmm1, rcx
jmp 0x180009406
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 0x18000941b
cmp cl, 0x2d
jne 0x180009427
mov dl, 1
movzx ecx, byte [r8 + 1]
inc r8
mov qword [rbp - 0x50], r8
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180009513
movzx r9d, byte [r8 + 1]
inc r8
movsx r13d, cl
sub r13d, 0x30
mov qword [rbp - 0x50], r8
test dl, dl
je 0x1800094cc
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 0x1800094c7
cmp r9b, 0x39
ja 0x1800094c7
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 0x1800094bd
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x1800094bd
mov rcx, rdx
cmp al, 0x39
ja 0x1800094b9
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rdx, r8
mov rcx, r8
cmp al, 0x30
jge 0x1800094a3
mov qword [rbp - 0x50], rdx
movzx r9d, byte [rdx]
cmp r9b, 0x30
jge 0x180009472
neg r13d
jmp 0x18000952b
mov edx, 0x134
sub edx, r11d
cmp r9b, 0x30
jl 0x18000952b
nop word [rax + rax]
cmp r9b, 0x39
ja 0x18000952b
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 0x18000957b
cmp byte [r9], 0x30
mov r8, r9
jl 0x18000952b
movzx r9d, byte [r9]
jmp 0x1800094e0
sub r8, rbx
mov dword [rsi + 0x30], 0xf
mov qword [rsi + 0x38], r8
jmp 0x18000977e
movzx r14d, byte [rbp + 0x58]
test r15b, r15b
je 0x1800095f8
lea ecx, [r11 + r13]
cmp ecx, 0xfffffecc
jge 0x18000958f
mulsd xmm1, qword [0x18010f068]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x180009571
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x18010a330]
movaps xmm6, xmm1
sub rcx, rax
divsd xmm6, qword [rcx]
comisd xmm6, xmmword [0x18010f7b8]
jbe 0x1800095af
mov rax, qword [rbp - 0x58]
mov dword [rsi + 0x30], 0xd
mov qword [rsi + 0x38], rax
jmp 0x18000977e
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x180009560
lea rcx, [0x18010a330]
movaps xmm6, xmm1
mulsd xmm6, qword [rax + rcx]
jmp 0x180009571
cmp byte [rbp - 0x60], 0
je 0x1800095bc
xorps xmm6, xmmword [0x18010fe70]
mov rbx, qword [rbp + 0x50]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x1800095d7
lea rcx, [rbx + 0x20]
call fcn.180009b80
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 0x18000977e
mov rsi, qword [rbp + 0x50]
mov rax, qword [rsi + 0x40]
sub rax, qword [rsi + 0x38]
test r14b, r14b
je 0x1800096e8
cmp byte [rbp - 0x60], 0
je 0x18000967c
neg rdi
cmp rax, 0x10
jge 0x180009625
lea rcx, [rsi + 0x20]
call fcn.180009b80
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 0x180009664
movabs rdx, 0xffffffff00000000
mov eax, 0x196
mov word [rcx + 0xe], ax
test rdx, rdi
jne 0x1800096ce
mov eax, 0x1d6
jmp 0x1800096ca
cmp rdi, 0xffffffff80000000
jl 0x18000977e
mov word [rcx + 0xe], 0xb6
jmp 0x18000977e
cmp rax, 0x10
jge 0x18000968b
lea rcx, [rsi + 0x20]
call fcn.180009b80
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 0x1800096b7
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs rdx, 0xffffffff00000000
test rdx, rdi
jne 0x1800096ce
or ax, 0x40
mov word [rcx + 0xe], ax
test rdi, 0xffffffff80000000
jne 0x18000977e
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x18000977e
cmp byte [rbp - 0x60], 0
je 0x18000972f
neg r12d
cmp rax, 0x10
jge 0x180009700
lea rcx, [rsi + 0x20]
call fcn.180009b80
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 0x18000977e
cmp rax, 0x10
jge 0x18000973e
lea rcx, [rsi + 0x20]
call fcn.180009b80
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 0x18000977e
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