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

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r14
mov rbp, rsp
sub rsp, 0x30
mov rsi, rcx
mov rdi, rdx
mov ecx, 0xeb0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x700
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x200
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call fcn.14002a020
mov ecx, 0x300
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x5f
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x100
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call fcn.140029cc0
mov dword [rbp + 0x40], 0x6d
xor ebx, ebx
mov dword [rbp + 0x30], 0x9e
mov dword [rbp + 0x38], 0x1d
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x30]
mov ecx, ebx
mov eax, dword [rbp + 0x30]
mov ecx, 0x5c8
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x40]
mov dword [rbp + 0x40], eax
mov eax, dword [rbp + 0x38]
mov dword [rbp + 0x30], eax
mov edx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
mov dword [rbp + 0x48], ebx
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rbp + 0x30], 0x117
mov edx, ebx
mov eax, dword [rbp + 0x30]
mov dword [rbp - 0x10], eax
mov dword [rbp + 0x38], ebx
mov dword [rbp + 0x40], ebx
mov dword [rbp + 0x48], ebx
mov dword [rbp + 0x30], 0x71
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x38], eax
mov dword [rbp + 0x30], 0x120
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x40], eax
mov eax, dword [rbp + 0x30]
cmp edx, 0xc
jge 0x14000d31e
mov eax, dword [rbp + 0x30]
inc edx
test eax, eax
je 0x14000d31e
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp - 0x10]
cmp ecx, eax
jle 0x14000d309
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x38]
cmp eax, ecx
jle 0x14000d309
mov eax, dword [rbp + 0x48]
inc eax
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x38]
mov dword [rbp - 0x10], eax
mov eax, dword [rbp + 0x40]
mov dword [rbp + 0x38], eax
mov dword [rbp + 0x30], 0xbf
jmp 0x14000d2d6
mov eax, dword [rbp + 0x48]
mov ecx, 0x4d0
mov dword [rbp + 0x30], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x330
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x9d8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movsd xmm0, qword [0x14002d568]
movsd qword [rbp + 0x30], xmm0
movsd xmm1, qword [rbp + 0x30]
movsd xmm2, qword [rbp + 0x30]
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm2, xmm0
movsd qword [rbp + 0x30], xmm2
call fcn.1400294f0
mov ecx, 0x218
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rax, qword [0x140030068]
xor ecx, ecx
call rax
mov r14, rax
mov dword [rbp + 0x30], 0x14
mov r8d, dword [rbp + 0x30]
mov eax, 0x66666667
imul r8d
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, 0xa50
lea eax, [rdx + rdx*4]
add eax, eax
sub r8d, eax
mov dword [rbp + 0x30], r8d
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movss xmm0, dword [0x14002dbc8]
mov ecx, 0x520
movss dword [rbp + 0x30], xmm0
movss xmm0, dword [rbp + 0x30]
cvtps2pd xmm1, xmm0
mulsd xmm1, qword [0x14002d4a0]
cvtpd2ps xmm0, xmm1
movss dword [rbp + 0x30], xmm0
movss xmm1, dword [rbp + 0x30]
movss dword [rbp + 0x30], xmm1
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rbp + 0x30], 0x114
mov dword [rbp + 0x38], 0x46
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x30]
add ecx, eax
mov dword [rbp + 0x48], ecx
mov ecx, dword [rbp + 0x48]
mov eax, dword [rbp + 0x38]
imul ecx, eax
mov dword [rbp + 0x40], ecx
mov eax, dword [rbp + 0x40]
mov ecx, dword [rbp + 0x30]
cdq
idiv ecx
mov dword [rbp - 0x10], eax
mov ecx, dword [rbp - 0x10]
mov eax, dword [rbp + 0x48]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov eax, dword [rbp + 0x40]
mov ecx, dword [rbp + 0x38]
cdq
idiv ecx
mov eax, dword [rbp + 0x30]
add eax, edx
mov dword [rbp + 0x48], eax
mov ecx, dword [rbp + 0x48]
mov eax, dword [rbp + 0x48]
imul ecx, eax
mov dword [rbp - 8], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp - 8]
cdq
idiv ecx
mov dword [rbp + 0x38], eax
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp - 0x10]
sub ecx, eax
mov dword [rbp - 0x10], ecx
mov ecx, dword [rbp - 0x10]
mov eax, dword [rbp + 0x40]
imul ecx, eax
mov dword [rbp + 0x40], ecx
mov ecx, 1
mov eax, dword [rbp + 0x38]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x40]
cdq
idiv ecx
mov dword [rbp - 0x10], eax
mov ecx, dword [rbp - 0x10]
mov eax, dword [rbp - 8]
add ecx, eax
mov dword [rbp - 8], ecx
mov ecx, dword [rbp - 8]
mov eax, dword [rbp + 0x48]
sub ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x30]
imul ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, 1
mov eax, dword [rbp + 0x38]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x30]
cdq
idiv ecx
mov dword [rbp + 0x38], eax
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x40]
add ecx, eax
mov dword [rbp + 0x40], ecx
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp - 8]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp - 0x10]
imul ecx, eax
mov dword [rbp + 0x48], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x48]
cdq
idiv ecx
mov dword [rbp - 8], eax
mov ecx, dword [rbp - 8]
mov eax, dword [rbp + 0x38]
add ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x40]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x48]
imul ecx, eax
mov dword [rbp + 0x40], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x40]
cdq
idiv ecx
mov dword [rbp + 0x48], eax
mov ecx, dword [rbp + 0x48]
mov eax, dword [rbp - 8]
add ecx, eax
mov dword [rbp - 8], ecx
mov ecx, dword [rbp - 8]
mov eax, dword [rbp + 0x38]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
imul ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x38]
cdq
idiv ecx
mov dword [rbp + 0x40], eax
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
add ecx, eax
mov dword [rbp + 0x48], ecx
mov ecx, dword [rbp + 0x48]
mov eax, dword [rbp - 8]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x38]
imul ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x38]
cdq
idiv ecx
mov dword [rbp - 8], eax
mov ecx, dword [rbp - 8]
mov eax, dword [rbp + 0x40]
add ecx, eax
mov dword [rbp + 0x40], ecx
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x38]
imul ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x38]
cdq
idiv ecx
mov dword [rbp + 0x48], eax
mov ecx, dword [rbp + 0x48]
mov eax, dword [rbp - 8]
add ecx, eax
mov dword [rbp - 8], ecx
mov ecx, dword [rbp - 8]
mov eax, dword [rbp + 0x40]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x38]
imul ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x38]
cdq
idiv ecx
mov dword [rbp + 0x40], eax
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
add ecx, eax
mov dword [rbp + 0x48], ecx
mov ecx, dword [rbp + 0x48]
mov eax, dword [rbp - 8]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x38]
imul ecx, eax
movss xmm0, dword [0x14002db2c]
mov dword [rbp + 0x38], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x38]
cdq
idiv ecx
mov dword [rbp - 8], eax
mov ecx, dword [rbp - 8]
mov eax, dword [rbp + 0x40]
add ecx, eax
mov dword [rbp + 0x40], ecx
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x38]
imul ecx, eax
mov dword [rbp + 0x38], ecx
mov ecx, 1
mov eax, dword [rbp + 0x30]
test eax, eax
cmovne ecx, eax
mov eax, dword [rbp + 0x38]
cdq
idiv ecx
xor edx, edx
mov dword [rbp + 0x30], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp - 8]
add ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov dword [rbp + 0x38], 0xb9
mov byte [rbp + 0x30], 0xea
movss dword [rbp - 8], xmm0
movd xmm1, dword [rbp + 0x38]
cvtdq2ps xmm1, xmm1
addss xmm1, dword [rbp - 8]
cvtps2pd xmm0, xmm1
movsd qword [rbp - 0x10], xmm0
movd xmm1, dword [rbp + 0x38]
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [rbp - 0x10]
cvttsd2si eax, xmm1
mov dword [rbp + 0x40], eax
movd xmm1, dword [rbp + 0x40]
movsd xmm0, qword [rbp - 0x10]
cvtdq2pd xmm1, xmm1
subsd xmm1, xmm0
cvttsd2si rax, xmm1
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x48]
mov ecx, dword [rbp + 0x38]
div ecx
mov word [rbp + 0x30], ax
movsx ecx, word [rbp + 0x30]
mov eax, dword [rbp + 0x48]
add eax, ecx
mov dword [rbp + 0x30], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
cmp ecx, eax
seta byte [rbp + 0x30]
movzx eax, byte [rbp + 0x30]
test al, al
mov eax, dword [rbp + 0x38]
jne 0x14000d738
mov eax, dword [rbp + 0x40]
mov dword [rbp + 0x30], eax
xor edx, edx
mov eax, dword [rbp + 0x30]
mov byte [rbp + 0x30], al
movsx eax, byte [rbp + 0x30]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [rbp - 8]
movss dword [rbp + 0x30], xmm0
movss xmm0, dword [rbp + 0x30]
cvtps2pd xmm1, xmm0
mulsd xmm1, qword [rbp - 0x10]
movsd qword [rbp + 0x38], xmm1
movsd xmm0, qword [rbp + 0x38]
cvttsd2si eax, xmm0
mov dword [rbp + 0x38], eax
movd xmm1, dword [rbp + 0x38]
movss xmm0, dword [rbp + 0x30]
cvtdq2ps xmm1, xmm1
subss xmm1, xmm0
cvttss2si rax, xmm1
mov dword [rbp + 0x40], eax
mov eax, dword [rbp + 0x40]
mov ecx, dword [rbp + 0x38]
div ecx
mov word [rbp + 0x30], ax
movsx ecx, word [rbp + 0x30]
mov eax, dword [rbp + 0x40]
add eax, ecx
mov dword [rbp + 0x40], eax
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x38]
cmp ecx, eax
seta byte [rbp + 0x30]
movzx eax, byte [rbp + 0x30]
test al, al
mov eax, dword [rbp + 0x38]
jne 0x14000d7c1
mov eax, dword [rbp + 0x40]
mov dword [rbp + 0x30], eax
mov ecx, 0x250
mov eax, dword [rbp + 0x30]
mov byte [rbp + 0x30], al
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call fcn.1400288b0
mov dword [rbp - 8], 0x66
mov edx, ebx
mov dword [rbp + 0x40], 1
mov dword [rbp + 0x30], ebx
mov dword [rbp + 0x48], ebx
mov dword [rbp + 0x38], 1
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp - 8]
nop dword [rax]
cmp edx, 7
jge 0x14000d843
mov eax, dword [rbp + 0x30]
cmp eax, 0x418937
jg 0x14000d83c
mov ecx, dword [rbp + 0x38]
inc edx
mov eax, dword [rbp + 0x48]
add ecx, eax
mov dword [rbp + 0x30], ecx
mov eax, dword [rbp + 0x38]
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x38], eax
mov eax, dword [rbp + 0x40]
inc eax
mov dword [rbp + 0x40], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp - 8]
cmp ecx, eax
jne 0x14000d800
jmp 0x14000d843
mov dword [rbp + 0x30], 0xffffffff
mov eax, dword [rbp + 0x40]
mov ecx, r14d
mov dword [rbp + 0x30], eax
call qword [0x1400300a0]
mov ecx, 0x240
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movsd xmm0, qword [0x14002d960]
movsd qword [rbp + 0x30], xmm0
movsd xmm1, qword [rbp + 0x30]
movsd xmm2, qword [rbp + 0x30]
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm2, xmm0
mulsd xmm2, qword [0x14002d4b0]
cvttsd2si eax, xmm2
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rbp + 0x30], xmm0
call fcn.14002bb40
mov byte [rbp + 0x30], 1
mov ecx, 0x238
movzx eax, byte [rbp + 0x30]
mov byte [rbp + 0x30], bl
movzx eax, byte [rbp + 0x30]
mov byte [rbp + 0x30], al
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movsd xmm0, qword [0x14002d6d8]
mov ecx, 0x3a0
movsd qword [rbp + 0x30], xmm0
movsd xmm1, qword [rbp + 0x30]
movsd xmm2, qword [rbp + 0x30]
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm2, xmm0
movsd qword [rbp + 0x30], xmm2
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call fcn.140028b00
mov ecx, 0x50
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov edi, dword [rdi]
mov edx, ebx
sub edi, dword [rsi]
mov dword [rbp + 0x30], 0xcf
inc edi
mov eax, dword [rbp + 0x30]
mov dword [rbp - 8], eax
mov dword [rbp + 0x38], ebx
mov dword [rbp + 0x40], ebx
mov dword [rbp + 0x48], ebx
mov dword [rbp + 0x30], 0x1f
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x38], eax
mov dword [rbp + 0x30], 0xb0
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x40], eax
mov eax, dword [rbp + 0x30]
cmp edx, 0xc
jge 0x14000d980
mov eax, dword [rbp + 0x30]
inc edx
test eax, eax
je 0x14000d980
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp - 8]
cmp ecx, eax
jle 0x14000d96b
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x38]
cmp eax, ecx
jle 0x14000d96b
mov eax, dword [rbp + 0x48]
inc eax
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x38]
mov dword [rbp - 8], eax
mov eax, dword [rbp + 0x40]
mov dword [rbp + 0x38], eax
mov dword [rbp + 0x30], 0x70
jmp 0x14000d938
mov eax, dword [rbp + 0x48]
mov edx, ebx
mov dword [rbp + 0x30], eax
mov dword [rbp + 0x40], 0x38
mov dword [rbp + 0x30], 1
mov dword [rbp + 0x48], ebx
mov dword [rbp - 8], ebx
mov dword [rbp + 0x38], 1
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
nop dword [rax]
cmp edx, 9
jge 0x14000d9e3
mov eax, dword [rbp + 0x40]
inc edx
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp - 8]
add ecx, eax
mov dword [rbp + 0x48], ecx
mov eax, dword [rbp + 0x38]
mov dword [rbp - 8], eax
mov eax, dword [rbp + 0x48]
mov dword [rbp + 0x38], eax
mov eax, dword [rbp + 0x30]
inc eax
mov dword [rbp + 0x30], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
cmp ecx, eax
jne 0x14000d9b0
mov eax, dword [rbp + 0x30]
cmp eax, 1
jne 0x14000d9f1
mov eax, dword [rbp + 0x38]
mov dword [rbp - 0x10], eax
mov eax, dword [rbp + 0x48]
mov ecx, 0x2c8
mov dword [rbp - 0x10], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x140
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x630
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x4e0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x68
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x7c0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call qword [sym.imp.msvcrt.dll_rand]
mov dword [rbp - 8], 0xfd
mov r8d, ebx
mov dword [rbp + 0x40], 1
cdq
mov dword [rbp + 0x30], ebx
idiv edi
mov dword [rbp + 0x48], ebx
mov dword [rbp + 0x38], 1
mov edi, edx
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp - 8]
cmp r8d, 7
jge 0x14000daad
mov eax, dword [rbp + 0x30]
cmp eax, 0x418937
jg 0x14000daa6
mov ecx, dword [rbp + 0x38]
inc r8d
mov eax, dword [rbp + 0x48]
add ecx, eax
mov dword [rbp + 0x30], ecx
mov eax, dword [rbp + 0x38]
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x38], eax
mov eax, dword [rbp + 0x40]
inc eax
mov dword [rbp + 0x40], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp - 8]
cmp ecx, eax
jne 0x14000da68
jmp 0x14000daad
mov dword [rbp + 0x30], 0xffffffff
mov eax, dword [rbp + 0x40]
mov ecx, 0x668
mov dword [rbp + 0x30], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rbp + 0x38], 0x92
mov edx, ebx
mov dword [rbp + 0x48], ebx
mov dword [rbp + 0x40], ebx
mov dword [rbp + 0x30], 1
mov dword [rbp - 0x10], ebx
mov eax, dword [rbp + 0x38]
cmp edx, 0xa
jge 0x14000db3c
mov eax, dword [rbp + 0x38]
inc edx
mov dword [rbp + 0x48], eax
mov dword [rbp + 0x38], 0xd2
mov eax, dword [rbp + 0x38]
mov dword [rbp + 0x40], eax
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
cmp ecx, eax
jne 0x14000db08
mov eax, dword [rbp + 0x30]
inc eax
mov dword [rbp + 0x30], eax
jmp 0x14000db18
mov ecx, dword [rbp - 0x10]
mov eax, dword [rbp + 0x30]
cmp ecx, eax
jge 0x14000db18
mov eax, dword [rbp + 0x30]
mov dword [rbp - 0x10], eax
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
cmp ecx, eax
jle 0x14000db29
mov dword [rbp + 0x30], 1
mov ecx, dword [rbp + 0x40]
mov eax, dword [rbp + 0x48]
cmp ecx, eax
jge 0x14000dad7
mov dword [rbp + 0x30], 1
jmp 0x14000dad7
mov eax, dword [rbp - 0x10]
mov dword [rbp + 0x30], eax
call fcn.14002c800
mov ecx, 0x40
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movss xmm0, dword [0x14002dbe8]
mov dword [rbp + 0x30], 0x27
mov dword [rbp + 0x38], 0x10
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x30]
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x30], eax
mov eax, 0x66666667
movss dword [rbp + 0x30], xmm0
movss xmm0, dword [rbp + 0x30]
cvtps2pd xmm1, xmm0
mulsd xmm1, qword [0x14002d4a0]
cvtpd2ps xmm1, xmm1
movss dword [rbp + 0x30], xmm1
movss xmm0, dword [rbp + 0x30]
movss dword [rbp + 0x30], xmm0
mov dword [rbp + 0x30], 0xb4
mov ecx, dword [rbp + 0x30]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
add eax, eax
sub ecx, eax
mov dword [rbp + 0x30], ecx
mov ecx, 0x438
mov dword [rbp + 0x30], 0xf9
mov dword [rbp + 0x38], 0x53
movd xmm0, dword [rbp + 0x30]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x14002d498]
divsd xmm0, qword [0x14002daa8]
mulsd xmm0, qword [0x14002d508]
movsd qword [rbp + 0x40], xmm0
movd xmm0, dword [rbp + 0x38]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [rbp + 0x40]
movsd qword [rbp + 0x38], xmm0
movd xmm1, dword [rbp + 0x30]
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [rbp + 0x38]
add edi, dword [rsi]
movsd qword [rbp + 0x30], xmm1
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movsd xmm0, qword [0x14002d790]
movsd qword [rbp + 0x30], xmm0
movsd xmm1, qword [rbp + 0x30]
divsd xmm1, qword [0x14002d4a8]
movsd qword [rbp + 0x30], xmm1
movsd xmm0, qword [rbp + 0x30]
movsd qword [rbp + 0x30], xmm0
movsd xmm0, qword [0x14002d958]
mov dword [rbp + 0x30], 0x114
mov dword [rbp + 0x38], 0x47
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x30]
mov ecx, 0x420
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x30], eax
movsd qword [rbp + 0x30], xmm0
movsd xmm1, qword [rbp + 0x30]
movsd xmm2, qword [rbp + 0x30]
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm2, xmm0
mulsd xmm2, qword [0x14002d4b0]
cvttsd2si eax, xmm2
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rbp + 0x30], xmm0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call fcn.1400288b0
mov ecx, 0x240
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rbp + 0x30], 0x11b
mov dword [rbp + 0x38], 0xb0
movd xmm0, dword [rbp + 0x30]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x14002d498]
divsd xmm0, qword [0x14002daa8]
mulsd xmm0, qword [0x14002d508]
movsd qword [rbp + 0x40], xmm0
movd xmm0, dword [rbp + 0x38]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [rbp + 0x40]
movsd qword [rbp + 0x38], xmm0
movd xmm1, dword [rbp + 0x30]
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [rbp + 0x38]
movsd qword [rbp + 0x30], xmm1
mov dword [rbp + 0x40], 0xf7
mov dword [rbp + 0x30], 1
mov dword [rbp + 0x48], ebx
mov dword [rbp - 8], ebx
mov dword [rbp + 0x38], 1
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
cmp ebx, 9
jge 0x14000dd74
mov eax, dword [rbp + 0x40]
inc ebx
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp - 8]
add ecx, eax
mov dword [rbp + 0x48], ecx
mov eax, dword [rbp + 0x38]
mov dword [rbp - 8], eax
mov eax, dword [rbp + 0x48]
mov dword [rbp + 0x38], eax
mov eax, dword [rbp + 0x30]
inc eax
mov dword [rbp + 0x30], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x40]
cmp ecx, eax
jne 0x14000dd41
mov eax, dword [rbp + 0x30]
cmp eax, 1
jne 0x14000dd82
mov eax, dword [rbp + 0x38]
mov dword [rbp - 0x10], eax
mov eax, dword [rbp + 0x48]
mov ecx, 0xc08
movsd xmm0, qword [0x14002d770]
mov dword [rbp - 0x10], eax
mov dword [rbp + 0x30], 0x8a
mov eax, dword [rbp + 0x30]
add eax, 0xa
mov dword [rbp + 0x30], eax
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x30], eax
movsd qword [rbp + 0x30], xmm0
movsd xmm1, qword [rbp + 0x30]
movsd xmm2, qword [rbp + 0x30]
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm2, xmm0
mulsd xmm2, qword [0x14002d4b0]
cvttsd2si eax, xmm2
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rbp + 0x30], xmm0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
call fcn.14002bb40
mov dword [rbp + 0x30], 0x100
mov dword [rbp + 0x38], 0xd9
mov ecx, dword [rbp + 0x38]
mov eax, dword [rbp + 0x30]
imul ecx, eax
mov dword [rbp + 0x30], ecx
mov dword [rbp + 0x40], 0x61
mov dword [rbp + 0x30], 0x89
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x38]
imul ecx, eax
mov eax, dword [rbp + 0x40]
add eax, ecx
mov dword [rbp + 0x48], eax
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x30]
imul ecx, eax
mov eax, dword [rbp + 0x38]
imul eax, ecx
cdq
sub eax, edx
mov edx, dword [rbp + 0x30]
mov ecx, dword [rbp + 0x40]
sar eax, 1
imul edx, ecx
add edx, eax
mov eax, edi
mov dword [rbp + 0x30], edx
add rsp, 0x30
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret