| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 
 | square:push    rbp
 mov     rbp, rsp
 mov     DWORD PTR [rbp-4], edi
 mov     eax, DWORD PTR [rbp-4]
 imul    eax, eax
 pop     rbp
 ret
 numbers:
 .long   20
 .long   3
 .long   56
 .long   8
 .long   90
 size:
 .long   5
 main:
 push    rbp
 mov     rbp, rsp
 mov     eax, DWORD PTR size[rip]
 mov     esi, eax
 mov     edi, OFFSET FLAT:numbers
 call    Sort
 mov     eax, 0
 pop     rbp
 ret
 Sort:
 push    rbp
 mov     rbp, rsp
 sub     rsp, 32
 mov     QWORD PTR [rbp-24], rdi
 mov     DWORD PTR [rbp-28], esi
 mov     DWORD PTR [rbp-4], 0
 jmp     .L6
 .L10:
 mov     eax, DWORD PTR [rbp-4]
 sub     eax, 1
 mov     DWORD PTR [rbp-8], eax
 jmp     .L7
 .L9:
 mov     edx, DWORD PTR [rbp-8]
 mov     rax, QWORD PTR [rbp-24]
 mov     esi, edx
 mov     rdi, rax
 call    Swap
 sub     DWORD PTR [rbp-8], 1
 .L7:
 cmp     DWORD PTR [rbp-8], 0
 js      .L8
 mov     eax, DWORD PTR [rbp-8]
 cdqe
 lea     rdx, [0+rax*4]
 mov     rax, QWORD PTR [rbp-24]
 add     rax, rdx
 mov     edx, DWORD PTR [rax]
 mov     eax, DWORD PTR [rbp-8]
 cdqe
 add     rax, 1
 lea     rcx, [0+rax*4]
 mov     rax, QWORD PTR [rbp-24]
 add     rax, rcx
 mov     eax, DWORD PTR [rax]
 cmp     edx, eax
 jg      .L9
 .L8:
 add     DWORD PTR [rbp-4], 1
 .L6:
 mov     eax, DWORD PTR [rbp-4]
 cmp     eax, DWORD PTR [rbp-28]
 jl      .L10
 nop
 nop
 leave
 ret
 Swap:
 push    rbp
 mov     rbp, rsp
 mov     QWORD PTR [rbp-24], rdi
 mov     DWORD PTR [rbp-28], esi
 mov     eax, DWORD PTR [rbp-28]
 cdqe
 lea     rdx, [0+rax*4]
 mov     rax, QWORD PTR [rbp-24]
 add     rax, rdx
 mov     eax, DWORD PTR [rax]
 mov     DWORD PTR [rbp-4], eax
 mov     eax, DWORD PTR [rbp-28]
 cdqe
 add     rax, 1
 lea     rdx, [0+rax*4]
 mov     rax, QWORD PTR [rbp-24]
 add     rax, rdx
 mov     edx, DWORD PTR [rbp-28]
 movsx   rdx, edx
 lea     rcx, [0+rdx*4]
 mov     rdx, QWORD PTR [rbp-24]
 add     rdx, rcx
 mov     eax, DWORD PTR [rax]
 mov     DWORD PTR [rdx], eax
 mov     eax, DWORD PTR [rbp-28]
 cdqe
 add     rax, 1
 lea     rdx, [0+rax*4]
 mov     rax, QWORD PTR [rbp-24]
 add     rdx, rax
 mov     eax, DWORD PTR [rbp-4]
 mov     DWORD PTR [rdx], eax
 nop
 pop     rbp
 ret
 .LC0:
 .string "%d\n"
 Print:
 push    rbp
 mov     rbp, rsp
 sub     rsp, 32
 mov     QWORD PTR [rbp-24], rdi
 mov     DWORD PTR [rbp-28], esi
 mov     DWORD PTR [rbp-4], 0
 jmp     .L13
 .L14:
 mov     eax, DWORD PTR [rbp-4]
 cdqe
 lea     rdx, [0+rax*4]
 mov     rax, QWORD PTR [rbp-24]
 add     rax, rdx
 mov     eax, DWORD PTR [rax]
 mov     esi, eax
 mov     edi, OFFSET FLAT:.LC0
 mov     eax, 0
 call    printf
 add     DWORD PTR [rbp-4], 1
 .L13:
 mov     eax, DWORD PTR [rbp-4]
 cmp     eax, DWORD PTR [rbp-28]
 jl      .L14
 nop
 nop
 leave
 ret
 
 |