Post
Topic
Board Mining software (miners)
Re: Official CGMINER thread - CPU/GPU miner in C for linux/windows/osx
by
d3m0n1q_733rz
on 25/07/2011, 10:49:32 UTC
Problem:  I just disassembled the cgminer-sha256_sse4_amd64.o file and found that it's still just using SSE2 and x64 instruction sets.  It should be using SSE4/SSE4.1, x64.  I've noticed a heavy usage of memory in this file and only one register.  Since the memory and register transfers are so frequent, the use of a non-temporal hint (via SSE4.1's MOVNTDQA or SSE4a's MOVNTSD) would cause a significant improvement in hash flow.

Code:
; Disassembly of file: /home/d337z/Desktop/cgminer-1.4.1/cgminer-sha256_sse4_amd64.o

; Mon Jul 25 05:36:58 2011

; Mode: 64 bits

; Syntax: YASM/NASM

; Instruction set: SSE2, x64

Now, this might just be a problem with objconv, but it's definitely worth looking into.  But here's a modified version which takes advantage of intel's SSE4.1 command MOVNTDQA.  Feel free to compile it and replace your object file with it to test its benefit.

Code:
; Disassembly of file: /home/d337z/Desktop/cgminer-1.4.1/cgminer-sha256_sse4_amd64.o

; Mon Jul 25 06:08:15 2011

; Mode: 64 bits

; Syntax: YASM/NASM

; Instruction set: SSE4.1, x64



default rel



global g_4sha256_k

global scanhash_sse4_64



extern fulltest                                         ; near

extern CalcSha256_x64_sse4                              ; near

extern work_restart                                     ; qword





SECTION .text   align=16 execute                        ; section number 1, code



scanhash_sse4_64:; Function begin

        push    r15                                     ; 0000 _ 41: 57

        mov     r15, r8                                 ; 0002 _ 4D: 89. C7

        push    r14                                     ; 0005 _ 41: 56

        push    r13                                     ; 0007 _ 41: 55

        push    r12                                     ; 0009 _ 41: 54

        push    rbp                                     ; 000B _ 55

        movsxd  rbp, edi                                ; 000C _ 48: 63. EF

        push    rbx                                     ; 000F _ 53

        shl     rbp, 7                                  ; 0010 _ 48: C1. E5, 07

        sub     rsp, 3304                               ; 0014 _ 48: 81. EC, 00000CE8

        mov     rax, rbp                                ; 001B _ 48: 89. E8

        mov     qword [rsp+20H], rdx                    ; 001E _ 48: 89. 54 24, 20

        mov     qword [rsp+28H], r9                     ; 0023 _ 4C: 89. 4C 24, 28

        add     rax, qword [rel work_restart]           ; 0028 _ 48: 03. 05, 00000000(rel)

        mov     rdx, rcx                                ; 002F _ 48: 89. CA

        mov     qword [rax], 0                          ; 0032 _ 48: C7. 00, 00000000

        lea     r8, [rsp+0C70H]                         ; 0039 _ 4C: 8D. 84 24, 00000C70

        mov     eax, 8                                  ; 0041 _ B8, 00000008

        mov     r14d, dword [rsp+0D20H]                 ; 0046 _ 44: 8B. B4 24, 00000D20

        mov     rcx, rax                                ; 004E _ 48: 89. C1

        mov     ebx, dword [rsp+0D30H]                  ; 0051 _ 8B. 9C 24, 00000D30

        lea     r13, [rsp+0CB0H]                        ; 0058 _ 4C: 8D. AC 24, 00000CB0

        lea     r12, [rsp+430H]                         ; 0060 _ 4C: 8D. A4 24, 00000430

        mov     rdi, r13                                ; 0068 _ 4C: 89. EF

        rep movsd                                       ; 006B _ F3: A5

        mov     rdi, r8                                 ; 006D _ 4C: 89. C7

        mov     rax, rcx                                ; 0070 _ 48: 89. C8

        mov     rsi, qword [rsp+20H]                    ; 0073 _ 48: 8B. 74 24, 20

        mov     cl, 16                                  ; 0078 _ B1, 10

        lea     r8, [rsp+0C30H]                         ; 007A _ 4C: 8D. 84 24, 00000C30

        rep movsd                                       ; 0082 _ F3: A5

        mov     rdi, r8                                 ; 0084 _ 4C: 89. C7

        movntd    xmm1, dword [rsp+0C70H]                 ; 0087 _ 66: 0F 6E. 8C 24, 00000C70

        mov     cl, 16                                  ; 0090 _ B1, 10

        pshufd  xmm0, xmm1, 0                           ; 0092 _ 66: 0F 70. C1, 00

        mov     rsi, rdx                                ; 0097 _ 48: 89. D6

        movntd    xmm1, dword [rsp+0C74H]                 ; 009A _ 66: 0F 6E. 8C 24, 00000C74

        rep movsd                                       ; 00A3 _ F3: A5

        movdqa  oword [rsp+830H], xmm0                  ; 00A5 _ 66: 0F 7F. 84 24, 00000830

        mov     cl, -128                                ; 00AE _ B1, 80

        pshufd  xmm0, xmm1, 0                           ; 00B0 _ 66: 0F 70. C1, 00

        mov     rdi, r12                                ; 00B5 _ 4C: 89. E7

        movntd    xmm1, dword [rsp+0C78H]                 ; 00B8 _ 66: 0F 6E. 8C 24, 00000C78

        movdqa  oword [rsp+840H], xmm0                  ; 00C1 _ 66: 0F 7F. 84 24, 00000840

        rep stosq                                       ; 00CA _ F3 48: AB

        pshufd  xmm0, xmm1, 0                           ; 00CD _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C80H]                 ; 00D2 _ 66: 0F 6E. 8C 24, 00000C80

        movdqa  oword [rsp+850H], xmm0                  ; 00DB _ 66: 0F 7F. 84 24, 00000850

        pshufd  xmm0, xmm1, 0                           ; 00E4 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C84H]                 ; 00E9 _ 66: 0F 6E. 8C 24, 00000C84

        movdqa  oword [rsp+870H], xmm0                  ; 00F2 _ 66: 0F 7F. 84 24, 00000870

        pshufd  xmm0, xmm1, 0                           ; 00FB _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C88H]                 ; 0100 _ 66: 0F 6E. 8C 24, 00000C88

        movdqa  oword [rsp+880H], xmm0                  ; 0109 _ 66: 0F 7F. 84 24, 00000880

        pshufd  xmm0, xmm1, 0                           ; 0112 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C8CH]                 ; 0117 _ 66: 0F 6E. 8C 24, 00000C8C

        movdqa  oword [rsp+890H], xmm0                  ; 0120 _ 66: 0F 7F. 84 24, 00000890

        pshufd  xmm0, xmm1, 0                           ; 0129 _ 66: 0F 70. C1, 00

        movdqa  oword [rsp+8A0H], xmm0                  ; 012E _ 66: 0F 7F. 84 24, 000008A0

        movntd    xmm1, dword [rsp+0C90H]                 ; 0137 _ 66: 0F 6E. 8C 24, 00000C90

        pshufd  xmm0, xmm1, 0                           ; 0140 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C94H]                 ; 0145 _ 66: 0F 6E. 8C 24, 00000C94

        movdqa  oword [rsp+8B0H], xmm0                  ; 014E _ 66: 0F 7F. 84 24, 000008B0

        pshufd  xmm0, xmm1, 0                           ; 0157 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C98H]                 ; 015C _ 66: 0F 6E. 8C 24, 00000C98

        movdqa  oword [rsp+8C0H], xmm0                  ; 0165 _ 66: 0F 7F. 84 24, 000008C0

        pshufd  xmm0, xmm1, 0                           ; 016E _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C9CH]                 ; 0173 _ 66: 0F 6E. 8C 24, 00000C9C

        movdqa  oword [rsp+8D0H], xmm0                  ; 017C _ 66: 0F 7F. 84 24, 000008D0

        pshufd  xmm0, xmm1, 0                           ; 0185 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0CA0H]                 ; 018A _ 66: 0F 6E. 8C 24, 00000CA0

        movdqa  oword [rsp+8E0H], xmm0                  ; 0193 _ 66: 0F 7F. 84 24, 000008E0

        pshufd  xmm0, xmm1, 0                           ; 019C _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0CA4H]                 ; 01A1 _ 66: 0F 6E. 8C 24, 00000CA4

        movdqa  oword [rsp+8F0H], xmm0                  ; 01AA _ 66: 0F 7F. 84 24, 000008F0

        pshufd  xmm0, xmm1, 0                           ; 01B3 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0CA8H]                 ; 01B8 _ 66: 0F 6E. 8C 24, 00000CA8

        movdqa  oword [rsp+900H], xmm0                  ; 01C1 _ 66: 0F 7F. 84 24, 00000900

        pshufd  xmm0, xmm1, 0                           ; 01CA _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0CACH]                 ; 01CF _ 66: 0F 6E. 8C 24, 00000CAC

        movdqa  oword [rsp+910H], xmm0                  ; 01D8 _ 66: 0F 7F. 84 24, 00000910

        pshufd  xmm0, xmm1, 0                           ; 01E1 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C30H]                 ; 01E6 _ 66: 0F 6E. 8C 24, 00000C30

        movdqa  oword [rsp+920H], xmm0                  ; 01EF _ 66: 0F 7F. 84 24, 00000920

        pshufd  xmm0, xmm1, 0                           ; 01F8 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C34H]                 ; 01FD _ 66: 0F 6E. 8C 24, 00000C34

        movdqa  oword [rsp+30H], xmm0                   ; 0206 _ 66: 0F 7F. 44 24, 30

        pshufd  xmm0, xmm1, 0                           ; 020C _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C38H]                 ; 0211 _ 66: 0F 6E. 8C 24, 00000C38

        movdqa  oword [rsp+40H], xmm0                   ; 021A _ 66: 0F 7F. 44 24, 40

        pshufd  xmm0, xmm1, 0                           ; 0220 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C3CH]                 ; 0225 _ 66: 0F 6E. 8C 24, 00000C3C

        movdqa  oword [rsp+50H], xmm0                   ; 022E _ 66: 0F 7F. 44 24, 50

        pshufd  xmm0, xmm1, 0                           ; 0234 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C40H]                 ; 0239 _ 66: 0F 6E. 8C 24, 00000C40

        movdqa  oword [rsp+60H], xmm0                   ; 0242 _ 66: 0F 7F. 44 24, 60

        pshufd  xmm0, xmm1, 0                           ; 0248 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C44H]                 ; 024D _ 66: 0F 6E. 8C 24, 00000C44

        movdqa  oword [rsp+70H], xmm0                   ; 0256 _ 66: 0F 7F. 44 24, 70

        pshufd  xmm0, xmm1, 0                           ; 025C _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C48H]                 ; 0261 _ 66: 0F 6E. 8C 24, 00000C48

        movdqa  oword [rsp+80H], xmm0                   ; 026A _ 66: 0F 7F. 84 24, 00000080

        pshufd  xmm0, xmm1, 0                           ; 0273 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C4CH]                 ; 0278 _ 66: 0F 6E. 8C 24, 00000C4C

        movdqa  oword [rsp+90H], xmm0                   ; 0281 _ 66: 0F 7F. 84 24, 00000090

        pshufd  xmm0, xmm1, 0                           ; 028A _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C50H]                 ; 028F _ 66: 0F 6E. 8C 24, 00000C50

        movdqa  oword [rsp+0A0H], xmm0                  ; 0298 _ 66: 0F 7F. 84 24, 000000A0

        pshufd  xmm0, xmm1, 0                           ; 02A1 _ 66: 0F 70. C1, 00

        movdqa  oword [rsp+0B0H], xmm0                  ; 02A6 _ 66: 0F 7F. 84 24, 000000B0

        movntd    xmm1, dword [rsp+0C54H]                 ; 02AF _ 66: 0F 6E. 8C 24, 00000C54

        pshufd  xmm0, xmm1, 0                           ; 02B8 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C58H]                 ; 02BD _ 66: 0F 6E. 8C 24, 00000C58

        movdqa  oword [rsp+0C0H], xmm0                  ; 02C6 _ 66: 0F 7F. 84 24, 000000C0

        pshufd  xmm0, xmm1, 0                           ; 02CF _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C5CH]                 ; 02D4 _ 66: 0F 6E. 8C 24, 00000C5C

        movdqa  oword [rsp+0D0H], xmm0                  ; 02DD _ 66: 0F 7F. 84 24, 000000D0

        pshufd  xmm0, xmm1, 0                           ; 02E6 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C60H]                 ; 02EB _ 66: 0F 6E. 8C 24, 00000C60

        movdqa  oword [rsp+0E0H], xmm0                  ; 02F4 _ 66: 0F 7F. 84 24, 000000E0

        pshufd  xmm0, xmm1, 0                           ; 02FD _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C64H]                 ; 0302 _ 66: 0F 6E. 8C 24, 00000C64

        movdqa  oword [rsp+0F0H], xmm0                  ; 030B _ 66: 0F 7F. 84 24, 000000F0

        pshufd  xmm0, xmm1, 0                           ; 0314 _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C68H]                 ; 0319 _ 66: 0F 6E. 8C 24, 00000C68

        movdqa  oword [rsp+100H], xmm0                  ; 0322 _ 66: 0F 7F. 84 24, 00000100

        pshufd  xmm0, xmm1, 0                           ; 032B _ 66: 0F 70. C1, 00

        movntd    xmm1, dword [rsp+0C6CH]                 ; 0330 _ 66: 0F 6E. 8C 24, 00000C6C

        movdqa  oword [rsp+110H], xmm0                  ; 0339 _ 66: 0F 7F. 84 24, 00000110

        pshufd  xmm0, xmm1, 0                           ; 0342 _ 66: 0F 70. C1, 00

        movdqa  oword [rsp+120H], xmm0                  ; 0347 _ 66: 0F 7F. 84 24, 00000120

?_001:

; Note: Address is not rip-relative

        movntd    xmm1, dword [abs g_sha256_k+rax]        ; 0350 _ 66: 0F 6E. 88, 00000000(d)

        pshufd  xmm0, xmm1, 0                           ; 0358 _ 66: 0F 70. C1, 00

; Note: Address is not rip-relative

        movdqa  oword [abs g_4sha256_k+rax*4], xmm0     ; 035D _ 66: 0F 7F. 04 85, 00000000(d)

        add     rax, 4                                  ; 0366 _ 48: 83. C0, 04

        cmp     rax, 256                                ; 036A _ 48: 3D, 00000100

        jnz     ?_001                                   ; 0370 _ 75, DE

        jmp     ?_004                                   ; 0372 _ EB, 53



; Filling space: 4H

; Filler type: Multi-byte NOP

;       db 0FH, 1FH, 40H, 00H



ALIGN   8

?_002:  mov     ecx, dword [rsp+0CD4H]                  ; 0378 _ 8B. 8C 24, 00000CD4

        test    ecx, ecx                                ; 037F _ 85. C9

        je      ?_011                                   ; 0381 _ 0F 84, 00000158

        mov     edx, dword [rsp+0CD8H]                  ; 0387 _ 8B. 94 24, 00000CD8

        test    edx, edx                                ; 038E _ 85. D2

        je      ?_010                                   ; 0390 _ 0F 84, 0000013A

        mov     eax, dword [rsp+0CDCH]                  ; 0396 _ 8B. 84 24, 00000CDC

        test    eax, eax                                ; 039D _ 85. C0

        je      ?_009                                   ; 039F _ 0F 84, 0000011C

?_003:  add     ebx, 4                                  ; 03A5 _ 83. C3, 04

        cmp     ebx, r14d                               ; 03A8 _ 44: 39. F3

        jnc     ?_007                                   ; 03AB _ 0F 83, 000000EE

        mov     rax, rbp                                ; 03B1 _ 48: 89. E8

        add     rax, qword [rel work_restart]           ; 03B4 _ 48: 03. 05, 00000000(rel)

        mov     rax, qword [rax]                        ; 03BB _ 48: 8B. 00

        test    rax, rax                                ; 03BE _ 48: 85. C0

        jne     ?_007                                   ; 03C1 _ 0F 85, 000000D8

?_004:  movntd    xmm1, ebx                               ; 03C7 _ 66: 0F 6E. CB

        mov     rdx, r13                                ; 03CB _ 4C: 89. EA

        pshufd  xmm0, xmm1, 0                           ; 03CE _ 66: 0F 70. C1, 00

        lea     rsi, [rsp+830H]                         ; 03D3 _ 48: 8D. B4 24, 00000830

        paddd   xmm0, oword [rel .LC0]                  ; 03DB _ 66: 0F FE. 05, 00000000(rel)

        lea     rdi, [rsp+30H]                          ; 03E3 _ 48: 8D. 7C 24, 30

        movdqa  oword [rsp+860H], xmm0                  ; 03E8 _ 66: 0F 7F. 84 24, 00000860

        call    CalcSha256_x64_sse4                     ; 03F1 _ E8, 00000000(rel)

        mov     edx, g_sha256_hinit                     ; 03F6 _ BA, 00000000(d)

        lea     rsi, [rsp+30H]                          ; 03FB _ 48: 8D. 74 24, 30

        mov     rdi, r12                                ; 0400 _ 4C: 89. E7

        call    CalcSha256_x64_sse4                     ; 0403 _ E8, 00000000(rel)

        mov     rax, qword [rsp+4A0H]                   ; 0408 _ 48: 8B. 84 24, 000004A0

        mov     edx, eax                                ; 0410 _ 89. C2

        mov     qword [rsp+10H], rax                    ; 0412 _ 48: 89. 44 24, 10

        test    edx, edx                                ; 0417 _ 85. D2

        mov     rax, qword [rsp+4A8H]                   ; 0419 _ 48: 8B. 84 24, 000004A8

        mov     qword [rsp+18H], rax                    ; 0421 _ 48: 89. 44 24, 18

        movntdqa  xmm0, oword [rsp+10H]                   ; 0426 _ 66: 0F 6F. 44 24, 10

        movdqa  oword [rsp+0CD0H], xmm0                 ; 042C _ 66: 0F 7F. 84 24, 00000CD0

        jne     ?_002                                   ; 0435 _ 0F 85, FFFFFF3D

        xor     edx, edx                                ; 043B _ 31. D2

        xor     ecx, ecx                                ; 043D _ 31. C9

?_005:  xor     eax, eax                                ; 043F _ 31. C0

        movsxd  rcx, ecx                                ; 0441 _ 48: 63. C9

?_006:  movntdqa  xmm0, oword [r12+rax*4]                 ; 0444 _ 66 41: 0F 6F. 04 84

        movdqa  oword [rsp+0CD0H], xmm0                 ; 044A _ 66: 0F 7F. 84 24, 00000CD0

        mov     esi, dword [rsp+rcx*4+0CD0H]            ; 0453 _ 8B. B4 8C, 00000CD0

        mov     dword [r15+rax], esi                    ; 045A _ 41: 89. 34 07

        add     rax, 4                                  ; 045E _ 48: 83. C0, 04

        cmp     rax, 32                                 ; 0462 _ 48: 83. F8, 20

        jnz     ?_006                                   ; 0466 _ 75, DC

        mov     dword [rsp+8H], edx                     ; 0468 _ 89. 54 24, 08

        mov     rsi, qword [rsp+28H]                    ; 046C _ 48: 8B. 74 24, 28

        mov     rdi, r15                                ; 0471 _ 4C: 89. FF

        call    fulltest                                ; 0474 _ E8, 00000000(rel)

        mov     edx, dword [rsp+8H]                     ; 0479 _ 8B. 54 24, 08

        test    al, al                                  ; 047D _ 84. C0

        je      ?_003                                   ; 047F _ 0F 84, FFFFFF20

        mov     rax, qword [rsp+0D28H]                  ; 0485 _ 48: 8B. 84 24, 00000D28

        mov     ecx, ebx                                ; 048D _ 89. D9

        mov     qword [rax], rcx                        ; 048F _ 48: 89. 08

        lea     eax, [rbx+rdx]                          ; 0492 _ 8D. 04 13

        mov     rsi, qword [rsp+20H]                    ; 0495 _ 48: 8B. 74 24, 20

        mov     dword [rsi+0CH], eax                    ; 049A _ 89. 46, 0C

        jmp     ?_008                                   ; 049D _ EB, 10



?_007:  mov     rax, qword [rsp+0D28H]                  ; 049F _ 48: 8B. 84 24, 00000D28

        mov     edx, ebx                                ; 04A7 _ 89. DA

        mov     qword [rax], rdx                        ; 04A9 _ 48: 89. 10

        or      eax, 0FFFFFFFFH                         ; 04AC _ 83. C8, FF

?_008:  add     rsp, 3304                               ; 04AF _ 48: 81. C4, 00000CE8

        pop     rbx                                     ; 04B6 _ 5B

        pop     rbp                                     ; 04B7 _ 5D

        pop     r12                                     ; 04B8 _ 41: 5C

        pop     r13                                     ; 04BA _ 41: 5D

        pop     r14                                     ; 04BC _ 41: 5E

        pop     r15                                     ; 04BE _ 41: 5F

        ret                                             ; 04C0 _ C3



?_009:  mov     edx, 3                                  ; 04C1 _ BA, 00000003

        mov     ecx, 3                                  ; 04C6 _ B9, 00000003

        jmp     ?_005                                   ; 04CB _ E9, FFFFFF6F



?_010:  mov     edx, 2                                  ; 04D0 _ BA, 00000002

        mov     ecx, 2                                  ; 04D5 _ B9, 00000002

        jmp     ?_005                                   ; 04DA _ E9, FFFFFF60



?_011:  mov     edx, 1                                  ; 04DF _ BA, 00000001

        mov     ecx, 1                                  ; 04E4 _ B9, 00000001

        jmp     ?_005                                   ; 04E9 _ E9, FFFFFF51

; scanhash_sse4_64 End of function





SECTION .data   align=32 noexecute                      ; section number 2, data



g_sha256_hinit:                                         ; yword

        db 67H, 0E6H, 09H, 6AH, 85H, 0AEH, 67H, 0BBH    ; 0000 _ g..j..g.

        db 72H, 0F3H, 6EH, 3CH, 3AH, 0F5H, 4FH, 0A5H    ; 0008 _ r.n<:.O.

        db 7FH, 52H, 0EH, 51H, 8CH, 68H, 05H, 9BH       ; 0010 _ .R.Q.h..

        db 0ABH, 0D9H, 83H, 1FH, 19H, 0CDH, 0E0H, 5BH   ; 0018 _ .......[





SECTION .bss    align=4 noexecute                       ; section number 3, bss





SECTION .rodata align=32 noexecute                      ; section number 4, const



g_sha256_k:                                             ; byte

        dd 428A2F98H, 71374491H                         ; 0000 _ 1116352408 1899447441

        dd 0B5C0FBCFH, 0E9B5DBA5H                       ; 0008 _ -1245643825 -373957723

        dd 3956C25BH, 59F111F1H                         ; 0010 _ 961987163 1508970993

        dd 923F82A4H, 0AB1C5ED5H                        ; 0018 _ -1841331548 -1424204075

        dd 0D807AA98H, 12835B01H                        ; 0020 _ -670586216 310598401

        dd 243185BEH, 550C7DC3H                         ; 0028 _ 607225278 1426881987

        dd 72BE5D74H, 80DEB1FEH                         ; 0030 _ 1925078388 -2132889090

        dd 9BDC06A7H, 0C19BF174H                        ; 0038 _ -1680079193 -1046744716

        dd 0E49B69C1H, 0EFBE4786H                       ; 0040 _ -459576895 -272742522

        dd 0FC19DC6H, 240CA1CCH                         ; 0048 _ 264347078 604807628

        dd 2DE92C6FH, 4A7484AAH                         ; 0050 _ 770255983 1249150122

        dd 5CB0A9DCH, 76F988DAH                         ; 0058 _ 1555081692 1996064986

        dd 983E5152H, 0A831C66DH                        ; 0060 _ -1740746414 -1473132947

        dd 0B00327C8H, 0BF597FC7H                       ; 0068 _ -1341970488 -1084653625

        dd 0C6E00BF3H, 0D5A79147H                       ; 0070 _ -958395405 -710438585

        dd 06CA6351H, 14292967H                         ; 0078 _ 113926993 338241895

        dd 27B70A85H, 2E1B2138H                         ; 0080 _ 666307205 773529912

        dd 4D2C6DFCH, 53380D13H                         ; 0088 _ 1294757372 1396182291

        dd 650A7354H, 766A0ABBH                         ; 0090 _ 1695183700 1986661051

        dd 81C2C92EH, 92722C85H                         ; 0098 _ -2117940946 -1838011259

        dd 0A2BFE8A1H, 0A81A664BH                       ; 00A0 _ -1564481375 -1474664885

        dd 0C24B8B70H, 0C76C51A3H                       ; 00A8 _ -1035236496 -949202525

        dd 0D192E819H, 0D6990624H                       ; 00B0 _ -778901479 -694614492

        dd 0F40E3585H, 106AA070H                        ; 00B8 _ -200395387 275423344

        dd 19A4C116H, 1E376C08H                         ; 00C0 _ 430227734 506948616

        dd 2748774CH, 34B0BCB5H                         ; 00C8 _ 659060556 883997877

        dd 391C0CB3H, 4ED8AA4AH                         ; 00D0 _ 958139571 1322822218

        dd 5B9CCA4FH, 682E6FF3H                         ; 00D8 _ 1537002063 1747873779

        dd 748F82EEH, 78A5636FH                         ; 00E0 _ 1955562222 2024104815

        dd 84C87814H, 8CC70208H                         ; 00E8 _ -2067236844 -1933114872

        dd 90BEFFFAH, 0A4506CEBH                        ; 00F0 _ -1866530822 -1538233109

        dd 0BEF9A3F7H, 0C67178F2H                       ; 00F8 _ -1090935817 -965641998





SECTION .rodata.cst16 align=16 noexecute                ; section number 5, const



ALIGN   16

.LC0:                                                   ; oword

        dd 00000000H, 00000001H                         ; 0000 _ 0 1

        dd 00000002H, 00000003H                         ; 0008 _ 2 3





SECTION .eh_frame align=8 noexecute                     ; section number 6, const



        db 14H, 00H, 00H, 00H, 00H, 00H, 00H, 00H       ; 0000 _ ........

        db 01H, 7AH, 52H, 00H, 01H, 78H, 10H, 01H       ; 0008 _ .zR..x..

        db 1BH, 0CH, 07H, 08H, 90H, 01H, 00H, 00H       ; 0010 _ ........

        db 4CH, 00H, 00H, 00H, 1CH, 00H, 00H, 00H       ; 0018 _ L.......

        dd scanhash_sse4_64-$-20H                       ; 0020 _ 00000000 (rel)

        dd 000004EEH, 100E4200H                         ; 0024 _ 1262 269369856

        dd 42028F43H, 0E42180EH                         ; 002C _ 1107464003 239212558

        dd 280E4220H, 43300E41H                         ; 0034 _ 672023072 1127222849

        dd 058C0686H, 038E048DH                         ; 003C _ 93062790 59638925

        dd 4B380E41H, 7D1AA00EH                         ; 0044 _ 1261964865 2098896910

        dd 5E030783H, 380E0A04H                         ; 004C _ 1577256835 940444164

        dd 41300E41H, 0E42280EH                         ; 0054 _ 1093668417 239216654

        dd 180E4220H, 42100E42H                         ; 005C _ 403587616 1108348482

        dd 0B41080EH                                    ; 0064 _ 188811278