section .text

.globl PBMAIN
PBMAIN:
entry:
    push rbp
    mov rbp, rsp
    push rbx
    push rsi
    sub rsp, 208
    xor r10, r10
    xor rbx, rbx
    mov [rbp-8], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-16], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-24], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-32], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-40], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-48], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-56], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-64], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-72], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-80], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-88], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-96], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-104], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-112], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-120], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-128], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-136], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-144], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-152], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-160], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-168], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-176], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-16], rbx
    mov rcx, 3
    sub rsp, 32
    call bestof_fix
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-48], xmm0
    mov rcx, -3
    sub rsp, 32
    call bestof_fix
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-48], xmm0
    mov rcx, 3
    sub rsp, 32
    call bestof_fix
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-56], xmm0
    mov rcx, -3
    sub rsp, 32
    call bestof_fix
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-56], xmm0
    mov rcx, 3
    sub rsp, 32
    call bestof_round
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-64], xmm0
    mov rcx, 3
    sub rsp, 32
    call bestof_round
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-64], xmm0
    mov rcx, 10
    mov rdx, 20
    sub rsp, 32
    call bestof_min
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-72], xmm0
    mov rcx, 10
    mov rdx, 20
    sub rsp, 32
    call bestof_max
    add rsp, 32
    mov rbx, rax
    movq xmm0, rbx
    movsd [rbp-80], xmm0
    mov r10, [rbp-88]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.0
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-88], rbx
    mov r10, [rbp-88]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.1
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-88], rbx
    mov r10, [rbp-96]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.2
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-96], rbx
    mov r10, [rbp-104]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.3
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-104], rbx
    xor rcx, rcx
    sub rsp, 32
    call bestof_rnd
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-112], rbx
    mov rcx, -1
    sub rsp, 32
    call bestof_rnd
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-112], rbx
    xor r10, r10
    xor rbx, rbx
    mov [rbp-120], rbx
    mov r10, [rbp-120]
    mov rbx, r10
    nop
    add rbx, 1
    nop
    mov [rbp-120], rbx
    mov r10, [rbp-120]
    mov rbx, r10
    nop
    add rbx, 5
    nop
    mov [rbp-120], rbx
    mov r10, [rbp-120]
    mov rbx, r10
    nop
    sub rbx, 1
    nop
    mov [rbp-120], rbx
    mov r10, [rbp-120]
    mov rbx, r10
    nop
    sub rbx, 2
    nop
    mov [rbp-120], rbx
    mov rbx, 10
    mov [rbp-128], rbx
    mov rbx, 20
    mov [rbp-136], rbx
    mov r10, [rbp-128]
    mov rbx, r10
    mov r10, [rbp-136]
    mov rsi, r10
    nop
    mov [rbp-184], rbx
    nop
    mov [rbp-128], rsi
    mov r10, [rbp-184]
    mov rbx, r10
    nop
    mov [rbp-136], rbx
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.4
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-24], rbx
    mov r10, [rbp-144]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.5
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-144], rbx
    mov r10, [rbp-144]
    mov rcx, r10
    lea rdx, .pb.str.6
    lea r8, .pb.str.7
    sub rsp, 32
    call bestof_str_replace
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-144], rbx
    mov rbx, 2
    mov [rbp-152], rbx
    mov r10, [rbp-152]
    mov rbx, r10
    nop
    mov [rbp-192], rbx
    jmp .L_PBMAIN_1
.L_PBMAIN_0:
    mov rbx, 15
    mov [rbp-160], rbx
    mov r10, [rbp-160]
    mov rbx, r10
    nop
    mov [rbp-200], rbx
    jmp .L_PBMAIN_14
.L_PBMAIN_1:
    mov r10, [rbp-192]
    mov rbx, r10
    cmp rbx, 1
    sete r10
    mov rbx, r10
    test rbx, rbx
    jne .L_PBMAIN_2
    jmp .L_PBMAIN_3
.L_PBMAIN_2:
.L_PBMAIN_3:
    mov r10, [rbp-192]
    mov rbx, r10
    cmp rbx, 2
    sete r10
    mov rbx, r10
    test rbx, rbx
    jne .L_PBMAIN_4
    jmp .L_PBMAIN_5
.L_PBMAIN_4:
.L_PBMAIN_5:
    mov r10, [rbp-192]
    mov rbx, r10
    cmp rbx, 3
    sete r10
    mov rbx, r10
    test rbx, rbx
    jne .L_PBMAIN_6
    jmp .L_PBMAIN_7
.L_PBMAIN_6:
    mov r10, 1
    mov rbx, 1
    mov [rbp-16], 1
    jmp .L_PBMAIN_7
.L_PBMAIN_7:
    mov r10, [rbp-192]
    mov rbx, r10
    cmp rbx, 4
    setge r10
    mov rsi, r10
    cmp rbx, 10
    setle r10
    mov rbx, r10
    nop
    and rsi, rbx
    test rsi, rsi
    jne .L_PBMAIN_8
    jmp .L_PBMAIN_9
.L_PBMAIN_8:
    mov r10, 2
    mov rbx, 2
    mov [rbp-16], 2
    jmp .L_PBMAIN_9
.L_PBMAIN_9:
    mov r10, [rbp-192]
    mov rbx, r10
    cmp rbx, 10
    setg r10
    mov rbx, r10
    test rbx, rbx
    jne .L_PBMAIN_10
    jmp .L_PBMAIN_11
.L_PBMAIN_10:
    mov r10, 3
    mov rbx, 3
    mov [rbp-16], 3
    jmp .L_PBMAIN_11
.L_PBMAIN_11:
    jmp .L_PBMAIN_12
    jmp .L_PBMAIN_0
.L_PBMAIN_12:
    xor r10, r10
    xor rbx, rbx
    mov [rbp-16], 0
    jmp .L_PBMAIN_0
.L_PBMAIN_13:
    xor r10, r10
    xor rbx, rbx
    mov [rbp-168], rbx
    mov r10, 1
    mov rbx, 1
    mov [rbp-32], 1
    jmp pb_for_cond_PBMAIN_22
.L_PBMAIN_14:
    mov r10, [rbp-200]
    mov rbx, r10
    test rbx, rbx
    sete r10
    mov rbx, r10
    test rbx, rbx
    jne .L_PBMAIN_15
    jmp .L_PBMAIN_16
.L_PBMAIN_15:
    xor r10, r10
    xor rbx, rbx
    mov [rbp-16], 0
    jmp .L_PBMAIN_16
.L_PBMAIN_16:
    mov r10, [rbp-200]
    mov rbx, r10
    cmp rbx, 5
    setge r10
    mov rsi, r10
    cmp rbx, 10
    setle r10
    mov rbx, r10
    nop
    and rsi, rbx
    test rsi, rsi
    jne .L_PBMAIN_17
    jmp .L_PBMAIN_18
.L_PBMAIN_17:
    mov r10, 5
    mov rbx, 5
    mov [rbp-16], 5
    jmp .L_PBMAIN_18
.L_PBMAIN_18:
    mov r10, [rbp-200]
    mov rbx, r10
    cmp rbx, 20
    setg r10
    mov rbx, r10
    test rbx, rbx
    jne .L_PBMAIN_19
    jmp .L_PBMAIN_20
.L_PBMAIN_19:
    mov r10, 20
    mov rbx, 20
    mov [rbp-16], 20
    jmp .L_PBMAIN_20
.L_PBMAIN_20:
    jmp .L_PBMAIN_21
    jmp .L_PBMAIN_13
.L_PBMAIN_21:
    mov r10, 15
    mov rbx, 15
    mov [rbp-16], 15
    jmp .L_PBMAIN_13
pb_for_cond_PBMAIN_22:
    mov r10, [rbp-32]
    mov rbx, r10
    cmp rbx, 10
    setle r10
    mov rbx, r10
    test rbx, rbx
    jne pb_for_body_PBMAIN_23
    jmp pb_for_end_PBMAIN_25
pb_for_body_PBMAIN_23:
    mov r10, [rbp-32]
    xor r10, r10
    test r10, r10
    setne r10
    mov rbx, r10
    test rbx, rbx
    jne pb_if_then_PBMAIN_26
    jmp pb_if_else_PBMAIN_27
pb_for_step_PBMAIN_24:
    mov r10, [rbp-32]
    mov rbx, r10
    nop
    add rbx, 1
    nop
    mov [rbp-32], rbx
    jmp pb_for_cond_PBMAIN_22
pb_for_end_PBMAIN_25:
    sub rsp, 32
    call bestof_get_date
    add rsp, 32
    mov rbx, rax
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    nop
    mov [rbp-24], rbx
    sub rsp, 32
    call bestof_get_time
    add rsp, 32
    mov rbx, rax
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    nop
    mov [rbp-24], rbx
    lea rcx, .pb.str.8
    sub rsp, 32
    call bestof_environ_str
    add rsp, 32
    mov rbx, rax
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    nop
    mov [rbp-24], rbx
    sub rsp, 32
    call bestof_command_line
    add rsp, 32
    mov rbx, rax
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    nop
    mov [rbp-24], rbx
    sub rsp, 32
    call bestof_console_read_key
    add rsp, 32
    mov rbx, rax
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    nop
    mov [rbp-24], rbx
    sub rsp, 32
    call bestof_console_wait_key
    add rsp, 32
    mov rbx, rax
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    nop
    mov [rbp-24], rbx
    mov r10, [rbp-24]
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    lea rcx, .pb.str.10
    sub rsp, 32
    call bestof_strdup
    add rsp, 32
    mov rbx, rax
    nop
    mov [rbp-24], rbx
    mov r10, [rbp-168]
    mov rbx, r10
    nop
    mov [rbp-176], rbx
    mov r10, [rbp-16]
    mov rbx, r10
    nop
    mov [rbp-8], rbx
    mov r10, [rbp-8]
    mov rbx, r10
    mov r10, [rbp-24]
    mov rsi, r10
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    xor r10, r10
    xor rsi, rsi
    mov [rbp-24], rsi
    mov r10, [rbp-88]
    mov rsi, r10
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    xor r10, r10
    xor rsi, rsi
    mov [rbp-88], rsi
    mov r10, [rbp-96]
    mov rsi, r10
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    xor r10, r10
    xor rsi, rsi
    mov [rbp-96], rsi
    mov r10, [rbp-104]
    mov rsi, r10
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    xor r10, r10
    xor rsi, rsi
    mov [rbp-104], rsi
    mov r10, [rbp-144]
    mov rsi, r10
    mov rcx, r10
    sub rsp, 32
    call bestof_str_free
    add rsp, 32
    xor rsi, rsi
    mov [rbp-144], rsi
    mov rax, rbx
    add rsp, 208
    pop rsi
    pop rbx
    pop rbp
    ret
pb_if_then_PBMAIN_26:
    jmp pb_for_step_PBMAIN_24
pb_if_else_PBMAIN_27:
pb_if_end_PBMAIN_28:
    mov r10, [rbp-168]
    mov r10, [rbp-32]
    mov r10, 1
    mov rbx, 1
    mov [rbp-168], 1
    jmp pb_for_step_PBMAIN_24
pb_dead_PBMAIN_29:
    jmp pb_if_end_PBMAIN_28

