Advertisement
_takumi

idz2_raw

Oct 31st, 2022 (edited)
2,409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .file   "idz2.c"
  2.     .intel_syntax noprefix
  3.     .text
  4.     .section    .rodata
  5. .LC0:
  6.     .string "%lld"
  7. .LC1:
  8.     .string "%c"
  9.     .text
  10.     .globl  main
  11.     .type   main, @function
  12. main:
  13.     push    rbp
  14.     mov rbp, rsp
  15.     sub rsp, 64
  16.     mov rax, QWORD PTR fs:40
  17.     mov QWORD PTR -8[rbp], rax
  18.     xor eax, eax
  19.     mov QWORD PTR -40[rbp], 0
  20.     lea rax, -40[rbp]
  21.     mov rsi, rax
  22.     lea rdi, .LC0[rip]
  23.     mov eax, 0
  24.     call    __isoc99_scanf@PLT
  25.     mov rax, QWORD PTR -40[rbp]
  26.     add rax, 1
  27.     mov rdi, rax
  28.     call    malloc@PLT
  29.     mov QWORD PTR -16[rbp], rax
  30.     mov QWORD PTR -32[rbp], 0
  31.     mov rax, QWORD PTR -40[rbp]
  32.     mov rdx, rax
  33.     mov rax, QWORD PTR -16[rbp]
  34.     add rax, rdx
  35.     mov QWORD PTR -24[rbp], rax
  36.     call    getchar@PLT
  37.     mov DWORD PTR -52[rbp], 0
  38.     jmp .L2
  39. .L3:
  40.     mov eax, DWORD PTR -52[rbp]
  41.     movsx   rdx, eax
  42.     mov rax, QWORD PTR -16[rbp]
  43.     add rax, rdx
  44.     mov rsi, rax
  45.     lea rdi, .LC1[rip]
  46.     mov eax, 0
  47.     call    __isoc99_scanf@PLT
  48.     add DWORD PTR -52[rbp], 1
  49. .L2:
  50.     mov eax, DWORD PTR -52[rbp]
  51.     movsx   rdx, eax
  52.     mov rax, QWORD PTR -40[rbp]
  53.     cmp rdx, rax
  54.     jl  .L3
  55.     mov rax, QWORD PTR -40[rbp]
  56.     sub eax, 1
  57.     mov DWORD PTR -48[rbp], eax
  58.     jmp .L4
  59. .L9:
  60.     mov eax, DWORD PTR -48[rbp]
  61.     cdqe
  62.     lea rdx, -1[rax]
  63.     mov rax, QWORD PTR -16[rbp]
  64.     add rax, rdx
  65.     movzx   edx, BYTE PTR [rax]
  66.     mov eax, DWORD PTR -48[rbp]
  67.     movsx   rcx, eax
  68.     mov rax, QWORD PTR -16[rbp]
  69.     add rax, rcx
  70.     movzx   eax, BYTE PTR [rax]
  71.     cmp dl, al
  72.     jge .L5
  73.     mov eax, DWORD PTR -48[rbp]
  74.     cdqe
  75.     lea rdx, -1[rax]
  76.     mov rax, QWORD PTR -16[rbp]
  77.     add rax, rdx
  78.     mov QWORD PTR -32[rbp], rax
  79.     jmp .L6
  80. .L5:
  81.     cmp QWORD PTR -32[rbp], 0
  82.     jne .L15
  83.     mov eax, DWORD PTR -48[rbp]
  84.     movsx   rdx, eax
  85.     mov rax, QWORD PTR -16[rbp]
  86.     add rax, rdx
  87.     mov QWORD PTR -24[rbp], rax
  88. .L6:
  89.     sub DWORD PTR -48[rbp], 1
  90. .L4:
  91.     cmp DWORD PTR -48[rbp], 0
  92.     jg  .L9
  93.     jmp .L8
  94. .L15:
  95.     nop
  96. .L8:
  97.     cmp QWORD PTR -32[rbp], 0
  98.     je  .L10
  99.     mov DWORD PTR -44[rbp], 0
  100.     jmp .L11
  101. .L12:
  102.     mov eax, DWORD PTR -44[rbp]
  103.     movsx   rdx, eax
  104.     mov rax, QWORD PTR -32[rbp]
  105.     add rax, rdx
  106.     movzx   eax, BYTE PTR [rax]
  107.     movsx   eax, al
  108.     mov edi, eax
  109.     call    putchar@PLT
  110.     add DWORD PTR -44[rbp], 1
  111. .L11:
  112.     mov eax, DWORD PTR -44[rbp]
  113.     movsx   rdx, eax
  114.     mov rax, QWORD PTR -32[rbp]
  115.     add rax, rdx
  116.     cmp QWORD PTR -24[rbp], rax
  117.     jne .L12
  118. .L10:
  119.     mov eax, 0
  120.     mov rcx, QWORD PTR -8[rbp]
  121.     xor rcx, QWORD PTR fs:40
  122.     je  .L14
  123.     call    __stack_chk_fail@PLT
  124. .L14:
  125.     leave
  126.     ret
  127.     .size   main, .-main
  128.     .ident  "GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0"
  129.     .section    .note.GNU-stack,"",@progbits
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement