Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .file   "ioset.c"
  2.     .data
  3.     .align 4
  4.     .type   epoll_fd, @object
  5.     .size   epoll_fd, 4
  6. epoll_fd:
  7.     .long   -1
  8.     .text
  9.     .type   ioq_init, @function
  10. ioq_init:
  11. .LFB0:
  12.     .cfi_startproc
  13.     pushq   %rbp
  14.     .cfi_def_cfa_offset 16
  15.     movq    %rsp, %rbp
  16.     .cfi_offset 6, -16
  17.     .cfi_def_cfa_register 6
  18.     subq    $16, %rsp
  19.     movq    %rdi, -8(%rbp)
  20.     movq    %rsi, -16(%rbp)
  21.     movq    -8(%rbp), %rax
  22.     movq    -16(%rbp), %rdx
  23.     movq    %rdx, 8(%rax)
  24.     movq    -16(%rbp), %rax
  25.     movq    %rax, %rdi
  26.     call    malloc
  27.     movq    %rax, %rdx
  28.     movq    -8(%rbp), %rax
  29.     movq    %rdx, (%rax)
  30.     movq    -8(%rbp), %rax
  31.     movq    $0, 16(%rax)
  32.     movq    -8(%rbp), %rax
  33.     movq    16(%rax), %rdx
  34.     movq    -8(%rbp), %rax
  35.     movq    %rdx, 24(%rax)
  36.     leave
  37.     ret
  38.     .cfi_endproc
  39. .LFE0:
  40.     .size   ioq_init, .-ioq_init
  41.     .type   ioq_put_avail, @function
  42. ioq_put_avail:
  43. .LFB1:
  44.     .cfi_startproc
  45.     pushq   %rbp
  46.     .cfi_def_cfa_offset 16
  47.     movq    %rsp, %rbp
  48.     .cfi_offset 6, -16
  49.     .cfi_def_cfa_register 6
  50.     movq    %rdi, -8(%rbp)
  51.     movq    -8(%rbp), %rax
  52.     movq    24(%rax), %rdx
  53.     movq    -8(%rbp), %rax
  54.     movq    16(%rax), %rax
  55.     cmpq    %rax, %rdx
  56.     jae .L4
  57.     movq    -8(%rbp), %rax
  58.     movq    16(%rax), %rdx
  59.     movq    -8(%rbp), %rax
  60.     movq    24(%rax), %rax
  61.     movq    %rdx, %rcx
  62.     subq    %rax, %rcx
  63.     movq    %rcx, %rax
  64.     subq    $1, %rax
  65.     jmp .L5
  66. .L4:
  67.     movq    -8(%rbp), %rax
  68.     movq    16(%rax), %rax
  69.     testq   %rax, %rax
  70.     jne .L6
  71.     movq    -8(%rbp), %rax
  72.     movq    8(%rax), %rdx
  73.     movq    -8(%rbp), %rax
  74.     movq    24(%rax), %rax
  75.     movq    %rdx, %rcx
  76.     subq    %rax, %rcx
  77.     movq    %rcx, %rax
  78.     subq    $1, %rax
  79.     jmp .L5
  80. .L6:
  81.     movq    -8(%rbp), %rax
  82.     movq    8(%rax), %rdx
  83.     movq    -8(%rbp), %rax
  84.     movq    24(%rax), %rax
  85.     movq    %rdx, %rcx
  86.     subq    %rax, %rcx
  87.     movq    %rcx, %rax
  88. .L5:
  89.     leave
  90.     ret
  91.     .cfi_endproc
  92. .LFE1:
  93.     .size   ioq_put_avail, .-ioq_put_avail
  94.     .type   ioq_get_avail, @function
  95. ioq_get_avail:
  96. .LFB2:
  97.     .cfi_startproc
  98.     pushq   %rbp
  99.     .cfi_def_cfa_offset 16
  100.     movq    %rsp, %rbp
  101.     .cfi_offset 6, -16
  102.     .cfi_def_cfa_register 6
  103.     movq    %rdi, -8(%rbp)
  104.     movq    -8(%rbp), %rax
  105.     movq    24(%rax), %rdx
  106.     movq    -8(%rbp), %rax
  107.     movq    16(%rax), %rax
  108.     cmpq    %rax, %rdx
  109.     jae .L9
  110.     movq    -8(%rbp), %rax
  111.     movq    8(%rax), %rdx
  112.     movq    -8(%rbp), %rax
  113.     movq    16(%rax), %rax
  114.     movq    %rdx, %rcx
  115.     subq    %rax, %rcx
  116.     movq    %rcx, %rax
  117.     jmp .L10
  118. .L9:
  119.     movq    -8(%rbp), %rax
  120.     movq    24(%rax), %rdx
  121.     movq    -8(%rbp), %rax
  122.     movq    16(%rax), %rax
  123.     movq    %rdx, %rcx
  124.     subq    %rax, %rcx
  125.     movq    %rcx, %rax
  126. .L10:
  127.     leave
  128.     ret
  129.     .cfi_endproc
  130. .LFE2:
  131.     .size   ioq_get_avail, .-ioq_get_avail
  132.     .type   ioq_used, @function
  133. ioq_used:
  134. .LFB3:
  135.     .cfi_startproc
  136.     pushq   %rbp
  137.     .cfi_def_cfa_offset 16
  138.     movq    %rsp, %rbp
  139.     .cfi_offset 6, -16
  140.     .cfi_def_cfa_register 6
  141.     movq    %rdi, -8(%rbp)
  142.     movq    -8(%rbp), %rax
  143.     movq    24(%rax), %rdx
  144.     movq    -8(%rbp), %rax
  145.     movq    16(%rax), %rax
  146.     cmpq    %rax, %rdx
  147.     jae .L13
  148.     movq    -8(%rbp), %rax
  149.     movq    8(%rax), %rdx
  150.     movq    -8(%rbp), %rax
  151.     movq    24(%rax), %rax
  152.     addq    %rax, %rdx
  153.     movq    -8(%rbp), %rax
  154.     movq    16(%rax), %rax
  155.     movq    %rdx, %rcx
  156.     subq    %rax, %rcx
  157.     movq    %rcx, %rax
  158.     jmp .L14
  159. .L13:
  160.     movq    -8(%rbp), %rax
  161.     movq    24(%rax), %rdx
  162.     movq    -8(%rbp), %rax
  163.     movq    16(%rax), %rax
  164.     movq    %rdx, %rcx
  165.     subq    %rax, %rcx
  166.     movq    %rcx, %rax
  167. .L14:
  168.     leave
  169.     ret
  170.     .cfi_endproc
  171. .LFE3:
  172.     .size   ioq_used, .-ioq_used
  173.     .type   ioq_expand, @function
  174. ioq_expand:
  175. .LFB4:
  176.     .cfi_startproc
  177.     pushq   %rbp
  178.     .cfi_def_cfa_offset 16
  179.     movq    %rsp, %rbp
  180.     .cfi_offset 6, -16
  181.     .cfi_def_cfa_register 6
  182.     pushq   %rbx
  183.     subq    $56, %rsp
  184.     movq    %rdi, -56(%rbp)
  185.     movq    -56(%rbp), %rax
  186.     movq    8(%rax), %rax
  187.     addq    %rax, %rax
  188.     movq    %rax, -24(%rbp)
  189.     movq    -24(%rbp), %rax
  190.     movq    %rax, %rdi
  191.     .cfi_offset 3, -24
  192.     call    malloc
  193.     movq    %rax, -32(%rbp)
  194.     movq    -56(%rbp), %rax
  195.     movq    %rax, %rdi
  196.     call    ioq_get_avail
  197.     movq    %rax, -40(%rbp)
  198.     movq    -56(%rbp), %rax
  199.     movq    (%rax), %rdx
  200.     movq    -56(%rbp), %rax
  201.     movq    16(%rax), %rax
  202.     leaq    (%rdx,%rax), %rcx
  203.     movq    -40(%rbp), %rdx
  204.     movq    -32(%rbp), %rax
  205.     movq    %rcx, %rsi
  206.     movq    %rax, %rdi
  207.     call    memcpy
  208.     movq    -56(%rbp), %rax
  209.     movq    24(%rax), %rdx
  210.     movq    -56(%rbp), %rax
  211.     movq    16(%rax), %rax
  212.     cmpq    %rax, %rdx
  213.     jae .L17
  214.     movq    -56(%rbp), %rax
  215.     movq    24(%rax), %rdx
  216.     movq    -56(%rbp), %rax
  217.     movq    (%rax), %rax
  218.     movq    -40(%rbp), %rcx
  219.     movq    -32(%rbp), %rbx
  220.     leaq    (%rbx,%rcx), %rcx
  221.     movq    %rax, %rsi
  222.     movq    %rcx, %rdi
  223.     call    memcpy
  224. .L17:
  225.     movq    -56(%rbp), %rax
  226.     movq    (%rax), %rax
  227.     movq    %rax, %rdi
  228.     call    free
  229.     movq    -56(%rbp), %rax
  230.     movq    $0, 16(%rax)
  231.     movq    -56(%rbp), %rax
  232.     movq    %rax, %rdi
  233.     call    ioq_used
  234.     movq    -56(%rbp), %rdx
  235.     movq    %rax, 24(%rdx)
  236.     movq    -56(%rbp), %rax
  237.     movq    -24(%rbp), %rdx
  238.     movq    %rdx, 8(%rax)
  239.     movq    -56(%rbp), %rax
  240.     movq    -32(%rbp), %rdx
  241.     movq    %rdx, (%rax)
  242.     movq    -56(%rbp), %rax
  243.     movq    8(%rax), %rdx
  244.     movq    -56(%rbp), %rax
  245.     movq    24(%rax), %rax
  246.     movq    %rdx, %rcx
  247.     subq    %rax, %rcx
  248.     movq    %rcx, %rax
  249.     subq    $1, %rax
  250.     addq    $56, %rsp
  251.     popq    %rbx
  252.     leave
  253.     ret
  254.     .cfi_endproc
  255. .LFE4:
  256.     .size   ioq_expand, .-ioq_expand
  257.     .type   epoll_init, @function
  258. epoll_init:
  259. .LFB5:
  260.     .cfi_startproc
  261.     pushq   %rbp
  262.     .cfi_def_cfa_offset 16
  263.     movq    %rsp, %rbp
  264.     .cfi_offset 6, -16
  265.     .cfi_def_cfa_register 6
  266.     movl    $1024, %edi
  267.     call    epoll_create
  268.     movl    %eax, epoll_fd(%rip)
  269.     movl    epoll_fd(%rip), %eax
  270.     leave
  271.     ret
  272.     .cfi_endproc
  273. .LFE5:
  274.     .size   epoll_init, .-epoll_init
  275.     .type   epoll_cleanup, @function
  276. epoll_cleanup:
  277. .LFB6:
  278.     .cfi_startproc
  279.     pushq   %rbp
  280.     .cfi_def_cfa_offset 16
  281.     movq    %rsp, %rbp
  282.     .cfi_offset 6, -16
  283.     .cfi_def_cfa_register 6
  284.     movl    epoll_fd(%rip), %eax
  285.     movl    %eax, %edi
  286.     call    close
  287.     leave
  288.     ret
  289.     .cfi_endproc
  290. .LFE6:
  291.     .size   epoll_cleanup, .-epoll_cleanup
  292.     .type   epoll_events, @function
  293. epoll_events:
  294. .LFB7:
  295.     .cfi_startproc
  296.     pushq   %rbp
  297.     .cfi_def_cfa_offset 16
  298.     movq    %rsp, %rbp
  299.     .cfi_offset 6, -16
  300.     .cfi_def_cfa_register 6
  301.     movq    %rdi, -24(%rbp)
  302.     movl    $3, -4(%rbp)
  303.     orl $24, -4(%rbp)
  304.     movq    -24(%rbp), %rax
  305.     movq    32(%rax), %rdx
  306.     movq    -24(%rbp), %rax
  307.     movq    40(%rax), %rax
  308.     cmpq    %rax, %rdx
  309.     jne .L24
  310.     movq    -24(%rbp), %rax
  311.     movl    80(%rax), %eax
  312.     cmpl    $2, %eax
  313.     jne .L25
  314. .L24:
  315.     movl    -4(%rbp), %eax
  316.     orl $4, %eax
  317.     jmp .L26
  318. .L25:
  319.     movl    -4(%rbp), %eax
  320. .L26:
  321.     leave
  322.     ret
  323.     .cfi_endproc
  324. .LFE7:
  325.     .size   epoll_events, .-epoll_events
  326.     .type   epoll_add, @function
  327. epoll_add:
  328. .LFB8:
  329.     .cfi_startproc
  330.     pushq   %rbp
  331.     .cfi_def_cfa_offset 16
  332.     movq    %rsp, %rbp
  333.     .cfi_offset 6, -16
  334.     .cfi_def_cfa_register 6
  335.     subq    $32, %rsp
  336.     movq    %rdi, -24(%rbp)
  337.     movq    -24(%rbp), %rax
  338.     movq    %rax, -12(%rbp)
  339.     movq    -24(%rbp), %rax
  340.     movq    %rax, %rdi
  341.     call    epoll_events
  342.     movl    %eax, -16(%rbp)
  343.     movq    -24(%rbp), %rax
  344.     movl    (%rax), %edx
  345.     movl    epoll_fd(%rip), %eax
  346.     leaq    -16(%rbp), %rcx
  347.     movl    $1, %esi
  348.     movl    %eax, %edi
  349.     call    epoll_ctl
  350.     movl    %eax, -4(%rbp)
  351.     movl    -4(%rbp), %eax
  352.     leave
  353.     ret
  354.     .cfi_endproc
  355. .LFE8:
  356.     .size   epoll_add, .-epoll_add
  357.     .type   epoll_update, @function
  358. epoll_update:
  359. .LFB9:
  360.     .cfi_startproc
  361.     pushq   %rbp
  362.     .cfi_def_cfa_offset 16
  363.     movq    %rsp, %rbp
  364.     .cfi_offset 6, -16
  365.     .cfi_def_cfa_register 6
  366.     subq    $32, %rsp
  367.     movq    %rdi, -24(%rbp)
  368.     movq    -24(%rbp), %rax
  369.     movq    %rax, -12(%rbp)
  370.     movq    -24(%rbp), %rax
  371.     movq    %rax, %rdi
  372.     call    epoll_events
  373.     movl    %eax, -16(%rbp)
  374.     movq    -24(%rbp), %rax
  375.     movl    (%rax), %edx
  376.     movl    epoll_fd(%rip), %eax
  377.     leaq    -16(%rbp), %rcx
  378.     movl    $3, %esi
  379.     movl    %eax, %edi
  380.     call    epoll_ctl
  381.     movl    %eax, -4(%rbp)
  382.     movl    -4(%rbp), %eax
  383.     leave
  384.     ret
  385.     .cfi_endproc
  386. .LFE9:
  387.     .size   epoll_update, .-epoll_update
  388.     .type   epoll_remove, @function
  389. epoll_remove:
  390. .LFB10:
  391.     .cfi_startproc
  392.     pushq   %rbp
  393.     .cfi_def_cfa_offset 16
  394.     movq    %rsp, %rbp
  395.     .cfi_offset 6, -16
  396.     .cfi_def_cfa_register 6
  397.     subq    $32, %rsp
  398.     movq    %rdi, -24(%rbp)
  399.     movq    -24(%rbp), %rax
  400.     movl    (%rax), %edx
  401.     movl    epoll_fd(%rip), %eax
  402.     leaq    -16(%rbp), %rcx
  403.     movl    $2, %esi
  404.     movl    %eax, %edi
  405.     call    epoll_ctl
  406.     movl    %eax, -4(%rbp)
  407.     movl    -4(%rbp), %eax
  408.     leave
  409.     ret
  410.     .cfi_endproc
  411. .LFE10:
  412.     .size   epoll_remove, .-epoll_remove
  413.     .section    .rodata
  414.     .align 8
  415. .LC0:
  416.     .string "Unable to intialize ioset: Already initialized."
  417.     .align 8
  418. .LC1:
  419.     .string "Unable to initialize epoll: %s\n"
  420.     .text
  421. .globl ioset_init
  422.     .type   ioset_init, @function
  423. ioset_init:
  424. .LFB11:
  425.     .cfi_startproc
  426.     pushq   %rbp
  427.     .cfi_def_cfa_offset 16
  428.     movq    %rsp, %rbp
  429.     .cfi_offset 6, -16
  430.     .cfi_def_cfa_register 6
  431.     subq    $16, %rsp
  432.     movl    epoll_fd(%rip), %eax
  433.     testl   %eax, %eax
  434.     js  .L35
  435.     movl    $.LC0, %edi
  436.     call    puts
  437.     movl    $0, %eax
  438.     jmp .L36
  439. .L35:
  440.     call    epoll_init
  441.     movl    %eax, -4(%rbp)
  442.     cmpl    $0, -4(%rbp)
  443.     jns .L37
  444.     call    __errno_location
  445.     movl    (%rax), %eax
  446.     movl    %eax, %edi
  447.     call    strerror
  448.     movq    %rax, %rdx
  449.     movl    $.LC1, %eax
  450.     movq    %rdx, %rsi
  451.     movq    %rax, %rdi
  452.     movl    $0, %eax
  453.     call    printf
  454.     movl    $0, %eax
  455.     jmp .L36
  456. .L37:
  457.     movl    epoll_fd(%rip), %eax
  458.     movl    $1, %esi
  459.     movl    %eax, %edi
  460.     movl    $0, %eax
  461.     call    fcntl
  462.     movl    %eax, -4(%rbp)
  463.     movl    -4(%rbp), %eax
  464.     movl    %eax, %edx
  465.     orl $1, %edx
  466.     movl    epoll_fd(%rip), %eax
  467.     movl    $2, %esi
  468.     movl    %eax, %edi
  469.     movl    $0, %eax
  470.     call    fcntl
  471.     movl    $1, %eax
  472. .L36:
  473.     leave
  474.     ret
  475.     .cfi_endproc
  476. .LFE11:
  477.     .size   ioset_init, .-ioset_init
  478.     .section    .rodata
  479. .LC2:
  480.     .string "Unable to clean-up epoll: %s\n"
  481.     .text
  482. .globl ioset_cleanup
  483.     .type   ioset_cleanup, @function
  484. ioset_cleanup:
  485. .LFB12:
  486.     .cfi_startproc
  487.     pushq   %rbp
  488.     .cfi_def_cfa_offset 16
  489.     movq    %rsp, %rbp
  490.     .cfi_offset 6, -16
  491.     .cfi_def_cfa_register 6
  492.     subq    $16, %rsp
  493.     call    epoll_cleanup
  494.     movl    %eax, -4(%rbp)
  495.     cmpl    $0, -4(%rbp)
  496.     jns .L40
  497.     call    __errno_location
  498.     movl    (%rax), %eax
  499.     movl    %eax, %edi
  500.     call    strerror
  501.     movq    %rax, %rdx
  502.     movl    $.LC2, %eax
  503.     movq    %rdx, %rsi
  504.     movq    %rax, %rdi
  505.     movl    $0, %eax
  506.     call    printf
  507.     movl    $0, %eax
  508.     jmp .L41
  509. .L40:
  510.     movl    $-1, epoll_fd(%rip)
  511.     movl    $1, %eax
  512. .L41:
  513.     leave
  514.     ret
  515.     .cfi_endproc
  516. .LFE12:
  517.     .size   ioset_cleanup, .-ioset_cleanup
  518.     .section    .rodata
  519.     .align 8
  520. .LC3:
  521.     .string "Invalid fd (%d) passed to ioset_add()\n"
  522.     .align 8
  523. .LC4:
  524.     .string "Unable to add fd %d to epoll: %s\n"
  525.     .text
  526. .globl ioset_add
  527.     .type   ioset_add, @function
  528. ioset_add:
  529. .LFB13:
  530.     .cfi_startproc
  531.     pushq   %rbp
  532.     .cfi_def_cfa_offset 16
  533.     movq    %rsp, %rbp
  534.     .cfi_offset 6, -16
  535.     .cfi_def_cfa_register 6
  536.     subq    $32, %rsp
  537.     movl    %edi, -20(%rbp)
  538.     cmpl    $0, -20(%rbp)
  539.     jns .L44
  540.     movl    $.LC3, %eax
  541.     movl    -20(%rbp), %edx
  542.     movl    %edx, %esi
  543.     movq    %rax, %rdi
  544.     movl    $0, %eax
  545.     call    printf
  546.     movl    $0, %eax
  547.     jmp .L45
  548. .L44:
  549.     movl    $120, %esi
  550.     movl    $1, %edi
  551.     call    calloc
  552.     movq    %rax, -16(%rbp)
  553.     movq    -16(%rbp), %rax
  554.     movl    -20(%rbp), %edx
  555.     movl    %edx, (%rax)
  556.     movq    -16(%rbp), %rax
  557.     movq    %rax, %rdi
  558.     call    epoll_add
  559.     movl    %eax, -4(%rbp)
  560.     cmpl    $0, -4(%rbp)
  561.     jns .L46
  562.     call    __errno_location
  563.     movl    (%rax), %eax
  564.     movl    %eax, %edi
  565.     call    strerror
  566.     movq    %rax, %rdx
  567.     movl    $.LC4, %eax
  568.     movl    -20(%rbp), %ecx
  569.     movl    %ecx, %esi
  570.     movq    %rax, %rdi
  571.     movl    $0, %eax
  572.     call    printf
  573.     movq    -16(%rbp), %rax
  574.     movq    %rax, %rdi
  575.     call    free
  576.     movl    $0, %eax
  577.     jmp .L45
  578. .L46:
  579.     movl    -20(%rbp), %eax
  580.     movl    $3, %esi
  581.     movl    %eax, %edi
  582.     movl    $0, %eax
  583.     call    fcntl
  584.     movl    %eax, -4(%rbp)
  585.     movl    -4(%rbp), %eax
  586.     movl    %eax, %edx
  587.     orb $8, %dh
  588.     movl    -20(%rbp), %eax
  589.     movl    $4, %esi
  590.     movl    %eax, %edi
  591.     movl    $0, %eax
  592.     call    fcntl
  593.     movl    -20(%rbp), %eax
  594.     movl    $1, %esi
  595.     movl    %eax, %edi
  596.     movl    $0, %eax
  597.     call    fcntl
  598.     movl    %eax, -4(%rbp)
  599.     movl    -4(%rbp), %eax
  600.     movl    %eax, %edx
  601.     orl $1, %edx
  602.     movl    -20(%rbp), %eax
  603.     movl    $2, %esi
  604.     movl    %eax, %edi
  605.     movl    $0, %eax
  606.     call    fcntl
  607.     movq    -16(%rbp), %rax
  608.     addq    $16, %rax
  609.     movl    $1024, %esi
  610.     movq    %rax, %rdi
  611.     call    ioq_init
  612.     movq    -16(%rbp), %rax
  613.     addq    $48, %rax
  614.     movl    $1024, %esi
  615.     movq    %rax, %rdi
  616.     call    ioq_init
  617.     movq    -16(%rbp), %rax
  618. .L45:
  619.     leave
  620.     ret
  621.     .cfi_endproc
  622. .LFE13:
  623.     .size   ioset_add, .-ioset_add
  624.     .section    .rodata
  625. .LC5:
  626.     .string "%u"
  627.     .align 8
  628. .LC6:
  629.     .string "getaddrinfo() for %s:%u failed: %s\n"
  630.     .align 8
  631. .LC7:
  632.     .string "Unable to create socket fd for %s:%u... %s\n"
  633.     .align 8
  634. .LC8:
  635.     .string "Unable to bind %s:%u fd: %d to local address: %s\n"
  636.     .align 8
  637. .LC9:
  638.     .string "Unable to mark bind address for %s:%u as re-useable: %s\n"
  639.     .align 8
  640. .LC10:
  641.     .string "Unable to connect to %s:%u on fd %d... %s\n"
  642.     .text
  643. .globl ioset_connect
  644.     .type   ioset_connect, @function
  645. ioset_connect:
  646. .LFB14:
  647.     .cfi_startproc
  648.     pushq   %rbp
  649.     .cfi_def_cfa_offset 16
  650.     movq    %rsp, %rbp
  651.     .cfi_offset 6, -16
  652.     .cfi_def_cfa_register 6
  653.     pushq   %rbx
  654.     subq    $152, %rsp
  655.     movq    %rdi, -120(%rbp)
  656.     movq    %rsi, -128(%rbp)
  657.     movq    %rdx, -136(%rbp)
  658.     movl    %ecx, -140(%rbp)
  659.     movq    %r8, -152(%rbp)
  660.     movq    %fs:40, %rax
  661.     movq    %rax, -24(%rbp)
  662.     xorl    %eax, %eax
  663.     leaq    -112(%rbp), %rax
  664.     movl    $48, %edx
  665.     movl    $0, %esi
  666.     movq    %rax, %rdi
  667.     .cfi_offset 3, -24
  668.     call    memset
  669.     movl    $1, -104(%rbp)
  670.     cmpq    $0, -120(%rbp)
  671.     je  .L49
  672.     movq    -120(%rbp), %rax
  673.     movzwl  (%rax), %eax
  674.     movzwl  %ax, %eax
  675.     jmp .L50
  676. .L49:
  677.     movl    $2, %eax
  678. .L50:
  679.     movl    %eax, -108(%rbp)
  680.     movl    $.LC5, %edx
  681.     movl    -140(%rbp), %ecx
  682.     leaq    -32(%rbp), %rax
  683.     movl    $8, %esi
  684.     movq    %rax, %rdi
  685.     movl    $0, %eax
  686.     call    snprintf
  687.     leaq    -112(%rbp), %rdx
  688.     leaq    -32(%rbp), %rbx
  689.     leaq    -56(%rbp), %rcx
  690.     movq    -136(%rbp), %rax
  691.     movq    %rbx, %rsi
  692.     movq    %rax, %rdi
  693.     call    getaddrinfo
  694.     movl    %eax, -40(%rbp)
  695.     cmpl    $0, -40(%rbp)
  696.     je  .L51
  697.     movl    -40(%rbp), %eax
  698.     movl    %eax, %edi
  699.     call    gai_strerror
  700.     movq    %rax, %rcx
  701.     movl    $.LC6, %eax
  702.     movl    -140(%rbp), %edx
  703.     movq    -136(%rbp), %rbx
  704.     movq    %rbx, %rsi
  705.     movq    %rax, %rdi
  706.     movl    $0, %eax
  707.     call    printf
  708.     movl    $0, %eax
  709.     jmp .L52
  710. .L51:
  711.     cmpq    $0, -120(%rbp)
  712.     je  .L53
  713.     movq    -120(%rbp), %rax
  714.     movzwl  (%rax), %eax
  715.     movzwl  %ax, %eax
  716.     jmp .L54
  717. .L53:
  718.     movl    $2, %eax
  719. .L54:
  720.     movl    $6, %edx
  721.     movl    $1, %esi
  722.     movl    %eax, %edi
  723.     call    socket
  724.     movl    %eax, -36(%rbp)
  725.     cmpl    $0, -36(%rbp)
  726.     jns .L55
  727.     call    __errno_location
  728.     movl    (%rax), %eax
  729.     movl    %eax, %edi
  730.     call    strerror
  731.     movq    %rax, %rcx
  732.     movl    $.LC7, %eax
  733.     movl    -140(%rbp), %edx
  734.     movq    -136(%rbp), %rbx
  735.     movq    %rbx, %rsi
  736.     movq    %rax, %rdi
  737.     movl    $0, %eax
  738.     call    printf
  739.     movq    -56(%rbp), %rax
  740.     movq    %rax, %rdi
  741.     call    freeaddrinfo
  742.     movl    $0, %eax
  743.     jmp .L52
  744. .L55:
  745.     cmpq    $0, -120(%rbp)
  746.     je  .L56
  747.     movq    -128(%rbp), %rax
  748.     movl    %eax, %edx
  749.     movq    -120(%rbp), %rcx
  750.     movl    -36(%rbp), %eax
  751.     movq    %rcx, %rsi
  752.     movl    %eax, %edi
  753.     call    bind
  754.     movl    %eax, -40(%rbp)
  755.     cmpl    $0, -40(%rbp)
  756.     jns .L57
  757.     call    __errno_location
  758.     movl    (%rax), %eax
  759.     movl    %eax, %edi
  760.     call    strerror
  761.     movq    %rax, %rsi
  762.     movl    $.LC8, %eax
  763.     movl    -36(%rbp), %ecx
  764.     movl    -140(%rbp), %edx
  765.     movq    -136(%rbp), %rbx
  766.     movq    %rsi, %r8
  767.     movq    %rbx, %rsi
  768.     movq    %rax, %rdi
  769.     movl    $0, %eax
  770.     call    printf
  771. .L57:
  772.     movl    $1, -44(%rbp)
  773.     leaq    -44(%rbp), %rdx
  774.     movl    -36(%rbp), %eax
  775.     movl    $4, %r8d
  776.     movq    %rdx, %rcx
  777.     movl    $2, %edx
  778.     movl    $1, %esi
  779.     movl    %eax, %edi
  780.     call    setsockopt
  781.     movl    %eax, -40(%rbp)
  782.     cmpl    $0, -40(%rbp)
  783.     jns .L56
  784.     call    __errno_location
  785.     movl    (%rax), %eax
  786.     movl    %eax, %edi
  787.     call    strerror
  788.     movq    %rax, %rcx
  789.     movl    $.LC9, %eax
  790.     movl    -140(%rbp), %edx
  791.     movq    -136(%rbp), %rbx
  792.     movq    %rbx, %rsi
  793.     movq    %rax, %rdi
  794.     movl    $0, %eax
  795.     call    printf
  796. .L56:
  797.     movl    -36(%rbp), %eax
  798.     movl    %eax, %edi
  799.     call    ioset_add
  800.     movq    %rax, -64(%rbp)
  801.     movq    -56(%rbp), %rax
  802.     movl    16(%rax), %edx
  803.     movq    -56(%rbp), %rax
  804.     movq    24(%rax), %rcx
  805.     movl    -36(%rbp), %eax
  806.     movq    %rcx, %rsi
  807.     movl    %eax, %edi
  808.     call    connect
  809.     movl    %eax, -40(%rbp)
  810.     movq    -56(%rbp), %rax
  811.     movq    %rax, %rdi
  812.     call    freeaddrinfo
  813.     movq    -64(%rbp), %rax
  814.     testq   %rax, %rax
  815.     jne .L58
  816.     movl    -36(%rbp), %eax
  817.     movl    %eax, %edi
  818.     call    close
  819.     movl    $0, %eax
  820.     jmp .L52
  821. .L58:
  822.     movq    -64(%rbp), %rax
  823.     movl    $2, 80(%rax)
  824.     movq    -64(%rbp), %rax
  825.     movq    -152(%rbp), %rdx
  826.     movq    %rdx, 104(%rax)
  827.     cmpl    $0, -40(%rbp)
  828.     jns .L59
  829.     call    __errno_location
  830.     movl    (%rax), %eax
  831.     cmpl    $115, %eax
  832.     jne .L65
  833. .L61:
  834.     movq    -64(%rbp), %rax
  835.     movq    %rax, %rdi
  836.     call    epoll_update
  837.     movq    -64(%rbp), %rax
  838.     jmp .L52
  839. .L65:
  840.     call    __errno_location
  841.     movl    (%rax), %eax
  842.     movl    %eax, %edi
  843.     call    strerror
  844.     movq    %rax, %rsi
  845.     movl    $.LC10, %eax
  846.     movl    -36(%rbp), %ecx
  847.     movl    -140(%rbp), %edx
  848.     movq    -136(%rbp), %rbx
  849.     movq    %rsi, %r8
  850.     movq    %rbx, %rsi
  851.     movq    %rax, %rdi
  852.     movl    $0, %eax
  853.     call    printf
  854.     leaq    -64(%rbp), %rax
  855.     movl    $1, %esi
  856.     movq    %rax, %rdi
  857.     call    ioset_shutdown
  858.     movl    $0, %eax
  859.     jmp .L52
  860. .L59:
  861.     movq    -64(%rbp), %rax
  862.     movl    $3, 80(%rax)
  863.     cmpq    $0, -152(%rbp)
  864.     je  .L62
  865.     movq    -64(%rbp), %rax
  866.     movq    -152(%rbp), %rdx
  867.     movl    $0, %esi
  868.     movq    %rax, %rdi
  869.     call    *%rdx
  870. .L62:
  871.     movq    -64(%rbp), %rax
  872.     movq    %rax, %rdi
  873.     call    epoll_update
  874.     movq    -64(%rbp), %rax
  875. .L52:
  876.     movq    -24(%rbp), %rdx
  877.     xorq    %fs:40, %rdx
  878.     je  .L64
  879.     call    __stack_chk_fail
  880. .L64:
  881.     addq    $152, %rsp
  882.     popq    %rbx
  883.     leave
  884.     ret
  885.     .cfi_endproc
  886. .LFE14:
  887.     .size   ioset_connect, .-ioset_connect
  888.     .section    .rodata
  889.     .align 8
  890. .LC11:
  891.     .string "Unable to create listening socket fd: %s\n"
  892.     .align 8
  893. .LC12:
  894.     .string "Unable to bind listening socket fd %d: %s\n"
  895.     .align 8
  896. .LC13:
  897.     .string "Unable to mark listener address as re-useable: %s\n"
  898.     .align 8
  899. .LC14:
  900.     .string "Unable to listen on socket fd %d: %s\n"
  901.     .text
  902. .globl ioset_listen
  903.     .type   ioset_listen, @function
  904. ioset_listen:
  905. .LFB15:
  906.     .cfi_startproc
  907.     pushq   %rbp
  908.     .cfi_def_cfa_offset 16
  909.     movq    %rsp, %rbp
  910.     .cfi_offset 6, -16
  911.     .cfi_def_cfa_register 6
  912.     subq    $64, %rsp
  913.     movq    %rdi, -40(%rbp)
  914.     movq    %rsi, -48(%rbp)
  915.     movq    %rdx, -56(%rbp)
  916.     cmpq    $0, -40(%rbp)
  917.     je  .L67
  918.     movq    -40(%rbp), %rax
  919.     movzwl  (%rax), %eax
  920.     movzwl  %ax, %eax
  921.     jmp .L68
  922. .L67:
  923.     movl    $2, %eax
  924. .L68:
  925.     movl    $6, %edx
  926.     movl    $1, %esi
  927.     movl    %eax, %edi
  928.     call    socket
  929.     movl    %eax, -4(%rbp)
  930.     cmpl    $0, -4(%rbp)
  931.     jns .L69
  932.     call    __errno_location
  933.     movl    (%rax), %eax
  934.     movl    %eax, %edi
  935.     call    strerror
  936.     movq    %rax, %rdx
  937.     movl    $.LC11, %eax
  938.     movq    %rdx, %rsi
  939.     movq    %rax, %rdi
  940.     movl    $0, %eax
  941.     call    printf
  942.     movl    $0, %eax
  943.     jmp .L70
  944. .L69:
  945.     cmpq    $0, -40(%rbp)
  946.     je  .L71
  947.     movq    -48(%rbp), %rax
  948.     movl    %eax, %edx
  949.     movq    -40(%rbp), %rcx
  950.     movl    -4(%rbp), %eax
  951.     movq    %rcx, %rsi
  952.     movl    %eax, %edi
  953.     call    bind
  954.     movl    %eax, -8(%rbp)
  955.     cmpl    $0, -8(%rbp)
  956.     jns .L72
  957.     call    __errno_location
  958.     movl    (%rax), %eax
  959.     movl    %eax, %edi
  960.     call    strerror
  961.     movq    %rax, %rdx
  962.     movl    $.LC12, %eax
  963.     movl    -4(%rbp), %ecx
  964.     movl    %ecx, %esi
  965.     movq    %rax, %rdi
  966.     movl    $0, %eax
  967.     call    printf
  968.     movl    -4(%rbp), %eax
  969.     movl    %eax, %edi
  970.     call    close
  971.     movl    $0, %eax
  972.     jmp .L70
  973. .L72:
  974.     movl    $1, -12(%rbp)
  975.     leaq    -12(%rbp), %rdx
  976.     movl    -4(%rbp), %eax
  977.     movl    $4, %r8d
  978.     movq    %rdx, %rcx
  979.     movl    $2, %edx
  980.     movl    $1, %esi
  981.     movl    %eax, %edi
  982.     call    setsockopt
  983.     movl    %eax, -8(%rbp)
  984.     cmpl    $0, -8(%rbp)
  985.     jns .L71
  986.     call    __errno_location
  987.     movl    (%rax), %eax
  988.     movl    %eax, %edi
  989.     call    strerror
  990.     movq    %rax, %rdx
  991.     movl    $.LC13, %eax
  992.     movq    %rdx, %rsi
  993.     movq    %rax, %rdi
  994.     movl    $0, %eax
  995.     call    printf
  996. .L71:
  997.     movl    -4(%rbp), %eax
  998.     movl    $1, %esi
  999.     movl    %eax, %edi
  1000.     call    listen
  1001.     movl    %eax, -8(%rbp)
  1002.     cmpl    $0, -4(%rbp)
  1003.     jns .L73
  1004.     call    __errno_location
  1005.     movl    (%rax), %eax
  1006.     movl    %eax, %edi
  1007.     call    strerror
  1008.     movq    %rax, %rdx
  1009.     movl    $.LC14, %eax
  1010.     movl    -4(%rbp), %ecx
  1011.     movl    %ecx, %esi
  1012.     movq    %rax, %rdi
  1013.     movl    $0, %eax
  1014.     call    printf
  1015.     movl    -4(%rbp), %eax
  1016.     movl    %eax, %edi
  1017.     call    close
  1018.     movl    $0, %eax
  1019.     jmp .L70
  1020. .L73:
  1021.     movl    -4(%rbp), %eax
  1022.     movl    %eax, %edi
  1023.     call    ioset_add
  1024.     movq    %rax, -24(%rbp)
  1025.     cmpq    $0, -24(%rbp)
  1026.     jne .L74
  1027.     movl    -4(%rbp), %eax
  1028.     movl    %eax, %edi
  1029.     call    close
  1030.     movl    $0, %eax
  1031.     jmp .L70
  1032. .L74:
  1033.     movq    -24(%rbp), %rax
  1034.     movl    $1, 80(%rax)
  1035.     movq    -24(%rbp), %rax
  1036.     movq    -56(%rbp), %rdx
  1037.     movq    %rdx, 112(%rax)
  1038.     movq    -24(%rbp), %rax
  1039.     movq    %rax, %rdi
  1040.     call    epoll_update
  1041.     movq    -24(%rbp), %rax
  1042. .L70:
  1043.     leave
  1044.     ret
  1045.     .cfi_endproc
  1046. .LFE15:
  1047.     .size   ioset_listen, .-ioset_listen
  1048.     .section    .rodata
  1049. .LC15:
  1050.     .string "write() error on fd %d: %s\n"
  1051.     .text
  1052.     .type   ioset_flush_sendq, @function
  1053. ioset_flush_sendq:
  1054. .LFB16:
  1055.     .cfi_startproc
  1056.     pushq   %rbp
  1057.     .cfi_def_cfa_offset 16
  1058.     movq    %rsp, %rbp
  1059.     .cfi_offset 6, -16
  1060.     .cfi_def_cfa_register 6
  1061.     subq    $48, %rsp
  1062.     movq    %rdi, -40(%rbp)
  1063.     movq    -40(%rbp), %rax
  1064.     addq    $16, %rax
  1065.     movq    %rax, -24(%rbp)
  1066.     movq    -24(%rbp), %rax
  1067.     movq    %rax, %rdi
  1068.     call    ioq_get_avail
  1069.     movq    %rax, -16(%rbp)
  1070.     movq    -24(%rbp), %rax
  1071.     movq    (%rax), %rdx
  1072.     movq    -24(%rbp), %rax
  1073.     movq    16(%rax), %rax
  1074.     leaq    (%rdx,%rax), %rcx
  1075.     movq    -40(%rbp), %rax
  1076.     movl    (%rax), %eax
  1077.     movq    -16(%rbp), %rdx
  1078.     movq    %rcx, %rsi
  1079.     movl    %eax, %edi
  1080.     call    write
  1081.     movq    %rax, -8(%rbp)
  1082.     cmpq    $0, -8(%rbp)
  1083.     jns .L77
  1084.     call    __errno_location
  1085.     movl    (%rax), %eax
  1086.     cmpl    $11, %eax
  1087.     je  .L80
  1088.     call    __errno_location
  1089.     movl    (%rax), %eax
  1090.     movl    %eax, %edi
  1091.     call    strerror
  1092.     movq    %rax, %rdx
  1093.     movq    -40(%rbp), %rax
  1094.     movl    (%rax), %ecx
  1095.     movl    $.LC15, %eax
  1096.     movl    %ecx, %esi
  1097.     movq    %rax, %rdi
  1098.     movl    $0, %eax
  1099.     call    printf
  1100.     jmp .L80
  1101. .L77:
  1102.     movq    -24(%rbp), %rax
  1103.     movq    16(%rax), %rdx
  1104.     movq    -8(%rbp), %rax
  1105.     addq    %rax, %rdx
  1106.     movq    -24(%rbp), %rax
  1107.     movq    %rdx, 16(%rax)
  1108.     movq    -24(%rbp), %rax
  1109.     movq    16(%rax), %rdx
  1110.     movq    -24(%rbp), %rax
  1111.     movq    8(%rax), %rax
  1112.     cmpq    %rax, %rdx
  1113.     jne .L79
  1114.     movq    -24(%rbp), %rax
  1115.     movq    $0, 8(%rax)
  1116. .L79:
  1117.     movq    -40(%rbp), %rax
  1118.     movq    %rax, %rdi
  1119.     call    epoll_update
  1120. .L80:
  1121.     leave
  1122.     ret
  1123.     .cfi_endproc
  1124. .LFE16:
  1125.     .size   ioset_flush_sendq, .-ioset_flush_sendq
  1126. .globl ioset_close
  1127.     .type   ioset_close, @function
  1128. ioset_close:
  1129. .LFB17:
  1130.     .cfi_startproc
  1131.     pushq   %rbp
  1132.     .cfi_def_cfa_offset 16
  1133.     movq    %rsp, %rbp
  1134.     .cfi_offset 6, -16
  1135.     .cfi_def_cfa_register 6
  1136.     subq    $16, %rsp
  1137.     movq    %rdi, -8(%rbp)
  1138.     movq    -8(%rbp), %rax
  1139.     movl    $3, %esi
  1140.     movq    %rax, %rdi
  1141.     call    ioset_shutdown
  1142.     leave
  1143.     ret
  1144.     .cfi_endproc
  1145. .LFE17:
  1146.     .size   ioset_close, .-ioset_close
  1147. .globl ioset_shutdown
  1148.     .type   ioset_shutdown, @function
  1149. ioset_shutdown:
  1150. .LFB18:
  1151.     .cfi_startproc
  1152.     pushq   %rbp
  1153.     .cfi_def_cfa_offset 16
  1154.     movq    %rsp, %rbp
  1155.     .cfi_offset 6, -16
  1156.     .cfi_def_cfa_register 6
  1157.     subq    $48, %rsp
  1158.     movq    %rdi, -40(%rbp)
  1159.     movl    %esi, -44(%rbp)
  1160.     movq    -40(%rbp), %rax
  1161.     movq    (%rax), %rax
  1162.     movq    %rax, -16(%rbp)
  1163.     movq    -16(%rbp), %rax
  1164.     addq    $16, %rax
  1165.     movq    %rax, -24(%rbp)
  1166.     movq    -40(%rbp), %rax
  1167.     movq    $0, (%rax)
  1168.     movq    -16(%rbp), %rax
  1169.     movq    88(%rax), %rax
  1170.     testq   %rax, %rax
  1171.     je  .L84
  1172.     movq    -16(%rbp), %rax
  1173.     movq    88(%rax), %rdx
  1174.     movq    -16(%rbp), %rax
  1175.     movq    %rax, %rdi
  1176.     call    *%rdx
  1177. .L84:
  1178.     movq    -24(%rbp), %rax
  1179.     movq    16(%rax), %rdx
  1180.     movq    -24(%rbp), %rax
  1181.     movq    24(%rax), %rax
  1182.     cmpq    %rax, %rdx
  1183.     je  .L85
  1184.     movl    -44(%rbp), %eax
  1185.     andl    $2, %eax
  1186.     testl   %eax, %eax
  1187.     je  .L85
  1188.     movq    -16(%rbp), %rax
  1189.     movl    (%rax), %eax
  1190.     movl    $3, %esi
  1191.     movl    %eax, %edi
  1192.     movl    $0, %eax
  1193.     call    fcntl
  1194.     movl    %eax, -4(%rbp)
  1195.     movl    -4(%rbp), %eax
  1196.     movl    %eax, %edx
  1197.     andb    $247, %dh
  1198.     movq    -16(%rbp), %rax
  1199.     movl    (%rax), %eax
  1200.     movl    $4, %esi
  1201.     movl    %eax, %edi
  1202.     movl    $0, %eax
  1203.     call    fcntl
  1204.     movq    -16(%rbp), %rax
  1205.     movq    %rax, %rdi
  1206.     call    ioset_flush_sendq
  1207.     movq    -24(%rbp), %rax
  1208.     movq    16(%rax), %rdx
  1209.     movq    -24(%rbp), %rax
  1210.     movq    24(%rax), %rax
  1211.     cmpq    %rax, %rdx
  1212.     je  .L85
  1213.     movq    -16(%rbp), %rax
  1214.     movq    %rax, %rdi
  1215.     call    ioset_flush_sendq
  1216. .L85:
  1217.     movq    -16(%rbp), %rax
  1218.     movl    (%rax), %eax
  1219.     movl    %eax, -4(%rbp)
  1220.     movq    -16(%rbp), %rax
  1221.     movq    %rax, %rdi
  1222.     call    epoll_remove
  1223.     movq    -16(%rbp), %rax
  1224.     movq    16(%rax), %rax
  1225.     movq    %rax, %rdi
  1226.     call    free
  1227.     movq    -16(%rbp), %rax
  1228.     movq    48(%rax), %rax
  1229.     movq    %rax, %rdi
  1230.     call    free
  1231.     movq    -16(%rbp), %rax
  1232.     movq    %rax, %rdi
  1233.     call    free
  1234.     movl    -44(%rbp), %eax
  1235.     andl    $1, %eax
  1236.     testb   %al, %al
  1237.     je  .L86
  1238.     movl    -4(%rbp), %eax
  1239.     movl    %eax, %edi
  1240.     call    close
  1241.     jmp .L87
  1242. .L86:
  1243.     movl    -4(%rbp), %eax
  1244. .L87:
  1245.     leave
  1246.     ret
  1247.     .cfi_endproc
  1248. .LFE18:
  1249.     .size   ioset_shutdown, .-ioset_shutdown
  1250.     .type   ioset_find_line_length, @function
  1251. ioset_find_line_length:
  1252. .LFB19:
  1253.     .cfi_startproc
  1254.     pushq   %rbp
  1255.     .cfi_def_cfa_offset 16
  1256.     movq    %rsp, %rbp
  1257.     .cfi_offset 6, -16
  1258.     .cfi_def_cfa_register 6
  1259.     movq    %rdi, -40(%rbp)
  1260.     movq    $0, -24(%rbp)
  1261.     movq    -40(%rbp), %rax
  1262.     addq    $48, %rax
  1263.     movq    %rax, -32(%rbp)
  1264.     movq    -32(%rbp), %rax
  1265.     movq    24(%rax), %rdx
  1266.     movq    -32(%rbp), %rax
  1267.     movq    16(%rax), %rax
  1268.     cmpq    %rax, %rdx
  1269.     jae .L90
  1270.     movq    -32(%rbp), %rax
  1271.     movq    8(%rax), %rax
  1272.     jmp .L91
  1273. .L90:
  1274.     movq    -32(%rbp), %rax
  1275.     movq    24(%rax), %rax
  1276. .L91:
  1277.     movq    %rax, -16(%rbp)
  1278.     movq    -32(%rbp), %rax
  1279.     movq    16(%rax), %rax
  1280.     movq    %rax, -8(%rbp)
  1281.     jmp .L92
  1282. .L95:
  1283.     movq    -32(%rbp), %rax
  1284.     movq    (%rax), %rax
  1285.     addq    -8(%rbp), %rax
  1286.     movzbl  (%rax), %eax
  1287.     cmpb    $10, %al
  1288.     jne .L93
  1289.     movq    -24(%rbp), %rax
  1290.     leaq    1(%rax), %rdx
  1291.     movq    -40(%rbp), %rax
  1292.     movq    %rdx, 8(%rax)
  1293.     movq    -40(%rbp), %rax
  1294.     movq    8(%rax), %rax
  1295.     jmp .L94
  1296. .L93:
  1297.     addq    $1, -8(%rbp)
  1298.     addq    $1, -24(%rbp)
  1299. .L92:
  1300.     movq    -8(%rbp), %rax
  1301.     cmpq    -16(%rbp), %rax
  1302.     jb  .L95
  1303.     movq    -32(%rbp), %rax
  1304.     movq    24(%rax), %rdx
  1305.     movq    -32(%rbp), %rax
  1306.     movq    16(%rax), %rax
  1307.     cmpq    %rax, %rdx
  1308.     jae .L96
  1309.     movq    -32(%rbp), %rax
  1310.     movq    16(%rax), %rax
  1311.     movq    %rax, -8(%rbp)
  1312.     jmp .L97
  1313. .L99:
  1314.     movq    -32(%rbp), %rax
  1315.     movq    (%rax), %rax
  1316.     addq    -8(%rbp), %rax
  1317.     movzbl  (%rax), %eax
  1318.     cmpb    $10, %al
  1319.     jne .L98
  1320.     movq    -24(%rbp), %rax
  1321.     leaq    1(%rax), %rdx
  1322.     movq    -40(%rbp), %rax
  1323.     movq    %rdx, 8(%rax)
  1324.     movq    -40(%rbp), %rax
  1325.     movq    8(%rax), %rax
  1326.     jmp .L94
  1327. .L98:
  1328.     addq    $1, -8(%rbp)
  1329.     addq    $1, -24(%rbp)
  1330. .L97:
  1331.     movq    -32(%rbp), %rax
  1332.     movq    24(%rax), %rax
  1333.     cmpq    -8(%rbp), %rax
  1334.     ja  .L99
  1335. .L96:
  1336.     movq    -40(%rbp), %rax
  1337.     movq    $0, 8(%rax)
  1338.     movq    -40(%rbp), %rax
  1339.     movq    8(%rax), %rax
  1340. .L94:
  1341.     leave
  1342.     ret
  1343.     .cfi_endproc
  1344. .LFE19:
  1345.     .size   ioset_find_line_length, .-ioset_find_line_length
  1346.     .section    .rodata
  1347.     .align 8
  1348. .LC16:
  1349.     .string "read() error on socket fd %d: %s\n"
  1350.     .text
  1351.     .type   ioset_read_to_recvq, @function
  1352. ioset_read_to_recvq:
  1353. .LFB20:
  1354.     .cfi_startproc
  1355.     pushq   %rbp
  1356.     .cfi_def_cfa_offset 16
  1357.     movq    %rsp, %rbp
  1358.     .cfi_offset 6, -16
  1359.     .cfi_def_cfa_register 6
  1360.     pushq   %rbx
  1361.     subq    $56, %rsp
  1362.     movq    %rdi, -56(%rbp)
  1363.     movq    -56(%rbp), %rax
  1364.     addq    $48, %rax
  1365.     movq    %rax, -40(%rbp)
  1366.     movq    -40(%rbp), %rax
  1367.     movq    %rax, %rdi
  1368.     .cfi_offset 3, -24
  1369.     call    ioq_put_avail
  1370.     movq    %rax, -32(%rbp)
  1371.     cmpq    $0, -32(%rbp)
  1372.     jne .L102
  1373.     movq    -40(%rbp), %rax
  1374.     movq    %rax, %rdi
  1375.     call    ioq_expand
  1376.     movq    %rax, -32(%rbp)
  1377. .L102:
  1378.     movq    -40(%rbp), %rax
  1379.     movq    (%rax), %rdx
  1380.     movq    -40(%rbp), %rax
  1381.     movq    24(%rax), %rax
  1382.     leaq    (%rdx,%rax), %rcx
  1383.     movq    -56(%rbp), %rax
  1384.     movl    (%rax), %eax
  1385.     movq    -32(%rbp), %rdx
  1386.     movq    %rcx, %rsi
  1387.     movl    %eax, %edi
  1388.     call    read
  1389.     movq    %rax, -24(%rbp)
  1390.     cmpq    $0, -24(%rbp)
  1391.     jns .L103
  1392.     call    __errno_location
  1393.     movl    (%rax), %eax
  1394.     cmpl    $11, %eax
  1395.     je  .L116
  1396.     call    __errno_location
  1397.     movl    (%rax), %eax
  1398.     movl    %eax, %edi
  1399.     call    strerror
  1400.     movq    %rax, %rdx
  1401.     movq    -56(%rbp), %rax
  1402.     movl    (%rax), %ecx
  1403.     movl    $.LC16, %eax
  1404.     movl    %ecx, %esi
  1405.     movq    %rax, %rdi
  1406.     movl    $0, %eax
  1407.     call    printf
  1408.     movq    -56(%rbp), %rax
  1409.     movl    $-1, 80(%rax)
  1410.     movq    -56(%rbp), %rax
  1411.     movq    96(%rax), %rdx
  1412.     leaq    -56(%rbp), %rax
  1413.     movq    %rax, %rdi
  1414.     call    *%rdx
  1415.     movq    -56(%rbp), %rax
  1416.     testq   %rax, %rax
  1417.     je  .L116
  1418.     leaq    -56(%rbp), %rax
  1419.     movl    $1, %esi
  1420.     movq    %rax, %rdi
  1421.     call    ioset_shutdown
  1422.     jmp .L116
  1423. .L103:
  1424.     cmpq    $0, -24(%rbp)
  1425.     jne .L105
  1426.     movq    -56(%rbp), %rax
  1427.     movl    $0, 80(%rax)
  1428.     movq    -56(%rbp), %rax
  1429.     movq    96(%rax), %rdx
  1430.     leaq    -56(%rbp), %rax
  1431.     movq    %rax, %rdi
  1432.     call    *%rdx
  1433.     movq    -56(%rbp), %rax
  1434.     testq   %rax, %rax
  1435.     je  .L116
  1436.     leaq    -56(%rbp), %rax
  1437.     movl    $1, %esi
  1438.     movq    %rax, %rdi
  1439.     call    ioset_shutdown
  1440.     jmp .L116
  1441. .L105:
  1442.     movq    -56(%rbp), %rax
  1443.     movq    8(%rax), %rax
  1444.     testq   %rax, %rax
  1445.     jne .L116
  1446.     movq    -40(%rbp), %rax
  1447.     movq    24(%rax), %rax
  1448.     movq    %rax, -48(%rbp)
  1449.     jmp .L106
  1450. .L111:
  1451.     movq    -40(%rbp), %rax
  1452.     movq    (%rax), %rax
  1453.     addq    -48(%rbp), %rax
  1454.     movzbl  (%rax), %eax
  1455.     cmpb    $10, %al
  1456.     jne .L107
  1457.     movq    -40(%rbp), %rax
  1458.     movq    24(%rax), %rdx
  1459.     movq    -40(%rbp), %rax
  1460.     movq    16(%rax), %rax
  1461.     cmpq    %rax, %rdx
  1462.     jae .L108
  1463.     movq    -56(%rbp), %rax
  1464.     movq    -40(%rbp), %rdx
  1465.     movq    8(%rdx), %rdx
  1466.     movq    %rdx, %rcx
  1467.     addq    -48(%rbp), %rcx
  1468.     movq    -40(%rbp), %rdx
  1469.     movq    16(%rdx), %rdx
  1470.     movq    %rcx, %rbx
  1471.     subq    %rdx, %rbx
  1472.     movq    %rbx, %rdx
  1473.     addq    $1, %rdx
  1474.     movq    %rdx, 8(%rax)
  1475.     jmp .L110
  1476. .L108:
  1477.     movq    -56(%rbp), %rax
  1478.     movq    -40(%rbp), %rdx
  1479.     movq    16(%rdx), %rdx
  1480.     movq    -48(%rbp), %rcx
  1481.     movq    %rcx, %rbx
  1482.     subq    %rdx, %rbx
  1483.     movq    %rbx, %rdx
  1484.     addq    $1, %rdx
  1485.     movq    %rdx, 8(%rax)
  1486.     jmp .L110
  1487. .L107:
  1488.     addq    $1, -48(%rbp)
  1489. .L106:
  1490.     movq    -40(%rbp), %rax
  1491.     movq    24(%rax), %rdx
  1492.     movq    -24(%rbp), %rax
  1493.     leaq    (%rdx,%rax), %rax
  1494.     cmpq    -48(%rbp), %rax
  1495.     ja  .L111
  1496. .L110:
  1497.     movq    -40(%rbp), %rax
  1498.     movq    24(%rax), %rdx
  1499.     movq    -24(%rbp), %rax
  1500.     addq    %rax, %rdx
  1501.     movq    -40(%rbp), %rax
  1502.     movq    %rdx, 24(%rax)
  1503.     movq    -40(%rbp), %rax
  1504.     movq    24(%rax), %rdx
  1505.     movq    -40(%rbp), %rax
  1506.     movq    8(%rax), %rax
  1507.     cmpq    %rax, %rdx
  1508.     jne .L117
  1509.     movq    -40(%rbp), %rax
  1510.     movq    $0, 24(%rax)
  1511.     jmp .L113
  1512. .L115:
  1513.     movq    -56(%rbp), %rax
  1514.     movq    96(%rax), %rdx
  1515.     leaq    -56(%rbp), %rax
  1516.     movq    %rax, %rdi
  1517.     call    *%rdx
  1518.     movq    -56(%rbp), %rax
  1519.     testq   %rax, %rax
  1520.     je  .L118
  1521.     movq    -56(%rbp), %rax
  1522.     movq    %rax, %rdi
  1523.     call    ioset_find_line_length
  1524.     jmp .L113
  1525. .L117:
  1526.     nop
  1527. .L113:
  1528.     movq    -56(%rbp), %rax
  1529.     movq    8(%rax), %rax
  1530.     testq   %rax, %rax
  1531.     jne .L115
  1532.     jmp .L116
  1533. .L118:
  1534.     nop
  1535. .L116:
  1536.     addq    $56, %rsp
  1537.     popq    %rbx
  1538.     leave
  1539.     ret
  1540.     .cfi_endproc
  1541. .LFE20:
  1542.     .size   ioset_read_to_recvq, .-ioset_read_to_recvq
  1543. .globl ioset_read
  1544.     .type   ioset_read, @function
  1545. ioset_read:
  1546. .LFB21:
  1547.     .cfi_startproc
  1548.     pushq   %rbp
  1549.     .cfi_def_cfa_offset 16
  1550.     movq    %rsp, %rbp
  1551.     .cfi_offset 6, -16
  1552.     .cfi_def_cfa_register 6
  1553.     movq    %rdi, -24(%rbp)
  1554.     movq    %rsi, -32(%rbp)
  1555.     movq    %rdx, -40(%rbp)
  1556.     leave
  1557.     ret
  1558.     .cfi_endproc
  1559. .LFE21:
  1560.     .size   ioset_read, .-ioset_read
  1561.     .ident  "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5"
  1562.     .section    .note.GNU-stack,"",@progbits
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement