// File: /workspace/github_cpp_makefile_star2_O1/simonho288[P]webassembly_cppvsjs/main.cpp
// Function: CreateProducts()
auto CreateProducts() {
  // Create 10 demo products
  vector<Product> products = {
    {"Product A", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor tempus mauris eu luctus. Sed convallis vehicula ligula at vestibulum. Nullam ultricies eu dolor quis gravida. Nullam lobortis mollis lorem.", 23.5},
    {"Product B", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dignissim velit sit amet dui posuere rutrum. Donec blandit lorem finibus bibendum placerat. Quisque justo enim, interdum aliquam viverra sed, cursus.", 16.8},
    {"Product C", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque rhoncus sagittis diam, tincidunt elementum ex elementum lacinia. Praesent ornare auctor rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada.", 8.99},
    {"Product D", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis egestas ante. Aliquam erat volutpat. Nulla tristique laoreet dapibus. Morbi non magna ullamcorper, accumsan urna at, venenatis mauris. Vestibulum aliquam.", 3.25},
    {"Product E", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dictum egestas orci et aliquam. Curabitur dapibus pharetra elit vel molestie. Nunc imperdiet accumsan molestie. Phasellus eu mauris risus. Nunc convallis.", 107.3},
    {"Product F", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eu nibh volutpat, facilisis purus et, luctus risus. Aliquam volutpat urna a diam feugiat feugiat. Sed sed odio eleifend, dictum turpis.", 79.8},
    {"Product G", "Suspendisse potenti. Nulla feugiat cursus eros, ut fringilla mi mattis in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc non lectus enim. Donec quis lorem sit amet augue semper.", 250.0},
    {"Product H", "Nam sed nulla a ex convallis accumsan non sit amet lectus. Suspendisse in tempus eros, hendrerit iaculis mi. Mauris in iaculis elit. Donec bibendum purus non enim tempus posuere. Nam.", 11.2},
    {"Product I", "Quisque sed egestas nunc. Aenean diam lorem, blandit at nisl at, maximus blandit velit. Praesent imperdiet eget augue sed commodo. Morbi bibendum eros ut leo commodo commodo. Integer nibh ante.", 97.2},
    {"Product J", "Aliquam id est nec lectus vulputate pretium. Nullam auctor tortor risus, vel pulvinar elit viverra in. Vestibulum suscipit magna in massa ornare posuere. Vestibulum ante ipsum primis in faucibus orci.", 123.0}
  };

  return products;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2d8, %rsp            # imm = 0x2D8
movq %rdi, %r15
leaq -0x2f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ccb(%rip), %rsi      # 0x5030
leaq 0x2ccd(%rip), %rdx      # 0x5039
leaq -0x300(%rbp), %r14
movq %r14, %rdi
callq 0x2f5c
leaq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ca6(%rip), %rsi      # 0x503a
leaq 0x2d6d(%rip), %rdx      # 0x5108
callq 0x2f5c
movabsq $0x4037800000000000, %rax # imm = 0x4037800000000000
leaq -0x2b8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2a8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d42(%rip), %rsi      # 0x5109
leaq 0x2d44(%rip), %rdx      # 0x5112
movq %r14, %rdi
callq 0x2f5c
leaq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d24(%rip), %rsi      # 0x5113
leaq 0x2df3(%rip), %rdx      # 0x51e9
callq 0x2f5c
movabsq $0x4030cccccccccccd, %rax # imm = 0x4030CCCCCCCCCCCD
leaq -0x270(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x260(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dc8(%rip), %rsi      # 0x51ea
leaq 0x2dca(%rip), %rdx      # 0x51f3
movq %r14, %rdi
callq 0x2f5c
leaq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2daa(%rip), %rsi      # 0x51f4
leaq 0x2e8a(%rip), %rdx      # 0x52db
callq 0x2f5c
movabsq $0x4021fae147ae147b, %rax # imm = 0x4021FAE147AE147B
leaq -0x228(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x218(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e5f(%rip), %rsi      # 0x52dc
leaq 0x2e61(%rip), %rdx      # 0x52e5
movq %r14, %rdi
callq 0x2f5c
leaq -0x208(%rbp), %rdi
leaq -0x1f8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e41(%rip), %rsi      # 0x52e6
leaq 0x2f18(%rip), %rdx      # 0x53c4
callq 0x2f5c
movabsq $0x400a000000000000, %rax # imm = 0x400A000000000000
leaq -0x1e0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x1d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2eed(%rip), %rsi      # 0x53c5
leaq 0x2eef(%rip), %rdx      # 0x53ce
movq %r14, %rdi
callq 0x2f5c
leaq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ecf(%rip), %rsi      # 0x53cf
leaq 0x2fa1(%rip), %rdx      # 0x54a8
callq 0x2f5c
movabsq $0x405ad33333333333, %rax # imm = 0x405AD33333333333
leaq -0x198(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x188(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f76(%rip), %rsi      # 0x54a9
leaq 0x2f78(%rip), %rdx      # 0x54b2
movq %r14, %rdi
callq 0x2f5c
leaq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f58(%rip), %rsi      # 0x54b3
leaq 0x3017(%rip), %rdx      # 0x5579
callq 0x2f5c
movabsq $0x4053f33333333333, %rax # imm = 0x4053F33333333333
leaq -0x150(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x140(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2fec(%rip), %rsi      # 0x557a
leaq 0x2fee(%rip), %rdx      # 0x5583
movq %r14, %rdi
callq 0x2f5c
leaq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2fce(%rip), %rsi      # 0x5584
leaq 0x3088(%rip), %rdx      # 0x5645
callq 0x2f5c
movabsq $0x406f400000000000, %rax # imm = 0x406F400000000000
leaq -0x108(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xf8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x305d(%rip), %rsi      # 0x5646
leaq 0x305f(%rip), %rdx      # 0x564f
movq %r14, %rdi
callq 0x2f5c
leaq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x303f(%rip), %rsi      # 0x5650
leaq 0x30ef(%rip), %rdx      # 0x5707
callq 0x2f5c
movabsq $0x4026666666666666, %rax # imm = 0x4026666666666666
leaq -0xc0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xb0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x30c4(%rip), %rsi      # 0x5708
leaq 0x30c6(%rip), %rdx      # 0x5711
movq %r14, %rdi
callq 0x2f5c
leaq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x30a6(%rip), %rsi      # 0x5712
leaq 0x3160(%rip), %rdx      # 0x57d3
callq 0x2f5c
movabsq $0x40584ccccccccccd, %rax # imm = 0x40584CCCCCCCCCCD
leaq -0x78(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x68(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x313a(%rip), %rsi      # 0x57d4
leaq 0x313c(%rip), %rdx      # 0x57dd
movq %r14, %rdi
callq 0x2f5c
leaq -0x58(%rbp), %rdi
leaq -0x48(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x3122(%rip), %rsi      # 0x57de
leaq 0x31e3(%rip), %rdx      # 0x58a6
callq 0x2f5c
movabsq $0x405ec00000000000, %rax # imm = 0x405EC00000000000
leaq -0x300(%rbp), %rsi
movq %rax, 0x2c8(%rsi)
leaq -0x29(%rbp), %rcx
movl $0xa, %edx
movq %r15, %rdi
callq 0x2dd2
movq $-0x2d0, %rbx           # imm = 0xFD30
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x270d
movq (%r13), %rsi
incq %rsi
callq 0x2100
movq -0x30(%r13), %rdi
leaq -0x20(%r13), %rax
cmpq %rdi, %rax
je 0x2725
movq (%rax), %rsi
incq %rsi
callq 0x2100
addq $-0x48, %r13
addq $0x48, %rbx
jne 0x26f8
movq %r15, %rax
addq $0x2d8, %rsp            # imm = 0x2D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r13
movl $0x288, %r15d           # imm = 0x288
leaq (%r15,%rbp), %rdi
addq $-0x300, %rdi           # imm = 0xFD00
callq 0x2e1c
addq $-0x48, %r15
cmpq $-0x48, %r15
jne 0x274d
xorl %r15d, %r15d
jmp 0x2772
movq %rax, %r13
movb $0x1, %r15b
testb %r15b, %r15b
je 0x2794
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x2794
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x2794
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
jmp 0x27a0
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
testb %al, %al
je 0x27c7
movq -0xc0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x27c7
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x27c7
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x2801
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x2801
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x2801
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x27c9
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x283b
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x283b
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x283b
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x2803
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x2875
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x2875
movq -0x188(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x2875
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x283d
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x28af
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x28af
movq -0x1d0(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x28af
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x2877
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x28e9
movq -0x228(%rbp), %rdi
leaq -0x218(%rbp), %rax
cmpq %rax, %rdi
je 0x28e9
movq -0x218(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x28e9
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x28b1
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x2923
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x2923
movq -0x260(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x2923
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x28eb
movq %rax, %r13
movb $0x1, %r15b
xorl %eax, %eax
testb %al, %al
je 0x294b
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rax
cmpq %rax, %rdi
je 0x294b
movq -0x2a8(%rbp), %rsi
incq %rsi
callq 0x2100
xorl %eax, %eax
testb %al, %al
je 0x2973
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x2973
movq -0x2f0(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x300(%rbp), %rax
cmpq %r14, %rax
setne %al
testb %r15b, %r15b
je 0x29a1
testb %al, %al
je 0x29a1
leaq -0x300(%rbp), %rbx
addq $-0x48, %r14
movq %r14, %rdi
callq 0x2e1c
cmpq %rbx, %r14
jne 0x2990
movq %r13, %rdi
callq 0x21a0
movq %rax, %r13
movb $0x1, %al
movb $0x1, %r15b
jmp 0x2925
movq %rax, %r13
movb $0x1, %r15b
jmp 0x294b
movq %rax, %r13
movb $0x1, %al
leaq -0x300(%rbp), %r14
movb $0x1, %r15b
jmp 0x294d
movq %rax, %r13
movb $0x1, %r15b
jmp 0x2973