// File: /workspace/github_cpp_makefile_star2_O3/wrighteagle2d[P]wrighteaglebase/Debug/../src/Parser.cpp
// Function: Parser::ParsePlayMode(char*)
void Parser::ParsePlayMode(char *msg) {
  ServerPlayMode spm = ServerPlayModeMap::instance().GetServerPlayMode(msg);

  if (spm == SPM_Null) {
    PRINT_ERROR("unknown server play mode: " << msg << " @ "
                                             << mpObserver->CurrentTime());
    return;
  }

  PlayMode pm = PM_No_Mode;
  mpObserver->SetServerPlayMode(spm);
  switch (spm) {
  case SPM_PlayOn:
    pm = PM_Play_On;
    break;              /* play_on */
  case SPM_KickIn_Left: /* kick_in */
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Kick_In : PM_Opp_Kick_In;
    break;
  case SPM_KickIn_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Kick_In : PM_Opp_Kick_In;
    break;
  case SPM_KickOff_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Kick_Off : PM_Opp_Kick_Off;
    break;
  case SPM_KickOff_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Kick_Off : PM_Opp_Kick_Off;
    break;
  case SPM_GoalKick_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Goal_Kick
                                            : PM_Opp_Goal_Kick;
    break;
  case SPM_GoalKick_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Goal_Kick
                                            : PM_Opp_Goal_Kick;
    break;
  case SPM_AfterGoal_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Goal_Ours : PM_Goal_Opps;
    break;
  case SPM_AfterGoal_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Goal_Ours : PM_Goal_Opps;
    break;
  case SPM_CornerKick_Left: /* corner_kick */
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Corner_Kick
                                            : PM_Opp_Corner_Kick;
    break;
  case SPM_CornerKick_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Corner_Kick
                                            : PM_Opp_Corner_Kick;
    break;
  case SPM_Drop_Ball:
    pm = PM_Drop_Ball;
    break;               /* drop_ball */
  case SPM_OffSide_Left: /* offside */
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Opp_Offside_Kick
                                            : PM_Our_Offside_Kick;
    break;
  case SPM_OffSide_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Opp_Offside_Kick
                                            : PM_Our_Offside_Kick;
    break;
  case SPM_CatchFault_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Opp_CatchFault_Kick
                                            : PM_Our_CatchFault_Kick;
    break;
  case SPM_CatchFault_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Opp_CatchFault_Kick
                                            : PM_Our_CatchFault_Kick;
    break;
  case SPM_FreeKick_Left:
    if (mLastServerPlayMode == SPM_GoalieCatchBall_Left)
      pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Goalie_Free_Kick
                                              : PM_Opp_Goalie_Free_Kick;
    else
      pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Free_Kick
                                              : PM_Opp_Free_Kick;
    break;
  case SPM_FreeKick_Right:
    if (mLastServerPlayMode == SPM_GoalieCatchBall_Right)
      pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Goalie_Free_Kick
                                              : PM_Opp_Goalie_Free_Kick;
    else
      pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Free_Kick
                                              : PM_Opp_Free_Kick;
    break;
  case SPM_Free_Kick_Fault_Left:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Free_Kick_Fault_Kick
                                            : PM_Opp_Free_Kick_Fault_Kick;
    break;
  case SPM_Free_Kick_Fault_Right:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Free_Kick_Fault_Kick
                                            : PM_Opp_Free_Kick_Fault_Kick;
    break;
  case SPM_FirstHalfOver: /* half_time */
    pm = PM_Half_Time;    /* play_mode to before_kick_off        */
    break;
  case SPM_BeforeKickOff:
    pm = PM_Before_Kick_Off;
    break; /* before_kick_off */
    break;
  case SPM_Back_Pass_Left:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Back_Pass_Kick
                                            : PM_Opp_Back_Pass_Kick;
    break;
  case SPM_Back_Pass_Right:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Back_Pass_Kick
                                            : PM_Opp_Back_Pass_Kick;
    break;
  case SPM_TimeOver:
    pm = PM_Time_Over;
    break;
  case SPM_TimeUp:
    pm = PM_Time_Up;
    break;
  case SPM_IndFreeKick_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Indirect_Free_Kick
                                            : PM_Opp_Indirect_Free_Kick;
    break;
  case SPM_IndFreeKick_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Indirect_Free_Kick
                                            : PM_Opp_Indirect_Free_Kick;
    break;
  case SPM_PenaltySetup_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Setup
                                            : PM_Opp_Penalty_Setup;
    break;
  case SPM_PenaltySetup_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Setup
                                            : PM_Opp_Penalty_Setup;
    break;
  case SPM_PenaltyReady_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Ready
                                            : PM_Opp_Penalty_Ready;
    break;
  case SPM_PenaltyReady_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Ready
                                            : PM_Opp_Penalty_Ready;
    break;
  case SPM_PenaltyTaken_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Taken
                                            : PM_Opp_Penalty_Taken;
    break;
  case SPM_PenaltyTaken_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Taken
                                            : PM_Opp_Penalty_Taken;
    break;
  case SPM_PenaltyScore_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Score
                                            : PM_Opp_Penalty_Score;
    break;
  case SPM_PenaltyScore_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Score
                                            : PM_Opp_Penalty_Score;
    break;
  case SPM_PenaltyMiss_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Miss
                                            : PM_Opp_Penalty_Miss;
    break;
  case SPM_PenaltyMiss_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Miss
                                            : PM_Opp_Penalty_Miss;
    break;
  case SPM_GoalieCatchBall_Left:
    pm = mpObserver->GetPlayMode();
    break;
  case SPM_GoalieCatchBall_Right:
    pm = mpObserver->GetPlayMode();
    break;
  case SPM_HalfTime:
    pm = PM_Half_Time;
    break;
  case SPM_PenaltyOnfield_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Penalty_On_Our_Field
                                            : PM_Penalty_On_Opp_Field;
    break;
  case SPM_PenaltyOnfield_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Penalty_On_Our_Field
                                            : PM_Penalty_On_Opp_Field;
    break;
  case SPM_PenaltyFoul_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Foul
                                            : PM_Opp_Penalty_Foul;
    break;
  case SPM_PenaltyFoul_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Foul
                                            : PM_Opp_Penalty_Foul;
    break;
  case SPM_PenaltyWinner_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Penalty_Winner
                                            : PM_Opp_Penalty_Winner;
    break;
  case SPM_PenaltyWinner_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Penalty_Winner
                                            : PM_Opp_Penalty_Winner;
    break;
  case SPM_Foul_Left:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Foul : PM_Opp_Foul;
    break;
  case SPM_Foul_Right:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Foul : PM_Opp_Foul;
    break;
  case SPM_TimeExtended:
    pm = PM_Extended_Time;
    break;
  case SPM_Foul_Charge_Left:
    pm = (mpObserver->OurInitSide() == 'r') ? PM_Our_Foul_Charge_Kick
                                            : PM_Opp_Foul_Charge_Kick;
    break;
  case SPM_Foul_Charge_Right:
    pm = (mpObserver->OurInitSide() == 'l') ? PM_Our_Foul_Charge_Kick
                                            : PM_Opp_Foul_Charge_Kick;
    break;
  default:
    PRINT_ERROR("unknown server play mode: " << msg << " @ "
                                             << mpObserver->CurrentTime());
    break;
  }
  mLastServerPlayMode = spm;

  if (pm == PM_Penalty_On_Our_Field) {
    if (mpObserver->SelfUnum() != PlayerParam::instance().ourGoalieUnum()) {
      mpObserver->SetOurSide((mpObserver->OurInitSide() == 'l') ? 'r' : 'l');
      mpObserver->Initialize();
    }
  } else if (pm == PM_Penalty_On_Opp_Field) {
    if (mpObserver->SelfUnum() == PlayerParam::instance().ourGoalieUnum()) {
      mpObserver->SetOurSide((mpObserver->OurInitSide() == 'l') ? 'r' : 'l');
      mpObserver->Initialize();
    }
  }

  if (pm != PM_No_Mode) {
    switch (pm) {
    case PM_Goal_Ours:
      mpObserver->OurScoreInc();
      mpObserver->SetKickOffMode(KO_Opps);
      pm = PM_Before_Kick_Off;
      break;
    case PM_Goal_Opps:
      mpObserver->OppScoreInc();
      mpObserver->SetKickOffMode(KO_Ours);
      pm = PM_Before_Kick_Off;
      break;
    case PM_Our_Penalty_Score:
      mpObserver->OurScoreInc();
      break;
    case PM_Opp_Penalty_Score:
      mpObserver->OppScoreInc();
      break;
    case PM_Half_Time:
    case PM_Extended_Time:
      ++mHalfTime;
      if (mHalfTime % 2 == 1) {
        mpObserver->SetKickOffMode(
            (mpObserver->OurInitSide() == 'l') ? KO_Ours : KO_Opps);
      } else {
        mpObserver->SetKickOffMode(
            (mpObserver->OurInitSide() == 'r') ? KO_Ours : KO_Opps);
      }

      break;
    case PM_Drop_Ball:
      mpObserver->DropBall();
      break;
    default:
      break;
    }
    mpObserver->SetPlayMode(pm);
  } else {
    PRINT_ERROR("Unkonow playmode : " << msg << " @ "
                                      << mpObserver->CurrentTime());
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rsi, %r14
movq %rdi, %rbx
callq 0x546f6
movq %rax, %r15
leaq -0x48(%rbp), %r12
leaq -0x21(%rbp), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x241d4
movq %r15, %rdi
movq %r12, %rsi
callq 0x55982
movl %eax, %r15d
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x416c3
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x94e0
testl %r15d, %r15d
je 0x4170f
movq 0x10(%rbx), %rax
movl %r15d, 0x24(%rax)
movl %r15d, %ecx
decl %ecx
cmpl $0x3d, %ecx
ja 0x4181f
leaq 0x29ab3(%rip), %rdx     # 0x6b198
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl 0x1c(%rax), %r12d
movl %r15d, 0x18(%rbx)
cmpl $0x1a, %r12d
je 0x419ed
cmpl $0x17, %r12d
je 0x418f9
jmp 0x41bc5
movq 0x428da(%rip), %r15     # 0x83ff0
leaq 0x29c61(%rip), %rsi     # 0x6b37e
movl $0x11, %edx
movq %r15, %rdi
callq 0x9560
leaq 0x2ba61(%rip), %rsi     # 0x6d192
movl $0x1, %edx
movq %r15, %rdi
callq 0x9560
movq %r15, %rdi
movl $0x693, %esi            # imm = 0x693
callq 0x9880
movq %rax, %r15
leaq 0x29d02(%rip), %rsi     # 0x6b457
movl $0x3, %edx
movq %rax, %rdi
callq 0x9560
leaq 0x29cc3(%rip), %rsi     # 0x6b42c
movl $0x1a, %edx
movq %r15, %rdi
callq 0x9560
testq %r14, %r14
je 0x41793
movq %r14, %rdi
callq 0x9200
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x9560
jmp 0x417ad
movq (%r15), %rax
movq -0x18(%rax), %rax
movq %r15, %rdi
addq %rax, %rdi
movl 0x20(%r15,%rax), %esi
orl $0x1, %esi
callq 0x9860
leaq 0x2ba43(%rip), %rsi     # 0x6d1f7
movl $0x3, %edx
movq %r15, %rdi
callq 0x9560
movq 0x10(%rbx), %rsi
addq $0xc, %rsi
movq %r15, %rdi
callq 0xe974
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9070
movq %rax, %rdi
callq 0x9330
jmp 0x41c85
movl $0x1c, %r12d
jmp 0x41bc1
movl $0x1e, %r12d
jmp 0x41bc1
cmpb $0x72, 0x28(%rax)
jmp 0x41a62
movq 0x427ca(%rip), %r12     # 0x83ff0
leaq 0x29b51(%rip), %rsi     # 0x6b37e
movl $0x11, %edx
movq %r12, %rdi
callq 0x9560
leaq 0x2b951(%rip), %rsi     # 0x6d192
movl $0x1, %edx
movq %r12, %rdi
callq 0x9560
movq %r12, %rdi
movl $0x763, %esi            # imm = 0x763
callq 0x9880
movq %rax, %r12
leaq 0x29bf2(%rip), %rsi     # 0x6b457
movl $0x3, %edx
movq %rax, %rdi
callq 0x9560
leaq 0x29bb3(%rip), %rsi     # 0x6b42c
movl $0x1a, %edx
movq %r12, %rdi
callq 0x9560
movq %r12, %rdi
movq %r14, %rsi
callq 0x94a0
movq %rax, %r12
leaq 0x2b95c(%rip), %rsi     # 0x6d1f7
movl $0x3, %edx
movq %rax, %rdi
callq 0x9560
movq 0x10(%rbx), %rsi
addq $0xc, %rsi
movq %r12, %rdi
callq 0xe974
movq %rax, %rdi
callq 0x9240
xorl %r12d, %r12d
jmp 0x41bc1
cmpb $0x72, 0x28(%rax)
jmp 0x418d2
cmpb $0x6c, 0x28(%rax)
movl $0x11, %eax
movl $0x34, %r12d
jmp 0x41bbd
cmpb $0x6c, 0x28(%rax)
jmp 0x41ae0
cmpb $0x6c, 0x28(%rax)
jne 0x419e9
movl %r15d, 0x18(%rbx)
movl 0x2c(%rax), %r14d
callq 0x43dce
movl $0x17, %r12d
cmpl 0x31a0(%rax), %r14d
jne 0x41a09
jmp 0x41c7d
xorl %r12d, %r12d
cmpb $0x6c, 0x28(%rax)
jmp 0x41a79
cmpb $0x6c, 0x28(%rax)
jmp 0x41b3c
cmpb $0x6c, 0x28(%rax)
jmp 0x419c4
cmpb $0x6c, 0x28(%rax)
jmp 0x41960
cmpb $0x72, 0x28(%rax)
jmp 0x41acc
cmpb $0x72, 0x28(%rax)
jmp 0x41b86
cmpb $0x6c, 0x28(%rax)
jmp 0x4199c
cmpb $0x72, 0x28(%rax)
jmp 0x41988
cmpb $0x72, 0x28(%rax)
movl $0xa, %eax
movl $0x2e, %r12d
jmp 0x41bbd
movl $0x1, %r12d
jmp 0x41bc1
cmpb $0x6c, 0x28(%rax)
jmp 0x41a3a
cmpb $0x6c, 0x28(%rax)
movl $0x5, %eax
movl $0x28, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
movl $0x7, %eax
movl $0x2a, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
jmp 0x41aa4
movl $0x16, %r12d
jmp 0x41bc1
cmpb $0x72, 0x28(%rax)
movl $0xb, %eax
movl $0x2d, %r12d
jmp 0x41bbd
movl $0x1d, %r12d
jmp 0x41bc1
cmpb $0x72, 0x28(%rax)
je 0x418f5
movl %r15d, 0x18(%rbx)
movl 0x2c(%rax), %r14d
callq 0x43dce
movl $0x1a, %r12d
cmpl 0x31a0(%rax), %r14d
jne 0x41c7d
movq 0x10(%rbx), %rdi
cmpb $0x6c, 0x28(%rdi)
movl $0x72, %eax
movl $0x6c, %ecx
movl $0x6c, %edx
cmovel %eax, %edx
movb %dl, 0x29(%rdi)
cmovel %ecx, %eax
movb %al, 0x2a(%rdi)
callq 0x3aa20
jmp 0x41c7d
cmpb $0x72, 0x28(%rax)
movl $0x3, %eax
movl $0x26, %r12d
jmp 0x41bbd
cmpl $0x32, 0x18(%rbx)
movb 0x28(%rax), %al
jne 0x41bac
cmpb $0x6c, %al
jmp 0x41aff
cmpb $0x6c, 0x28(%rax)
movl $0x14, %eax
movl $0x37, %r12d
jmp 0x41bbd
xorl %r12d, %r12d
cmpb $0x72, 0x28(%rax)
sete %r12b
xorl $0x21, %r12d
jmp 0x41bc1
cmpb $0x6c, 0x28(%rax)
jmp 0x41b64
movl $0x1b, %r12d
jmp 0x41bc1
cmpb $0x6c, 0x28(%rax)
jmp 0x41ab8
cmpb $0x6c, 0x28(%rax)
movl $0xe, %eax
movl $0x31, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
movl $0x2, %eax
movl $0x25, %r12d
jmp 0x41bbd
cmpb $0x6c, 0x28(%rax)
movl $0x4, %eax
movl $0x27, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
movl $0x12, %eax
movl $0x35, %r12d
jmp 0x41bbd
cmpl $0x33, 0x18(%rbx)
movb 0x28(%rax), %al
jne 0x41bb0
cmpb $0x72, %al
movl $0x8, %eax
movl $0x2b, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
jmp 0x41b1f
cmpb $0x6c, 0x28(%rax)
jmp 0x41b75
cmpb $0x6c, 0x28(%rax)
movl $0x2c, %eax
movl $0x9, %r12d
jmp 0x41bbd
xorl %r12d, %r12d
cmpb $0x6c, 0x28(%rax)
jmp 0x41b9a
cmpb $0x72, 0x28(%rax)
movl $0xd, %eax
movl $0x30, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
jmp 0x41b53
cmpb $0x6c, 0x28(%rax)
movl $0x2f, %eax
movl $0xc, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
movl $0x13, %eax
movl $0x36, %r12d
jmp 0x41bbd
cmpb $0x72, 0x28(%rax)
movl $0x10, %eax
movl $0x33, %r12d
jmp 0x41bbd
cmpb $0x6c, 0x28(%rax)
movl $0xf, %eax
movl $0x32, %r12d
jmp 0x41bbd
xorl %r12d, %r12d
cmpb $0x72, 0x28(%rax)
sete %r12b
xorl $0x23, %r12d
jmp 0x41bc1
movl $0x1f, %r12d
jmp 0x41bc1
cmpb $0x6c, %al
jmp 0x41bb2
cmpb $0x72, %al
movl $0x6, %eax
movl $0x29, %r12d
cmovel %eax, %r12d
movl %r15d, 0x18(%rbx)
cmpl $0x1a, %r12d
jle 0x41c06
leal -0x1b(%r12), %eax
cmpl $0x6, %eax
ja 0x41c24
leaq 0x296b4(%rip), %rcx     # 0x6b290
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x48(%rbx), %edx
incl %edx
movl %edx, 0x48(%rbx)
andl $0x80000001, %edx       # imm = 0x80000001
movq 0x10(%rbx), %rax
movb 0x28(%rax), %cl
cmpl $0x1, %edx
jne 0x41c39
xorl %edx, %edx
cmpb $0x6c, %cl
jmp 0x41c3e
testl %r12d, %r12d
je 0x41c92
cmpl $0x11, %r12d
jne 0x41c7d
movq 0x10(%rbx), %rax
incl 0x34(%rax)
movl $0x11, %r12d
jmp 0x41c7d
cmpl $0x34, %r12d
jne 0x41c7d
movq 0x10(%rbx), %rax
incl 0x38(%rax)
movl $0x34, %r12d
jmp 0x41c7d
xorl %edx, %edx
cmpb $0x72, %cl
setne %dl
movl %edx, 0x20(%rax)
jmp 0x41c7d
movq 0x10(%rbx), %rax
movb $0x1, 0x118(%rax)
movl $0x1b, %r12d
jmp 0x41c7d
movq 0x10(%rbx), %rax
incl 0x34(%rax)
movl $0x1, 0x20(%rax)
jmp 0x41c77
movq 0x10(%rbx), %rax
incl 0x38(%rax)
movl $0x0, 0x20(%rax)
movl $0x16, %r12d
movq 0x10(%rbx), %rax
movl %r12d, 0x1c(%rax)
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x42357(%rip), %r15     # 0x83ff0
leaq 0x296de(%rip), %rsi     # 0x6b37e
movl $0x11, %edx
movq %r15, %rdi
callq 0x9560
leaq 0x2b4de(%rip), %rsi     # 0x6d192
movl $0x1, %edx
movq %r15, %rdi
callq 0x9560
movq %r15, %rdi
movl $0x79b, %esi            # imm = 0x79B
callq 0x9880
movq %rax, %r15
leaq 0x2977f(%rip), %rsi     # 0x6b457
movl $0x3, %edx
movq %rax, %rdi
callq 0x9560
leaq 0x2975b(%rip), %rsi     # 0x6b447
movl $0x13, %edx
jmp 0x4176e
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x41d12
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x94e0
movq %rbx, %rdi
callq 0x98b0