// File: /workspace/github_cpp_makefile_star2_O1/wrighteagle2d[P]wrighteaglebase/Debug/../src/Parser.cpp
// Function: Parser::ParseObjProperty_Coach(char*)
Parser::ObjProperty_Coach Parser::ParseObjProperty_Coach(char *msg) {
  ObjProperty_Coach result;

  // goal or ball or player
  result.x = parser::get_double(&msg);
  result.y = parser::get_double(&msg);

  if (*msg != ')') { // ball or player
    result.vx = parser::get_double(&msg);
    result.vy = parser::get_double(&msg);

    if (*msg != ')') { // player
      result.body_dir = parser::get_double(&msg);
      result.head_dir = parser::get_double(&msg);

      while (*msg == ' ')
        ++msg;
      if (*msg != ')') {
        switch (*msg) {
        case 't':
          result.tackling = true;
          ++msg;
          break;
        case 'f':
          result.lying = true;
          ++msg;
          break;
        case 'y':
          result.card_type = CR_Yellow;
          ++msg;
          break;
        case 'r':
          result.card_type = CR_Red;
          ++msg;
          break;
        case 'k':
          // kicking
          ++msg;
          break;
        default:
          result.pointing = true;
          result.point_dir = parser::get_double(&msg);
          break;
        }
        while (*msg == ' ')
          ++msg;
        if (*msg != ')') {
          if (*msg == 't') {
            result.tackling = true;
          } else if (*msg == 'f') {
            result.lying = true;
          } else if (*msg == 'k') {
          } else if (*msg == 'y') {
            result.card_type = CR_Yellow;
          } else if (*msg == 'r') {
            result.card_type = CR_Red;
          }
          while (*msg == ' ')
            ++msg;
          if (*msg != ')') {
            ++msg;
            if (*msg == 'y') {
              result.card_type = CR_Yellow;
            } else if (*msg == 'r') {
              result.card_type = CR_Red;
            }
            //						else {
            //							PARSE_ERROR("why come to this
            //place");
            //						}
          }
          /*else
          {
                  PARSE_ERROR("why come to this place");
          }*/
        }
      }
    }
  }
  return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rdx, -0x20(%rbp)
movabsq $0x7fefffffffffffff, %rax # imm = 0x7FEFFFFFFFFFFFFF
movq %rax, (%rdi)
movq %rax, 0x8(%rdi)
movq %rax, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rax, 0x28(%rdi)
movb $0x0, 0x30(%rdi)
movq %rax, 0x38(%rdi)
movw $0x0, 0x40(%rdi)
movl $0x0, 0x44(%rdi)
movb (%rdx), %al
movsbl %al, %ecx
addl $-0x30, %ecx
movabsq $0x680000000001, %r15   # imm = 0x680000000001
cmpl $0xa, %ecx
jb 0x44257
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x4423f
movzbl %al, %eax
btq %rax, %r15
jb 0x44253
movb 0x1(%rdx), %al
incq %rdx
movsbl %al, %esi
addl $-0x30, %esi
movq %rdx, %rcx
cmpl $0xa, %esi
jae 0x44232
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %rdx, %rdi
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, (%rbx)
movq (%r14), %rdi
movb (%rdi), %al
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x442a3
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x4428b
movzbl %al, %eax
btq %rax, %r15
jb 0x4429f
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %edx
addl $-0x30, %edx
movq %rdi, %rcx
cmpl $0xa, %edx
jae 0x4427e
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, 0x8(%rbx)
movq (%r14), %rdi
movb (%rdi), %al
cmpb $0x29, %al
je 0x4453b
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x442f5
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x442dd
movzbl %al, %eax
btq %rax, %r15
jb 0x442f1
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %edx
addl $-0x30, %edx
movq %rdi, %rcx
cmpl $0xa, %edx
jae 0x442d0
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, 0x10(%rbx)
movq (%r14), %rdi
movb (%rdi), %al
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x4433f
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x44327
movzbl %al, %eax
btq %rax, %r15
jb 0x4433b
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %edx
addl $-0x30, %edx
movq %rdi, %rcx
cmpl $0xa, %edx
jae 0x4431a
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, 0x18(%rbx)
movq (%r14), %rdi
movb (%rdi), %al
cmpb $0x29, %al
je 0x4453b
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x44391
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x44379
movzbl %al, %eax
btq %rax, %r15
jb 0x4438d
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %edx
addl $-0x30, %edx
movq %rdi, %rcx
cmpl $0xa, %edx
jae 0x4436c
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, 0x20(%rbx)
movq (%r14), %rdi
movb (%rdi), %al
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x443db
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x443c3
movzbl %al, %eax
btq %rax, %r15
jb 0x443d7
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %edx
addl $-0x30, %edx
movq %rdi, %rcx
cmpl $0xa, %edx
jae 0x443b6
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, 0x28(%rbx)
movq (%r14), %rdi
movzbl (%rdi), %eax
cmpl $0x20, %eax
jne 0x443fc
incq %rdi
jmp 0x443ef
cmpl $0x71, %eax
jg 0x44415
cmpl $0x29, %eax
je 0x44435
cmpl $0x66, %eax
je 0x4444b
cmpl $0x6b, %eax
je 0x4445d
jmp 0x444cc
cmpl $0x72, %eax
je 0x4443e
cmpl $0x74, %eax
je 0x44455
cmpl $0x79, %eax
jne 0x444cc
movq %rdi, -0x20(%rbp)
movl $0x1, 0x44(%rbx)
jmp 0x4445d
movq %rdi, -0x20(%rbp)
jmp 0x4453b
movq %rdi, -0x20(%rbp)
movl $0x2, 0x44(%rbx)
jmp 0x4445d
movq %rdi, -0x20(%rbp)
movb $0x1, 0x41(%rbx)
jmp 0x4445d
movq %rdi, -0x20(%rbp)
movb $0x1, 0x40(%rbx)
incq %rdi
movq %rdi, -0x20(%rbp)
movq -0x20(%rbp), %rax
movzbl (%rax), %ecx
cmpl $0x20, %ecx
jne 0x44475
incq %rax
jmp 0x44468
cmpl $0x71, %ecx
jle 0x4449d
cmpl $0x72, %ecx
je 0x444b5
cmpl $0x74, %ecx
je 0x444c2
cmpl $0x79, %ecx
jne 0x4451b
movq %rax, -0x20(%rbp)
movl $0x1, 0x44(%rbx)
jmp 0x4451f
cmpl $0x29, %ecx
je 0x44537
cmpl $0x66, %ecx
jne 0x4451b
movq %rax, -0x20(%rbp)
movb $0x1, 0x41(%rbx)
jmp 0x4451f
movq %rax, -0x20(%rbp)
movl $0x2, 0x44(%rbx)
jmp 0x4451f
movq %rax, -0x20(%rbp)
movb $0x1, 0x40(%rbx)
jmp 0x4451f
movsbl %al, %ecx
movq %rdi, -0x20(%rbp)
movb $0x1, 0x30(%rbx)
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x44508
movq -0x20(%rbp), %rcx
cmpb $0x2e, %al
ja 0x444f0
movzbl %al, %eax
btq %rax, %r15
jb 0x44504
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %edx
addl $-0x30, %edx
movq %rdi, %rcx
cmpl $0xa, %edx
jae 0x444e3
movq %rcx, -0x20(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x93a0
movsd %xmm0, 0x38(%rbx)
jmp 0x44464
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
incq %rax
movzbl -0x1(%rax), %ecx
cmpl $0x20, %ecx
je 0x44523
cmpl $0x29, %ecx
jne 0x44549
decq %rax
movq %rax, -0x20(%rbp)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, -0x20(%rbp)
movzbl (%rax), %eax
cmpl $0x72, %eax
je 0x44563
cmpl $0x79, %eax
jne 0x4453b
movl $0x1, 0x44(%rbx)
jmp 0x4453b
movl $0x2, 0x44(%rbx)
jmp 0x4453b