// File: /workspace/github_c_makefile_star2_O3/justy989[P]ce/ce_json.c
// Function: obj_parse
static bool _obj_parse(ParsePos_t* pos, CeJsonObj_t* obj, bool verbose){
     ObjParseState_t state = {};
     while(*pos->str){
          switch(state.stage){
          case OBJ_PARSE_STAGE_START:
               _eat_whitespace(pos);
               if(*pos->str == TOKEN_OPEN_BRACE){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD, pos, verbose);
               }else{
                    printf("Error: %" PRId64 ", %" PRId64 " expected first non-whitespace character is not an open brace.\n",
                           pos->x, pos->y);
                    return false;
               }
               break;
          case OBJ_PARSE_STAGE_FIELD:
               _eat_whitespace(pos);
               if(*pos->str == TOKEN_QUOTE){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_NAME_BEGIN, pos, verbose);
               }else if(*pos->str == TOKEN_CLOSE_BRACE){
                    if(verbose) printf("Done parsing obj.\n");
                    return true;
               }else{
                    printf("Error: %" PRId64 ", %" PRId64 " expected field declaration.\n",
                           pos->x, pos->y);
                    return false;
               }
               break;
          case OBJ_PARSE_STAGE_FIELD_NAME_BEGIN:
          {
               _parse_string(pos, &state.field_name);
               if(*pos->str == TOKEN_QUOTE){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_NAME_END, pos, verbose);
               }else{
                    printf("Error: %" PRId64 ", %" PRId64 " expected \" to start string.\n", pos->x, pos->y);
                    return false;
               }
          } break;
          case OBJ_PARSE_STAGE_FIELD_NAME_END:
               _eat_whitespace(pos);
               if(*pos->str == TOKEN_COLON){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_BEGIN, pos, verbose);
               }else{
                    printf("Error: %" PRId64 ", %" PRId64 " expected \" to start string.\n", pos->x, pos->y);
                    return false;
               }
               break;
          case OBJ_PARSE_STAGE_FIELD_VALUE_BEGIN:
          {
               bool boolean = false;
               _eat_whitespace(pos);
               if(*pos->str == TOKEN_OPEN_BRACE){
                    CeJsonObj_t member_obj = {};
                    if(!_obj_parse(pos, &member_obj, verbose)){
                         return false;
                    }
                    if(verbose) printf("adding obj obj field %s\n", state.field_name);
                    ce_json_obj_set_obj(obj, state.field_name, &member_obj);
                    ce_json_obj_free(&member_obj);
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_END, pos, verbose);
               }else if(_starts_number(*pos->str)){
                    double number = 0;
                    bool success = _parse_number(pos, &number);
                    if(success){
                         _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_END, pos, verbose);
                         if(verbose) printf("adding obj number field %s\n", state.field_name);
                         ce_json_obj_set_number(obj, state.field_name, number);
                    }else{
                         printf("Error: %" PRId64 ", %" PRId64 " failed to parse expected number.\n",
                                pos->x, pos->y);
                         return false;
                    }
               }else if(*pos->str == TOKEN_OPEN_BRACKET){
                    CeJsonArray_t array = {};
                    bool success = _array_parse(pos, &array, verbose);
                    if(success){
                         _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_END, pos, verbose);
                         if(verbose) printf("adding obj array field %s\n", state.field_name);
                         ce_json_obj_set_array(obj, state.field_name, &array);
                         ce_json_array_free(&array);
                    }else{
                         printf("Error: %" PRId64 ", %" PRId64 " failed to parse array.\n", pos->x, pos->y);
                         return false;
                    }
               }else if(*pos->str == TOKEN_QUOTE){
                    advance_parse_pos(pos);
                    char* field_string = NULL;
                    bool success = _parse_string(pos, &field_string);
                    if(success){
                         _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_END, pos, verbose);
                         if(verbose) printf("adding obj string field %s\n", state.field_name);
                         ce_json_obj_set_string(obj, state.field_name, field_string);
                         free(field_string);
                    }else{
                         printf("Error: %" PRId64 ", %" PRId64 " failed to parse string.", pos->x, pos->y);
                    }
               }else if(_parse_boolean(pos, &boolean)){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_END, pos, verbose);
                    if(verbose) printf("adding obj boolean field %s\n", state.field_name);
                    ce_json_obj_set_boolean(obj, state.field_name, boolean);
               }else if(_parse_null(pos)){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD_VALUE_END, pos, verbose);
                    if(verbose) printf("adding obj null field %s\n", state.field_name);
                    ce_json_obj_set_null(obj, state.field_name);
               }else{
                    printf("Error: %" PRId64 ", %" PRId64 " failed to detect value.\n", pos->x, pos->y);
                    return false;
               }
          } break;
          case OBJ_PARSE_STAGE_FIELD_VALUE_END:
               _eat_whitespace(pos);
               if(*pos->str == TOKEN_CLOSE_BRACE){
                    if(verbose) printf("done parsing obj.\n");
                    return true;
               }else if(*pos->str == TOKEN_COMMA){
                    _transition_obj_stage(&state.stage, OBJ_PARSE_STAGE_FIELD, pos, verbose);
               }else{
                    printf("Error: %" PRId64 ", %" PRId64 " failed to parse next element or end of object with %c.\n",
                           pos->x, pos->y, *pos->str);
                    return false;
               }
               break;
          default:
               printf("Error: reached unknown state %d\n", state.stage);
               return false;
          }

          if(_is_newline(*pos->str)){
               advance_newline_parse_pos(pos);
          }else{
               advance_parse_pos(pos);
          }
     }
     return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq (%rdi), %rax
movb $0x1, %bpl
cmpb $0x0, (%rax)
je 0x1d69d
movl %edx, %r14d
movq %rsi, %r13
movq %rdi, %rbx
leaq 0x12ce5(%rip), %r15     # 0x2f770
movzbl %r14b, %eax
movl %eax, 0x3c(%rsp)
xorl %r12d, %r12d
xorl %eax, %eax
movl %eax, %eax
movslq (%r15,%rax,4), %rax
addq %r15, %rax
jmpq *%rax
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
cmpb $0x7b, (%rax)
jne 0x1d5e0
testb %r14b, %r14b
je 0x1ccd0
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
leaq 0x12fa8(%rip), %rdi     # 0x2fa77
xorl %esi, %esi
movl $0x1, %edx
movl $0x7b, %r9d
jmp 0x1ccc9
movb $0x0, 0x6(%rsp)
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
movzbl (%rax), %ecx
cmpl $0x7b, %ecx
jne 0x1cce8
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
movl 0x3c(%rsp), %edx
callq 0x1ca56
testb %al, %al
je 0x1d69b
movq 0x18(%rsp), %r15
testb %r14b, %r14b
je 0x1d2aa
leaq 0x12dae(%rip), %rdi     # 0x2f8e1
movq %r15, %rsi
xorl %eax, %eax
callq 0xd240
movq %r13, %rdi
movq %r15, %rsi
leaq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x1c1a3
movq %r15, %rdi
callq 0x1c6ac
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
leaq 0x12f09(%rip), %rdi     # 0x2fa77
movl $0x4, %esi
movl $0x5, %edx
xorl %eax, %eax
callq 0xd240
jmp 0x1d2c5
movq %rbx, %rdi
leaq 0x18(%rsp), %rsi
callq 0x1d9e2
movq (%rbx), %rax
cmpb $0x22, (%rax)
jne 0x1d599
testb %r14b, %r14b
je 0x1cbc7
movl 0x10(%rsp), %esi
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
leaq 0x12ec2(%rip), %rdi     # 0x2fa77
movl $0x3, %edx
movl $0x22, %r9d
xorl %eax, %eax
callq 0xd240
movl $0x3, 0x10(%rsp)
movl $0x3, %r12d
movl $0x3, %eax
jmp 0x1d2ff
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
cmpb $0x3a, (%rax)
jne 0x1d599
testb %r14b, %r14b
je 0x1cc1e
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
leaq 0x12e70(%rip), %rdi     # 0x2fa77
movl $0x3, %esi
movl $0x4, %edx
movl $0x3a, %r9d
xorl %eax, %eax
callq 0xd240
movl $0x4, 0x10(%rsp)
movl $0x4, %r12d
movl $0x4, %eax
jmp 0x1d2ff
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
movzbl (%rax), %eax
cmpl $0x22, %eax
jne 0x1d5aa
testb %r14b, %r14b
je 0x1cc78
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
leaq 0x12e16(%rip), %rdi     # 0x2fa77
movl $0x1, %esi
movl $0x2, %edx
movl $0x22, %r9d
xorl %eax, %eax
callq 0xd240
movl $0x2, 0x10(%rsp)
movl $0x2, %r12d
movl $0x2, %eax
jmp 0x1d2ff
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
movzbl (%rax), %eax
movsbl %al, %r9d
cmpl $0x2c, %eax
jne 0x1d5c1
testb %r14b, %r14b
je 0x1ccd0
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
leaq 0x12db8(%rip), %rdi     # 0x2fa77
movl $0x5, %esi
movl $0x1, %edx
xorl %eax, %eax
callq 0xd240
movl $0x1, 0x10(%rsp)
movl $0x1, %r12d
movl $0x1, %eax
jmp 0x1d2ff
cmpl $0x2d, %ecx
setne %dl
leal -0x30(%rcx), %esi
cmpb $0xa, %sil
setae %sil
testb %sil, %dl
jne 0x1cd67
movq $0x0, 0x20(%rsp)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x1daa3
testb %al, %al
je 0x1d63c
testb %r14b, %r14b
je 0x1d2cf
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
leaq 0x12d3c(%rip), %rdi     # 0x2fa77
movl $0x4, %esi
movl $0x5, %edx
xorl %eax, %eax
callq 0xd240
movq 0x18(%rsp), %r15
leaq 0x12ba2(%rip), %rdi     # 0x2f8fa
movq %r15, %rsi
xorl %eax, %eax
callq 0xd240
jmp 0x1d2d4
cmpl $0x22, %ecx
je 0x1d33b
cmpl $0x5b, %ecx
jne 0x1d3ae
movq %r13, 0x58(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
xorl %r13d, %r13d
xorl %r15d, %r15d
movq $0x0, 0x8(%rsp)
leaq 0x12d61(%rip), %rbp     # 0x2fafd
cmpl $0x2, %r15d
je 0x1ce8c
cmpl $0x1, %r15d
jne 0x1ceb3
movb $0x0, 0x7(%rsp)
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rcx
movzbl (%rcx), %eax
cmpl $0x22, %eax
je 0x1cf26
cmpl $0x7b, %eax
jne 0x1cff5
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
movl 0x3c(%rsp), %edx
callq 0x1ca56
testb %al, %al
je 0x1d64d
testb %r14b, %r14b
je 0x1ce2a
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
movq %rbp, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %eax, %eax
callq 0xd240
leaq 0x12db1(%rip), %rdi     # 0x2fbd6
callq 0xd120
leaq 0x1(%r13), %r15
shlq $0x3, %r13
leaq 0x18(,%r13,2), %rsi
addq %r13, %rsi
movq 0x8(%rsp), %rdi
callq 0xd520
leaq (,%r13,2), %rdx
addq %r13, %rdx
movq %rax, 0x8(%rsp)
leaq 0x8(%rax,%rdx), %rdi
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rdi)
movq $0x0, 0x8(%rdi)
movl $0x1, -0x8(%rdi)
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x1bf1e
movq %r13, %rdi
callq 0x1c6ac
jmp 0x1d202
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
movzbl (%rax), %eax
cmpl $0x2c, %eax
je 0x1cef0
movl $0x2, %r15d
cmpl $0x5d, %eax
jne 0x1d20b
jmp 0x1d504
movq %rbx, %rdi
callq 0x1d9a1
movq (%rbx), %rax
cmpb $0x5b, (%rax)
jne 0x1d62b
movl $0x1, %r15d
testb %r14b, %r14b
je 0x1d20b
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movq %rbp, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x5b, %r9d
jmp 0x1cf1a
movl $0x1, %r15d
testb %r14b, %r14b
je 0x1d20b
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movq %rbp, %rdi
movl $0x2, %esi
movl $0x1, %edx
movl $0x2c, %r9d
xorl %eax, %eax
callq 0xd240
jmp 0x1d20b
incq 0x8(%rbx)
incq %rcx
movq %rcx, (%rbx)
movq $0x0, 0x20(%rsp)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x1d9e2
testb %al, %al
je 0x1d65e
testb %r14b, %r14b
je 0x1cf82
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
movq %rbp, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %eax, %eax
callq 0xd240
leaq 0x12c3d(%rip), %rdi     # 0x2fbba
callq 0xd120
movq 0x20(%rsp), %r15
leaq 0x1(%r13), %rax
movq %rax, 0x60(%rsp)
shlq $0x3, %r13
leaq 0x18(,%r13,2), %rsi
addq %r13, %rsi
movq 0x8(%rsp), %rdi
callq 0xd520
movq %rax, %rbp
leaq (%r13,%r13,2), %r13
xorps %xmm0, %xmm0
movups %xmm0, (%rax,%r13)
movq $0x0, 0x10(%rax,%r13)
movl $0x3, (%rax,%r13)
movq %r15, %rdi
callq 0xd640
movq %rbp, 0x8(%rsp)
movq %rax, 0x8(%rbp,%r13)
movq %r15, %rdi
callq 0xd090
movq 0x60(%rsp), %r13
leaq 0x12b0d(%rip), %rbp     # 0x2fafd
jmp 0x1d205
cmpb $0x2d, %al
setne %cl
addb $-0x30, %al
cmpb $0xa, %al
setae %al
testb %al, %cl
jne 0x1d0bc
movq $0x0, 0x20(%rsp)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x1daa3
testb %al, %al
je 0x1d66f
testb %r14b, %r14b
je 0x1d05b
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
movq %rbp, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %eax, %eax
callq 0xd240
leaq 0x12b48(%rip), %rdi     # 0x2fb9e
callq 0xd120
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
leaq 0x1(%r13), %r15
shlq $0x3, %r13
leaq 0x18(,%r13,2), %rsi
addq %r13, %rsi
movq 0x8(%rsp), %rdi
callq 0xd520
leaq (,%r13,2), %rdx
addq %r13, %rdx
xorps %xmm0, %xmm0
movups %xmm0, (%rax,%rdx)
movq $0x0, 0x10(%rax,%rdx)
movl $0x4, (%rax,%rdx)
movq %rax, 0x8(%rsp)
movsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x8(%rax,%rdx)
jmp 0x1d202
movq %rbx, %rdi
leaq 0x7(%rsp), %rsi
callq 0x1dafc
testb %al, %al
je 0x1d15f
testb %r14b, %r14b
je 0x1d105
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
movq %rbp, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %eax, %eax
callq 0xd240
leaq 0x12a84(%rip), %rdi     # 0x2fb84
callq 0xd120
movb 0x7(%rsp), %bpl
leaq 0x1(%r13), %r15
shlq $0x3, %r13
leaq 0x18(,%r13,2), %rsi
addq %r13, %rsi
movq 0x8(%rsp), %rdi
callq 0xd520
leaq (,%r13,2), %rdx
addq %r13, %rdx
xorps %xmm0, %xmm0
movups %xmm0, (%rax,%rdx)
movq $0x0, 0x10(%rax,%rdx)
movl $0x5, (%rax,%rdx)
movq %rax, 0x8(%rsp)
movb %bpl, 0x8(%rax,%rdx)
leaq 0x129a3(%rip), %rbp     # 0x2fafd
jmp 0x1d202
movq (%rbx), %r15
movl $0x4, %edx
movq %r15, %rdi
leaq 0x126bb(%rip), %rsi     # 0x2f82c
callq 0xd0d0
testl %eax, %eax
jne 0x1d55e
movq 0x8(%rbx), %rcx
addq $0x3, %rcx
movq %rcx, 0x8(%rbx)
addq $0x3, %r15
movq %r15, (%rbx)
testb %r14b, %r14b
je 0x1d1be
movq 0x10(%rbx), %r8
movsbl (%r15), %r9d
movq %rbp, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %eax, %eax
callq 0xd240
leaq 0x129b1(%rip), %rdi     # 0x2fb6a
callq 0xd120
leaq 0x1(%r13), %r15
shlq $0x3, %r13
leaq 0x18(,%r13,2), %rsi
addq %r13, %rsi
movq 0x8(%rsp), %rdi
callq 0xd520
leaq (,%r13,2), %rdx
addq %r13, %rdx
xorps %xmm0, %xmm0
movups %xmm0, (%rax,%rdx)
movq $0x0, 0x10(%rax,%rdx)
movq %rax, 0x8(%rsp)
movl $0x6, (%rax,%rdx)
movq %r15, %r13
movl $0x2, %r15d
movq (%rbx), %rax
movzbl (%rax), %ecx
cmpl $0xd, %ecx
je 0x1d21b
cmpl $0xa, %ecx
jne 0x1d226
incq 0x10(%rbx)
movl $0x1, %ecx
jmp 0x1d22d
movq 0x8(%rbx), %rcx
incq %rcx
movq %rcx, 0x8(%rbx)
leaq 0x1(%rax), %rcx
movq %rcx, (%rbx)
cmpb $0x0, 0x1(%rax)
jne 0x1cd9c
movq %r13, 0x48(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x40(%rsp)
movb $0x1, %bpl
movq 0x58(%rsp), %r13
testb %r14b, %r14b
je 0x1d531
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
leaq 0x127ff(%rip), %rdi     # 0x2fa77
movl %r12d, %esi
movl $0x5, %edx
xorl %eax, %eax
callq 0xd240
movl $0x5, 0x10(%rsp)
movq 0x18(%rsp), %r15
leaq 0x126ad(%rip), %rdi     # 0x2f948
movq %r15, %rsi
xorl %eax, %eax
callq 0xd240
jmp 0x1d53e
movq %r13, %rdi
movq %r15, %rsi
leaq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x1c1a3
movq %r15, %rdi
callq 0x1c6ac
movl $0x5, 0x10(%rsp)
jmp 0x1d2ed
movq 0x18(%rsp), %r15
movl $0x5, 0x10(%rsp)
movsd 0x20(%rsp), %xmm0
movq %r13, %rdi
movq %r15, %rsi
callq 0x1c53b
movl $0x5, %r12d
movl $0x5, %eax
leaq 0x12471(%rip), %r15     # 0x2f770
movq (%rbx), %rcx
movzbl (%rcx), %edx
cmpl $0xd, %edx
je 0x1d30f
cmpl $0xa, %edx
jne 0x1d31a
incq 0x10(%rbx)
movl $0x1, %edx
jmp 0x1d321
movq 0x8(%rbx), %rdx
incq %rdx
movq %rdx, 0x8(%rbx)
leaq 0x1(%rcx), %rdx
movq %rdx, (%rbx)
cmpb $0x0, 0x1(%rcx)
jne 0x1ca98
jmp 0x1d69d
incq 0x8(%rbx)
incq %rax
movq %rax, (%rbx)
movq $0x0, 0x20(%rsp)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x1d9e2
testb %al, %al
je 0x1d40a
testb %r14b, %r14b
je 0x1d498
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
leaq 0x126f5(%rip), %rdi     # 0x2fa77
movl $0x4, %esi
movl $0x5, %edx
xorl %eax, %eax
callq 0xd240
movq 0x18(%rsp), %r15
leaq 0x125ec(%rip), %rdi     # 0x2f98b
movq %r15, %rsi
xorl %eax, %eax
callq 0xd240
jmp 0x1d49d
movq %rbx, %rdi
leaq 0x6(%rsp), %rsi
callq 0x1dafc
testb %al, %al
je 0x1d425
testb %r14b, %r14b
je 0x1d4c5
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r8
movsbl (%rax), %r9d
leaq 0x12699(%rip), %rdi     # 0x2fa77
movl $0x4, %esi
movl $0x5, %edx
xorl %eax, %eax
callq 0xd240
movq 0x18(%rsp), %r15
leaq 0x125d4(%rip), %rdi     # 0x2f9cf
movq %r15, %rsi
xorl %eax, %eax
callq 0xd240
jmp 0x1d4ca
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x1258e(%rip), %rdi     # 0x2f9a7
xorl %eax, %eax
callq 0xd240
jmp 0x1cc2c
movq (%rbx), %r15
movl $0x4, %edx
movq %r15, %rdi
leaq 0x123f5(%rip), %rsi     # 0x2f82c
callq 0xd0d0
movq 0x8(%rbx), %rcx
testl %eax, %eax
jne 0x1d6ae
addq $0x3, %rcx
movq %rcx, 0x8(%rbx)
addq $0x3, %r15
movq %r15, (%rbx)
testb %r14b, %r14b
je 0x1d4e7
movq 0x10(%rbx), %r8
movsbl (%r15), %r9d
leaq 0x12608(%rip), %rdi     # 0x2fa77
movl $0x4, %esi
movl $0x5, %edx
xorl %eax, %eax
callq 0xd240
movq 0x18(%rsp), %r15
leaq 0x12560(%rip), %rdi     # 0x2f9ec
movq %r15, %rsi
xorl %eax, %eax
callq 0xd240
jmp 0x1d4ec
movq 0x18(%rsp), %r15
movl $0x5, 0x10(%rsp)
movq 0x20(%rsp), %r12
movq %r13, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x1c4b8
movq %r12, %rdi
callq 0xd090
jmp 0x1d2ed
movq 0x18(%rsp), %r15
movl $0x5, 0x10(%rsp)
movzbl 0x6(%rsp), %edx
movq %r13, %rdi
movq %r15, %rsi
callq 0x1c5c3
jmp 0x1d2ed
movq 0x18(%rsp), %r15
movl $0x5, 0x10(%rsp)
movq %r13, %rdi
movq %r15, %rsi
callq 0x1c63d
jmp 0x1d2ed
movq %r13, 0x48(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x40(%rsp)
testb %r14b, %r14b
movb $0x1, %bpl
movq 0x58(%rsp), %r13
je 0x1d531
leaq 0x12630(%rip), %rdi     # 0x2fb57
callq 0xd120
jmp 0x1d262
movl $0x5, 0x10(%rsp)
movq 0x18(%rsp), %r15
movq %r13, %rdi
movq %r15, %rsi
leaq 0x40(%rsp), %r15
movq %r15, %rdx
callq 0x1c296
movq %r15, %rdi
callq 0x1c161
jmp 0x1d2ed
movq %r13, 0x48(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x40(%rsp)
cmpb $0x5d, (%r15)
jne 0x1d6be
testb %r14b, %r14b
movb $0x1, %bpl
movq 0x58(%rsp), %r13
je 0x1d259
leaq 0x125c8(%rip), %rdi     # 0x2fb57
callq 0xd120
jmp 0x1d259
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x1230c(%rip), %rdi     # 0x2f8b4
jmp 0x1d600
cmpl $0x7d, %eax
jne 0x1d5f1
testb %r14b, %r14b
je 0x1d69d
leaq 0x12586(%rip), %rdi     # 0x2fb45
jmp 0x1d5d6
cmpl $0x7d, %eax
jne 0x1d60e
testb %r14b, %r14b
je 0x1d69d
leaq 0x1255d(%rip), %rdi     # 0x2fb33
callq 0xd120
jmp 0x1d69d
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x12249(%rip), %rdi     # 0x2f838
jmp 0x1d600
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x12287(%rip), %rdi     # 0x2f887
xorl %ebp, %ebp
xorl %eax, %eax
callq 0xd240
jmp 0x1d69d
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x12412(%rip), %rdi     # 0x2fa2f
xorl %ebp, %ebp
movl %r9d, %ecx
xorl %eax, %eax
callq 0xd240
jmp 0x1d69d
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x121fe(%rip), %rdi     # 0x2f838
jmp 0x1d67e
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x122cb(%rip), %rdi     # 0x2f916
jmp 0x1d694
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x1244f(%rip), %rdi     # 0x2faab
jmp 0x1d67e
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x1233a(%rip), %rdi     # 0x2f9a7
jmp 0x1d67e
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x12298(%rip), %rdi     # 0x2f916
xorl %eax, %eax
callq 0xd240
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x122cf(%rip), %rdi     # 0x2f963
xorl %eax, %eax
callq 0xd240
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x10(%rbx), %rdx
leaq 0x1234d(%rip), %rdi     # 0x2fa06
movq %rcx, %rsi
jmp 0x1d694
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
leaq 0x12406(%rip), %rdi     # 0x2fad3
jmp 0x1d67e