// File: /workspace/github_c_makefile_star2_O0/zenkj[P]luajit-arm64/src/host/minilua.c
// Function: luaK_posfix
static void luaK_posfix(FuncState*fs,BinOpr op,expdesc*e1,expdesc*e2){
switch(op){
case OPR_AND:{
luaK_dischargevars(fs,e2);
luaK_concat(fs,&e2->f,e1->f);
*e1=*e2;
break;
}
case OPR_OR:{
luaK_dischargevars(fs,e2);
luaK_concat(fs,&e2->t,e1->t);
*e1=*e2;
break;
}
case OPR_CONCAT:{
luaK_exp2val(fs,e2);
if(e2->k==VRELOCABLE&&GET_OPCODE(getcode(fs,e2))==OP_CONCAT){
freeexp(fs,e1);
SETARG_B(getcode(fs,e2),e1->u.s.info);
e1->k=VRELOCABLE;e1->u.s.info=e2->u.s.info;
}
else{
luaK_exp2nextreg(fs,e2);
codearith(fs,OP_CONCAT,e1,e2);
}
break;
}
case OPR_ADD:codearith(fs,OP_ADD,e1,e2);break;
case OPR_SUB:codearith(fs,OP_SUB,e1,e2);break;
case OPR_MUL:codearith(fs,OP_MUL,e1,e2);break;
case OPR_DIV:codearith(fs,OP_DIV,e1,e2);break;
case OPR_MOD:codearith(fs,OP_MOD,e1,e2);break;
case OPR_POW:codearith(fs,OP_POW,e1,e2);break;
case OPR_EQ:codecomp(fs,OP_EQ,1,e1,e2);break;
case OPR_NE:codecomp(fs,OP_EQ,0,e1,e2);break;
case OPR_LT:codecomp(fs,OP_LT,1,e1,e2);break;
case OPR_LE:codecomp(fs,OP_LE,1,e1,e2);break;
case OPR_GT:codecomp(fs,OP_LT,0,e1,e2);break;
case OPR_GE:codecomp(fs,OP_LE,0,e1,e2);break;
default:;
}
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl %esi, 0x1c(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
movl 0x1c(%rsp), %eax
movq %rax, (%rsp)
subq $0xe, %rax
ja 0x15e9a
movq (%rsp), %rax
leaq 0xc6f4(%rip), %rcx      # 0x22298
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x161b0
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
addq $0x14, %rsi
movq 0x10(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x15220
movq 0x10(%rsp), %rax
movq 0x8(%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x161b0
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
addq $0x10, %rsi
movq 0x10(%rsp), %rax
movl 0x10(%rax), %edx
callq 0x15220
movq 0x10(%rsp), %rax
movq 0x8(%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x17550
movq 0x8(%rsp), %rax
cmpl $0xb, (%rax)
jne 0x15cff
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rsp), %rcx
movslq 0x8(%rcx), %rcx
movl (%rax,%rcx,4), %eax
shrl $0x0, %eax
andl $0x3f, %eax
cmpl $0x15, %eax
jne 0x15cff
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x17140
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rsp), %rcx
movslq 0x8(%rcx), %rcx
movl (%rax,%rcx,4), %edx
andl $0x7fffff, %edx         # imm = 0x7FFFFF
movq 0x10(%rsp), %rax
movl 0x8(%rax), %eax
shll $0x17, %eax
andl $0xff800000, %eax       # imm = 0xFF800000
orl %eax, %edx
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rsp), %rcx
movslq 0x8(%rcx), %rcx
movl %edx, (%rax,%rcx,4)
movq 0x10(%rsp), %rax
movl $0xb, (%rax)
movq 0x8(%rsp), %rax
movl 0x8(%rax), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x8(%rax)
jmp 0x15d27
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x16470
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0x15, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0xc, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0xd, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0xe, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0xf, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0x10, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
movl $0x11, %esi
callq 0x15f90
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x17, %esi
movl $0x1, %edx
callq 0x193c0
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x17, %esi
xorl %edx, %edx
callq 0x193c0
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x18, %esi
movl $0x1, %edx
callq 0x193c0
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x19, %esi
movl $0x1, %edx
callq 0x193c0
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x18, %esi
xorl %edx, %edx
callq 0x193c0
jmp 0x15e9c
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x19, %esi
xorl %edx, %edx
callq 0x193c0
jmp 0x15e9c
jmp 0x15e9c
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)