Function at 0x180007d50
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.0x180007447.35
lea r8, [0x180000000]
cdqe
movzx eax, byte [r8 + rax + 0x7884]
mov edx, dword [r8 + rax*4 + 0x7868]
add rdx, r8
jmp rdx
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x1800074aa
inc rax
mov qword [rbx], rax
mov rax, qword [rbp + 0x40]
sub rax, qword [rbp + 0x38]
cmp rax, 0x10
jge 0x180007488
lea rcx, [rbp + 0x20]
call fcn.1800089a0
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 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x1800074aa
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.180008780
test al, al
jne 0x1800077df
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 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x1800074aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x1800074aa
inc rax
xor edx, edx
jmp 0x1800074f0
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 0x1800078e0
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 0x1800075b1
lea rcx, [rbp + 0x20]
call fcn.1800089a0
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 0x1800075fb
bt r14, rax
jae 0x1800075fb
inc rcx
jmp 0x1800075e8
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 0x1800077d5
mov rax, qword [rbx]
cmp byte [rax], 0x7d
jne 0x18000764a
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 0x1800077d5
xor esi, esi
nop dword [rax]
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x180007820
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x1800078e0
cmp dword [rdi + 0x30], 0
jne 0x1800077d5
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 0x1800076a3
bt r14, rax
jae 0x1800076a3
inc rcx
jmp 0x180007690
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 0x1800077d5
mov rax, qword [rbx]
cmp byte [rax], 0x3a
jne 0x180007813
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 0x1800076f3
bt r14, rax
jae 0x1800076f3
inc rcx
jmp 0x1800076e0
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 0x1800077d5
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180007400
cmp dword [rdi + 0x30], 0
jne 0x1800077d5
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 0x180007753
bt r14, rax
jae 0x180007753
inc rcx
jmp 0x180007740
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 0x1800077d5
mov rax, qword [rbx]
inc esi
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x1800077c1
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 0x1800077a3
bt r14, rax
jae 0x1800077a3
inc rcx
jmp 0x180007790
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 0x180007650
jmp 0x1800077d5
cmp cl, 0x7d
je 0x1800077ef
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.180008660
test al, al
jne 0x1800077d5
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x1800077d1
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x1800077d1
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
jmp 0x1800077d1
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 0x180007b60
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 0x180007d50
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, [0x1801251d0]
nop
movzx eax, byte [rbx]
cmp al, 0x5c
jne 0x180007a60
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 0x180007975
inc rbx
mov byte [rcx], r8b
inc rcx
mov qword [rbp - 0x28], rcx
jmp 0x180007933
cmp dl, 0x75
jne 0x180007a9d
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 0x1800079a4
add edx, 0xffffffd0
jmp 0x1800079bb
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x1800079b0
add edx, 0xffffffc9
jmp 0x1800079bb
sub cl, 0x61
cmp cl, 5
ja 0x1800079d1
add edx, 0xffffffa9
inc rbx
inc r8d
mov qword [rbp - 0x30], rbx
cmp r8d, 4
jl 0x180007990
lea rdi, [r13 + 0x30]
jmp 0x1800079e1
lea rdi, [r13 + 0x30]
xor edx, edx
mov dword [rdi], 8
mov qword [rdi + 8], r14
cmp dword [rdi], 0
jne 0x180007aeb
lea esi, [rdx - 0xd800]
cmp esi, 0x3ff
ja 0x180007a46
cmp byte [rbx], 0x5c
jne 0x180007a91
inc rbx
mov qword [rbp - 0x30], rbx
cmp byte [rbx], 0x75
jne 0x180007a91
lea rax, [rbx + 1]
mov r8, r14
lea rdx, [rbp - 0x30]
mov qword [rbp - 0x30], rax
mov rcx, r13
call fcn.180008890
cmp dword [rdi], 0
jne 0x180007a87
add eax, 0xffff2400
cmp eax, 0x3ff
ja 0x180007a7d
mov edx, esi
shl edx, 0xa
or edx, eax
add edx, 0x10000
lea rcx, [rbp - 0x30]
call fcn.180008900
mov r15, qword [rbp - 0x20]
mov rcx, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x30]
jmp 0x180007937
cmp al, 0x22
je 0x180007ad6
cmp al, 0x20
jb 0x180007aad
inc rbx
mov byte [rcx], al
inc rcx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rcx
jmp 0x180007940
mov dword [rdi], 9
mov qword [rdi + 8], r14
mov r15, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x30]
jmp 0x180007aeb
mov dword [rdi], 9
mov qword [rdi + 8], r14
jmp 0x180007aeb
lea rdi, [r13 + 0x30]
mov dword [rdi], 0xa
mov qword [rdi + 8], r14
jmp 0x180007aeb
test al, al
lea rdi, [r13 + 0x30]
mov rax, rbx
jne 0x180007ac7
sub rax, r15
mov dword [rdi], 0xb
mov qword [rdi + 8], rax
jmp 0x180007aeb
sub rax, r15
mov dword [rdi], 0xc
mov qword [rdi + 8], rax
jmp 0x180007aeb
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 0x180007b36
mov r8d, dword [rbp - 0x28]
mov rdx, r12
mov rcx, qword [rbp + 0x40]
sub r8d, r12d
dec r8d
cmp byte [rbp + 0x48], 0
je 0x180007b20
call fcn.1800086f0
jmp 0x180007b25
call fcn.1800086f0
test al, al
jne 0x180007b36
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 0x180007b9d
lea rcx, [r8 + 0x20]
call fcn.1800089a0
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 0x180007be7
bt r14, rax
jae 0x180007be7
inc rcx
jmp 0x180007bd4
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 0x180007d2e
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x180007c36
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 0x180007d2e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.180007400
cmp dword [rdi + 0x30], esi
jne 0x180007d2e
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 0x180007c77
bt r14, rax
jae 0x180007c77
inc rcx
jmp 0x180007c64
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 0x180007d2e
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x180007cf6
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 0x180007cc4
bt r14, rax
jae 0x180007cc4
inc rdx
jmp 0x180007cb1
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 0x180007d2e
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.180007400
cmp dword [rdi + 0x30], 0
je 0x180007c50
jmp 0x180007d2e
cmp cl, 0x5d
jne 0x180007d1f
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.1800085d0
test al, al
jne 0x180007d2e
mov rax, qword [rbx]
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 0x10
jmp 0x180007d2a
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 0x180007dbb
inc r9
mov dl, 1
mov qword [rbp - 0x50], r9
jmp 0x180007dbd
xor dl, dl
movsx ecx, byte [r9]
xor r13d, r13d
movsd xmm2, qword [0x18027ed58]
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 0x180007df9
lea rdx, [r9 + 1]
mov r12d, r13d
mov qword [rbp - 0x50], rdx
xor r10b, r10b
jmp 0x180008013
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x180008583
lea r8, [r9 + 1]
lea eax, [rcx - 0x30]
movzx ecx, byte [r8]
test dl, dl
je 0x180007e6e
cmp cl, 0x30
jl 0x180007ebf
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007ebf
nop dword [rax + rax]
cmp eax, 0xccccccc
jb 0x180007e45
jne 0x180007eba
mov rdx, r9
cmp cl, 0x38
ja 0x180007eba
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 0x180007ebf
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x180007e30
jmp 0x180007ebf
cmp cl, 0x30
jl 0x180007ebf
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jg 0x180007ebf
nop
cmp eax, 0x19999999
jb 0x180007e91
jne 0x180007eba
mov rdx, r9
cmp cl, 0x35
ja 0x180007eba
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 0x180007ebf
mov r9, r8
mov rdx, r8
cmp cl, 0x39
jle 0x180007e80
jmp 0x180007ebf
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 0x18000800b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp byte [rbp - 0x60], r13b
je 0x180007f8a
movzx ecx, byte [r8]
cmp cl, 0x30
jl 0x18000800b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp cl, 0x39
jg 0x18000800b
mov r9, r8
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
movabs r10, 0xccccccccccccccc
xor r15b, r15b
cmp rdi, r10
jb 0x180007f38
jne 0x180007f6e
mov r9, r8
cmp cl, 0x38
ja 0x180007f6e
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 0x180007f65
mov r8, rdx
mov r9, rdx
cmp cl, 0x39
jle 0x180007f26
movzx r10d, r11b
jmp 0x18000800b
mov rcx, rdi
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x1800080bb
cvtsi2sd xmm1, rcx
jmp 0x1800080d0
movzx r9d, byte [r8]
cmp r9b, 0x30
jl 0x18000800b
mov qword [rbp - 0x50], rdx
mov byte [rbp + 0x58], r11b
cmp r9b, 0x39
jg 0x18000800b
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 0x180007fd6
jne 0x180007f71
mov r10, r8
cmp r9b, 0x35
ja 0x180007f71
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 0x180008006
mov r8, rdx
mov r10, rdx
cmp r9b, 0x39
jle 0x180007fc0
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 0x1800081c3
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x50], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1800081b0
mov byte [rbp + 0x58], r9b
mov r8, rdx
mov r12d, r10d
test r15b, r15b
jne 0x180008134
test r9b, r9b
jne 0x180008057
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 0x1800080ac
mov r8, rax
cmp rdi, r9
ja 0x1800080ac
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 0x1800080a1
inc r14d
cmp byte [rdx], 0x30
mov rcx, rdx
mov rax, rdx
jge 0x180008070
xorps xmm1, xmm1
test rdi, rdi
js 0x180008115
cvtsi2sd xmm1, rdi
jmp 0x18000812d
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 0x180008006
mov rcx, rdx
nop
cmp al, 0x39
ja 0x180008006
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 0x1800080e0
jmp 0x180008006
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 0x1800081c6
movzx r10d, byte [rdx]
mov r9, r8
mov rcx, r8
cmp r10b, 0x39
jg 0x1800081c6
cmp r14d, 0x11
jge 0x180008186
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 0x180008181
inc r14d
mov rcx, r9
jmp 0x180008191
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 0x180008147
jmp 0x1800081c6
sub rdx, rbx
mov dword [rsi + 0x30], 0xe
mov qword [rsi + 0x38], rdx
jmp 0x180008591
mov r8, rdx
cmp byte [r8], 0x65
je 0x1800081d6
cmp byte [r8], 0x45
jne 0x180008336
movzx r14d, byte [rbp + 0x58]
inc r8
mov qword [rbp - 0x50], r8
test r15b, r15b
jne 0x180008219
mov rcx, rdi
test r14b, r14b
jne 0x1800081f2
mov ecx, r12d
xorps xmm1, xmm1
test rcx, rcx
js 0x180008201
cvtsi2sd xmm1, rcx
jmp 0x180008216
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 0x18000822b
cmp cl, 0x2d
jne 0x180008237
mov dl, 1
movzx ecx, byte [r8 + 1]
inc r8
mov qword [rbp - 0x50], r8
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180008323
movzx r9d, byte [r8 + 1]
inc r8
movsx r13d, cl
sub r13d, 0x30
mov qword [rbp - 0x50], r8
test dl, dl
je 0x1800082dc
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 0x1800082d7
cmp r9b, 0x39
ja 0x1800082d7
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 0x1800082cd
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x1800082cd
mov rcx, rdx
cmp al, 0x39
ja 0x1800082c9
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rdx, r8
mov rcx, r8
cmp al, 0x30
jge 0x1800082b3
mov qword [rbp - 0x50], rdx
movzx r9d, byte [rdx]
cmp r9b, 0x30
jge 0x180008282
neg r13d
jmp 0x18000833b
mov edx, 0x134
sub edx, r11d
cmp r9b, 0x30
jl 0x18000833b
nop word [rax + rax]
cmp r9b, 0x39
ja 0x18000833b
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 0x18000838b
cmp byte [r9], 0x30
mov r8, r9
jl 0x18000833b
movzx r9d, byte [r9]
jmp 0x1800082f0
sub r8, rbx
mov dword [rsi + 0x30], 0xf
mov qword [rsi + 0x38], r8
jmp 0x180008591
movzx r14d, byte [rbp + 0x58]
test r15b, r15b
je 0x180008408
lea ecx, [r11 + r13]
cmp ecx, 0xfffffecc
jge 0x18000839f
mulsd xmm1, qword [0x18027e7b8]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x180008381
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x1801252d0]
movaps xmm6, xmm1
sub rcx, rax
divsd xmm6, qword [rcx]
comisd xmm6, xmmword [0x18027ef48]
jbe 0x1800083bf
mov rax, qword [rbp - 0x58]
mov dword [rsi + 0x30], 0xd
mov qword [rsi + 0x38], rax
jmp 0x180008591
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x180008370
lea rcx, [0x1801252d0]
movaps xmm6, xmm1
mulsd xmm6, qword [rax + rcx]
jmp 0x180008381
cmp byte [rbp - 0x60], 0
je 0x1800083cc
xorps xmm6, xmmword [0x18027f850]
mov rbx, qword [rbp + 0x50]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x1800083e7
lea rcx, [rbx + 0x20]
call fcn.1800089a0
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 0x180008591
mov rsi, qword [rbp + 0x50]
mov rax, qword [rsi + 0x40]
sub rax, qword [rsi + 0x38]
test r14b, r14b
je 0x1800084f8
cmp byte [rbp - 0x60], 0
je 0x18000848c
neg rdi
cmp rax, 0x10
jge 0x180008435
lea rcx, [rsi + 0x20]
call fcn.1800089a0
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 0x180008474
movabs rdx, 0xffffffff00000000
mov eax, 0x196
mov word [rcx + 0xe], ax
test rdx, rdi
jne 0x1800084de
mov eax, 0x1d6
jmp 0x1800084da
cmp rdi, 0xffffffff80000000
jl 0x180008591
mov word [rcx + 0xe], 0xb6
jmp 0x180008591
cmp rax, 0x10
jge 0x18000849b
lea rcx, [rsi + 0x20]
call fcn.1800089a0
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 0x1800084c7
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs rdx, 0xffffffff00000000
test rdx, rdi
jne 0x1800084de
or ax, 0x40
mov word [rcx + 0xe], ax
test rdi, 0xffffffff80000000
jne 0x180008591
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x180008591
cmp byte [rbp - 0x60], 0
je 0x18000853f
neg r12d
cmp rax, 0x10
jge 0x180008510
lea rcx, [rsi + 0x20]
call fcn.1800089a0
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 0x180008591
cmp rax, 0x10
jge 0x18000854e
lea rcx, [rsi + 0x20]
call fcn.1800089a0
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 0x180008591
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