// File: /workspace/github_cpp_makefile_star2_O2/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 %r12
pushq %rbx
subq $0x2f0, %rsp            # imm = 0x2F0
movq %rdi, %r15
leaq 0x1cd8(%rip), %rsi      # 0x4020
leaq -0x308(%rbp), %rbx
leaq -0x35(%rbp), %rdx
movq %rbx, %rdi
callq 0x2050
leaq -0x2e8(%rbp), %rdi
leaq 0x1cc1(%rip), %rsi      # 0x402a
leaq -0x34(%rbp), %rdx
callq 0x2050
movabsq $0x4037800000000000, %rax # imm = 0x4037800000000000
leaq -0x2c0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x1d6b(%rip), %rsi      # 0x40f9
leaq -0x33(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x2a0(%rbp), %rdi
leaq 0x1d5b(%rip), %rsi      # 0x4103
leaq -0x32(%rbp), %rdx
callq 0x2050
movabsq $0x4030cccccccccccd, %rax # imm = 0x4030CCCCCCCCCCCD
leaq -0x278(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x1e0d(%rip), %rsi      # 0x41da
leaq -0x31(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x258(%rbp), %rdi
leaq 0x1dfd(%rip), %rsi      # 0x41e4
leaq -0x30(%rbp), %rdx
callq 0x2050
movabsq $0x4021fae147ae147b, %rax # imm = 0x4021FAE147AE147B
leaq -0x230(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x1ec0(%rip), %rsi      # 0x42cc
leaq -0x2f(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x210(%rbp), %rdi
leaq 0x1eb0(%rip), %rsi      # 0x42d6
leaq -0x2e(%rbp), %rdx
callq 0x2050
movabsq $0x400a000000000000, %rax # imm = 0x400A000000000000
leaq -0x1e8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x1f6a(%rip), %rsi      # 0x43b5
leaq -0x2d(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x1c8(%rbp), %rdi
leaq 0x1f5a(%rip), %rsi      # 0x43bf
leaq -0x2c(%rbp), %rdx
callq 0x2050
movabsq $0x405ad33333333333, %rax # imm = 0x405AD33333333333
leaq -0x1a0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x200f(%rip), %rsi      # 0x4499
leaq -0x2b(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x180(%rbp), %rdi
leaq 0x1fff(%rip), %rsi      # 0x44a3
leaq -0x2a(%rbp), %rdx
callq 0x2050
movabsq $0x4053f33333333333, %rax # imm = 0x4053F33333333333
leaq -0x158(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x20a1(%rip), %rsi      # 0x456a
leaq -0x29(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x138(%rbp), %rdi
leaq 0x2091(%rip), %rsi      # 0x4574
leaq -0x28(%rbp), %rdx
callq 0x2050
movabsq $0x406f400000000000, %rax # imm = 0x406F400000000000
leaq -0x110(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x212e(%rip), %rsi      # 0x4636
leaq -0x27(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0xf0(%rbp), %rdi
leaq 0x211e(%rip), %rsi      # 0x4640
leaq -0x26(%rbp), %rdx
callq 0x2050
movabsq $0x4026666666666666, %rax # imm = 0x4026666666666666
leaq -0xc8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x21b1(%rip), %rsi      # 0x46f8
leaq -0x25(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0xa8(%rbp), %rdi
leaq 0x21a1(%rip), %rsi      # 0x4702
leaq -0x24(%rbp), %rdx
callq 0x2050
movabsq $0x40584ccccccccccd, %rax # imm = 0x40584CCCCCCCCCCD
leaq -0x80(%rbp), %r14
movq %rax, -0x8(%r14)
leaq 0x2241(%rip), %rsi      # 0x47c4
leaq -0x23(%rbp), %rdx
movq %r14, %rdi
callq 0x2050
leaq -0x60(%rbp), %rdi
leaq 0x2234(%rip), %rsi      # 0x47ce
leaq -0x22(%rbp), %rdx
callq 0x2050
movabsq $0x405ec00000000000, %rax # imm = 0x405EC00000000000
leaq -0x308(%rbp), %rsi
movq %rax, 0x2c8(%rsi)
pushq $0xa
popq %rdx
leaq -0x21(%rbp), %rcx
movq %r15, %rdi
callq 0x28ee
movl $0x288, %ebx            # imm = 0x288
leaq (%rbx,%rbp), %rdi
addq $-0x308, %rdi           # imm = 0xFCF8
callq 0x2928
addq $-0x48, %rbx
cmpq $-0x48, %rbx
jne 0x25cf
movq %r15, %rax
addq $0x2f0, %rsp            # imm = 0x2F0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movl $0x288, %r12d           # imm = 0x288
leaq (%r12,%rbp), %rdi
addq $-0x308, %rdi           # imm = 0xFCF8
callq 0x2928
addq $-0x48, %r12
cmpq $-0x48, %r12
jne 0x2605
xorl %eax, %eax
jmp 0x2655
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
jmp 0x2643
jmp 0x2650
movq %rax, %r15
movq %r14, %rdi
callq 0x2070
jmp 0x2653
movq %rax, %r15
movb $0x1, %al
cmpq %r14, %rbx
setne %cl
testb %al, %al
je 0x2674
testb %cl, %cl
je 0x2674
addq $-0x48, %r14
movq %r14, %rdi
callq 0x2928
cmpq %rbx, %r14
jne 0x2663
movq %r15, %rdi
callq 0x21a0
movq %rax, %r15
leaq -0x308(%rbp), %rdi
callq 0x2070
jmp 0x2674
movq %rax, %r15
jmp 0x2674