// File: /workspace/github_cpp_makefile_star2_O3/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), %r14
movq %r14, -0x10(%r14)
leaq 0x2ccb(%rip), %rsi      # 0x5030
leaq 0x2ccd(%rip), %rdx      # 0x5039
leaq -0x300(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e52
leaq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ca6(%rip), %rsi      # 0x503a
leaq 0x2d6d(%rip), %rdx      # 0x5108
callq 0x2e52
movabsq $0x4037800000000000, %rax # imm = 0x4037800000000000
leaq -0x2b8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2a8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2d41(%rip), %rsi      # 0x5109
leaq 0x2d43(%rip), %rdx      # 0x5112
movq %r14, %rdi
callq 0x2e52
leaq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d23(%rip), %rsi      # 0x5113
leaq 0x2df2(%rip), %rdx      # 0x51e9
callq 0x2e52
movabsq $0x4030cccccccccccd, %rax # imm = 0x4030CCCCCCCCCCCD
leaq -0x270(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x260(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2dc6(%rip), %rsi      # 0x51ea
leaq 0x2dc8(%rip), %rdx      # 0x51f3
movq %r14, %rdi
callq 0x2e52
leaq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2da8(%rip), %rsi      # 0x51f4
leaq 0x2e88(%rip), %rdx      # 0x52db
callq 0x2e52
movabsq $0x4021fae147ae147b, %rax # imm = 0x4021FAE147AE147B
leaq -0x228(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x218(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2e5c(%rip), %rsi      # 0x52dc
leaq 0x2e5e(%rip), %rdx      # 0x52e5
movq %r14, %rdi
callq 0x2e52
leaq -0x208(%rbp), %rdi
leaq -0x1f8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e3e(%rip), %rsi      # 0x52e6
leaq 0x2f15(%rip), %rdx      # 0x53c4
callq 0x2e52
movabsq $0x400a000000000000, %rax # imm = 0x400A000000000000
leaq -0x1e0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x1d0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2ee9(%rip), %rsi      # 0x53c5
leaq 0x2eeb(%rip), %rdx      # 0x53ce
movq %r14, %rdi
callq 0x2e52
leaq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ecb(%rip), %rsi      # 0x53cf
leaq 0x2f9d(%rip), %rdx      # 0x54a8
callq 0x2e52
movabsq $0x405ad33333333333, %rax # imm = 0x405AD33333333333
leaq -0x198(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x188(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2f71(%rip), %rsi      # 0x54a9
leaq 0x2f73(%rip), %rdx      # 0x54b2
movq %r14, %rdi
callq 0x2e52
leaq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f53(%rip), %rsi      # 0x54b3
leaq 0x3012(%rip), %rdx      # 0x5579
callq 0x2e52
movabsq $0x4053f33333333333, %rax # imm = 0x4053F33333333333
leaq -0x150(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x140(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x2fe6(%rip), %rsi      # 0x557a
leaq 0x2fe8(%rip), %rdx      # 0x5583
movq %r14, %rdi
callq 0x2e52
leaq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2fc8(%rip), %rsi      # 0x5584
leaq 0x3082(%rip), %rdx      # 0x5645
callq 0x2e52
movabsq $0x406f400000000000, %rax # imm = 0x406F400000000000
leaq -0x108(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xf8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x3056(%rip), %rsi      # 0x5646
leaq 0x3058(%rip), %rdx      # 0x564f
movq %r14, %rdi
callq 0x2e52
leaq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x3038(%rip), %rsi      # 0x5650
leaq 0x30e8(%rip), %rdx      # 0x5707
callq 0x2e52
movabsq $0x4026666666666666, %rax # imm = 0x4026666666666666
leaq -0xc0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xb0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x30bc(%rip), %rsi      # 0x5708
leaq 0x30be(%rip), %rdx      # 0x5711
movq %r14, %rdi
callq 0x2e52
leaq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x309e(%rip), %rsi      # 0x5712
leaq 0x3158(%rip), %rdx      # 0x57d3
callq 0x2e52
movabsq $0x40584ccccccccccd, %rax # imm = 0x40584CCCCCCCCCCD
leaq -0x78(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x68(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x3133(%rip), %rsi      # 0x57d4
leaq 0x3135(%rip), %rdx      # 0x57dd
movq %r14, %rdi
callq 0x2e52
leaq -0x58(%rbp), %rdi
leaq -0x48(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x311a(%rip), %rsi      # 0x57de
leaq 0x31db(%rip), %rdx      # 0x58a6
callq 0x2e52
movabsq $0x405ec00000000000, %rax # imm = 0x405EC00000000000
leaq -0x300(%rbp), %rsi
movq %rax, 0x2c8(%rsi)
leaq -0x29(%rbp), %rcx
movl $0xa, %edx
movq %r15, %rdi
callq 0x2cc4
movq $-0x2d0, %rbx           # imm = 0xFD30
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0x2716
movq (%r12), %rsi
incq %rsi
callq 0x2100
movq -0x30(%r12), %rdi
leaq -0x20(%r12), %rax
cmpq %rdi, %rax
je 0x2730
movq (%rax), %rsi
incq %rsi
callq 0x2100
addq $-0x48, %r12
addq $0x48, %rbx
jne 0x2700
movq %r15, %rax
addq $0x2d8, %rsp            # imm = 0x2D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movl $0x288, %ebx            # imm = 0x288
leaq (%rbx,%rbp), %rdi
addq $-0x300, %rdi           # imm = 0xFD00
callq 0x2d0e
addq $-0x48, %rbx
cmpq $-0x48, %rbx
jne 0x2757
jmp 0x289c
movq %rax, %r15
movq -0x78(%rbp), %rdi
cmpq %r13, %rdi
je 0x288b
movq -0x68(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0xc0(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0xb0(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x108(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0xf8(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x150(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0x140(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x198(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0x188(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x1e0(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0x1d0(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x228(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0x218(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x270(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0x260(%rbp), %rsi
jmp 0x287e
jmp 0x2888
movq %rax, %r15
movq -0x2b8(%rbp), %rdi
cmpq %r12, %rdi
je 0x288b
movq -0x2a8(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x288b
movq %rax, %r15
addq $-0x48, %r14
movq %r14, %rdi
callq 0x2d0e
cmpq %rbx, %r14
jne 0x288b
movq %r15, %rdi
callq 0x21a0
movq %rax, %r15
movq -0x300(%rbp), %rdi
cmpq %r14, %rdi
je 0x289c
movq -0x2f0(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x289c