// File: ynilu[P]elastic/traffic.cpp
// Function: Traffic::generate_bandwidth()
int Traffic::generate_bandwidth()
{
    int bandwidth;
    float temp_b;
    temp_b = random_number( nextrand(b_seed) );
    if( temp_b <= OC1_ratio )
    {
        bandwidth = 1;
        num_OC1_request++;
    }
    else if( temp_b <= OC3_ratio )
    {
        bandwidth = 3;
        num_OC3_request++;
    }
    else if( temp_b <= OC9_ratio )
    {
        bandwidth = 9;
        num_OC9_request++;
    }
    else if( temp_b <= OC12_ratio )
    {
        bandwidth = 12;
        num_OC12_request++;
    }
    else if( temp_b <= OC18_ratio )
    {
        bandwidth = 18;
        num_OC18_request++;
    }
    else if( temp_b <= OC24_ratio )
    {
        bandwidth = 24;
        num_OC24_request++;
    }
    else if( temp_b <= OC36_ratio )
    {
        bandwidth = 36;
        num_OC36_request++;
    }
    else if( temp_b <= OC48_ratio )
    {
        bandwidth = 48;
        num_OC48_request++;
    }
    else if( temp_b <= OC192_ratio )
    {
        bandwidth = 192;
        num_OC192_request++;
    }
    else if( temp_b <= OC768_ratio )
    {
        bandwidth = 768;
        num_OC768_request++;
    }
    else  // if( temp_b <= OC3072_ratio )
    {
        bandwidth = 3072;
        num_OC3072_request++;
    }

    return bandwidth;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x18(%rbp)
movq %rdi, %rsi
addq $0x148, %rsi            # imm = 0x148
callq 0x27ed0
movq -0x18(%rbp), %rdi
movl %eax, %esi
callq 0x27f10
movq -0x18(%rbp), %rax
movss %xmm0, -0x10(%rbp)
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x90(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27c2d
movq -0x18(%rbp), %rax
movl $0x1, -0xc(%rbp)
movl 0xe8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xe8(%rax)
jmp 0x27e5d
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x98(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27c67
movq -0x18(%rbp), %rax
movl $0x3, -0xc(%rbp)
movl 0xec(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xec(%rax)
jmp 0x27e5b
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27ca1
movq -0x18(%rbp), %rax
movl $0x9, -0xc(%rbp)
movl 0xf0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xf0(%rax)
jmp 0x27e59
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa8(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27cdb
movq -0x18(%rbp), %rax
movl $0xc, -0xc(%rbp)
movl 0xf4(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xf4(%rax)
jmp 0x27e57
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xb0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27d15
movq -0x18(%rbp), %rax
movl $0x12, -0xc(%rbp)
movl 0xf8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xf8(%rax)
jmp 0x27e55
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xb8(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27d4f
movq -0x18(%rbp), %rax
movl $0x18, -0xc(%rbp)
movl 0xfc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xfc(%rax)
jmp 0x27e53
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xc0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27d89
movq -0x18(%rbp), %rax
movl $0x24, -0xc(%rbp)
movl 0x100(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x100(%rax)
jmp 0x27e51
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xc8(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27dc3
movq -0x18(%rbp), %rax
movl $0x30, -0xc(%rbp)
movl 0x104(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x104(%rax)
jmp 0x27e4f
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xd0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27dfa
movq -0x18(%rbp), %rax
movl $0xc0, -0xc(%rbp)
movl 0x108(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x108(%rax)
jmp 0x27e4d
movq -0x18(%rbp), %rax
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xd8(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x27e31
movq -0x18(%rbp), %rax
movl $0x300, -0xc(%rbp)      # imm = 0x300
movl 0x10c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10c(%rax)
jmp 0x27e4b
movq -0x18(%rbp), %rax
movl $0xc00, -0xc(%rbp)      # imm = 0xC00
movl 0x110(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x110(%rax)
jmp 0x27e4d
jmp 0x27e4f
jmp 0x27e51
jmp 0x27e53
jmp 0x27e55
jmp 0x27e57
jmp 0x27e59
jmp 0x27e5b
jmp 0x27e5d
movl -0xc(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)