// File: /workspace/github_c_makefile_star2_O1/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 0x4f56
movq %rsi, %rbx
testq %rsi, %rsi
je 0x4f56
movl %edi, %r14d
cmpl $0x5, 0x448(%rbx)
jne 0x4723
cmpl $0x5, 0x440(%rbx)
jne 0x4723
movl $0x1, %ebp
cmpl $0x5, 0x444(%rbx)
je 0x4bee
movq 0x58b6(%rip), %r15      # 0x9fe0
movq (%r15), %rdi
callq 0x10d0
cmpl $0xb, %r14d
ja 0x4763
movl %r14d, %ecx
leaq 0x1a62(%rip), %rdx      # 0x61a4
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
andl $0xdf, %eax
movl $0x1, %ebp
cmpl $0x51, %eax
jne 0x495c
jmp 0x4bee
movl %eax, %r14d
andl $0xdf, %r14d
cmpl $0x51, %r14d
je 0x499f
cmpl $0x49, %r14d
jne 0x49be
addq $0x40, %rbx
leaq 0x20bc(%rip), %rsi      # 0x6848
movl $0x56, %edx
movq %rbx, %rdi
callq 0x1100
movl $0x7, %ebp
jmp 0x4bee
movsbl %al, %r9d
leal -0x31(%r9), %eax
movl $0x9, %ebp
cmpl $0x1, %eax
ja 0x4bee
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 0x364e
addq $0x10, %rsp
cmpl $0x0, (%r14)
jne 0x47f8
movl $0x0, 0x458(%rbx)
addq $0x40, %rbx
leaq 0x110(%rsp), %rsi
movq %rbx, %rdi
callq 0x1050
movl $0xa, %ebp
jmp 0x4bee
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x499f
andl $0xdf, %eax
movl $0x4, %ebp
jmp 0x4937
movsbl %al, %r9d
leal -0x31(%r9), %eax
movl $0xa, %ebp
cmpl $0x1, %eax
ja 0x4bee
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 0x364e
addq $0x10, %rsp
cmpl $0x0, (%r14)
jne 0x488b
movl $0x0, 0x458(%rbx)
addq $0x40, %rbx
leaq 0x110(%rsp), %rsi
movq %rbx, %rdi
callq 0x1050
movl $0xb, %ebp
jmp 0x4bee
movsbl %al, %r9d
leal -0x31(%r9), %eax
movl $0xb, %ebp
cmpl $0x1, %eax
ja 0x4bee
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 0x364e
addq $0x10, %rsp
cmpl $0x0, (%r14)
jne 0x4901
movl $0x0, 0x458(%rbx)
leaq 0x40(%rbx), %rdi
cmpl $0x1, 0x458(%rbx)
jne 0x4bd8
leaq 0x1e00(%rip), %rsi      # 0x6719
movl $0x68, %edx
jmp 0x4be4
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x499f
andl $0xdf, %eax
movl $0x6, %ebp
cmpl $0x41, %eax
je 0x495c
jmp 0x4bee
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x499f
movl %eax, %ecx
andl $0xdf, %ecx
cmpl $0x49, %ecx
jne 0x4a2b
movw $0x20, 0x40(%rbx)
movl $0x2, %ebp
jmp 0x4bee
movl %eax, %ecx
andb $-0x21, %cl
cmpb $0x51, %cl
je 0x499f
movl %eax, %ecx
andl $0xdf, %ecx
cmpl $0x49, %ecx
jne 0x4ada
movups 0x1cfe(%rip), %xmm0     # 0x668c
movups %xmm0, 0x49(%rbx)
movups 0x1cea(%rip), %xmm0     # 0x6683
movups %xmm0, 0x40(%rbx)
jmp 0x4962
addq $0x40, %rbx
leaq 0x2069(%rip), %rsi      # 0x6a13
movl $0x58, %edx
movq %rbx, %rdi
callq 0x1100
xorl %ebp, %ebp
jmp 0x4bee
cmpb $0x1b, %al
jne 0x4b54
movq (%r15), %rdi
callq 0x10d0
cmpl $0x5b, %eax
jne 0x4b54
movq (%r15), %rdi
callq 0x10d0
movl %eax, %r14d
movq (%rbx), %rdi
xorl %eax, %eax
callq 0x3e57
movl %eax, %ebp
movq (%rbx), %rdi
xorl %eax, %eax
callq 0x3e65
movl %ebp, 0x450(%rbx)
movl %eax, 0x454(%rbx)
movsbl %r14b, %ecx
addl $-0x41, %ecx
cmpl $0x3, %ecx
ja 0x4e62
leaq 0x181d(%rip), %rdx      # 0x6238
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
decl %eax
jmp 0x4de4
movsbl %al, %r14d
addl $-0x30, %r14d
movl $0x7, %ebp
cmpl $0x9, %r14d
ja 0x4bee
movq 0x8(%rbx), %rsi
movq 0x20(%rbx), %rdi
leaq 0x10(%rsp), %rcx
leaq 0xc(%rsp), %r8
movl %r14d, %edx
callq 0x331a
testl %eax, %eax
je 0x4bee
cmpl $0x1, %eax
je 0x4bfe
cmpl $0x6, %eax
jne 0x4f60
movq 0x20(%rbx), %rdi
movq 0x10(%rbx), %rdx
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
movl %r14d, %r8d
callq 0x3239
testl %eax, %eax
je 0x4c83
cmpl $0x2, %eax
je 0x4c61
cmpl $0x1, %eax
jne 0x4f60
movups 0x186a(%rip), %xmm0     # 0x6318
movups %xmm0, 0x60(%rbx)
movups 0x184f(%rip), %xmm0     # 0x6308
movups %xmm0, 0x50(%rbx)
movups 0x1834(%rip), %xmm0     # 0x62f8
movups %xmm0, 0x40(%rbx)
movl $0x2e6574, 0x70(%rbx)   # imm = 0x2E6574
incl 0x440(%rbx)
jmp 0x4bee
movsbl %al, %ecx
addl $-0x30, %ecx
movl $0x8, %ebp
cmpl $0x9, %ecx
ja 0x4bee
movq 0x28(%rbx), %rdi
movq 0x8(%rbx), %rdx
movq 0x20(%rbx), %rsi
leaq 0x10(%rsp), %r8
callq 0x3453
testw %ax, %ax
je 0x4c4a
movzwl %ax, %eax
cmpl $0xb, %eax
je 0x4c30
cmpl $0x1, %eax
jne 0x4f60
leaq 0x1b73(%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 0x4bee
movl $0x2, %ebp
cmpl $0x41, %r14d
jne 0x4bee
movq 0x20(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq (%rbx), %rsi
movq 0x10(%rbx), %r8
leaq 0x10(%rsp), %rcx
callq 0x3055
cmpl $0xb, %eax
ja 0x4f60
movl %eax, %eax
leaq 0x167a(%rip), %rcx      # 0x6208
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1d49(%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 0x2ed8
movl $0x4, %ebp
jmp 0x4bee
leaq 0x1ba2(%rip), %rsi      # 0x6781
movl $0xc7, %edx
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 0x4e9b
leaq 0x15bf(%rip), %rcx      # 0x61d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
addq $0x40, %rbx
leaq 0x1757(%rip), %rsi      # 0x6380
movl $0x7f, %edx
jmp 0x4c40
addq $0x40, %rbx
leaq 0x1a8f(%rip), %rsi      # 0x66ca
movl $0x4f, %edx
movq %rbx, %rdi
callq 0x1100
jmp 0x4bee
movups 0x1a69(%rip), %xmm0     # 0x66ba
movups %xmm0, 0x4f(%rbx)
movups 0x1a4f(%rip), %xmm0     # 0x66ab
jmp 0x4ee4
movups 0x16e3(%rip), %xmm0     # 0x634b
movups %xmm0, 0x5f(%rbx)
movups 0x16c9(%rip), %xmm0     # 0x633c
movups %xmm0, 0x50(%rbx)
movups 0x16ae(%rip), %xmm0     # 0x632c
jmp 0x4ee4
movups 0x16e1(%rip), %xmm0     # 0x636b
movups %xmm0, 0x50(%rbx)
movups 0x16c6(%rip), %xmm0     # 0x635b
movups %xmm0, 0x40(%rbx)
movabsq $0x2e2e2e65726568, %rax # imm = 0x2E2E2E65726568
movq %rax, 0x5d(%rbx)
jmp 0x4bee
addq $0x40, %rbx
leaq 0x1c73(%rip), %rsi      # 0x692a
movl $0x49, %edx
movq %rbx, %rdi
callq 0x1100
movl $0x8, %ebp
jmp 0x4bee
leaq 0x40(%rbx), %rdi
leaq 0x1c9a(%rip), %rsi      # 0x6973
movl $0x4d, %edx
callq 0x1100
movq 0x8(%rbx), %rdi
movl $0x96, %esi
callq 0x4234
incl 0x444(%rbx)
jmp 0x4be9
movq 0x30(%rbx), %rdi
movq (%rbx), %rsi
movq 0x18(%rbx), %rdx
leaq 0x510(%rsp), %rcx
leaq 0x10(%rsp), %r8
callq 0x353a
cmpl $0x1, %eax
jne 0x4d58
leaq 0x1bd1(%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 0x4be9
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 0x364e
addq $0x10, %rsp
leaq 0x40(%rbx), %rdi
cmpl $0x3, %eax
jne 0x4e64
movups 0x1b76(%rip), %xmm0     # 0x691a
movups %xmm0, 0x1d(%rdi)
movups 0x1b5e(%rip), %xmm0     # 0x690d
movups %xmm0, 0x10(%rdi)
movups 0x1b43(%rip), %xmm0     # 0x68fd
movups %xmm0, (%rdi)
jmp 0x4be9
addq $0x40, %rbx
leaq 0x1bf3(%rip), %rsi      # 0x69c0
movl $0x53, %edx
movq %rbx, %rdi
jmp 0x4be4
incl %ebp
jmp 0x4de4
decl %ebp
jmp 0x4de4
incl %eax
movq (%rbx), %rdi
movq 0x10(%rbx), %rcx
leaq 0x110(%rsp), %r8
movl %ebp, %esi
movl %eax, %edx
callq 0x2c4f
testl %eax, %eax
je 0x4962
cmpl $0x2, %eax
je 0x4e1c
cmpl $0x1, %eax
jne 0x4f60
movl $0x3, %ebp
jmp 0x4bee
movq 0x18(%rbx), %rdi
movq (%rbx), %rdx
movq 0x10(%rbx), %rsi
callq 0x2ed8
movq 0x10(%rbx), %rdi
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
callq 0x2fee
movw %ax, 0x44c(%rbx)
addq $0x40, %rbx
testw %ax, %ax
je 0x4e81
leaq 0x1a4b(%rip), %rsi      # 0x689e
movl $0x49, %edx
movq %rbx, %rdi
callq 0x1100
jmp 0x4e91
jmp 0x4dfc
leaq 0x110(%rsp), %rsi
callq 0x1050
incl 0x448(%rbx)
movl $0x9, %ebp
jmp 0x4bee
leaq 0x110(%rsp), %rsi
movq %rbx, %rdi
callq 0x1050
movl $0x5, %ebp
jmp 0x4bee
leaq 0x17d4(%rip), %rsi      # 0x6676
jmp 0x4b29
addq $0x40, %rbx
leaq 0x168b(%rip), %rsi      # 0x653d
movl $0x71, %edx
jmp 0x4c40
movups 0x166a(%rip), %xmm0     # 0x652d
movups %xmm0, 0x6d(%rbx)
movups 0x1652(%rip), %xmm0     # 0x6520
movups %xmm0, 0x60(%rbx)
movups 0x1637(%rip), %xmm0     # 0x6510
movups %xmm0, 0x50(%rbx)
movups 0x161c(%rip), %xmm0     # 0x6500
movups %xmm0, 0x40(%rbx)
jmp 0x4bee
addq $0x40, %rbx
leaq 0x16b6(%rip), %rsi      # 0x65ae
movl $0x73, %edx
jmp 0x4c40
addq $0x40, %rbx
leaq 0x1714(%rip), %rsi      # 0x6621
movl $0x55, %edx
jmp 0x4c40
addq $0x40, %rbx
leaq 0x1596(%rip), %rsi      # 0x64b8
movl $0x48, %edx
jmp 0x4c40
addq $0x40, %rbx
leaq 0x14c8(%rip), %rsi      # 0x63ff
movl $0x76, %edx
jmp 0x4c40
addq $0x40, %rbx
leaq 0x1529(%rip), %rsi      # 0x6475
movl $0x43, %edx
jmp 0x4c40
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x11b0
xorl %edi, %edi
callq 0x11b0
nop