// File: 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
subq $0x510, %rsp            # imm = 0x510
movq %rdi, -0x350(%rbp)
movq %rdi, %rax
movq %rax, -0x348(%rbp)
movq %rdi, -0x8(%rbp)
movb $0x0, -0x9(%rbp)
movb $0x1, -0x32a(%rbp)
leaq -0x2f0(%rbp), %rax
movq %rax, -0x340(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x21c0
movq -0x340(%rbp), %rdi
movq -0x338(%rbp), %rdx
leaq 0x4c48(%rip), %rsi      # 0x7020
callq 0x2150
jmp 0x23df
movb $0x1, -0x30e(%rbp)
leaq -0x2d0(%rbp), %rax
movq %rax, -0x360(%rbp)
leaq -0x30d(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x21c0
movq -0x360(%rbp), %rdi
movq -0x358(%rbp), %rdx
leaq 0x4c0e(%rip), %rsi      # 0x702a
callq 0x2150
jmp 0x2423
movabsq $0x4037800000000000, %rax # imm = 0x4037800000000000
movq %rax, -0x2b0(%rbp)
movb $0x0, -0x30e(%rbp)
leaq -0x2a8(%rbp), %rax
movq %rax, -0x370(%rbp)
movq %rax, %rcx
movq %rcx, -0x378(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x30f(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x21c0
movq -0x370(%rbp), %rdi
movq -0x368(%rbp), %rdx
leaq 0x4c77(%rip), %rsi      # 0x70f9
callq 0x2150
jmp 0x2489
movq -0x378(%rbp), %rax
movb $0x1, -0x311(%rbp)
addq $0x20, %rax
movq %rax, -0x388(%rbp)
leaq -0x310(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x21c0
movq -0x388(%rbp), %rdi
movq -0x380(%rbp), %rdx
leaq 0x4c39(%rip), %rsi      # 0x7103
callq 0x2150
jmp 0x24d1
movq -0x378(%rbp), %rax
movabsq $0x4030cccccccccccd, %rcx # imm = 0x4030CCCCCCCCCCCD
movq %rcx, 0x40(%rax)
movb $0x0, -0x311(%rbp)
leaq -0x260(%rbp), %rax
movq %rax, -0x398(%rbp)
movq %rax, %rcx
movq %rcx, -0x3a0(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x312(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x21c0
movq -0x398(%rbp), %rdi
movq -0x390(%rbp), %rdx
leaq 0x4ca6(%rip), %rsi      # 0x71da
callq 0x2150
jmp 0x253b
movq -0x3a0(%rbp), %rax
movb $0x1, -0x314(%rbp)
addq $0x20, %rax
movq %rax, -0x3b0(%rbp)
leaq -0x313(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x21c0
movq -0x3b0(%rbp), %rdi
movq -0x3a8(%rbp), %rdx
leaq 0x4c68(%rip), %rsi      # 0x71e4
callq 0x2150
jmp 0x2583
movq -0x3a0(%rbp), %rax
movabsq $0x4021fae147ae147b, %rcx # imm = 0x4021FAE147AE147B
movq %rcx, 0x40(%rax)
movb $0x0, -0x314(%rbp)
leaq -0x218(%rbp), %rax
movq %rax, -0x3c0(%rbp)
movq %rax, %rcx
movq %rcx, -0x3c8(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x315(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x21c0
movq -0x3c0(%rbp), %rdi
movq -0x3b8(%rbp), %rdx
leaq 0x4ce6(%rip), %rsi      # 0x72cc
callq 0x2150
jmp 0x25ed
movq -0x3c8(%rbp), %rax
movb $0x1, -0x317(%rbp)
addq $0x20, %rax
movq %rax, -0x3d8(%rbp)
leaq -0x316(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x21c0
movq -0x3d8(%rbp), %rdi
movq -0x3d0(%rbp), %rdx
leaq 0x4ca8(%rip), %rsi      # 0x72d6
callq 0x2150
jmp 0x2635
movq -0x3c8(%rbp), %rax
movabsq $0x400a000000000000, %rcx # imm = 0x400A000000000000
movq %rcx, 0x40(%rax)
movb $0x0, -0x317(%rbp)
leaq -0x1d0(%rbp), %rax
movq %rax, -0x3e8(%rbp)
movq %rax, %rcx
movq %rcx, -0x3f0(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x318(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x21c0
movq -0x3e8(%rbp), %rdi
movq -0x3e0(%rbp), %rdx
leaq 0x4d1d(%rip), %rsi      # 0x73b5
callq 0x2150
jmp 0x269f
movq -0x3f0(%rbp), %rax
movb $0x1, -0x31a(%rbp)
addq $0x20, %rax
movq %rax, -0x400(%rbp)
leaq -0x319(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x21c0
movq -0x400(%rbp), %rdi
movq -0x3f8(%rbp), %rdx
leaq 0x4cdf(%rip), %rsi      # 0x73bf
callq 0x2150
jmp 0x26e7
movq -0x3f0(%rbp), %rax
movabsq $0x405ad33333333333, %rcx # imm = 0x405AD33333333333
movq %rcx, 0x40(%rax)
movb $0x0, -0x31a(%rbp)
leaq -0x188(%rbp), %rax
movq %rax, -0x410(%rbp)
movq %rax, %rcx
movq %rcx, -0x418(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x31b(%rbp), %rdi
movq %rdi, -0x408(%rbp)
callq 0x21c0
movq -0x410(%rbp), %rdi
movq -0x408(%rbp), %rdx
leaq 0x4d4f(%rip), %rsi      # 0x7499
callq 0x2150
jmp 0x2751
movq -0x418(%rbp), %rax
movb $0x1, -0x31d(%rbp)
addq $0x20, %rax
movq %rax, -0x428(%rbp)
leaq -0x31c(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x21c0
movq -0x428(%rbp), %rdi
movq -0x420(%rbp), %rdx
leaq 0x4d11(%rip), %rsi      # 0x74a3
callq 0x2150
jmp 0x2799
movq -0x418(%rbp), %rax
movabsq $0x4053f33333333333, %rcx # imm = 0x4053F33333333333
movq %rcx, 0x40(%rax)
movb $0x0, -0x31d(%rbp)
leaq -0x140(%rbp), %rax
movq %rax, -0x438(%rbp)
movq %rax, %rcx
movq %rcx, -0x440(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x31e(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x21c0
movq -0x438(%rbp), %rdi
movq -0x430(%rbp), %rdx
leaq 0x4d6e(%rip), %rsi      # 0x756a
callq 0x2150
jmp 0x2803
movq -0x440(%rbp), %rax
movb $0x1, -0x320(%rbp)
addq $0x20, %rax
movq %rax, -0x450(%rbp)
leaq -0x31f(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x21c0
movq -0x450(%rbp), %rdi
movq -0x448(%rbp), %rdx
leaq 0x4d30(%rip), %rsi      # 0x7574
callq 0x2150
jmp 0x284b
movq -0x440(%rbp), %rax
movabsq $0x406f400000000000, %rcx # imm = 0x406F400000000000
movq %rcx, 0x40(%rax)
movb $0x0, -0x320(%rbp)
leaq -0xf8(%rbp), %rax
movq %rax, -0x460(%rbp)
movq %rax, %rcx
movq %rcx, -0x468(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x321(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x21c0
movq -0x460(%rbp), %rdi
movq -0x458(%rbp), %rdx
leaq 0x4d88(%rip), %rsi      # 0x7636
callq 0x2150
jmp 0x28b5
movq -0x468(%rbp), %rax
movb $0x1, -0x323(%rbp)
addq $0x20, %rax
movq %rax, -0x478(%rbp)
leaq -0x322(%rbp), %rdi
movq %rdi, -0x470(%rbp)
callq 0x21c0
movq -0x478(%rbp), %rdi
movq -0x470(%rbp), %rdx
leaq 0x4d4a(%rip), %rsi      # 0x7640
callq 0x2150
jmp 0x28fd
movq -0x468(%rbp), %rax
movabsq $0x4026666666666666, %rcx # imm = 0x4026666666666666
movq %rcx, 0x40(%rax)
movb $0x0, -0x323(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0x488(%rbp)
movq %rax, %rcx
movq %rcx, -0x490(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x324(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x21c0
movq -0x488(%rbp), %rdi
movq -0x480(%rbp), %rdx
leaq 0x4d98(%rip), %rsi      # 0x76f8
callq 0x2150
jmp 0x2967
movq -0x490(%rbp), %rax
movb $0x1, -0x326(%rbp)
addq $0x20, %rax
movq %rax, -0x4a0(%rbp)
leaq -0x325(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x21c0
movq -0x4a0(%rbp), %rdi
movq -0x498(%rbp), %rdx
leaq 0x4d5a(%rip), %rsi      # 0x7702
callq 0x2150
jmp 0x29af
movq -0x490(%rbp), %rax
movabsq $0x40584ccccccccccd, %rcx # imm = 0x40584CCCCCCCCCCD
movq %rcx, 0x40(%rax)
movb $0x0, -0x326(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x4b0(%rbp)
movq %rax, %rcx
movq %rcx, -0x4b8(%rbp)
movq %rax, -0x2f8(%rbp)
leaq -0x327(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x21c0
movq -0x4b0(%rbp), %rdi
movq -0x4a8(%rbp), %rdx
leaq 0x4db5(%rip), %rsi      # 0x77c4
callq 0x2150
jmp 0x2a16
movq -0x4b8(%rbp), %rax
movb $0x1, -0x329(%rbp)
addq $0x20, %rax
movq %rax, -0x4c8(%rbp)
leaq -0x328(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x21c0
movq -0x4c8(%rbp), %rdi
movq -0x4c0(%rbp), %rdx
leaq 0x4d77(%rip), %rsi      # 0x77ce
callq 0x2150
jmp 0x2a5e
movq -0x4b8(%rbp), %rax
movabsq $0x405ec00000000000, %rcx # imm = 0x405EC00000000000
movq %rcx, 0x40(%rax)
movb $0x0, -0x329(%rbp)
movb $0x0, -0x32a(%rbp)
leaq -0x2f0(%rbp), %rax
movq %rax, -0x20(%rbp)
movq $0xa, -0x18(%rbp)
leaq -0x32b(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x3650
movq -0x350(%rbp), %rdi
movq -0x4d0(%rbp), %rcx
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x3670
jmp 0x2ac4
leaq -0x32b(%rbp), %rdi
callq 0x36f0
leaq -0x2f0(%rbp), %rax
movq %rax, -0x4e0(%rbp)
addq $0x2d0, %rax            # imm = 0x2D0
movq %rax, -0x4d8(%rbp)
movq -0x4d8(%rbp), %rdi
addq $-0x48, %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x3710
movq -0x4e0(%rbp), %rcx
movq -0x4e8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4d8(%rbp)
jne 0x2aeb
leaq -0x328(%rbp), %rdi
callq 0x2130
leaq -0x327(%rbp), %rdi
callq 0x2130
leaq -0x325(%rbp), %rdi
callq 0x2130
leaq -0x324(%rbp), %rdi
callq 0x2130
leaq -0x322(%rbp), %rdi
callq 0x2130
leaq -0x321(%rbp), %rdi
callq 0x2130
leaq -0x31f(%rbp), %rdi
callq 0x2130
leaq -0x31e(%rbp), %rdi
callq 0x2130
leaq -0x31c(%rbp), %rdi
callq 0x2130
leaq -0x31b(%rbp), %rdi
callq 0x2130
leaq -0x319(%rbp), %rdi
callq 0x2130
leaq -0x318(%rbp), %rdi
callq 0x2130
leaq -0x316(%rbp), %rdi
callq 0x2130
leaq -0x315(%rbp), %rdi
callq 0x2130
leaq -0x313(%rbp), %rdi
callq 0x2130
leaq -0x312(%rbp), %rdi
callq 0x2130
leaq -0x310(%rbp), %rdi
callq 0x2130
leaq -0x30f(%rbp), %rdi
callq 0x2130
leaq -0x30d(%rbp), %rdi
callq 0x2130
leaq -0x2f9(%rbp), %rdi
callq 0x2130
movb $0x1, -0x9(%rbp)
testb $0x1, -0x9(%rbp)
jne 0x30a4
jmp 0x3098
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x3032
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x300d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x3001
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2fdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2fd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2fab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2f0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2ee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2edb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2eb6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2eaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2e85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2e79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
jmp 0x2e54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x308(%rbp)
movl %eax, -0x30c(%rbp)
leaq -0x32b(%rbp), %rdi
callq 0x36f0
leaq -0x2f0(%rbp), %rax
movq %rax, -0x4f8(%rbp)
addq $0x2d0, %rax            # imm = 0x2D0
movq %rax, -0x4f0(%rbp)
movq -0x4f0(%rbp), %rdi
addq $-0x48, %rdi
movq %rdi, -0x500(%rbp)
callq 0x3710
movq -0x4f8(%rbp), %rcx
movq -0x500(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4f0(%rbp)
jne 0x2e21
jmp 0x2e54
leaq -0x328(%rbp), %rdi
callq 0x2130
testb $0x1, -0x329(%rbp)
jne 0x2e6b
jmp 0x2e77
movq -0x4b0(%rbp), %rdi
callq 0x2090
jmp 0x2e79
leaq -0x327(%rbp), %rdi
callq 0x2130
leaq -0x325(%rbp), %rdi
callq 0x2130
testb $0x1, -0x326(%rbp)
jne 0x2e9c
jmp 0x2ea8
movq -0x488(%rbp), %rdi
callq 0x2090
jmp 0x2eaa
leaq -0x324(%rbp), %rdi
callq 0x2130
leaq -0x322(%rbp), %rdi
callq 0x2130
testb $0x1, -0x323(%rbp)
jne 0x2ecd
jmp 0x2ed9
movq -0x460(%rbp), %rdi
callq 0x2090
jmp 0x2edb
leaq -0x321(%rbp), %rdi
callq 0x2130
leaq -0x31f(%rbp), %rdi
callq 0x2130
testb $0x1, -0x320(%rbp)
jne 0x2efe
jmp 0x2f0a
movq -0x438(%rbp), %rdi
callq 0x2090
jmp 0x2f0c
leaq -0x31e(%rbp), %rdi
callq 0x2130
leaq -0x31c(%rbp), %rdi
callq 0x2130
testb $0x1, -0x31d(%rbp)
jne 0x2f2f
jmp 0x2f3b
movq -0x410(%rbp), %rdi
callq 0x2090
jmp 0x2f3d
leaq -0x31b(%rbp), %rdi
callq 0x2130
leaq -0x319(%rbp), %rdi
callq 0x2130
testb $0x1, -0x31a(%rbp)
jne 0x2f60
jmp 0x2f6c
movq -0x3e8(%rbp), %rdi
callq 0x2090
jmp 0x2f6e
leaq -0x318(%rbp), %rdi
callq 0x2130
leaq -0x316(%rbp), %rdi
callq 0x2130
testb $0x1, -0x317(%rbp)
jne 0x2f91
jmp 0x2f9d
movq -0x3c0(%rbp), %rdi
callq 0x2090
jmp 0x2f9f
leaq -0x315(%rbp), %rdi
callq 0x2130
leaq -0x313(%rbp), %rdi
callq 0x2130
testb $0x1, -0x314(%rbp)
jne 0x2fc2
jmp 0x2fce
movq -0x398(%rbp), %rdi
callq 0x2090
jmp 0x2fd0
leaq -0x312(%rbp), %rdi
callq 0x2130
leaq -0x310(%rbp), %rdi
callq 0x2130
testb $0x1, -0x311(%rbp)
jne 0x2ff3
jmp 0x2fff
movq -0x370(%rbp), %rdi
callq 0x2090
jmp 0x3001
leaq -0x30f(%rbp), %rdi
callq 0x2130
leaq -0x30d(%rbp), %rdi
callq 0x2130
testb $0x1, -0x30e(%rbp)
jne 0x3024
jmp 0x3030
movq -0x340(%rbp), %rdi
callq 0x2090
jmp 0x3032
leaq -0x2f9(%rbp), %rdi
callq 0x2130
testb $0x1, -0x32a(%rbp)
jne 0x3049
jmp 0x3096
movq -0x2f8(%rbp), %rax
leaq -0x2f0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x508(%rbp)
je 0x3094
movq -0x508(%rbp), %rdi
addq $-0x48, %rdi
movq %rdi, -0x510(%rbp)
callq 0x3710
movq -0x510(%rbp), %rax
leaq -0x2f0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x508(%rbp)
jne 0x3063
jmp 0x3096
jmp 0x30b4
movq -0x350(%rbp), %rdi
callq 0x3740
movq -0x348(%rbp), %rax
addq $0x510, %rsp            # imm = 0x510
popq %rbp
retq
movq -0x308(%rbp), %rdi
callq 0x21b0