Advertisement
_takumi

noopt.asm

Nov 27th, 2022 (edited)
1,645
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .file   "main.c"
  2.     .intel_syntax noprefix
  3.     .text
  4.     .globl  f
  5.     .type   f, @function
  6. f:
  7.     push    rbp
  8.     mov rbp, rsp
  9.     movsd   QWORD PTR -8[rbp], xmm0
  10.     movsd   xmm0, QWORD PTR -8[rbp]
  11.     mulsd   xmm0, xmm0
  12.     mulsd   xmm0, QWORD PTR -8[rbp]
  13.     movapd  xmm1, xmm0
  14.     mulsd   xmm1, QWORD PTR -8[rbp]
  15.     movsd   xmm0, QWORD PTR -8[rbp]
  16.     addsd   xmm0, xmm0
  17.     mulsd   xmm0, QWORD PTR -8[rbp]
  18.     mulsd   xmm0, QWORD PTR -8[rbp]
  19.     addsd   xmm0, xmm1
  20.     subsd   xmm0, QWORD PTR -8[rbp]
  21.     movsd   xmm1, QWORD PTR .LC0[rip]
  22.     subsd   xmm0, xmm1
  23.     pop rbp
  24.     ret
  25.     .size   f, .-f
  26.     .globl  solve
  27.     .type   solve, @function
  28. solve:
  29.     push    rbp
  30.     mov rbp, rsp
  31.     sub rsp, 48
  32.     movsd   QWORD PTR -24[rbp], xmm0
  33.     movsd   QWORD PTR -32[rbp], xmm1
  34.     movsd   QWORD PTR -40[rbp], xmm2
  35.     jmp .L4
  36. .L7:
  37.     movsd   xmm0, QWORD PTR -24[rbp]
  38.     addsd   xmm0, QWORD PTR -32[rbp]
  39.     movsd   xmm1, QWORD PTR .LC1[rip]
  40.     divsd   xmm0, xmm1
  41.     movsd   QWORD PTR -8[rbp], xmm0
  42.     mov rax, QWORD PTR -32[rbp]
  43.     movq    xmm0, rax
  44.     call    f
  45.     movsd   QWORD PTR -48[rbp], xmm0
  46.     mov rax, QWORD PTR -8[rbp]
  47.     movq    xmm0, rax
  48.     call    f
  49.     movsd   xmm1, QWORD PTR -48[rbp]
  50.     mulsd   xmm1, xmm0
  51.     pxor    xmm0, xmm0
  52.     comisd  xmm0, xmm1
  53.     jbe .L10
  54.     movsd   xmm0, QWORD PTR -8[rbp]
  55.     movsd   QWORD PTR -24[rbp], xmm0
  56.     jmp .L4
  57. .L10:
  58.     movsd   xmm0, QWORD PTR -8[rbp]
  59.     movsd   QWORD PTR -32[rbp], xmm0
  60. .L4:
  61.     movsd   xmm0, QWORD PTR -32[rbp]
  62.     subsd   xmm0, QWORD PTR -24[rbp]
  63.     comisd  xmm0, QWORD PTR -40[rbp]
  64.     ja  .L7
  65.     movsd   xmm0, QWORD PTR -24[rbp]
  66.     addsd   xmm0, QWORD PTR -32[rbp]
  67.     movsd   xmm1, QWORD PTR .LC1[rip]
  68.     divsd   xmm0, xmm1
  69.     leave
  70.     ret
  71.     .size   solve, .-solve
  72.     .section    .rodata
  73.     .align 8
  74. .LC4:
  75.     .string "Please enter one of the following keys: -f, -c"
  76. .LC5:
  77.     .string "-c"
  78. .LC6:
  79.     .string "%lf %lf"
  80. .LC7:
  81.     .string "%lf\n"
  82. .LC9:
  83.     .string "Program execution time: %lf\n"
  84. .LC10:
  85.     .string "-f"
  86. .LC11:
  87.     .string "Incorrect input"
  88. .LC12:
  89.     .string "r"
  90. .LC13:
  91.     .string "w"
  92.     .text
  93.     .globl  main
  94.     .type   main, @function
  95. main:
  96.     push    rbp
  97.     mov rbp, rsp
  98.     add rsp, -128
  99.     mov DWORD PTR -116[rbp], edi
  100.     mov QWORD PTR -128[rbp], rsi
  101.     mov rax, QWORD PTR fs:40
  102.     mov QWORD PTR -8[rbp], rax
  103.     xor eax, eax
  104.     movsd   xmm0, QWORD PTR .LC3[rip]
  105.     movsd   QWORD PTR -88[rbp], xmm0
  106.     cmp DWORD PTR -116[rbp], 1
  107.     jne .L12
  108.     lea rdi, .LC4[rip]
  109.     call    puts@PLT
  110.     mov eax, 0
  111.     jmp .L20
  112. .L12:
  113.     mov rax, QWORD PTR -128[rbp]
  114.     add rax, 8
  115.     mov rax, QWORD PTR [rax]
  116.     lea rsi, .LC5[rip]
  117.     mov rdi, rax
  118.     call    strcmp@PLT
  119.     test    eax, eax
  120.     jne .L14
  121.     lea rdx, -96[rbp]
  122.     lea rax, -104[rbp]
  123.     mov rsi, rax
  124.     lea rdi, .LC6[rip]
  125.     mov eax, 0
  126.     call    __isoc99_scanf@PLT
  127.     call    clock@PLT
  128.     mov QWORD PTR -32[rbp], rax
  129.     movsd   xmm0, QWORD PTR -96[rbp]
  130.     mov rax, QWORD PTR -104[rbp]
  131.     movsd   xmm1, QWORD PTR -88[rbp]
  132.     movapd  xmm2, xmm1
  133.     movapd  xmm1, xmm0
  134.     movq    xmm0, rax
  135.     call    solve
  136.     movq    rax, xmm0
  137.     mov QWORD PTR -56[rbp], rax
  138.     call    clock@PLT
  139.     mov QWORD PTR -24[rbp], rax
  140.     mov rax, QWORD PTR -56[rbp]
  141.     movq    xmm0, rax
  142.     lea rdi, .LC7[rip]
  143.     mov eax, 1
  144.     call    printf@PLT
  145.     mov rax, QWORD PTR -24[rbp]
  146.     sub rax, QWORD PTR -32[rbp]
  147.     cvtsi2sd    xmm0, rax
  148.     movsd   xmm1, QWORD PTR .LC8[rip]
  149.     divsd   xmm0, xmm1
  150.     movsd   QWORD PTR -16[rbp], xmm0
  151.     mov rax, QWORD PTR -16[rbp]
  152.     movq    xmm0, rax
  153.     lea rdi, .LC9[rip]
  154.     mov eax, 1
  155.     call    printf@PLT
  156.     jmp .L15
  157. .L14:
  158.     mov rax, QWORD PTR -128[rbp]
  159.     add rax, 8
  160.     mov rax, QWORD PTR [rax]
  161.     lea rsi, .LC10[rip]
  162.     mov rdi, rax
  163.     call    strcmp@PLT
  164.     test    eax, eax
  165.     jne .L16
  166.     cmp DWORD PTR -116[rbp], 4
  167.     je  .L17
  168.     lea rdi, .LC11[rip]
  169.     call    puts@PLT
  170.     mov eax, 0
  171.     jmp .L20
  172. .L17:
  173.     mov rax, QWORD PTR -128[rbp]
  174.     add rax, 16
  175.     mov rax, QWORD PTR [rax]
  176.     lea rsi, .LC12[rip]
  177.     mov rdi, rax
  178.     call    fopen@PLT
  179.     mov QWORD PTR -80[rbp], rax
  180.     mov rax, QWORD PTR -128[rbp]
  181.     add rax, 24
  182.     mov rax, QWORD PTR [rax]
  183.     lea rsi, .LC13[rip]
  184.     mov rdi, rax
  185.     call    fopen@PLT
  186.     mov QWORD PTR -72[rbp], rax
  187.     cmp QWORD PTR -80[rbp], 0
  188.     je  .L18
  189.     cmp QWORD PTR -72[rbp], 0
  190.     jne .L19
  191. .L18:
  192.     lea rdi, .LC11[rip]
  193.     call    puts@PLT
  194.     mov eax, 0
  195.     jmp .L20
  196. .L19:
  197.     lea rcx, -96[rbp]
  198.     lea rdx, -104[rbp]
  199.     mov rax, QWORD PTR -80[rbp]
  200.     lea rsi, .LC6[rip]
  201.     mov rdi, rax
  202.     mov eax, 0
  203.     call    __isoc99_fscanf@PLT
  204.     call    clock@PLT
  205.     mov QWORD PTR -64[rbp], rax
  206.     movsd   xmm0, QWORD PTR -96[rbp]
  207.     mov rax, QWORD PTR -104[rbp]
  208.     movsd   xmm1, QWORD PTR -88[rbp]
  209.     movapd  xmm2, xmm1
  210.     movapd  xmm1, xmm0
  211.     movq    xmm0, rax
  212.     call    solve
  213.     movq    rax, xmm0
  214.     mov QWORD PTR -56[rbp], rax
  215.     call    clock@PLT
  216.     mov QWORD PTR -48[rbp], rax
  217.     mov rdx, QWORD PTR -56[rbp]
  218.     mov rax, QWORD PTR -72[rbp]
  219.     movq    xmm0, rdx
  220.     lea rsi, .LC7[rip]
  221.     mov rdi, rax
  222.     mov eax, 1
  223.     call    fprintf@PLT
  224.     mov rax, QWORD PTR -48[rbp]
  225.     sub rax, QWORD PTR -64[rbp]
  226.     cvtsi2sd    xmm0, rax
  227.     movsd   xmm1, QWORD PTR .LC8[rip]
  228.     divsd   xmm0, xmm1
  229.     movsd   QWORD PTR -40[rbp], xmm0
  230.     mov rax, QWORD PTR -40[rbp]
  231.     movq    xmm0, rax
  232.     lea rdi, .LC9[rip]
  233.     mov eax, 1
  234.     call    printf@PLT
  235.     mov rax, QWORD PTR -80[rbp]
  236.     mov rdi, rax
  237.     call    fclose@PLT
  238.     mov rax, QWORD PTR -72[rbp]
  239.     mov rdi, rax
  240.     call    fclose@PLT
  241.     jmp .L15
  242. .L16:
  243.     lea rdi, .LC4[rip]
  244.     call    puts@PLT
  245. .L15:
  246.     mov eax, 0
  247. .L20:
  248.     mov rcx, QWORD PTR -8[rbp]
  249.     xor rcx, QWORD PTR fs:40
  250.     je  .L21
  251.     call    __stack_chk_fail@PLT
  252. .L21:
  253.     leave
  254.     ret
  255.     .size   main, .-main
  256.     .section    .rodata
  257.     .align 8
  258. .LC0:
  259.     .long   0
  260.     .long   1072693248
  261.     .align 8
  262. .LC1:
  263.     .long   0
  264.     .long   1073741824
  265.     .align 8
  266. .LC3:
  267.     .long   2696277389
  268.     .long   1051772663
  269.     .align 8
  270. .LC8:
  271.     .long   0
  272.     .long   1093567616
  273.     .ident  "GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
  274.     .section    .note.GNU-stack,"",@progbits
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement