// File: /workspace/github_cpp_makefile_star2_O3/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 0x42ff6
cmpb $0x2e, %al
ja 0x42fe1
movzbl %al, %eax
btq %rax, %r15
jb 0x42ff2
movb 0x1(%rdx), %al
incq %rdx
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x42fd4
movq %rdx, -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 0x4303b
cmpb $0x2e, %al
ja 0x43026
movzbl %al, %eax
btq %rax, %r15
jb 0x43037
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x43019
movq %rdi, -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 0x4329d
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x43086
cmpb $0x2e, %al
ja 0x43071
movzbl %al, %eax
btq %rax, %r15
jb 0x43082
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x43064
movq %rdi, -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 0x430c9
cmpb $0x2e, %al
ja 0x430b4
movzbl %al, %eax
btq %rax, %r15
jb 0x430c5
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x430a7
movq %rdi, -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 0x4329d
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x43114
cmpb $0x2e, %al
ja 0x430ff
movzbl %al, %eax
btq %rax, %r15
jb 0x43110
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x430f2
movq %rdi, -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 0x43157
cmpb $0x2e, %al
ja 0x43142
movzbl %al, %eax
btq %rax, %r15
jb 0x43153
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x43135
movq %rdi, -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 0x43178
incq %rdi
jmp 0x4316b
cmpl $0x71, %eax
jg 0x43192
cmpl $0x29, %eax
je 0x4329d
cmpl $0x66, %eax
je 0x431b3
cmpl $0x6b, %eax
je 0x431bd
jmp 0x431c6
cmpl $0x72, %eax
je 0x431aa
cmpl $0x74, %eax
je 0x431b9
cmpl $0x79, %eax
jne 0x431c6
movl $0x1, 0x44(%rbx)
jmp 0x431bd
movl $0x2, 0x44(%rbx)
jmp 0x431bd
movb $0x1, 0x41(%rbx)
jmp 0x431bd
movb $0x1, 0x40(%rbx)
incq %rdi
movq %rdi, -0x20(%rbp)
jmp 0x43214
movsbl %al, %ecx
movq %rdi, -0x20(%rbp)
movb $0x1, 0x30(%rbx)
addl $-0x30, %ecx
cmpl $0xa, %ecx
jb 0x431fb
cmpb $0x2e, %al
ja 0x431e6
movzbl %al, %eax
btq %rax, %r15
jb 0x431f7
movb 0x1(%rdi), %al
incq %rdi
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x431d9
movq %rdi, -0x20(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, %rsi
callq 0x93a0
movsd %xmm0, 0x38(%rbx)
movq (%r14), %rdi
jmp 0x43214
incq %rdi
movzbl (%rdi), %eax
cmpl $0x20, %eax
je 0x43211
cmpl $0x71, %eax
jle 0x4323d
cmpl $0x72, %eax
je 0x43251
cmpl $0x74, %eax
je 0x4325e
cmpl $0x79, %eax
jne 0x43268
movq %rdi, -0x20(%rbp)
movl $0x1, 0x44(%rbx)
jmp 0x4326c
cmpl $0x29, %eax
je 0x4329d
cmpl $0x66, %eax
jne 0x43268
movq %rdi, -0x20(%rbp)
movb $0x1, 0x41(%rbx)
jmp 0x4326c
movq %rdi, -0x20(%rbp)
movl $0x2, 0x44(%rbx)
jmp 0x4326c
movq %rdi, -0x20(%rbp)
movb $0x1, 0x40(%rbx)
jmp 0x4326c
movq %rdi, -0x20(%rbp)
incq %rdi
movzbl -0x1(%rdi), %eax
cmpl $0x20, %eax
je 0x4326c
cmpl $0x29, %eax
je 0x4329d
movq %rdi, -0x20(%rbp)
movzbl (%rdi), %eax
cmpl $0x79, %eax
je 0x43295
cmpl $0x72, %eax
jne 0x4329d
movl $0x2, %eax
jmp 0x4329a
movl $0x1, %eax
movl %eax, 0x44(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop