// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: parse_string
static bool _parse_string(ParsePos_t* pos, char** result){
     const char* begin = pos->str;
     bool escaped = false;
     while(true){
          char ch = *pos->str;
          if(_is_newline(ch)){
               return false;
          }else if(escaped){
               if(ch != TOKEN_QUOTE &&
                  ch != TOKEN_BACKSLASH &&
                  ch != TOKEN_FORWARDSLASH &&
                  ch != 'b' &&
                  ch != 'f' &&
                  ch != 'n' &&
                  ch != 'r' &&
                  ch != 't' &&
                  ch != 'u'){
                    // TODO: Handle unicode numbers after the \u
                    return pos->str;
               }
               escaped = false;
          }else if(ch == TOKEN_BACKSLASH){
               escaped = true;
          }else if(ch == TOKEN_QUOTE){
               if(*result){
                    free(*result);
               }
               uint64_t string_length = (pos->str - begin);
               *result = malloc(string_length + 1);
               strncpy(*result, begin, string_length);
               (*result)[string_length] = 0;
               break;
          }
          advance_parse_pos(pos);
     }
     return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movb $0x0, -0x21(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movb (%rax), %al
movb %al, -0x22(%rbp)
movsbl -0x22(%rbp), %edi
callq 0x27620
testb $0x1, %al
jne 0x26eaa
jmp 0x26eb3
movb $0x0, -0x1(%rbp)
jmp 0x26fbc
testb $0x1, -0x21(%rbp)
je 0x26f28
movsbl -0x22(%rbp), %eax
cmpl $0x22, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x5c, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x2f, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x62, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x66, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x6e, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x72, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x74, %eax
je 0x26f1f
movsbl -0x22(%rbp), %eax
cmpl $0x75, %eax
je 0x26f1f
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x26fbc
movb $0x0, -0x21(%rbp)
jmp 0x26fa8
movsbl -0x22(%rbp), %eax
cmpl $0x5c, %eax
jne 0x26f37
movb $0x1, -0x21(%rbp)
jmp 0x26fa6
movsbl -0x22(%rbp), %eax
cmpl $0x22, %eax
jne 0x26fa4
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x26f56
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0xd090
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
addq $0x1, %rdi
callq 0xd4a0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0xd0b0
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x30(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x26fb8
jmp 0x26fa6
jmp 0x26fa8
jmp 0x26faa
movq -0x10(%rbp), %rdi
callq 0x27510
jmp 0x26e8f
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)