// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/parasail/apps/parasail_aligner.cpp
// Function: parse_bytes(char const*)
inline static size_t parse_bytes(const char *value)
{
    size_t multiplier = 0;
    double base = 0;
    string unit;
    istringstream iss(value);

    iss >> base;
    if (!iss) {
        eprintf(stderr, "could not parse memory value\n");
        return 0;
    }
    iss >> unit;
    if (!iss || unit.empty()) {
        eprintf(stderr, "could not parse memory unit, default to bytes\n");
        unit = "b";
    }
    transform(unit.begin(), unit.end(), unit.begin(), ::tolower);

    if ("b" == unit
            || "byte" == unit
            || "bytes" == unit) {
        multiplier = 1ULL;
    }
    else if ("kb" == unit
            || "kbyte" == unit
            || "kbytes" == unit
            || "kilobyte" == unit
            || "kilobytes" == unit) {
        multiplier = 1000ULL;
    }
    else if ("mb" == unit
            || "mbyte" == unit
            || "mbytes" == unit
            || "megabyte" == unit
            || "megabytes" == unit) {
        multiplier = 1000ULL * 1000ULL;
    }
    else if ("gb" == unit
            || "gbyte" == unit
            || "gbytes" == unit
            || "gigabyte" == unit
            || "gigabytes" == unit) {
        multiplier = 1000ULL * 1000ULL * 1000ULL;
    }
    else {
        eprintf(stderr, "could not parse byte unit\n");
        return 0;
    }

    return static_cast<size_t>(multiplier*base);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movq %rdi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x2af420
movq -0x10(%rbp), %rax
movq %rax, -0x228(%rbp)
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x2af530
movq -0x228(%rbp), %rsi
movq -0x220(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
callq 0x2b82a0
jmp 0x2b4dd2
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
movl $0x8, %edx
callq 0x2af500
jmp 0x2b4dec
leaq -0x1e0(%rbp), %rdi
callq 0x2af180
leaq -0x1e1(%rbp), %rdi
callq 0x2af310
leaq -0x1c0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x2af220
jmp 0x2b4e16
movq -0x1c0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1c0(%rbp,%rax), %rdi
callq 0x2af0f0
movb %al, -0x229(%rbp)
jmp 0x2b4e36
movb -0x229(%rbp), %al
testb $0x1, %al
jne 0x2b4e45
jmp 0x2b4eda
movq 0xcc6184(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0xafaba9(%rip), %rsi    # 0xdaf9ff
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x8(%rbp)
movl $0x1, -0x1f8(%rbp)
jmp 0x2b5323
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1f0(%rbp)
movl %eax, -0x1f4(%rbp)
jmp 0x2b4ea6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1f0(%rbp)
movl %eax, -0x1f4(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x2af180
leaq -0x1e1(%rbp), %rdi
callq 0x2af310
jmp 0x2b5345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1f0(%rbp)
movl %eax, -0x1f4(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x2af100
jmp 0x2b5345
leaq -0x1c0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2af3f0
jmp 0x2b4eec
movq -0x1c0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1c0(%rbp,%rax), %rdi
callq 0x2af0f0
movb %al, -0x22a(%rbp)
jmp 0x2b4f0c
movb -0x22a(%rbp), %al
testb $0x1, %al
jne 0x2b4f27
jmp 0x2b4f18
leaq -0x40(%rbp), %rdi
callq 0x2af4e0
testb $0x1, %al
jne 0x2b4f27
jmp 0x2b4f53
movq 0xcc60a2(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0xafaae5(%rip), %rsi    # 0xdafa1d
xorl %eax, %eax
callq 0x2af440
leaq 0xafae9d(%rip), %rsi    # 0xdafde3
leaq -0x40(%rbp), %rdi
callq 0x2af410
jmp 0x2b4f51
jmp 0x2b4f53
leaq -0x40(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x2af260
movq -0x240(%rbp), %rdi
movq %rax, -0x200(%rbp)
callq 0x2af160
movq -0x240(%rbp), %rdi
movq %rax, -0x208(%rbp)
callq 0x2af260
movq %rax, -0x210(%rbp)
movq -0x200(%rbp), %rdi
movq -0x208(%rbp), %rsi
movq -0x210(%rbp), %rdx
movq 0xcc602c(%rip), %rcx    # 0xf7afd8
callq 0x2be790
movq %rax, -0x238(%rbp)
jmp 0x2b4fba
movq -0x238(%rbp), %rax
movq %rax, -0x218(%rbp)
leaq 0xafae14(%rip), %rdi    # 0xdafde3
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x241(%rbp)
jmp 0x2b4fe0
movb -0x241(%rbp), %al
testb $0x1, %al
jne 0x2b5034
jmp 0x2b4fec
leaq 0xafaa90(%rip), %rdi    # 0xdafa83
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x242(%rbp)
jmp 0x2b5004
movb -0x242(%rbp), %al
testb $0x1, %al
jne 0x2b5034
jmp 0x2b5010
leaq 0xafaa75(%rip), %rdi    # 0xdafa8c
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x243(%rbp)
jmp 0x2b5028
movb -0x243(%rbp), %al
testb $0x1, %al
jne 0x2b5034
jmp 0x2b5041
movq $0x1, -0x18(%rbp)
jmp 0x2b52bf
leaq 0xafaa04(%rip), %rdi    # 0xdafa4c
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x244(%rbp)
jmp 0x2b5059
movb -0x244(%rbp), %al
testb $0x1, %al
jne 0x2b50f9
jmp 0x2b5069
leaq 0xafa9df(%rip), %rdi    # 0xdafa4f
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x245(%rbp)
jmp 0x2b5081
movb -0x245(%rbp), %al
testb $0x1, %al
jne 0x2b50f9
jmp 0x2b508d
leaq 0xafa9c1(%rip), %rdi    # 0xdafa55
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x246(%rbp)
jmp 0x2b50a5
movb -0x246(%rbp), %al
testb $0x1, %al
jne 0x2b50f9
jmp 0x2b50b1
leaq 0xafa9a4(%rip), %rdi    # 0xdafa5c
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x247(%rbp)
jmp 0x2b50c9
movb -0x247(%rbp), %al
testb $0x1, %al
jne 0x2b50f9
jmp 0x2b50d5
leaq 0xafa989(%rip), %rdi    # 0xdafa65
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x248(%rbp)
jmp 0x2b50ed
movb -0x248(%rbp), %al
testb $0x1, %al
jne 0x2b50f9
jmp 0x2b5106
movq $0x3e8, -0x18(%rbp)     # imm = 0x3E8
jmp 0x2b52bd
leaq 0xafa962(%rip), %rdi    # 0xdafa6f
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x249(%rbp)
jmp 0x2b511e
movb -0x249(%rbp), %al
testb $0x1, %al
jne 0x2b51be
jmp 0x2b512e
leaq 0xafa93d(%rip), %rdi    # 0xdafa72
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x24a(%rbp)
jmp 0x2b5146
movb -0x24a(%rbp), %al
testb $0x1, %al
jne 0x2b51be
jmp 0x2b5152
leaq 0xafa91f(%rip), %rdi    # 0xdafa78
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x24b(%rbp)
jmp 0x2b516a
movb -0x24b(%rbp), %al
testb $0x1, %al
jne 0x2b51be
jmp 0x2b5176
leaq 0xafa902(%rip), %rdi    # 0xdafa7f
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x24c(%rbp)
jmp 0x2b518e
movb -0x24c(%rbp), %al
testb $0x1, %al
jne 0x2b51be
jmp 0x2b519a
leaq 0xafa8e7(%rip), %rdi    # 0xdafa88
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x24d(%rbp)
jmp 0x2b51b2
movb -0x24d(%rbp), %al
testb $0x1, %al
jne 0x2b51be
jmp 0x2b51cb
movq $0xf4240, -0x18(%rbp)   # imm = 0xF4240
jmp 0x2b52bb
leaq 0xafa8c0(%rip), %rdi    # 0xdafa92
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x24e(%rbp)
jmp 0x2b51e3
movb -0x24e(%rbp), %al
testb $0x1, %al
jne 0x2b5283
jmp 0x2b51f3
leaq 0xafa89b(%rip), %rdi    # 0xdafa95
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x24f(%rbp)
jmp 0x2b520b
movb -0x24f(%rbp), %al
testb $0x1, %al
jne 0x2b5283
jmp 0x2b5217
leaq 0xafa87d(%rip), %rdi    # 0xdafa9b
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x250(%rbp)
jmp 0x2b522f
movb -0x250(%rbp), %al
testb $0x1, %al
jne 0x2b5283
jmp 0x2b523b
leaq 0xafa860(%rip), %rdi    # 0xdafaa2
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x251(%rbp)
jmp 0x2b5253
movb -0x251(%rbp), %al
testb $0x1, %al
jne 0x2b5283
jmp 0x2b525f
leaq 0xafa845(%rip), %rdi    # 0xdafaab
leaq -0x40(%rbp), %rsi
callq 0x2be810
movb %al, -0x252(%rbp)
jmp 0x2b5277
movb -0x252(%rbp), %al
testb $0x1, %al
jne 0x2b5283
jmp 0x2b528d
movq $0x3b9aca00, -0x18(%rbp) # imm = 0x3B9ACA00
jmp 0x2b52b9
movq 0xcc5d3c(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0xafa817(%rip), %rsi    # 0xdafab5
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x8(%rbp)
movl $0x1, -0x1f8(%rbp)
jmp 0x2b5323
jmp 0x2b52bb
jmp 0x2b52bd
jmp 0x2b52bf
movaps 0xaf8d6a(%rip), %xmm1   # 0xdae030
movq -0x18(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaf8d69(%rip), %xmm1   # 0xdae040
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd -0x20(%rbp), %xmm1
mulsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0xaf8d1a(%rip), %xmm1   # 0xdae020
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x1f8(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x2af100
leaq -0x40(%rbp), %rdi
callq 0x2af180
movq -0x8(%rbp), %rax
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x2af180
movq -0x1f0(%rbp), %rdi
callq 0x2af510
nopw (%rax,%rax)