// File: /workspace/github_c_makefile_star2_O3/rafa9811[P]theIndiependenceGame/interact.c
// Function: interact_play
State interact_play(State state, Interact *interact) {
  char choice;
  char name[256], msg[1024], dlg[1024];
  int ret,px,py,correctans=0,id=0;

  if(state>MEETING3||!interact){
      exit(-1);
  }
  
  if(IN(meetings)==5 && IN(boxes)==5 && IN(printers)==5) return QUIT2;

  /*We read the pressed key*/
  choice = fgetc(stdin);
  /*And now depending on our state what we pressed has different effects:*/
  switch (state){
      /*If we have just picked and object. (This state is for erasing from our screen the object we picked)*/
    case(PICK):{
        if(choice=='a'||choice=='A'){
            dialog(" ");
            return NOTHING;
        }
        if(choice=='q'||choice=='Q'){
            goto quit;
        }
        else return PICK;
    }
      /*If we just talked to an NPC.*/
    case(TALK):{
        if(choice=='a'||choice=='A'){
            dialog(" ");
            return NOTHING;
        }
        if(choice=='q'||choice=='Q'){
            goto quit;
        }
        else return TALK;
    }
      /*We just opened the inventory window.*/
    case(INVENTORY):{
      /*We close the inventory window*/
        if(choice=='i'||choice=='I'){
            dialog(" ");
            return NOTHING;
        }
        if(choice=='q'||choice=='Q'){
            goto quit;
        }
      /*We want to use one of our 10 objects.*/
        if(choice>='0'&&choice<='9'){
            ret = bg_use(IN(inventory),IN(stat),choice-'0',name,&id);
            switch(ret){
              /*Using a ballot box*/
                case(B_BOX):{
                    ret = bg_box(IN(inventory),IN(player),IN(map),IN(stat),choice-'0');
                    if(ret == 1){
                        dialog("You placed a ballot box! Now more people will vote.");
                        IN(boxes)++;
                        return INVENTORY;
                    }
                    else if(ret == 2){
                        dialog("You already have one ballot box placed here...");
                        return INVENTORY;
                    }
                    else if(ret == 0){
                        dialog("You can't place a ballot box here...");
                        return INVENTORY;
                    }
                    else exit(0);
                    }
              /*Using another object*/
                case(1):{
                  switch(id){
                    case(3):{
                      dialog("You used the power of fake news to spread your message even more! Everything went better, just take a look at the stats now...");
                      break;
                    }
                    case(7):{
                      dialog("The canvas was meant to cover the Looney Tunes boat all the time! A lot of civil guards got now in. Danger decreased!");
                      break;
                    }
                    case(8):{
                      dialog("As El Pais will suspect, you now have the full control of Twitter!");
                      break;
                    }
                    case(6):{
                      dialog("Thanks to the sacrifice that means wearing this, your danger decreased!");
                      break;
                    }
                    case(5):{
                      dialog("It's impossible to brush that perfect hair! Chaos increased!");
                      break;
                    }
                    case(13):{
                      dialog("You threw the PujolToken to the floor, and from the smoke JordiPujol appeared to give you money. You won 100 Ç!");
                      break;
                    }
                    case(14):{
                      dialog("Your incredibly disgusting supper made angry the civil guard, so they are occupied now tweeting. Danger decreased!");
                      break;
                    }
                    case(15):{
                      dialog("Filling your pockets with sand won't make Catalonia independent. What are you doing?");
                      break;
                    }
                    default:{
                      sprintf(msg,"You used %s.",name);
                      dialog(msg);
                      break;
                    }
                    return INVENTORY;
                  }
                }
                case(0):{
                    return INVENTORY;
                }
                default: exit(0);
            }
        }
        else return INVENTORY;
    }
    /*We interacted with the shop-keeper, so we are in the shop menu:*/
    case(SHOP):{
        /*Closing the shop window*/
        if(choice=='i'||choice=='I'){
            dialog("See you soon, President!");
            return NOTHING;
        }
        if(choice=='q'||choice=='Q'){
            goto quit;
        }
        /*Buying an object*/
        if(choice>='0'&&choice<='9'){
            ret = bg_buy(IN(shop),IN(inventory),IN(stat),choice-'0',name);
            switch(ret){
                case(1):{
                    sprintf(msg,"You bought %s.",name);
                    dialog(msg);
                return SHOP;
                }
                case(0):{
                    dialog("You don't have enough money...");
                    return SHOP;
                }
                case(B_FULL):{
                    dialog("Your inventory is full! Use one of all your objects before buying another one.");
                    return SHOP;
                }
                default: exit(0);
            }
        }
        else return SHOP;
  }
    /*We have just interacted with a lectern, so that we entered in meeting mode, with the game waiting for answering the first question.*/
    case(MEETING1):{
        if(choice>='1'&&choice<='2'){ /*The if is written like this in case of adding more answers per question.*/
          bg_meeting(IN(meeting),IN(player),IN(objects),IN(stat),0,choice-'0',msg,&correctans);
          if(correctans==0)IN(correct)=0;
          dialog(msg);
          return MEETING2;
        }
        else return MEETING1;
    }
    /*In a meeting answering the second question.*/
    case(MEETING2):{
        if(choice>='1'&&choice<='2'){ /*The if is written like this in case of adding more answers per question.*/
          bg_meeting(IN(meeting),IN(player),IN(objects),IN(stat),1,choice-'0',msg,&correctans);
          if(correctans==0)IN(correct)=0;
          dialog(msg);
          return MEETING3;
        }
        else return MEETING2;
    }
    /*Answering the third question*/
    case(MEETING3):{
        if(choice>='1'&&choice<='2'){ /*The if is written like this in case of adding more answers per question.*/
          bg_meeting(IN(meeting),IN(player),IN(objects),IN(stat),2,choice-'0',msg,&correctans);
          if(correctans==0)IN(correct)=0;
          if(IN(correct)==1)dialog("Excelent meeting President! Now your people will keep distracted the civil guard as your chaos went up!");
          else dialog("What have you done? Do you even know yourself? Your meeting has not been good at all, and you know chaos is important so as to keep the civil guard distracted... Next time talk more with the people.");
          return TALK;
        }
        else return MEETING3;
    }
    /*We pressed Q and the game is asking us to confirm by pressing again Q that we'd like to end the game.*/
    case(QUIT1):{
      if(choice=='q' || choice=='Q') return QUIT2;
      else{
          dialog(" ");
          return NOTHING;
      }
    }
    /*The rest of the situations: When we are moving in the city and we can either open the inventory, quit the game, interact with something as well as keep moving*/
    default:{
        if(choice=='q' || choice=='Q') goto quit;
        if(choice=='i' || choice=='I'){
            dialog("Welcome to your inventory! Press I to close it or press a number for using an object.");
            return INVENTORY;
        }
        if (choice == 27 && fgetc(stdin) == '[') { /* The key is an arrow key */
            choice = fgetc(stdin);
            px = player_get_px(IN(player));
            py = player_get_py(IN(player));
            IN(px)=px;
            IN(py)=py;
            switch(choice) {
                case('A'):{ /*Up*/
                    ret = bg_move(IN(player),px,py-1,IN(map),msg);
                    break;
                }
                case('B'):{ /*Down*/
                    ret = bg_move(IN(player),px,py+1,IN(map),msg);
                    break;
                }
                case('C'):{ /*Left*/
                    ret = bg_move(IN(player),px+1,py,IN(map),msg);
                    break;
                }
                case('D'):{ /*Right*/
                    ret = bg_move(IN(player),px-1,py,IN(map),msg);
                    break;
                }
            }
            switch(ret){
                /*We can't move to that position.*/
                case(B_NOTHING):return NOTHING;
                /*We moved in our screen.*/
                case(B_MOVE):return MOVE;
                /*We changed room. Note that we check if the civil guard is in the screen we moved to, so as to initiate a danger clock.*/
                case(B_SCREEN):{
                    bg_updateRoom(IN(objects),IN(map),IN(player));
                    IN(danger)=bg_checkDanger(IN(map),IN(player),IN(stat));
                    if(IN(danger)==0) dialog(msg);
                    else dialog("Watch out! The civil guard will find you if you stay here too much time!");
                    return SCREEN;
                }
                default: exit(0);
            }
        }
        /*We pressed the interact button.*/
        if(choice=='a' || choice=='A'){
            ret = bg_pick(IN(inventory),IN(player),IN(objects),name,IN(map));
            switch(ret){
                /*There's nothing near to us.*/
                case(B_NOTHING):{
                    return NOTHING;
                }
                /*We picked an object.*/
                case(B_PICK):{
                    sprintf(msg,"You picked %s.",name);
                    dialog(msg);
                    bg_updateRoom(IN(objects),IN(map),IN(player));
                    return PICK;
                }
                /*We talked to someone.*/
                case(B_NPC):{
                    ret = bg_talk(IN(dialogs),IN(player),IN(objects),dlg,name);
                    if (ret==1){
                        sprintf(msg,"%s: %s",name,dlg);
                        dialog(msg);
                        return TALK;
                    }
                }
                /*We started a meeting.*/
                case(B_MEETING):{
                  IN(correct)=1;
                    ret = bg_meeting(IN(meeting),IN(player),IN(objects),IN(stat),0,0,msg,&correctans);
                    if(ret == 3){
                      dialog("You've already done this meeting, President!");
                      return TALK;
                    }
                    dialog(msg);
                    IN(meetings)++;
                    return MEETING1;
                }
                /*We interacted with the shopkeeper, so that we open the shop menu.*/
                case(B_SHOP):{
                    dialog("Welcome to the shop! To exit press I, to buy any product press a number.");
                    return SHOP;
                }
                /*We turned on a printer.*/
                case(B_PRINTER):{
                    dialog("You just turned on a printer! Now the people will have more ballots to vote.");
                    stat_add_motivation(IN(stat),PRINTER_MOTIVATION);
                    IN(printers)++;
                    return TALK;
                }
                case(B_FULL):{
                  dialog("Your inventory is full! Use one of all your objects before picking up another one.");
                  return TALK;
                }
                default: exit(0);
            }
        }
        else return NOTHING;
    }

}
    /*Tag for the quit dialog:*/
    quit: dialog("Are you sure you want to quit? Press Q again to quit, press any key to continue playing");
    return QUIT1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x918, %rsp            # imm = 0x918
xorl %eax, %eax
movl %eax, 0x8(%rsp)
movl %eax, 0xc(%rsp)
cmpl $0xb, %edi
ja 0x4f33
movq %rsi, %rbx
testq %rsi, %rsi
je 0x4f33
movl %edi, %r14d
cmpl $0x5, 0x448(%rbx)
jne 0x46f7
cmpl $0x5, 0x440(%rbx)
jne 0x46f7
movl $0x1, %ebp
cmpl $0x5, 0x444(%rbx)
je 0x4bcd
movq 0x58e2(%rip), %r15      # 0x9fe0
movq (%r15), %rdi
callq 0x10d0
cmpl $0xb, %r14d
ja 0x4737
movl %r14d, %ecx
leaq 0x1a8e(%rip), %rdx      # 0x61a4
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
andl $0xdf, %eax
movl $0x1, %ebp
cmpl $0x51, %eax
jne 0x492a
jmp 0x4bcd
movl %eax, %r14d
andl $0xdf, %r14d
cmpl $0x51, %r14d
je 0x496d
cmpl $0x49, %r14d
jne 0x498c
addq $0x40, %rbx
leaq 0x20e8(%rip), %rsi      # 0x6848
movl $0x56, %edx
movq %rbx, %rdi
callq 0x1100
movl $0x7, %ebp
jmp 0x4bcd
movsbl %al, %r9d
leal -0x31(%r9), %eax
movl $0x9, %ebp
cmpl $0x1, %eax
ja 0x4bcd
movq 0x38(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
addl $-0x30, %r9d
leaq 0x8(%rsp), %r14
leaq 0x110(%rsp), %rax
xorl %r8d, %r8d
pushq %r14
pushq %rax
callq 0x365d
addq $0x10, %rsp
cmpl $0x0, (%r14)
jne 0x47cc
movl $0x0, 0x458(%rbx)
addq $0x40, %rbx
leaq 0x110(%rsp), %rsi
movq %rbx, %rdi
callq 0x1050
movl $0xa, %ebp
jmp 0x4bcd
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x496d
andl $0xdf, %eax
movl $0x4, %ebp
jmp 0x4905
movsbl %al, %r9d
leal -0x31(%r9), %eax
movl $0xa, %ebp
cmpl $0x1, %eax
ja 0x4bcd
movq 0x38(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
addl $-0x30, %r9d
leaq 0x8(%rsp), %r14
leaq 0x110(%rsp), %rax
movl $0x1, %r8d
pushq %r14
pushq %rax
callq 0x365d
addq $0x10, %rsp
cmpl $0x0, (%r14)
jne 0x485f
movl $0x0, 0x458(%rbx)
addq $0x40, %rbx
leaq 0x110(%rsp), %rsi
movq %rbx, %rdi
callq 0x1050
movl $0xb, %ebp
jmp 0x4bcd
movsbl %al, %r9d
leal -0x31(%r9), %eax
movl $0xb, %ebp
cmpl $0x1, %eax
ja 0x4bcd
movq 0x38(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
addl $-0x30, %r9d
leaq 0x8(%rsp), %r14
leaq 0x110(%rsp), %rax
movl $0x2, %r8d
pushq %r14
pushq %rax
callq 0x365d
addq $0x10, %rsp
cmpl $0x0, (%r14)
je 0x4ba6
cmpl $0x1, 0x458(%rbx)
jne 0x4bb0
addq $0x40, %rbx
leaq 0x1e32(%rip), %rsi      # 0x6719
movl $0x68, %edx
jmp 0x4bc0
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x496d
andl $0xdf, %eax
movl $0x6, %ebp
cmpl $0x41, %eax
je 0x492a
jmp 0x4bcd
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x496d
movl %eax, %ecx
andl $0xdf, %ecx
cmpl $0x49, %ecx
jne 0x49f9
movw $0x20, 0x40(%rbx)
movl $0x2, %ebp
jmp 0x4bcd
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x496d
movl %eax, %ecx
andl $0xdf, %ecx
cmpl $0x49, %ecx
jne 0x4aa8
movups 0x1d30(%rip), %xmm0     # 0x668c
movups %xmm0, 0x49(%rbx)
movups 0x1d1c(%rip), %xmm0     # 0x6683
movups %xmm0, 0x40(%rbx)
jmp 0x4930
addq $0x40, %rbx
leaq 0x209b(%rip), %rsi      # 0x6a13
movl $0x58, %edx
movq %rbx, %rdi
callq 0x1100
xorl %ebp, %ebp
jmp 0x4bcd
cmpb $0x1b, %al
jne 0x4b22
movq (%r15), %rdi
callq 0x10d0
cmpl $0x5b, %eax
jne 0x4b22
movq (%r15), %rdi
callq 0x10d0
movl %eax, %r14d
movq (%rbx), %rdi
xorl %eax, %eax
callq 0x3dfd
movl %eax, %ebp
movq (%rbx), %rdi
xorl %eax, %eax
callq 0x3e0b
movl %ebp, 0x450(%rbx)
movl %eax, 0x454(%rbx)
movsbl %r14b, %ecx
addl $-0x41, %ecx
cmpl $0x3, %ecx
ja 0x4f3d
leaq 0x184f(%rip), %rdx      # 0x6238
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
decl %eax
jmp 0x4c4a
movsbl %al, %r14d
addl $-0x30, %r14d
movl $0x7, %ebp
cmpl $0x9, %r14d
ja 0x4bcd
movq 0x8(%rbx), %rsi
movq 0x20(%rbx), %rdi
leaq 0x10(%rsp), %rcx
leaq 0xc(%rsp), %r8
movl %r14d, %edx
callq 0x332f
testl %eax, %eax
je 0x4bcd
cmpl $0x1, %eax
je 0x4bdd
cmpl $0x6, %eax
jne 0x4f3d
movq 0x20(%rbx), %rdi
movq 0x10(%rbx), %rdx
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
movl %r14d, %r8d
callq 0x324e
testl %eax, %eax
je 0x4cf1
cmpl $0x2, %eax
je 0x4ccf
cmpl $0x1, %eax
jne 0x4f3d
movups 0x189c(%rip), %xmm0     # 0x6318
movups %xmm0, 0x60(%rbx)
movups 0x1881(%rip), %xmm0     # 0x6308
movups %xmm0, 0x50(%rbx)
movups 0x1866(%rip), %xmm0     # 0x62f8
movups %xmm0, 0x40(%rbx)
movl $0x2e6574, 0x70(%rbx)   # imm = 0x2E6574
incl 0x440(%rbx)
jmp 0x4bcd
movsbl %al, %ecx
addl $-0x30, %ecx
movl $0x8, %ebp
cmpl $0x9, %ecx
ja 0x4bcd
movq 0x28(%rbx), %rdi
movq 0x8(%rbx), %rdx
movq 0x20(%rbx), %rsi
leaq 0x10(%rsp), %r8
callq 0x3468
testw %ax, %ax
je 0x4c29
movzwl %ax, %eax
cmpl $0xb, %eax
je 0x4c0f
cmpl $0x1, %eax
jne 0x4f3d
leaq 0x1ba5(%rip), %rsi      # 0x669c
leaq 0x110(%rsp), %r14
leaq 0x10(%rsp), %rdx
movq %r14, %rdi
xorl %eax, %eax
callq 0x11a0
addq $0x40, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
jmp 0x4bcd
movl $0x2, %ebp
cmpl $0x41, %r14d
jne 0x4bcd
movq 0x20(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq (%rbx), %rsi
movq 0x10(%rbx), %r8
leaq 0x10(%rsp), %rcx
callq 0x303e
cmpl $0xb, %eax
ja 0x4f3d
movl %eax, %eax
leaq 0x16ac(%rip), %rcx      # 0x6208
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1d7b(%rip), %rsi      # 0x68e7
leaq 0x110(%rsp), %r14
leaq 0x10(%rsp), %rdx
movq %r14, %rdi
xorl %eax, %eax
callq 0x11a0
leaq 0x40(%rbx), %rdi
movq %r14, %rsi
callq 0x1050
movq 0x18(%rbx), %rdi
movq (%rbx), %rdx
movq 0x10(%rbx), %rsi
callq 0x2ec1
movl $0x4, %ebp
jmp 0x4bcd
movl $0x0, 0x458(%rbx)
addq $0x40, %rbx
leaq 0x1bc6(%rip), %rsi      # 0x6781
movl $0xc7, %edx
movq %rbx, %rdi
callq 0x1100
movl $0x6, %ebp
movl %ebp, %eax
addq $0x918, %rsp            # imm = 0x918
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl 0xc(%rsp), %eax
addl $-0x3, %eax
cmpl $0xc, %eax
ja 0x4e78
leaq 0x15e0(%rip), %rcx      # 0x61d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
addq $0x40, %rbx
leaq 0x1778(%rip), %rsi      # 0x6380
movl $0x7f, %edx
jmp 0x4c1f
addq $0x40, %rbx
leaq 0x1ab0(%rip), %rsi      # 0x66ca
movl $0x4f, %edx
movq %rbx, %rdi
callq 0x1100
jmp 0x4bcd
movups 0x1a8a(%rip), %xmm0     # 0x66ba
movups %xmm0, 0x4f(%rbx)
movups 0x1a70(%rip), %xmm0     # 0x66ab
jmp 0x4ec1
incl %ebp
jmp 0x4c4a
decl %ebp
jmp 0x4c4a
incl %eax
movq (%rbx), %rdi
movq 0x10(%rbx), %rcx
leaq 0x110(%rsp), %r8
movl %ebp, %esi
movl %eax, %edx
callq 0x2c5c
testl %eax, %eax
je 0x4930
cmpl $0x2, %eax
je 0x4c82
cmpl $0x1, %eax
jne 0x4f3d
movl $0x3, %ebp
jmp 0x4bcd
movq 0x18(%rbx), %rdi
movq (%rbx), %rdx
movq 0x10(%rbx), %rsi
callq 0x2ec1
movq 0x10(%rbx), %rdi
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
callq 0x2fd7
movw %ax, 0x44c(%rbx)
addq $0x40, %rbx
testw %ax, %ax
je 0x4e5e
leaq 0x1be1(%rip), %rsi      # 0x689e
movl $0x49, %edx
movq %rbx, %rdi
callq 0x1100
jmp 0x4e6e
movups 0x1675(%rip), %xmm0     # 0x634b
movups %xmm0, 0x5f(%rbx)
movups 0x165b(%rip), %xmm0     # 0x633c
movups %xmm0, 0x50(%rbx)
movups 0x1640(%rip), %xmm0     # 0x632c
jmp 0x4ec1
movups 0x1673(%rip), %xmm0     # 0x636b
movups %xmm0, 0x50(%rbx)
movups 0x1658(%rip), %xmm0     # 0x635b
movups %xmm0, 0x40(%rbx)
movabsq $0x2e2e2e65726568, %rax # imm = 0x2E2E2E65726568
movq %rax, 0x5d(%rbx)
jmp 0x4bcd
addq $0x40, %rbx
leaq 0x1c05(%rip), %rsi      # 0x692a
movl $0x49, %edx
movq %rbx, %rdi
callq 0x1100
movl $0x8, %ebp
jmp 0x4bcd
leaq 0x40(%rbx), %rdi
leaq 0x1c2c(%rip), %rsi      # 0x6973
movl $0x4d, %edx
callq 0x1100
movq 0x8(%rbx), %rdi
movl $0x96, %esi
callq 0x41e5
incl 0x444(%rbx)
jmp 0x4bc8
movq 0x30(%rbx), %rdi
movq (%rbx), %rsi
movq 0x18(%rbx), %rdx
leaq 0x510(%rsp), %rcx
leaq 0x10(%rsp), %r8
callq 0x3549
cmpl $0x1, %eax
jne 0x4dc6
leaq 0x1b63(%rip), %rsi      # 0x68f6
leaq 0x110(%rsp), %r14
leaq 0x10(%rsp), %rdx
leaq 0x510(%rsp), %rcx
movq %r14, %rdi
xorl %eax, %eax
callq 0x11a0
addq $0x40, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1050
jmp 0x4bc8
movl $0x1, 0x458(%rbx)
movq 0x38(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
leaq 0x8(%rsp), %rax
leaq 0x110(%rsp), %r10
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %rax
pushq %r10
callq 0x365d
addq $0x10, %rsp
leaq 0x40(%rbx), %rdi
cmpl $0x3, %eax
jne 0x4e41
movups 0x1b0c(%rip), %xmm0     # 0x691a
movups %xmm0, 0x1d(%rdi)
movups 0x1af4(%rip), %xmm0     # 0x690d
movups %xmm0, 0x10(%rdi)
movups 0x1ad9(%rip), %xmm0     # 0x68fd
movups %xmm0, (%rdi)
jmp 0x4bc8
addq $0x40, %rbx
leaq 0x1b89(%rip), %rsi      # 0x69c0
movl $0x53, %edx
jmp 0x4bc0
leaq 0x110(%rsp), %rsi
callq 0x1050
incl 0x448(%rbx)
movl $0x9, %ebp
jmp 0x4bcd
leaq 0x110(%rsp), %rsi
movq %rbx, %rdi
callq 0x1050
movl $0x5, %ebp
jmp 0x4bcd
leaq 0x17f7(%rip), %rsi      # 0x6676
jmp 0x4af7
addq $0x40, %rbx
leaq 0x16ae(%rip), %rsi      # 0x653d
movl $0x71, %edx
jmp 0x4c1f
movups 0x168d(%rip), %xmm0     # 0x652d
movups %xmm0, 0x6d(%rbx)
movups 0x1675(%rip), %xmm0     # 0x6520
movups %xmm0, 0x60(%rbx)
movups 0x165a(%rip), %xmm0     # 0x6510
movups %xmm0, 0x50(%rbx)
movups 0x163f(%rip), %xmm0     # 0x6500
movups %xmm0, 0x40(%rbx)
jmp 0x4bcd
addq $0x40, %rbx
leaq 0x16d9(%rip), %rsi      # 0x65ae
movl $0x73, %edx
jmp 0x4c1f
addq $0x40, %rbx
leaq 0x1737(%rip), %rsi      # 0x6621
movl $0x55, %edx
jmp 0x4c1f
addq $0x40, %rbx
leaq 0x15b9(%rip), %rsi      # 0x64b8
movl $0x48, %edx
jmp 0x4c1f
addq $0x40, %rbx
leaq 0x14eb(%rip), %rsi      # 0x63ff
movl $0x76, %edx
jmp 0x4c1f
addq $0x40, %rbx
leaq 0x154c(%rip), %rsi      # 0x6475
movl $0x43, %edx
jmp 0x4c1f
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x11b0
xorl %edi, %edi
callq 0x11b0