// File: besm6[P]pascal-re/pascompl.cc
// Function: genFullExpr::genBoolAnd()
void genBoolAnd() {
        bool arg1Neg, arg2Neg;
        int64_t l5var3z, l5var4z, l5var5z, l5var6z, l5var7z;
        InsnList * l5ins8z;
        Word l5var9z;

        if (arg1Const) {
            if (arg1Val.ii)
              insnList = otherIns;
        } else if (arg2Const) {
            if (not arg2Val.ii)
                insnList = otherIns;
        } else {
            arg1Neg = insnList->regsused.has(16);
            arg2Neg = otherIns->regsused.has(16);
            l5var5z = int94z;
            int94z = int94z + 1;
            bool49z = false;
            l5var6z = arg1Neg + macro;
            l5var7z = arg2Neg + macro;
            if (insnList->ilm == il3) {
                l5var3z = insnList->ilf5.i;
            } else {
                l5var3z = 0;
                prepLoad();
            }
            if (otherIns->ilm == il3) {
                l5var4z = otherIns->ilf5.i;
            } else {
                l5var4z = 0;
            }
            l5var9z.m = (insnList->regsused + otherIns->regsused);
            if (l5var3z == 0) {
                if (l5var4z == 0) {
                    addInsnAndOffset(l5var6z, l5var5z);
                    l5ins8z = insnList;
                    insnList = otherIns;
                    prepLoad();
                    addInsnAndOffset(l5var7z, l5var5z);
                } else {
                    if (arg2Neg) {
                        addInsnAndOffset(l5var6z, l5var5z);
                        l5ins8z = insnList;
                        insnList = otherIns;
                        addInsnAndOffset(macro + 2,
                                         010000 * l5var5z + l5var4z);
                    } else {
                        addInsnAndOffset(l5var6z, l5var4z);
                        l5var5z = l5var4z;
                        l5ins8z = insnList;
                        insnList = otherIns;
                    }
                }
            } else {
                if (l5var4z == 0) {
                    if (arg1Neg) {
                        addInsnAndOffset(macro + 2,
                                         010000 * l5var5z + l5var3z);
                        l5ins8z = insnList;
                        insnList = otherIns;
                        prepLoad();
                        addInsnAndOffset(l5var7z, l5var5z);
                    } else {
                        l5ins8z = insnList;
                        insnList = otherIns;
                        prepLoad();
                        addInsnAndOffset(l5var7z, l5var3z);
                        l5var5z = l5var3z;
                    }
                } else {
                    if (arg1Neg) {
                        if (arg2Neg) {
                            addInsnAndOffset(macro + 2,
                                             010000 * l5var5z + l5var3z);
                            l5ins8z = insnList;
                            insnList = otherIns;
                            addInsnAndOffset(macro + 2,
                                             010000 * l5var5z + l5var4z);
                        } else {
                            addInsnAndOffset(macro + 2,
                                             010000 * l5var4z + l5var3z);
                            l5ins8z = insnList;
                            insnList = otherIns;
                            l5var5z = l5var4z;
                        }
                    } else {
                        l5ins8z = insnList;
                        insnList = otherIns;
                        l5var5z = l5var3z;
                        if (arg2Neg)
                            addInsnAndOffset(macro + 2,
                                             010000 * l5var3z + l5var4z);
                        else
                            addInsnAndOffset(macro + 3,
                                             010000 * l5var3z + l5var4z);
                    }
                }
            }
            insnList->regsused = l5var9z.m - Bits(16);
            l5ins8z->next->next = insnList->next2;
            insnList->next2 = l5ins8z->next2;
            insnList->ilm = il3;
            insnList->ilf5.i = l5var5z;
            bool49z = true;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
testb $0x1, 0x8(%rax)
je 0x20fcc
movq -0x70(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x20fc7
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x5f1a1(%rip)     # 0x80168
jmp 0x213cf
movq -0x70(%rbp), %rax
testb $0x1, 0x9(%rax)
je 0x20ff5
movq -0x70(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x20ff0
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x5f178(%rip)     # 0x80168
jmp 0x213cd
movq 0x5f16c(%rip), %rdi     # 0x80168
addq $0x18, %rdi
movl $0x10, %esi
callq 0x1e5f0
movb %al, %cl
movq -0x70(%rbp), %rax
andb $0x1, %cl
movb %cl, -0x9(%rbp)
movq 0x10(%rax), %rdi
addq $0x18, %rdi
movl $0x10, %esi
callq 0x1e5f0
andb $0x1, %al
movb %al, -0xa(%rbp)
movq 0x5efdc(%rip), %rax     # 0x80010
movq %rax, -0x28(%rbp)
movq 0x5efd1(%rip), %rax     # 0x80010
addq $0x1, %rax
movq %rax, 0x5efc6(%rip)     # 0x80010
movb $0x0, 0x5ee69(%rip)     # 0x7feba
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
addq $0x1000000, %rax        # imm = 0x1000000
movq %rax, -0x30(%rbp)
movb -0xa(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
addq $0x1000000, %rax        # imm = 0x1000000
movq %rax, -0x38(%rbp)
movq 0x5f0ec(%rip), %rax     # 0x80168
cmpl $0x3, 0x20(%rax)
jne 0x21098
movq 0x5f0df(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x1dfb0
movq %rax, -0x18(%rbp)
jmp 0x210a5
movq $0x0, -0x18(%rbp)
callq 0xbd10
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x3, 0x20(%rax)
jne 0x210ca
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x28, %rdi
callq 0x1dfb0
movq %rax, -0x20(%rbp)
jmp 0x210d2
movq $0x0, -0x20(%rbp)
movq -0x70(%rbp), %rax
movq 0x5f08b(%rip), %rdi     # 0x80168
addq $0x18, %rdi
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rsi
callq 0x1db20
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x211ca
cmpq $0x0, -0x20(%rbp)
jne 0x2114f
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0xbc40
movq -0x70(%rbp), %rax
movq 0x5f03c(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5f02d(%rip)     # 0x80168
callq 0xbd10
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0xbc40
jmp 0x211c5
testb $0x1, -0xa(%rbp)
je 0x21194
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0xbc40
movq -0x70(%rbp), %rax
movq 0x5effb(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5efec(%rip)     # 0x80168
movq -0x28(%rbp), %rsi
shlq $0xc, %rsi
addq -0x20(%rbp), %rsi
movl $0x1000002, %edi        # imm = 0x1000002
callq 0xbc40
jmp 0x211c3
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xbc40
movq -0x70(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, -0x28(%rbp)
movq 0x5efb4(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5efa5(%rip)     # 0x80168
jmp 0x211c5
jmp 0x21346
cmpq $0x0, -0x20(%rbp)
jne 0x21258
testb $0x1, -0x9(%rbp)
je 0x2121f
movq -0x28(%rbp), %rsi
shlq $0xc, %rsi
addq -0x18(%rbp), %rsi
movl $0x1000002, %edi        # imm = 0x1000002
callq 0xbc40
movq -0x70(%rbp), %rax
movq 0x5ef6c(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5ef5d(%rip)     # 0x80168
callq 0xbd10
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0xbc40
jmp 0x21253
movq -0x70(%rbp), %rax
movq 0x5ef3e(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5ef2f(%rip)     # 0x80168
callq 0xbd10
movq -0x38(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xbc40
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x21344
testb $0x1, -0x9(%rbp)
je 0x212ea
testb $0x1, -0xa(%rbp)
je 0x212b0
movq -0x28(%rbp), %rsi
shlq $0xc, %rsi
addq -0x18(%rbp), %rsi
movl $0x1000002, %edi        # imm = 0x1000002
callq 0xbc40
movq -0x70(%rbp), %rax
movq 0x5eedf(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5eed0(%rip)     # 0x80168
movq -0x28(%rbp), %rsi
shlq $0xc, %rsi
addq -0x20(%rbp), %rsi
movl $0x1000002, %edi        # imm = 0x1000002
callq 0xbc40
jmp 0x212e8
movq -0x20(%rbp), %rsi
shlq $0xc, %rsi
addq -0x18(%rbp), %rsi
movl $0x1000002, %edi        # imm = 0x1000002
callq 0xbc40
movq -0x70(%rbp), %rax
movq 0x5ee97(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5ee88(%rip)     # 0x80168
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x21342
movq -0x70(%rbp), %rax
movq 0x5ee73(%rip), %rcx     # 0x80168
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, 0x5ee64(%rip)     # 0x80168
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
testb $0x1, -0xa(%rbp)
je 0x2132a
movq -0x18(%rbp), %rsi
shlq $0xc, %rsi
addq -0x20(%rbp), %rsi
movl $0x1000002, %edi        # imm = 0x1000002
callq 0xbc40
jmp 0x21340
movq -0x18(%rbp), %rsi
shlq $0xc, %rsi
addq -0x20(%rbp), %rsi
movl $0x1000003, %edi        # imm = 0x1000003
callq 0xbc40
jmp 0x21342
jmp 0x21344
jmp 0x21346
leaq -0x48(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x10, %edi
callq 0x48e0
movq -0x78(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
callq 0x1e4e0
movq %rax, -0x60(%rbp)
movq 0x5edf4(%rip), %rax     # 0x80168
movq -0x60(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq 0x5ede5(%rip), %rax     # 0x80168
movq 0x8(%rax), %rcx
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq %rcx, (%rax)
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rcx
movq 0x5edc8(%rip), %rax     # 0x80168
movq %rcx, 0x8(%rax)
movq 0x5edbd(%rip), %rax     # 0x80168
movl $0x3, 0x20(%rax)
movq -0x28(%rbp), %rsi
movq 0x5edab(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x4ad0
movb $0x1, 0x5eaed(%rip)     # 0x7feba
jmp 0x213cf
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax,%rax)