//+build !noasm !appengine gc
// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
DATA LCDATA1<>+0x000(SB)/8, $0x5c5c5c5c5c5c5c5c
DATA LCDATA1<>+0x008(SB)/8, $0x5c5c5c5c5c5c5c5c
DATA LCDATA1<>+0x010(SB)/8, $0x5c5c5c5c5c5c5c5c
DATA LCDATA1<>+0x018(SB)/8, $0x5c5c5c5c5c5c5c5c
DATA LCDATA1<>+0x020(SB)/8, $0x2222222222222222
DATA LCDATA1<>+0x028(SB)/8, $0x2222222222222222
DATA LCDATA1<>+0x030(SB)/8, $0x2222222222222222
DATA LCDATA1<>+0x038(SB)/8, $0x2222222222222222
DATA LCDATA1<>+0x070(SB)/8, $0x0706050403020100
DATA LCDATA1<>+0x078(SB)/8, $0xffffffffffff0908
DATA LCDATA1<>+0x080(SB)/8, $0xff0f0e0d0c0b0aff
DATA LCDATA1<>+0x088(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x090(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x098(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0a0(SB)/8, $0xff0f0e0d0c0b0aff
DATA LCDATA1<>+0x0a8(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0b0(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0b8(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0c0(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0c8(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0d0(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0d8(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0e0(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0e8(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0f0(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x0f8(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x100(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x108(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x110(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x118(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x120(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x128(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x130(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x138(SB)/8, $0xffffffffffffffff
DATA LCDATA1<>+0x140(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x148(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x150(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x158(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x160(SB)/8, $0x0000000000220000
DATA LCDATA1<>+0x168(SB)/8, $0x2f00000000000000
DATA LCDATA1<>+0x170(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x178(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x180(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x188(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x190(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x198(SB)/8, $0x0000005c00000000
DATA LCDATA1<>+0x1a0(SB)/8, $0x000c000000080000
DATA LCDATA1<>+0x1a8(SB)/8, $0x000a000000000000
DATA LCDATA1<>+0x1b0(SB)/8, $0x00000009000d0000
DATA LCDATA1<>+0x1b8(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1c0(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1c8(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1d0(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1d8(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1e0(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1e8(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1f0(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x1f8(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x200(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x208(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x210(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x218(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x220(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x228(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x230(SB)/8, $0x0000000000000000
DATA LCDATA1<>+0x238(SB)/8, $0x0000000000000000
GLOBL LCDATA1<>(SB), 8, $576
TEXT ·_parse_string_validate_only(SB), $8-40
MOVQ src+0(FP), DI
MOVQ maxStringSize+8(FP), SI
MOVQ str_length+16(FP), DX
MOVQ dst_length+24(FP), CX
LEAQ LCDATA1<>(SB), BP
WORD $0x8b4c; BYTE $0x1e // mov r11, qword [rsi]
WORD $0x854d; BYTE $0xdb // test r11, r11
JE LBB0_30
WORD $0xf631 // xor esi, esi
LONG $0x456ffdc5; BYTE $0x00 // vmovdqa ymm0, yword 0[rbp] /* [rip + LCPI0_0] */
LONG $0x4d6ffdc5; BYTE $0x20 // vmovdqa ymm1, yword 32[rbp] /* [rip + LCPI0_1] */
LONG $0x404d8d4c // lea r9, 64[rbp] /* [rip + __ZL10digittoval] */
LONG $0x40958d4c; WORD $0x0001; BYTE $0x00 // lea r10, 320[rbp] /* [rip + __ZL10escape_map] */
WORD $0x8949; BYTE $0xfd // mov r13, rdi
WORD $0x3145; BYTE $0xf6 // xor r14d, r14d
WORD $0x8948; BYTE $0xf8 // mov rax, rdi
LBB0_2:
LONG $0x106ffec5 // vmovdqu ymm2, yword [rax]
LONG $0xd874edc5 // vpcmpeqb ymm3, ymm2, ymm0
LONG $0xdbd7fdc5 // vpmovmskb ebx, ymm3
LONG $0xd174edc5 // vpcmpeqb ymm2, ymm2, ymm1
LONG $0xe2d77dc5 // vpmovmskb r12d, ymm2
WORD $0x438d; BYTE $0xff // lea eax, [rbx - 1]
WORD $0x8544; BYTE $0xe0 // test eax, r12d
JNE LBB0_3
LONG $0x24448d41; BYTE $0xff // lea eax, [r12 - 1]
WORD $0xd885 // test eax, ebx
JE LBB0_28
WORD $0xd889 // mov eax, ebx
LONG $0xbc0f4cf3; BYTE $0xf8 // tzcnt r15, rax
LONG $0x74b60f43; WORD $0x013d // movzx esi, byte [r13 + r15 + 1]
LONG $0x75fe8348 // cmp rsi, 117
JNE LBB0_26
WORD $0x8545; BYTE $0xe4 // test r12d, r12d
JE LBB0_8
WORD $0x8944; BYTE $0xe0 // mov eax, r12d
LONG $0xbc0f48f3; BYTE $0xf0 // tzcnt rsi, rax
WORD $0x2944; BYTE $0xfe // sub esi, r15d
WORD $0xfe83; BYTE $0x06 // cmp esi, 6
JAE LBB0_11
JMP LBB0_30
LBB0_28:
LONG $0x20c58349 // add r13, 32
LONG $0x20c68349 // add r14, 32
WORD $0x894c; BYTE $0xe8 // mov rax, r13
JMP LBB0_29
LBB0_26:
LONG $0x163c8042; BYTE $0x00 // cmp byte [rsi + r10], 0
JE LBB0_30
LONG $0x3d448d4b; BYTE $0x02 // lea rax, [r13 + r15 + 2]
WORD $0xff49; BYTE $0xc7 // inc r15
WORD $0x014d; BYTE $0xfe // add r14, r15
JMP LBB0_29
LBB0_8:
LONG $0x000020be; BYTE $0x00 // mov esi, 32
LONG $0x15ff8341 // cmp r15d, 21
JB LBB0_10
LONG $0xec478d41 // lea eax, [r15 - 20]
LONG $0x7475c1c4; WORD $0x0554; BYTE $0x00 // vpcmpeqb ymm2, ymm1, yword [r13 + rax]
LONG $0xc2d7fdc5 // vpmovmskb eax, ymm2
LONG $0xbc0f48f3; BYTE $0xf0 // tzcnt rsi, rax
WORD $0xc085 // test eax, eax
LONG $0x000020b8; BYTE $0x00 // mov eax, 32
WORD $0x440f; BYTE $0xf0 // cmove esi, eax
LONG $0x3e748d42; BYTE $0xec // lea esi, [rsi + r15 - 20]
LBB0_10:
WORD $0x2944; BYTE $0xfe // sub esi, r15d
WORD $0xfe83; BYTE $0x06 // cmp esi, 6
JB LBB0_30
LBB0_11:
WORD $0x014d; BYTE $0xfd // add r13, r15
LONG $0x45b60f41; BYTE $0x02 // movzx eax, byte [r13 + 2]
LONG $0x04be0f46; BYTE $0x08 // movsx r8d, byte [rax + r9]
LONG $0x5db60f41; BYTE $0x03 // movzx ebx, byte [r13 + 3]
LONG $0x1cbe0f42; BYTE $0x0b // movsx ebx, byte [rbx + r9]
LONG $0x45b60f41; BYTE $0x04 // movzx eax, byte [r13 + 4]
LONG $0x24be0f46; BYTE $0x08 // movsx r12d, byte [rax + r9]
LONG $0x45b60f41; BYTE $0x05 // movzx eax, byte [r13 + 5]
LONG $0x04be0f42; BYTE $0x08 // movsx eax, byte [rax + r9]
LONG $0x0ce0c141 // shl r8d, 12
WORD $0xe3c1; BYTE $0x08 // shl ebx, 8
WORD $0x0944; BYTE $0xc3 // or ebx, r8d
LONG $0x04e4c141 // shl r12d, 4
WORD $0x0941; BYTE $0xc4 // or r12d, eax
WORD $0x0941; BYTE $0xdc // or r12d, ebx
LONG $0x06458d49 // lea rax, [r13 + 6]
WORD $0x8944; BYTE $0xe3 // mov ebx, r12d
LONG $0xfc00e381; WORD $0xffff // and ebx, -1024
LONG $0xd800fb81; WORD $0x0000 // cmp ebx, 55296
JE LBB0_12
LONG $0x80fc8141; WORD $0x0000; BYTE $0x00 // cmp r12d, 128
JAE LBB0_19
LBB0_18:
LONG $0x000001be; BYTE $0x00 // mov esi, 1
JMP LBB0_25
LBB0_12:
WORD $0xfe83; BYTE $0x0c // cmp esi, 12
JB LBB0_30
WORD $0x3880; BYTE $0x5c // cmp byte [rax], 92
JNE LBB0_30
LONG $0x077d8041; BYTE $0x75 // cmp byte [r13 + 7], 117
JNE LBB0_30
LONG $0x45b60f41; BYTE $0x08 // movzx eax, byte [r13 + 8]
LONG $0x04be0f46; BYTE $0x08 // movsx r8d, byte [rax + r9]
LONG $0x75b60f41; BYTE $0x09 // movzx esi, byte [r13 + 9]
LONG $0x1cbe0f42; BYTE $0x0e // movsx ebx, byte [rsi + r9]
LONG $0x75b60f41; BYTE $0x0a // movzx esi, byte [r13 + 10]
LONG $0x34be0f42; BYTE $0x0e // movsx esi, byte [rsi + r9]
LONG $0x45b60f41; BYTE $0x0b // movzx eax, byte [r13 + 11]
LONG $0x04be0f42; BYTE $0x08 // movsx eax, byte [rax + r9]
LONG $0x0ce0c141 // shl r8d, 12
WORD $0xe3c1; BYTE $0x08 // shl ebx, 8
WORD $0x0944; BYTE $0xc3 // or ebx, r8d
WORD $0xe6c1; BYTE $0x04 // shl esi, 4
WORD $0xc609 // or esi, eax
WORD $0xde09 // or esi, ebx
WORD $0xf089 // mov eax, esi
WORD $0x0944; BYTE $0xe0 // or eax, r12d
LONG $0x00ffff3d; BYTE $0x00 // cmp eax, 65535
JA LBB0_30
LONG $0x0ae4c141 // shl r12d, 10
LONG $0x00c48141; WORD $0xa000; BYTE $0xfc // add r12d, -56623104
LONG $0x2400c681; WORD $0xffff // add esi, -56320
WORD $0x0944; BYTE $0xe6 // or esi, r12d
LONG $0x0000c681; WORD $0x0001 // add esi, 65536
LONG $0x0cc58349 // add r13, 12
WORD $0x894c; BYTE $0xe8 // mov rax, r13
WORD $0x8941; BYTE $0xf4 // mov r12d, esi
LONG $0x80fc8141; WORD $0x0000; BYTE $0x00 // cmp r12d, 128
JB LBB0_18
LBB0_19:
LONG $0x00fc8141; WORD $0x0008; BYTE $0x00 // cmp r12d, 2048
JAE LBB0_21
LONG $0x000002be; BYTE $0x00 // mov esi, 2
JMP LBB0_25
LBB0_21:
LONG $0x00fc8141; WORD $0x0100; BYTE $0x00 // cmp r12d, 65536
JAE LBB0_23
LONG $0x000003be; BYTE $0x00 // mov esi, 3
JMP LBB0_25
LBB0_23:
LONG $0xfffc8141; WORD $0x10ff; BYTE $0x00 // cmp r12d, 1114111
JA LBB0_30
LONG $0x000004be; BYTE $0x00 // mov esi, 4
LBB0_25:
WORD $0x014d; BYTE $0xfe // add r14, r15
WORD $0x0149; BYTE $0xf6 // add r14, rsi
LBB0_29:
WORD $0x8948; BYTE $0xc6 // mov rsi, rax
WORD $0x2948; BYTE $0xfe // sub rsi, rdi
WORD $0x8949; BYTE $0xc5 // mov r13, rax
WORD $0x394c; BYTE $0xde // cmp rsi, r11
JB LBB0_2
LBB0_30:
WORD $0xc031 // xor eax, eax
JMP LBB0_31
LBB0_3:
WORD $0x8944; BYTE $0xe0 // mov eax, r12d
LONG $0xbc0f48f3; BYTE $0xc0 // tzcnt rax, rax
WORD $0x0148; BYTE $0xc6 // add rsi, rax
WORD $0x8948; BYTE $0x32 // mov qword [rdx], rsi
WORD $0x0149; BYTE $0xc6 // add r14, rax
WORD $0x894c; BYTE $0x31 // mov qword [rcx], r14
WORD $0x01b0 // mov al, 1
LBB0_31:
VZEROUPPER
MOVQ AX, result+32(FP)
RET
TEXT ·_parse_string(SB), $8-32
MOVQ src+0(FP), DI
MOVQ dst+8(FP), SI
MOVQ pcurrent_string_buf_loc+16(FP), DX
LEAQ LCDATA1<>(SB), BP
LONG $0x076ffec5 // vmovdqu ymm0, yword [rdi]
LONG $0x067ffec5 // vmovdqu yword [rsi], ymm0
LONG $0x4d74fdc5; BYTE $0x00 // vpcmpeqb ymm1, ymm0, yword 0[rbp] /* [rip + LCPI0_0] */
LONG $0xc9d7fdc5 // vpmovmskb ecx, ymm1
LONG $0x4574fdc5; BYTE $0x20 // vpcmpeqb ymm0, ymm0, yword 32[rbp] /* [rip + LCPI0_1] */
LONG $0xf0d77dc5 // vpmovmskb r14d, ymm0
WORD $0x418d; BYTE $0xff // lea eax, [rcx - 1]
WORD $0x8544; BYTE $0xf0 // test eax, r14d
JE LBB0_3
LBB0_1:
WORD $0x8944; BYTE $0xf0 // mov eax, r14d
LONG $0xbc0f48f3; BYTE $0xc0 // tzcnt rax, rax
WORD $0x0148; BYTE $0xf0 // add rax, rsi
WORD $0x8948; BYTE $0x02 // mov qword [rdx], rax
LONG $0x000001b8; BYTE $0x00 // mov eax, 1
LBB0_2:
VZEROUPPER
MOVQ AX, res+24(FP)
RET
LBB0_3:
LONG $0x456ffdc5; BYTE $0x00 // vmovdqa ymm0, yword 0[rbp] /* [rip + LCPI0_0] */
LONG $0x4d6ffdc5; BYTE $0x20 // vmovdqa ymm1, yword 32[rbp] /* [rip + LCPI0_1] */
WORD $0xc031 // xor eax, eax
LONG $0x40658d4c // lea r12, 64[rbp] /* [rip + __ZL10digittoval] */
LONG $0x0001b941; WORD $0x0000 // mov r9d, 1
LONG $0x0002ba41; WORD $0x0000 // mov r10d, 2
LONG $0x40bd8d4c; WORD $0x0001; BYTE $0x00 // lea r15, 320[rbp] /* [rip + __ZL10escape_map] */
JMP LBB0_4
LBB0_24:
LONG $0xfff88141; WORD $0x00ff; BYTE $0x00 // cmp r8d, 65535
JA LBB0_26
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
WORD $0xe9c1; BYTE $0x0c // shr ecx, 12
LONG $0x00e0c181; WORD $0x0000 // add ecx, 224
WORD $0x0e88 // mov byte [rsi], cl
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
WORD $0xe9c1; BYTE $0x06 // shr ecx, 6
WORD $0xe180; BYTE $0x3f // and cl, 63
WORD $0xc980; BYTE $0x80 // or cl, -128
WORD $0x4e88; BYTE $0x01 // mov byte [rsi + 1], cl
LONG $0x3fe08041 // and r8b, 63
LONG $0x80c88041 // or r8b, -128
LONG $0x02468844 // mov byte [rsi + 2], r8b
LONG $0x000003b9; BYTE $0x00 // mov ecx, 3
JMP LBB0_28
LBB0_26:
LONG $0xfff88141; WORD $0x10ff; BYTE $0x00 // cmp r8d, 1114111
JA LBB0_2
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
WORD $0xe9c1; BYTE $0x12 // shr ecx, 18
LONG $0x00f0c181; WORD $0x0000 // add ecx, 240
WORD $0x0e88 // mov byte [rsi], cl
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
WORD $0xe9c1; BYTE $0x0c // shr ecx, 12
WORD $0xe180; BYTE $0x3f // and cl, 63
WORD $0xc980; BYTE $0x80 // or cl, -128
WORD $0x4e88; BYTE $0x01 // mov byte [rsi + 1], cl
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
WORD $0xe9c1; BYTE $0x06 // shr ecx, 6
WORD $0xe180; BYTE $0x3f // and cl, 63
WORD $0xc980; BYTE $0x80 // or cl, -128
WORD $0x4e88; BYTE $0x02 // mov byte [rsi + 2], cl
LONG $0x3fe08041 // and r8b, 63
LONG $0x80c88041 // or r8b, -128
LONG $0x03468844 // mov byte [rsi + 3], r8b
LONG $0x000004b9; BYTE $0x00 // mov ecx, 4
JMP LBB0_28
LBB0_4:
LONG $0xff5e8d41 // lea ebx, [r14 - 1]
WORD $0xcb85 // test ebx, ecx
JE LBB0_8
WORD $0xc989 // mov ecx, ecx
LONG $0xbc0f4cf3; BYTE $0xd9 // tzcnt r11, rcx
LONG $0x4cb60f42; WORD $0x011f // movzx ecx, byte [rdi + r11 + 1]
LONG $0x75f98348 // cmp rcx, 117
JNE LBB0_9
WORD $0x8545; BYTE $0xf6 // test r14d, r14d
JE LBB0_11
WORD $0x8944; BYTE $0xf1 // mov ecx, r14d
LONG $0xbc0f4cf3; BYTE $0xf1 // tzcnt r14, rcx
WORD $0x2945; BYTE $0xde // sub r14d, r11d
LONG $0x06fe8341 // cmp r14d, 6
JAE LBB0_14
JMP LBB0_2
LBB0_8:
LONG $0x20c78348 // add rdi, 32
LONG $0x20c68348 // add rsi, 32
WORD $0x8949; BYTE $0xfd // mov r13, rdi
JMP LBB0_29
LBB0_9:
LONG $0x0cb60f42; BYTE $0x39 // movzx ecx, byte [rcx + r15]
WORD $0xc984 // test cl, cl
JE LBB0_2
LONG $0x1e0c8842 // mov byte [rsi + r11], cl
LONG $0x1f6c8d4e; BYTE $0x02 // lea r13, [rdi + r11 + 2]
LONG $0x014b8d49 // lea rcx, [r11 + 1]
LBB0_28:
WORD $0x0148; BYTE $0xce // add rsi, rcx
JMP LBB0_29
LBB0_11:
LONG $0x0020be41; WORD $0x0000 // mov r14d, 32
LONG $0x15fb8341 // cmp r11d, 21
JB LBB0_13
LONG $0xec4b8d41 // lea ecx, [r11 - 20]
LONG $0x1474f5c5; BYTE $0x0f // vpcmpeqb ymm2, ymm1, yword [rdi + rcx]
LONG $0xcad7fdc5 // vpmovmskb ecx, ymm2
LONG $0xbc0f48f3; BYTE $0xd9 // tzcnt rbx, rcx
WORD $0xc985 // test ecx, ecx
LONG $0x000020b9; BYTE $0x00 // mov ecx, 32
WORD $0x440f; BYTE $0xd9 // cmove ebx, ecx
LONG $0x1b748d46; BYTE $0xec // lea r14d, [rbx + r11 - 20]
LBB0_13:
WORD $0x2945; BYTE $0xde // sub r14d, r11d
LONG $0x06fe8341 // cmp r14d, 6
JB LBB0_2
LBB0_14:
WORD $0x014c; BYTE $0xdf // add rdi, r11
LONG $0x024fb60f // movzx ecx, byte [rdi + 2]
LONG $0x2cbe0f46; BYTE $0x21 // movsx r13d, byte [rcx + r12]
LONG $0x035fb60f // movzx ebx, byte [rdi + 3]
LONG $0x1cbe0f42; BYTE $0x23 // movsx ebx, byte [rbx + r12]
LONG $0x044fb60f // movzx ecx, byte [rdi + 4]
LONG $0x04be0f46; BYTE $0x21 // movsx r8d, byte [rcx + r12]
LONG $0x054fb60f // movzx ecx, byte [rdi + 5]
LONG $0x0cbe0f42; BYTE $0x21 // movsx ecx, byte [rcx + r12]
LONG $0x0ce5c141 // shl r13d, 12
WORD $0xe3c1; BYTE $0x08 // shl ebx, 8
WORD $0x0944; BYTE $0xeb // or ebx, r13d
LONG $0x04e0c141 // shl r8d, 4
WORD $0x0941; BYTE $0xc8 // or r8d, ecx
WORD $0x0941; BYTE $0xd8 // or r8d, ebx
LONG $0x066f8d4c // lea r13, [rdi + 6]
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
LONG $0xfc00e181; WORD $0xffff // and ecx, -1024
LONG $0xd800f981; WORD $0x0000 // cmp ecx, 55296
JNE LBB0_20
LONG $0x0cfe8341 // cmp r14d, 12
JB LBB0_2
LONG $0x007d8041; BYTE $0x5c // cmp byte [r13], 92
JNE LBB0_2
LONG $0x75077f80 // cmp byte [rdi + 7], 117
JNE LBB0_2
LONG $0x084fb60f // movzx ecx, byte [rdi + 8]
LONG $0x34be0f46; BYTE $0x21 // movsx r14d, byte [rcx + r12]
LONG $0x094fb60f // movzx ecx, byte [rdi + 9]
LONG $0x2cbe0f46; BYTE $0x21 // movsx r13d, byte [rcx + r12]
LONG $0x0a4fb60f // movzx ecx, byte [rdi + 10]
LONG $0x0cbe0f42; BYTE $0x21 // movsx ecx, byte [rcx + r12]
LONG $0x0b5fb60f // movzx ebx, byte [rdi + 11]
LONG $0x1cbe0f42; BYTE $0x23 // movsx ebx, byte [rbx + r12]
LONG $0x0ce6c141 // shl r14d, 12
LONG $0x08e5c141 // shl r13d, 8
WORD $0x0945; BYTE $0xf5 // or r13d, r14d
WORD $0xe1c1; BYTE $0x04 // shl ecx, 4
WORD $0xd909 // or ecx, ebx
WORD $0x0944; BYTE $0xe9 // or ecx, r13d
WORD $0xcb89 // mov ebx, ecx
WORD $0x0944; BYTE $0xc3 // or ebx, r8d
LONG $0xfffffb81; WORD $0x0000 // cmp ebx, 65535
JA LBB0_2
LONG $0x0ae0c141 // shl r8d, 10
LONG $0x00c08141; WORD $0xa000; BYTE $0xfc // add r8d, -56623104
LONG $0x2400c181; WORD $0xffff // add ecx, -56320
WORD $0x0944; BYTE $0xc1 // or ecx, r8d
LONG $0x0000c181; WORD $0x0001 // add ecx, 65536
LONG $0x0cc78348 // add rdi, 12
WORD $0x8949; BYTE $0xfd // mov r13, rdi
WORD $0x8941; BYTE $0xc8 // mov r8d, ecx
LBB0_20:
WORD $0x014c; BYTE $0xde // add rsi, r11
LONG $0x7ff88341 // cmp r8d, 127
JA LBB0_22
WORD $0x8844; BYTE $0x06 // mov byte [rsi], r8b
WORD $0x014c; BYTE $0xce // add rsi, r9
JMP LBB0_29
LBB0_22:
LONG $0xfff88141; WORD $0x0007; BYTE $0x00 // cmp r8d, 2047
JA LBB0_24
WORD $0x8944; BYTE $0xc1 // mov ecx, r8d
WORD $0xe9c1; BYTE $0x06 // shr ecx, 6
LONG $0x00c0c181; WORD $0x0000 // add ecx, 192
WORD $0x0e88 // mov byte [rsi], cl
LONG $0x3fe08041 // and r8b, 63
LONG $0x80c88041 // or r8b, -128
LONG $0x01468844 // mov byte [rsi + 1], r8b
WORD $0x014c; BYTE $0xd6 // add rsi, r10
LBB0_29:
LONG $0x6f7ec1c4; WORD $0x0055 // vmovdqu ymm2, yword [r13]
LONG $0x167ffec5 // vmovdqu yword [rsi], ymm2
LONG $0xd874edc5 // vpcmpeqb ymm3, ymm2, ymm0
LONG $0xcbd7fdc5 // vpmovmskb ecx, ymm3
LONG $0xd174edc5 // vpcmpeqb ymm2, ymm2, ymm1
LONG $0xf2d77dc5 // vpmovmskb r14d, ymm2
WORD $0x598d; BYTE $0xff // lea ebx, [rcx - 1]
WORD $0x894c; BYTE $0xef // mov rdi, r13
WORD $0x8544; BYTE $0xf3 // test ebx, r14d
JE LBB0_4
JMP LBB0_1