github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/native/avx2/u64toa_text_amd64.go (about)

     1  // +build amd64
     2  // Code generated by asm2asm, DO NOT EDIT.
     3  
     4  package avx2
     5  
     6  var _text_u64toa = []byte{
     7  	// .p2align 4, 0x00
     8  	// LCPI0_0
     9  	0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, // .quad 3518437209
    10  	0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, //0x00000008 .quad 3518437209
    11  	//0x00000010 LCPI0_3
    12  	0x0a, 0x00, //0x00000010 .word 10
    13  	0x0a, 0x00, //0x00000012 .word 10
    14  	0x0a, 0x00, //0x00000014 .word 10
    15  	0x0a, 0x00, //0x00000016 .word 10
    16  	0x0a, 0x00, //0x00000018 .word 10
    17  	0x0a, 0x00, //0x0000001a .word 10
    18  	0x0a, 0x00, //0x0000001c .word 10
    19  	0x0a, 0x00, //0x0000001e .word 10
    20  	//0x00000020 LCPI0_4
    21  	0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, //0x00000020 QUAD $0x3030303030303030; QUAD $0x3030303030303030  // .space 16, '0000000000000000'
    22  	//0x00000030 .p2align 3, 0x00
    23  	//0x00000030 LCPI0_1
    24  	0xc5, 0x20, 0x7b, 0x14, 0x34, 0x33, 0x00, 0x80, //0x00000030 .quad -9223315738079846203
    25  	//0x00000038 LCPI0_2
    26  	0x80, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, //0x00000038 .quad -9223336852348469120
    27  	//0x00000040 .p2align 4, 0x90
    28  	//0x00000040 _u64toa
    29  	0x55, //0x00000040 pushq        %rbp
    30  	0x48, 0x89, 0xe5, //0x00000041 movq         %rsp, %rbp
    31  	0x48, 0x81, 0xfe, 0x0f, 0x27, 0x00, 0x00, //0x00000044 cmpq         $9999, %rsi
    32  	0x0f, 0x87, 0xa2, 0x00, 0x00, 0x00, //0x0000004b ja           LBB0_8
    33  	0x0f, 0xb7, 0xc6, //0x00000051 movzwl       %si, %eax
    34  	0xc1, 0xe8, 0x02, //0x00000054 shrl         $2, %eax
    35  	0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000057 imull        $5243, %eax, %eax
    36  	0xc1, 0xe8, 0x11, //0x0000005d shrl         $17, %eax
    37  	0x48, 0x8d, 0x14, 0x00, //0x00000060 leaq         (%rax,%rax), %rdx
    38  	0x6b, 0xc0, 0x64, //0x00000064 imull        $100, %eax, %eax
    39  	0x89, 0xf1, //0x00000067 movl         %esi, %ecx
    40  	0x29, 0xc1, //0x00000069 subl         %eax, %ecx
    41  	0x0f, 0xb7, 0xc1, //0x0000006b movzwl       %cx, %eax
    42  	0x48, 0x01, 0xc0, //0x0000006e addq         %rax, %rax
    43  	0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x00000071 cmpl         $1000, %esi
    44  	0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000077 jb           LBB0_3
    45  	0x48, 0x8d, 0x0d, 0x8c, 0x04, 0x00, 0x00, //0x0000007d leaq         $1164(%rip), %rcx  /* _Digits+0(%rip) */
    46  	0x8a, 0x0c, 0x0a, //0x00000084 movb         (%rdx,%rcx), %cl
    47  	0x88, 0x0f, //0x00000087 movb         %cl, (%rdi)
    48  	0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000089 movl         $1, %ecx
    49  	0xe9, 0x0b, 0x00, 0x00, 0x00, //0x0000008e jmp          LBB0_4
    50  	//0x00000093 LBB0_3
    51  	0x31, 0xc9, //0x00000093 xorl         %ecx, %ecx
    52  	0x83, 0xfe, 0x64, //0x00000095 cmpl         $100, %esi
    53  	0x0f, 0x82, 0x45, 0x00, 0x00, 0x00, //0x00000098 jb           LBB0_5
    54  	//0x0000009e LBB0_4
    55  	0x0f, 0xb7, 0xd2, //0x0000009e movzwl       %dx, %edx
    56  	0x48, 0x83, 0xca, 0x01, //0x000000a1 orq          $1, %rdx
    57  	0x48, 0x8d, 0x35, 0x64, 0x04, 0x00, 0x00, //0x000000a5 leaq         $1124(%rip), %rsi  /* _Digits+0(%rip) */
    58  	0x8a, 0x14, 0x32, //0x000000ac movb         (%rdx,%rsi), %dl
    59  	0x89, 0xce, //0x000000af movl         %ecx, %esi
    60  	0xff, 0xc1, //0x000000b1 incl         %ecx
    61  	0x88, 0x14, 0x37, //0x000000b3 movb         %dl, (%rdi,%rsi)
    62  	//0x000000b6 LBB0_6
    63  	0x48, 0x8d, 0x15, 0x53, 0x04, 0x00, 0x00, //0x000000b6 leaq         $1107(%rip), %rdx  /* _Digits+0(%rip) */
    64  	0x8a, 0x14, 0x10, //0x000000bd movb         (%rax,%rdx), %dl
    65  	0x89, 0xce, //0x000000c0 movl         %ecx, %esi
    66  	0xff, 0xc1, //0x000000c2 incl         %ecx
    67  	0x88, 0x14, 0x37, //0x000000c4 movb         %dl, (%rdi,%rsi)
    68  	//0x000000c7 LBB0_7
    69  	0x0f, 0xb7, 0xc0, //0x000000c7 movzwl       %ax, %eax
    70  	0x48, 0x83, 0xc8, 0x01, //0x000000ca orq          $1, %rax
    71  	0x48, 0x8d, 0x15, 0x3b, 0x04, 0x00, 0x00, //0x000000ce leaq         $1083(%rip), %rdx  /* _Digits+0(%rip) */
    72  	0x8a, 0x04, 0x10, //0x000000d5 movb         (%rax,%rdx), %al
    73  	0x89, 0xca, //0x000000d8 movl         %ecx, %edx
    74  	0xff, 0xc1, //0x000000da incl         %ecx
    75  	0x88, 0x04, 0x17, //0x000000dc movb         %al, (%rdi,%rdx)
    76  	0x89, 0xc8, //0x000000df movl         %ecx, %eax
    77  	0x5d, //0x000000e1 popq         %rbp
    78  	0xc3, //0x000000e2 retq         
    79  	//0x000000e3 LBB0_5
    80  	0x31, 0xc9, //0x000000e3 xorl         %ecx, %ecx
    81  	0x83, 0xfe, 0x0a, //0x000000e5 cmpl         $10, %esi
    82  	0x0f, 0x83, 0xc8, 0xff, 0xff, 0xff, //0x000000e8 jae          LBB0_6
    83  	0xe9, 0xd4, 0xff, 0xff, 0xff, //0x000000ee jmp          LBB0_7
    84  	//0x000000f3 LBB0_8
    85  	0x48, 0x81, 0xfe, 0xff, 0xe0, 0xf5, 0x05, //0x000000f3 cmpq         $99999999, %rsi
    86  	0x0f, 0x87, 0x1e, 0x01, 0x00, 0x00, //0x000000fa ja           LBB0_16
    87  	0x89, 0xf0, //0x00000100 movl         %esi, %eax
    88  	0xba, 0x59, 0x17, 0xb7, 0xd1, //0x00000102 movl         $3518437209, %edx
    89  	0x48, 0x0f, 0xaf, 0xd0, //0x00000107 imulq        %rax, %rdx
    90  	0x48, 0xc1, 0xea, 0x2d, //0x0000010b shrq         $45, %rdx
    91  	0x44, 0x69, 0xc2, 0x10, 0x27, 0x00, 0x00, //0x0000010f imull        $10000, %edx, %r8d
    92  	0x89, 0xf1, //0x00000116 movl         %esi, %ecx
    93  	0x44, 0x29, 0xc1, //0x00000118 subl         %r8d, %ecx
    94  	0x4c, 0x69, 0xd0, 0x83, 0xde, 0x1b, 0x43, //0x0000011b imulq        $1125899907, %rax, %r10
    95  	0x49, 0xc1, 0xea, 0x31, //0x00000122 shrq         $49, %r10
    96  	0x41, 0x83, 0xe2, 0xfe, //0x00000126 andl         $-2, %r10d
    97  	0x0f, 0xb7, 0xc2, //0x0000012a movzwl       %dx, %eax
    98  	0xc1, 0xe8, 0x02, //0x0000012d shrl         $2, %eax
    99  	0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000130 imull        $5243, %eax, %eax
   100  	0xc1, 0xe8, 0x11, //0x00000136 shrl         $17, %eax
   101  	0x6b, 0xc0, 0x64, //0x00000139 imull        $100, %eax, %eax
   102  	0x29, 0xc2, //0x0000013c subl         %eax, %edx
   103  	0x44, 0x0f, 0xb7, 0xca, //0x0000013e movzwl       %dx, %r9d
   104  	0x4d, 0x01, 0xc9, //0x00000142 addq         %r9, %r9
   105  	0x0f, 0xb7, 0xc1, //0x00000145 movzwl       %cx, %eax
   106  	0xc1, 0xe8, 0x02, //0x00000148 shrl         $2, %eax
   107  	0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000014b imull        $5243, %eax, %eax
   108  	0xc1, 0xe8, 0x11, //0x00000151 shrl         $17, %eax
   109  	0x4c, 0x8d, 0x04, 0x00, //0x00000154 leaq         (%rax,%rax), %r8
   110  	0x6b, 0xc0, 0x64, //0x00000158 imull        $100, %eax, %eax
   111  	0x29, 0xc1, //0x0000015b subl         %eax, %ecx
   112  	0x44, 0x0f, 0xb7, 0xd9, //0x0000015d movzwl       %cx, %r11d
   113  	0x4d, 0x01, 0xdb, //0x00000161 addq         %r11, %r11
   114  	0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x00000164 cmpl         $10000000, %esi
   115  	0x0f, 0x82, 0x17, 0x00, 0x00, 0x00, //0x0000016a jb           LBB0_11
   116  	0x48, 0x8d, 0x05, 0x99, 0x03, 0x00, 0x00, //0x00000170 leaq         $921(%rip), %rax  /* _Digits+0(%rip) */
   117  	0x41, 0x8a, 0x04, 0x02, //0x00000177 movb         (%r10,%rax), %al
   118  	0x88, 0x07, //0x0000017b movb         %al, (%rdi)
   119  	0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000017d movl         $1, %ecx
   120  	0xe9, 0x0e, 0x00, 0x00, 0x00, //0x00000182 jmp          LBB0_12
   121  	//0x00000187 LBB0_11
   122  	0x31, 0xc9, //0x00000187 xorl         %ecx, %ecx
   123  	0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x00000189 cmpl         $1000000, %esi
   124  	0x0f, 0x82, 0x76, 0x00, 0x00, 0x00, //0x0000018f jb           LBB0_13
   125  	//0x00000195 LBB0_12
   126  	0x44, 0x89, 0xd0, //0x00000195 movl         %r10d, %eax
   127  	0x48, 0x83, 0xc8, 0x01, //0x00000198 orq          $1, %rax
   128  	0x48, 0x8d, 0x35, 0x6d, 0x03, 0x00, 0x00, //0x0000019c leaq         $877(%rip), %rsi  /* _Digits+0(%rip) */
   129  	0x8a, 0x04, 0x30, //0x000001a3 movb         (%rax,%rsi), %al
   130  	0x89, 0xce, //0x000001a6 movl         %ecx, %esi
   131  	0xff, 0xc1, //0x000001a8 incl         %ecx
   132  	0x88, 0x04, 0x37, //0x000001aa movb         %al, (%rdi,%rsi)
   133  	//0x000001ad LBB0_14
   134  	0x48, 0x8d, 0x05, 0x5c, 0x03, 0x00, 0x00, //0x000001ad leaq         $860(%rip), %rax  /* _Digits+0(%rip) */
   135  	0x41, 0x8a, 0x04, 0x01, //0x000001b4 movb         (%r9,%rax), %al
   136  	0x89, 0xce, //0x000001b8 movl         %ecx, %esi
   137  	0xff, 0xc1, //0x000001ba incl         %ecx
   138  	0x88, 0x04, 0x37, //0x000001bc movb         %al, (%rdi,%rsi)
   139  	//0x000001bf LBB0_15
   140  	0x41, 0x0f, 0xb7, 0xc1, //0x000001bf movzwl       %r9w, %eax
   141  	0x48, 0x83, 0xc8, 0x01, //0x000001c3 orq          $1, %rax
   142  	0x48, 0x8d, 0x35, 0x42, 0x03, 0x00, 0x00, //0x000001c7 leaq         $834(%rip), %rsi  /* _Digits+0(%rip) */
   143  	0x8a, 0x04, 0x30, //0x000001ce movb         (%rax,%rsi), %al
   144  	0x89, 0xca, //0x000001d1 movl         %ecx, %edx
   145  	0x88, 0x04, 0x3a, //0x000001d3 movb         %al, (%rdx,%rdi)
   146  	0x41, 0x8a, 0x04, 0x30, //0x000001d6 movb         (%r8,%rsi), %al
   147  	0x88, 0x44, 0x3a, 0x01, //0x000001da movb         %al, $1(%rdx,%rdi)
   148  	0x41, 0x0f, 0xb7, 0xc0, //0x000001de movzwl       %r8w, %eax
   149  	0x48, 0x83, 0xc8, 0x01, //0x000001e2 orq          $1, %rax
   150  	0x8a, 0x04, 0x30, //0x000001e6 movb         (%rax,%rsi), %al
   151  	0x88, 0x44, 0x3a, 0x02, //0x000001e9 movb         %al, $2(%rdx,%rdi)
   152  	0x41, 0x8a, 0x04, 0x33, //0x000001ed movb         (%r11,%rsi), %al
   153  	0x88, 0x44, 0x3a, 0x03, //0x000001f1 movb         %al, $3(%rdx,%rdi)
   154  	0x41, 0x0f, 0xb7, 0xc3, //0x000001f5 movzwl       %r11w, %eax
   155  	0x48, 0x83, 0xc8, 0x01, //0x000001f9 orq          $1, %rax
   156  	0x8a, 0x04, 0x30, //0x000001fd movb         (%rax,%rsi), %al
   157  	0x83, 0xc1, 0x05, //0x00000200 addl         $5, %ecx
   158  	0x88, 0x44, 0x3a, 0x04, //0x00000203 movb         %al, $4(%rdx,%rdi)
   159  	0x89, 0xc8, //0x00000207 movl         %ecx, %eax
   160  	0x5d, //0x00000209 popq         %rbp
   161  	0xc3, //0x0000020a retq         
   162  	//0x0000020b LBB0_13
   163  	0x31, 0xc9, //0x0000020b xorl         %ecx, %ecx
   164  	0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x0000020d cmpl         $100000, %esi
   165  	0x0f, 0x83, 0x94, 0xff, 0xff, 0xff, //0x00000213 jae          LBB0_14
   166  	0xe9, 0xa1, 0xff, 0xff, 0xff, //0x00000219 jmp          LBB0_15
   167  	//0x0000021e LBB0_16
   168  	0x48, 0xb8, 0xff, 0xff, 0xc0, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x0000021e movabsq      $9999999999999999, %rax
   169  	0x48, 0x39, 0xc6, //0x00000228 cmpq         %rax, %rsi
   170  	0x0f, 0x87, 0x07, 0x01, 0x00, 0x00, //0x0000022b ja           LBB0_18
   171  	0x48, 0xb9, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x00000231 movabsq      $-6067343680855748867, %rcx
   172  	0x48, 0x89, 0xf0, //0x0000023b movq         %rsi, %rax
   173  	0x48, 0xf7, 0xe1, //0x0000023e mulq         %rcx
   174  	0x48, 0xc1, 0xea, 0x1a, //0x00000241 shrq         $26, %rdx
   175  	0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x00000245 imull        $100000000, %edx, %eax
   176  	0x29, 0xc6, //0x0000024b subl         %eax, %esi
   177  	0xc5, 0xf9, 0x6e, 0xc2, //0x0000024d vmovd        %edx, %xmm0
   178  	0xc5, 0xfa, 0x6f, 0x0d, 0xa7, 0xfd, 0xff, 0xff, //0x00000251 vmovdqu      $-601(%rip), %xmm1  /* LCPI0_0+0(%rip) */
   179  	0xc5, 0xf9, 0xf4, 0xd1, //0x00000259 vpmuludq     %xmm1, %xmm0, %xmm2
   180  	0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x0000025d vpsrlq       $45, %xmm2, %xmm2
   181  	0xb8, 0x10, 0x27, 0x00, 0x00, //0x00000262 movl         $10000, %eax
   182  	0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x00000267 vmovq        %rax, %xmm3
   183  	0xc5, 0xe9, 0xf4, 0xe3, //0x0000026c vpmuludq     %xmm3, %xmm2, %xmm4
   184  	0xc5, 0xf9, 0xfa, 0xc4, //0x00000270 vpsubd       %xmm4, %xmm0, %xmm0
   185  	0xc5, 0xe9, 0x61, 0xc0, //0x00000274 vpunpcklwd   %xmm0, %xmm2, %xmm0
   186  	0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000278 vpsllq       $2, %xmm0, %xmm0
   187  	0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x0000027d vpshuflw     $80, %xmm0, %xmm0
   188  	0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x00000282 vpshufd      $80, %xmm0, %xmm0
   189  	0xc4, 0xe2, 0x79, 0x59, 0x15, 0xa0, 0xfd, 0xff, 0xff, //0x00000287 vpbroadcastq $-608(%rip), %xmm2  /* LCPI0_1+0(%rip) */
   190  	0xc4, 0xe2, 0x79, 0x59, 0x25, 0x9f, 0xfd, 0xff, 0xff, //0x00000290 vpbroadcastq $-609(%rip), %xmm4  /* LCPI0_2+0(%rip) */
   191  	0xc5, 0xf9, 0xe4, 0xc2, //0x00000299 vpmulhuw     %xmm2, %xmm0, %xmm0
   192  	0xc5, 0xf9, 0xe4, 0xc4, //0x0000029d vpmulhuw     %xmm4, %xmm0, %xmm0
   193  	0xc5, 0xfa, 0x6f, 0x2d, 0x67, 0xfd, 0xff, 0xff, //0x000002a1 vmovdqu      $-665(%rip), %xmm5  /* LCPI0_3+0(%rip) */
   194  	0xc5, 0xf9, 0xd5, 0xf5, //0x000002a9 vpmullw      %xmm5, %xmm0, %xmm6
   195  	0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000002ad vpsllq       $16, %xmm6, %xmm6
   196  	0xc5, 0xf9, 0xf9, 0xc6, //0x000002b2 vpsubw       %xmm6, %xmm0, %xmm0
   197  	0xc5, 0xf9, 0x6e, 0xf6, //0x000002b6 vmovd        %esi, %xmm6
   198  	0xc5, 0xc9, 0xf4, 0xc9, //0x000002ba vpmuludq     %xmm1, %xmm6, %xmm1
   199  	0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000002be vpsrlq       $45, %xmm1, %xmm1
   200  	0xc5, 0xf1, 0xf4, 0xdb, //0x000002c3 vpmuludq     %xmm3, %xmm1, %xmm3
   201  	0xc5, 0xc9, 0xfa, 0xdb, //0x000002c7 vpsubd       %xmm3, %xmm6, %xmm3
   202  	0xc5, 0xf1, 0x61, 0xcb, //0x000002cb vpunpcklwd   %xmm3, %xmm1, %xmm1
   203  	0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000002cf vpsllq       $2, %xmm1, %xmm1
   204  	0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000002d4 vpshuflw     $80, %xmm1, %xmm1
   205  	0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000002d9 vpshufd      $80, %xmm1, %xmm1
   206  	0xc5, 0xf1, 0xe4, 0xca, //0x000002de vpmulhuw     %xmm2, %xmm1, %xmm1
   207  	0xc5, 0xf1, 0xe4, 0xcc, //0x000002e2 vpmulhuw     %xmm4, %xmm1, %xmm1
   208  	0xc5, 0xf1, 0xd5, 0xd5, //0x000002e6 vpmullw      %xmm5, %xmm1, %xmm2
   209  	0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000002ea vpsllq       $16, %xmm2, %xmm2
   210  	0xc5, 0xf1, 0xf9, 0xca, //0x000002ef vpsubw       %xmm2, %xmm1, %xmm1
   211  	0xc5, 0xf9, 0x67, 0xc1, //0x000002f3 vpackuswb    %xmm1, %xmm0, %xmm0
   212  	0xc5, 0xf9, 0xfc, 0x0d, 0x21, 0xfd, 0xff, 0xff, //0x000002f7 vpaddb       $-735(%rip), %xmm0, %xmm1  /* LCPI0_4+0(%rip) */
   213  	0xc5, 0xe9, 0xef, 0xd2, //0x000002ff vpxor        %xmm2, %xmm2, %xmm2
   214  	0xc5, 0xf9, 0x74, 0xc2, //0x00000303 vpcmpeqb     %xmm2, %xmm0, %xmm0
   215  	0xc5, 0xf9, 0xd7, 0xc0, //0x00000307 vpmovmskb    %xmm0, %eax
   216  	0x0d, 0x00, 0x80, 0x00, 0x00, //0x0000030b orl          $32768, %eax
   217  	0x35, 0xff, 0x7f, 0xff, 0xff, //0x00000310 xorl         $-32769, %eax
   218  	0x0f, 0xbc, 0xc0, //0x00000315 bsfl         %eax, %eax
   219  	0xb9, 0x10, 0x00, 0x00, 0x00, //0x00000318 movl         $16, %ecx
   220  	0x29, 0xc1, //0x0000031d subl         %eax, %ecx
   221  	0x48, 0xc1, 0xe0, 0x04, //0x0000031f shlq         $4, %rax
   222  	0x48, 0x8d, 0x15, 0xb6, 0x02, 0x00, 0x00, //0x00000323 leaq         $694(%rip), %rdx  /* _VecShiftShuffles+0(%rip) */
   223  	0xc4, 0xe2, 0x71, 0x00, 0x04, 0x10, //0x0000032a vpshufb      (%rax,%rdx), %xmm1, %xmm0
   224  	0xc5, 0xfa, 0x7f, 0x07, //0x00000330 vmovdqu      %xmm0, (%rdi)
   225  	0x89, 0xc8, //0x00000334 movl         %ecx, %eax
   226  	0x5d, //0x00000336 popq         %rbp
   227  	0xc3, //0x00000337 retq         
   228  	//0x00000338 LBB0_18
   229  	0x48, 0xb9, 0x57, 0x78, 0x13, 0xb1, 0x2f, 0x65, 0xa5, 0x39, //0x00000338 movabsq      $4153837486827862103, %rcx
   230  	0x48, 0x89, 0xf0, //0x00000342 movq         %rsi, %rax
   231  	0x48, 0xf7, 0xe1, //0x00000345 mulq         %rcx
   232  	0x48, 0xc1, 0xea, 0x33, //0x00000348 shrq         $51, %rdx
   233  	0x48, 0xb8, 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x0000034c movabsq      $10000000000000000, %rax
   234  	0x48, 0x0f, 0xaf, 0xc2, //0x00000356 imulq        %rdx, %rax
   235  	0x48, 0x29, 0xc6, //0x0000035a subq         %rax, %rsi
   236  	0x83, 0xfa, 0x09, //0x0000035d cmpl         $9, %edx
   237  	0x0f, 0x87, 0x0f, 0x00, 0x00, 0x00, //0x00000360 ja           LBB0_20
   238  	0x80, 0xc2, 0x30, //0x00000366 addb         $48, %dl
   239  	0x88, 0x17, //0x00000369 movb         %dl, (%rdi)
   240  	0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000036b movl         $1, %ecx
   241  	0xe9, 0xba, 0x00, 0x00, 0x00, //0x00000370 jmp          LBB0_25
   242  	//0x00000375 LBB0_20
   243  	0x83, 0xfa, 0x63, //0x00000375 cmpl         $99, %edx
   244  	0x0f, 0x87, 0x1f, 0x00, 0x00, 0x00, //0x00000378 ja           LBB0_22
   245  	0x89, 0xd0, //0x0000037e movl         %edx, %eax
   246  	0x48, 0x8d, 0x0d, 0x89, 0x01, 0x00, 0x00, //0x00000380 leaq         $393(%rip), %rcx  /* _Digits+0(%rip) */
   247  	0x8a, 0x14, 0x41, //0x00000387 movb         (%rcx,%rax,2), %dl
   248  	0x8a, 0x44, 0x41, 0x01, //0x0000038a movb         $1(%rcx,%rax,2), %al
   249  	0x88, 0x17, //0x0000038e movb         %dl, (%rdi)
   250  	0x88, 0x47, 0x01, //0x00000390 movb         %al, $1(%rdi)
   251  	0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000393 movl         $2, %ecx
   252  	0xe9, 0x92, 0x00, 0x00, 0x00, //0x00000398 jmp          LBB0_25
   253  	//0x0000039d LBB0_22
   254  	0x89, 0xd0, //0x0000039d movl         %edx, %eax
   255  	0xc1, 0xe8, 0x02, //0x0000039f shrl         $2, %eax
   256  	0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x000003a2 imull        $5243, %eax, %eax
   257  	0xc1, 0xe8, 0x11, //0x000003a8 shrl         $17, %eax
   258  	0x81, 0xfa, 0xe7, 0x03, 0x00, 0x00, //0x000003ab cmpl         $999, %edx
   259  	0x0f, 0x87, 0x3c, 0x00, 0x00, 0x00, //0x000003b1 ja           LBB0_24
   260  	0x83, 0xc0, 0x30, //0x000003b7 addl         $48, %eax
   261  	0x88, 0x07, //0x000003ba movb         %al, (%rdi)
   262  	0x0f, 0xb7, 0xc2, //0x000003bc movzwl       %dx, %eax
   263  	0x89, 0xc1, //0x000003bf movl         %eax, %ecx
   264  	0xc1, 0xe9, 0x02, //0x000003c1 shrl         $2, %ecx
   265  	0x69, 0xc9, 0x7b, 0x14, 0x00, 0x00, //0x000003c4 imull        $5243, %ecx, %ecx
   266  	0xc1, 0xe9, 0x11, //0x000003ca shrl         $17, %ecx
   267  	0x6b, 0xc9, 0x64, //0x000003cd imull        $100, %ecx, %ecx
   268  	0x29, 0xc8, //0x000003d0 subl         %ecx, %eax
   269  	0x0f, 0xb7, 0xc0, //0x000003d2 movzwl       %ax, %eax
   270  	0x48, 0x8d, 0x0d, 0x34, 0x01, 0x00, 0x00, //0x000003d5 leaq         $308(%rip), %rcx  /* _Digits+0(%rip) */
   271  	0x8a, 0x14, 0x41, //0x000003dc movb         (%rcx,%rax,2), %dl
   272  	0x8a, 0x44, 0x41, 0x01, //0x000003df movb         $1(%rcx,%rax,2), %al
   273  	0x88, 0x57, 0x01, //0x000003e3 movb         %dl, $1(%rdi)
   274  	0x88, 0x47, 0x02, //0x000003e6 movb         %al, $2(%rdi)
   275  	0xb9, 0x03, 0x00, 0x00, 0x00, //0x000003e9 movl         $3, %ecx
   276  	0xe9, 0x3c, 0x00, 0x00, 0x00, //0x000003ee jmp          LBB0_25
   277  	//0x000003f3 LBB0_24
   278  	0x6b, 0xc8, 0x64, //0x000003f3 imull        $100, %eax, %ecx
   279  	0x29, 0xca, //0x000003f6 subl         %ecx, %edx
   280  	0x0f, 0xb7, 0xc0, //0x000003f8 movzwl       %ax, %eax
   281  	0x4c, 0x8d, 0x05, 0x0e, 0x01, 0x00, 0x00, //0x000003fb leaq         $270(%rip), %r8  /* _Digits+0(%rip) */
   282  	0x41, 0x8a, 0x0c, 0x40, //0x00000402 movb         (%r8,%rax,2), %cl
   283  	0x41, 0x8a, 0x44, 0x40, 0x01, //0x00000406 movb         $1(%r8,%rax,2), %al
   284  	0x88, 0x0f, //0x0000040b movb         %cl, (%rdi)
   285  	0x88, 0x47, 0x01, //0x0000040d movb         %al, $1(%rdi)
   286  	0x0f, 0xb7, 0xc2, //0x00000410 movzwl       %dx, %eax
   287  	0x41, 0x8a, 0x0c, 0x40, //0x00000413 movb         (%r8,%rax,2), %cl
   288  	0x48, 0x01, 0xc0, //0x00000417 addq         %rax, %rax
   289  	0x88, 0x4f, 0x02, //0x0000041a movb         %cl, $2(%rdi)
   290  	0x83, 0xc8, 0x01, //0x0000041d orl          $1, %eax
   291  	0x0f, 0xb7, 0xc0, //0x00000420 movzwl       %ax, %eax
   292  	0x42, 0x8a, 0x04, 0x00, //0x00000423 movb         (%rax,%r8), %al
   293  	0x88, 0x47, 0x03, //0x00000427 movb         %al, $3(%rdi)
   294  	0xb9, 0x04, 0x00, 0x00, 0x00, //0x0000042a movl         $4, %ecx
   295  	//0x0000042f LBB0_25
   296  	0x48, 0xba, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x0000042f movabsq      $-6067343680855748867, %rdx
   297  	0x48, 0x89, 0xf0, //0x00000439 movq         %rsi, %rax
   298  	0x48, 0xf7, 0xe2, //0x0000043c mulq         %rdx
   299  	0x48, 0xc1, 0xea, 0x1a, //0x0000043f shrq         $26, %rdx
   300  	0xc5, 0xf9, 0x6e, 0xc2, //0x00000443 vmovd        %edx, %xmm0
   301  	0xc5, 0xfa, 0x6f, 0x0d, 0xb1, 0xfb, 0xff, 0xff, //0x00000447 vmovdqu      $-1103(%rip), %xmm1  /* LCPI0_0+0(%rip) */
   302  	0xc5, 0xf9, 0xf4, 0xd1, //0x0000044f vpmuludq     %xmm1, %xmm0, %xmm2
   303  	0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x00000453 vpsrlq       $45, %xmm2, %xmm2
   304  	0xb8, 0x10, 0x27, 0x00, 0x00, //0x00000458 movl         $10000, %eax
   305  	0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x0000045d vmovq        %rax, %xmm3
   306  	0xc5, 0xe9, 0xf4, 0xe3, //0x00000462 vpmuludq     %xmm3, %xmm2, %xmm4
   307  	0xc5, 0xf9, 0xfa, 0xc4, //0x00000466 vpsubd       %xmm4, %xmm0, %xmm0
   308  	0xc5, 0xe9, 0x61, 0xc0, //0x0000046a vpunpcklwd   %xmm0, %xmm2, %xmm0
   309  	0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x0000046e vpsllq       $2, %xmm0, %xmm0
   310  	0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x00000473 vpshuflw     $80, %xmm0, %xmm0
   311  	0xc4, 0xe2, 0x79, 0x59, 0x15, 0xaf, 0xfb, 0xff, 0xff, //0x00000478 vpbroadcastq $-1105(%rip), %xmm2  /* LCPI0_1+0(%rip) */
   312  	0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x00000481 vpshufd      $80, %xmm0, %xmm0
   313  	0xc5, 0xf9, 0xe4, 0xc2, //0x00000486 vpmulhuw     %xmm2, %xmm0, %xmm0
   314  	0xc4, 0xe2, 0x79, 0x59, 0x25, 0xa5, 0xfb, 0xff, 0xff, //0x0000048a vpbroadcastq $-1115(%rip), %xmm4  /* LCPI0_2+0(%rip) */
   315  	0xc5, 0xf9, 0xe4, 0xc4, //0x00000493 vpmulhuw     %xmm4, %xmm0, %xmm0
   316  	0xc5, 0xfa, 0x6f, 0x2d, 0x71, 0xfb, 0xff, 0xff, //0x00000497 vmovdqu      $-1167(%rip), %xmm5  /* LCPI0_3+0(%rip) */
   317  	0xc5, 0xf9, 0xd5, 0xf5, //0x0000049f vpmullw      %xmm5, %xmm0, %xmm6
   318  	0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000004a3 vpsllq       $16, %xmm6, %xmm6
   319  	0xc5, 0xf9, 0xf9, 0xc6, //0x000004a8 vpsubw       %xmm6, %xmm0, %xmm0
   320  	0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x000004ac imull        $100000000, %edx, %eax
   321  	0x29, 0xc6, //0x000004b2 subl         %eax, %esi
   322  	0xc5, 0xf9, 0x6e, 0xf6, //0x000004b4 vmovd        %esi, %xmm6
   323  	0xc5, 0xc9, 0xf4, 0xc9, //0x000004b8 vpmuludq     %xmm1, %xmm6, %xmm1
   324  	0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000004bc vpsrlq       $45, %xmm1, %xmm1
   325  	0xc5, 0xf1, 0xf4, 0xdb, //0x000004c1 vpmuludq     %xmm3, %xmm1, %xmm3
   326  	0xc5, 0xc9, 0xfa, 0xdb, //0x000004c5 vpsubd       %xmm3, %xmm6, %xmm3
   327  	0xc5, 0xf1, 0x61, 0xcb, //0x000004c9 vpunpcklwd   %xmm3, %xmm1, %xmm1
   328  	0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000004cd vpsllq       $2, %xmm1, %xmm1
   329  	0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000004d2 vpshuflw     $80, %xmm1, %xmm1
   330  	0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000004d7 vpshufd      $80, %xmm1, %xmm1
   331  	0xc5, 0xf1, 0xe4, 0xca, //0x000004dc vpmulhuw     %xmm2, %xmm1, %xmm1
   332  	0xc5, 0xf1, 0xe4, 0xcc, //0x000004e0 vpmulhuw     %xmm4, %xmm1, %xmm1
   333  	0xc5, 0xf1, 0xd5, 0xd5, //0x000004e4 vpmullw      %xmm5, %xmm1, %xmm2
   334  	0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000004e8 vpsllq       $16, %xmm2, %xmm2
   335  	0xc5, 0xf1, 0xf9, 0xca, //0x000004ed vpsubw       %xmm2, %xmm1, %xmm1
   336  	0xc5, 0xf9, 0x67, 0xc1, //0x000004f1 vpackuswb    %xmm1, %xmm0, %xmm0
   337  	0xc5, 0xf9, 0xfc, 0x05, 0x23, 0xfb, 0xff, 0xff, //0x000004f5 vpaddb       $-1245(%rip), %xmm0, %xmm0  /* LCPI0_4+0(%rip) */
   338  	0x89, 0xc8, //0x000004fd movl         %ecx, %eax
   339  	0xc5, 0xfa, 0x7f, 0x04, 0x07, //0x000004ff vmovdqu      %xmm0, (%rdi,%rax)
   340  	0x83, 0xc9, 0x10, //0x00000504 orl          $16, %ecx
   341  	0x89, 0xc8, //0x00000507 movl         %ecx, %eax
   342  	0x5d, //0x00000509 popq         %rbp
   343  	0xc3, //0x0000050a retq         
   344  	0x00, 0x00, 0x00, 0x00, 0x00, //0x0000050b .p2align 4, 0x00
   345  	//0x00000510 _Digits
   346  	0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35, 0x30, 0x36, 0x30, 0x37, //0x00000510 QUAD $0x3330323031303030; QUAD $0x3730363035303430  // .ascii 16, '0001020304050607'
   347  	0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, //0x00000520 QUAD $0x3131303139303830; QUAD $0x3531343133313231  // .ascii 16, '0809101112131415'
   348  	0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, //0x00000530 QUAD $0x3931383137313631; QUAD $0x3332323231323032  // .ascii 16, '1617181920212223'
   349  	0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, //0x00000540 QUAD $0x3732363235323432; QUAD $0x3133303339323832  // .ascii 16, '2425262728293031'
   350  	0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, //0x00000550 QUAD $0x3533343333333233; QUAD $0x3933383337333633  // .ascii 16, '3233343536373839'
   351  	0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, //0x00000560 QUAD $0x3334323431343034; QUAD $0x3734363435343434  // .ascii 16, '4041424344454647'
   352  	0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33, 0x35, 0x34, 0x35, 0x35, //0x00000570 QUAD $0x3135303539343834; QUAD $0x3535343533353235  // .ascii 16, '4849505152535455'
   353  	0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39, 0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, //0x00000580 QUAD $0x3935383537353635; QUAD $0x3336323631363036  // .ascii 16, '5657585960616263'
   354  	0x36, 0x34, 0x36, 0x35, 0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31, //0x00000590 QUAD $0x3736363635363436; QUAD $0x3137303739363836  // .ascii 16, '6465666768697071'
   355  	0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37, 0x37, 0x38, 0x37, 0x39, //0x000005a0 QUAD $0x3537343733373237; QUAD $0x3937383737373637  // .ascii 16, '7273747576777879'
   356  	0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33, 0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, //0x000005b0 QUAD $0x3338323831383038; QUAD $0x3738363835383438  // .ascii 16, '8081828384858687'
   357  	0x38, 0x38, 0x38, 0x39, 0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35, //0x000005c0 QUAD $0x3139303939383838; QUAD $0x3539343933393239  // .ascii 16, '8889909192939495'
   358  	0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39, //0x000005d0 QUAD $0x3939383937393639  // .ascii 8, '96979899'
   359  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005d8 .p2align 4, 0x00
   360  	//0x000005e0 _VecShiftShuffles
   361  	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, //0x000005e0 QUAD $0x0706050403020100; QUAD $0x0f0e0d0c0b0a0908  // .ascii 16, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
   362  	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, //0x000005f0 QUAD $0x0807060504030201; QUAD $0xff0f0e0d0c0b0a09  // .ascii 16, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
   363  	0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, //0x00000600 QUAD $0x0908070605040302; QUAD $0xffff0f0e0d0c0b0a  // .ascii 16, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
   364  	0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, //0x00000610 QUAD $0x0a09080706050403; QUAD $0xffffff0f0e0d0c0b  // .ascii 16, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
   365  	0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, //0x00000620 QUAD $0x0b0a090807060504; QUAD $0xffffffff0f0e0d0c  // .ascii 16, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
   366  	0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000630 QUAD $0x0c0b0a0908070605; QUAD $0xffffffffff0f0e0d  // .ascii 16, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff'
   367  	0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000640 QUAD $0x0d0c0b0a09080706; QUAD $0xffffffffffff0f0e  // .ascii 16, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff'
   368  	0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000650 QUAD $0x0e0d0c0b0a090807; QUAD $0xffffffffffffff0f  // .ascii 16, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff'
   369  	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000660 QUAD $0x0f0e0d0c0b0a0908; QUAD $0xffffffffffffffff  // .ascii 16, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
   370  }
   371