#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef unsigned long op_code;

/* Variables and functions */
int /*<<< orphan*/ _regname(unsigned long);
int /*<<< orphan*/ decode_diadic_parallel_addressing(long, char *, char *);
int /*<<< orphan*/ decode_indirect_address(unsigned long, unsigned long, int);
int /*<<< orphan*/ decode_triadic_parallel_addressing(long, char *, char *);
int /*<<< orphan*/ myprint(char *, ...);
int /*<<< orphan*/ new_line();
int /*<<< orphan*/ pad_to(int);
void decode_parallel_op(long int op_code) {
  unsigned long field1;
  unsigned long field2;
  unsigned long field3;
  unsigned long field4;
  unsigned long field5;
  field1 = (op_code)&0xff;
  field2 = (op_code >> 8) & 0xff;
  field3 = (op_code >> 16) & 0x07;
  field4 = (op_code >> 19) & 0x07;
  field5 = (op_code >> 22) & 0x07;
  switch ((op_code >> 25) & 0x1f) {
  case 0x00L:
    if (field4 != 0) {
      return;
    }
    myprint("STF");
    pad_to(10);
    myprint("%s, ", _regname(field5));
    decode_indirect_address(field1 >> 3, field1 & 7, 1);
    new_line();
    pad_to(39);
    myprint("|| STF");
    pad_to(39 + 10);
    myprint("%s, ", _regname(field3));
    decode_indirect_address(field2 >> 3, field2 & 7, 1);
    break;
  case 0x01L:
    if (field4 != 0) {
      return;
    }
    myprint("STI");
    pad_to(10);
    myprint("%s, ", _regname(field5));
    decode_indirect_address(field1 >> 3, field1 & 7, 1);
    new_line();
    pad_to(39);
    myprint("|| STI");
    pad_to(39 + 10);
    myprint("%s, ", _regname(field3));
    decode_indirect_address(field2 >> 3, field2 & 7, 1);
    break;
  case 0x02L:
    if (field3 != 0) {
      return;
    }
    myprint("LDF");
    pad_to(10);
    decode_indirect_address(field1 >> 3, field1 & 7, 1);
    myprint(", %s", _regname(field5));
    new_line();
    pad_to(39);
    myprint("|| LDF");
    pad_to(39 + 10);
    decode_indirect_address(field2 >> 3, field2 & 7, 1);
    myprint(", %s", _regname(field4));
    break;
  case 0x03L:
    if (field3 != 0) {
      return;
    }
    myprint("LDI");
    pad_to(10);
    decode_indirect_address(field1 >> 3, field1 & 7, 1);
    myprint(", %s", _regname(field5));
    new_line();
    pad_to(39);
    myprint("|| LDI");
    pad_to(39 + 10);
    decode_indirect_address(field2 >> 3, field2 & 7, 1);
    myprint(", %s", _regname(field4));
    break;
  case 0x04L:
    decode_diadic_parallel_addressing(op_code, "ABSF", "STF");
    break;
  case 0x05L:
    decode_diadic_parallel_addressing(op_code, "ABSI", "STI");
    break;
  case 0x06L:
    decode_triadic_parallel_addressing(op_code, "ADDF3", "STF");
    break;
  case 0x07L:
    decode_triadic_parallel_addressing(op_code, "ADDI3", "STI");
    break;
  case 0x08L:
    decode_triadic_parallel_addressing(op_code, "AND3", "STI");
    break;
  case 0x09L:
    decode_triadic_parallel_addressing(op_code, "ASH3", "STI");
    break;
  case 0x0aL:
    decode_diadic_parallel_addressing(op_code, "FIX", "STI");
    break;
  case 0x0bL:
    decode_diadic_parallel_addressing(op_code, "FLOAT", "STF");
    break;
  case 0x0cL:
    decode_diadic_parallel_addressing(op_code, "LDF", "STF");
    break;
  case 0x0dL:
    decode_diadic_parallel_addressing(op_code, "LDI", "STI");
    break;
  case 0x0eL:
    decode_triadic_parallel_addressing(op_code, "LSH3", "STI");
    break;
  case 0x0fL:
    decode_triadic_parallel_addressing(op_code, "MPYF3", "STF");
    break;
  case 0x10L:
    decode_triadic_parallel_addressing(op_code, "MPYI3", "STI");
    break;
  case 0x11L:
    decode_diadic_parallel_addressing(op_code, "NEGF", "STF");
    break;
  case 0x12L:
    decode_diadic_parallel_addressing(op_code, "NEGI", "STI");
    break;
  case 0x13L:
    decode_diadic_parallel_addressing(op_code, "NOT", "STI");
    break;
  case 0x14L:
    decode_triadic_parallel_addressing(op_code, "OR3", "STI");
    break;
  case 0x15L:
    decode_triadic_parallel_addressing(op_code, "SUBF3", "STF");
    break;
  case 0x16L:
    decode_triadic_parallel_addressing(op_code, "SUBI3", "STI");
    break;
  case 0x17L:
    decode_triadic_parallel_addressing(op_code, "XOR3", "STI");
    break;
  case 0x18L:
    decode_diadic_parallel_addressing(op_code, "TOIEEE", "STF");
    break;
  case 0x19L:
    decode_diadic_parallel_addressing(op_code, "FRIEEE", "STF");
    break;
  default:
    return;
  }
  return;
}


x86 assembly (clang, -O0):
<decode_parallel_op>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
movzbl -0x8(%rbp),%eax
mov    %rax,-0x10(%rbp)
movzbl -0x7(%rbp),%eax
mov    %rax,-0x18(%rbp)
movzwl -0x6(%rbp),%eax
and    $0x7,%eax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x13,%eax
and    $0x7,%eax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x16,%eax
and    $0x7,%eax
mov    %rax,-0x30(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x19,%eax
and    $0x1f,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x19,%eax
ja     1735 <decode_parallel_op+0x5c5>
mov    -0x38(%rbp),%rax
lea    0xe2c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpq   $0x0,-0x28(%rbp)
je     11ed <decode_parallel_op+0x7d>
jmp    173f <decode_parallel_op+0x5cf>
lea    0xe7c(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
mov    -0x30(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xe51(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    -0x10(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x10(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    $0x0,%al
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xe1d(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0x31,%edi
call   1070 <pad_to@plt>
mov    -0x20(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xdf5(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    -0x18(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x18(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
jmp    173a <decode_parallel_op+0x5ca>
cmpq   $0x0,-0x28(%rbp)
je     12a9 <decode_parallel_op+0x139>
jmp    173f <decode_parallel_op+0x5cf>
lea    0xdc7(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
mov    -0x30(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xd95(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    -0x10(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x10(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    $0x0,%al
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xd68(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0x31,%edi
call   1070 <pad_to@plt>
mov    -0x20(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xd39(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    -0x18(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x18(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
jmp    173a <decode_parallel_op+0x5ca>
cmpq   $0x0,-0x20(%rbp)
je     1365 <decode_parallel_op+0x1f5>
jmp    173f <decode_parallel_op+0x5cf>
lea    0xd17(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
mov    -0x10(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x10(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    -0x30(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xcd2(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0x0,%al
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xcb8(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0x31,%edi
call   1070 <pad_to@plt>
mov    -0x18(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x18(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    -0x28(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xc76(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
jmp    173a <decode_parallel_op+0x5ca>
cmpq   $0x0,-0x20(%rbp)
je     1421 <decode_parallel_op+0x2b1>
jmp    173f <decode_parallel_op+0x5cf>
lea    0xc62(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
mov    -0x10(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x10(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    -0x30(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xc16(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0x0,%al
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xc03(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
mov    $0x31,%edi
call   1070 <pad_to@plt>
mov    -0x18(%rbp),%rdi
shr    $0x3,%rdi
mov    -0x18(%rbp),%rsi
and    $0x7,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    -0x28(%rbp),%rdi
call   1060 <_regname@plt>
mov    %eax,%esi
lea    0xbba(%rip),%rdi
mov    $0x0,%al
call   1040 <myprint@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xbb6(%rip),%rsi
lea    0xb91(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb9f(%rip),%rsi
lea    0xb7c(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb88(%rip),%rsi
lea    0xb59(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb72(%rip),%rsi
lea    0xb44(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb5c(%rip),%rsi
lea    0xb28(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb45(%rip),%rsi
lea    0xb0c(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb2e(%rip),%rsi
lea    0xaf0(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xb16(%rip),%rsi
lea    0xacd(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xacb(%rip),%rsi
lea    0xab1(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xab6(%rip),%rsi
lea    0xa9c(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xac8(%rip),%rsi
lea    0xa80(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xab1(%rip),%rsi
lea    0xa5d(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa9b(%rip),%rsi
lea    0xa48(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa85(%rip),%rsi
lea    0xa25(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa6e(%rip),%rsi
lea    0xa10(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa57(%rip),%rsi
lea    0x9f4(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa4c(%rip),%rsi
lea    0x9d8(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa23(%rip),%rsi
lea    0x9b5(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0xa0d(%rip),%rsi
lea    0x9a0(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0x9f7(%rip),%rsi
lea    0x984(%rip),%rdx
call   1050 <decode_triadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0x9e0(%rip),%rsi
lea    0x961(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
mov    -0x8(%rbp),%rdi
lea    0x9cb(%rip),%rsi
lea    0x945(%rip),%rdx
call   1090 <decode_diadic_parallel_addressing@plt>
jmp    173a <decode_parallel_op+0x5ca>
jmp    173f <decode_parallel_op+0x5cf>
jmp    173f <decode_parallel_op+0x5cf>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<decode_parallel_op>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%rbp
mov    %ebp,%eax
shr    $0x19,%eax
and    $0x1f,%eax
cmp    $0x19,%eax
ja     136d <decode_parallel_op+0x1fd>
movzbl %bpl,%r13d
mov    %rbp,%r15
shr    $0x8,%r15
movzbl %r15b,%edx
mov    %ebp,%r14d
shr    $0x10,%r14d
and    $0x7,%r14d
mov    %ebp,%r12d
shr    $0x13,%r12d
and    $0x7,%r12d
mov    %ebp,%ebx
shr    $0x16,%ebx
and    $0x7,%ebx
lea    0xe3d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
test   %r12,%r12
jne    136d <decode_parallel_op+0x1fd>
mov    %rdx,%r12
lea    0xe91(%rip),%rdi
xor    %eax,%eax
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
mov    %rbx,%rdi
call   1060 <_regname@plt>
lea    0xe69(%rip),%rbx
mov    %rbx,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <myprint@plt>
shr    $0x3,%r13
and    $0x7,%ebp
mov    %r13,%rdi
mov    %rbp,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
xor    %eax,%eax
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xe33(%rip),%rdi
jmp    12aa <decode_parallel_op+0x13a>
test   %r12,%r12
jne    136d <decode_parallel_op+0x1fd>
mov    %rdx,%r12
lea    0xe28(%rip),%rdi
xor    %eax,%eax
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
mov    %rbx,%rdi
call   1060 <_regname@plt>
lea    0xdf9(%rip),%rbx
mov    %rbx,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <myprint@plt>
shr    $0x3,%r13
and    $0x7,%ebp
mov    %r13,%rdi
mov    %rbp,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
xor    %eax,%eax
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xdca(%rip),%rdi
xor    %eax,%eax
call   1040 <myprint@plt>
mov    $0x31,%edi
call   1070 <pad_to@plt>
mov    %r14,%rdi
call   1060 <_regname@plt>
mov    %rbx,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <myprint@plt>
shr    $0x3,%r12
and    $0x7,%r15d
mov    %r12,%rdi
mov    %r15,%rsi
mov    $0x1,%edx
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1080 <decode_indirect_address@plt>
test   %r14,%r14
jne    136d <decode_parallel_op+0x1fd>
mov    %rdx,%r14
lea    0xd7f(%rip),%rdi
xor    %eax,%eax
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
shr    $0x3,%r13
and    $0x7,%ebp
mov    %r13,%rdi
mov    %rbp,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    %rbx,%rdi
call   1060 <_regname@plt>
lea    0xd40(%rip),%rbx
mov    %rbx,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <myprint@plt>
xor    %eax,%eax
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xd21(%rip),%rdi
jmp    1525 <decode_parallel_op+0x3b5>
test   %r14,%r14
je     14c0 <decode_parallel_op+0x350>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xd0b(%rip),%rsi
jmp    14a3 <decode_parallel_op+0x333>
lea    0xd04(%rip),%rsi
lea    0xce1(%rip),%rdx
jmp    14aa <decode_parallel_op+0x33a>
lea    0xcf6(%rip),%rsi
jmp    145d <decode_parallel_op+0x2ed>
lea    0xcf0(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xcea(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xce3(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xcdc(%rip),%rsi
lea    0xc9e(%rip),%rdx
jmp    14aa <decode_parallel_op+0x33a>
lea    0xccd(%rip),%rsi
jmp    14a3 <decode_parallel_op+0x333>
lea    0xc92(%rip),%rsi
jmp    14a3 <decode_parallel_op+0x333>
lea    0xc8d(%rip),%rsi
lea    0xc73(%rip),%rdx
jmp    14aa <decode_parallel_op+0x33a>
lea    0xca8(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xca4(%rip),%rsi
jmp    145d <decode_parallel_op+0x2ed>
lea    0xca1(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xc9e(%rip),%rsi
jmp    14a3 <decode_parallel_op+0x333>
lea    0xc9a(%rip),%rsi
lea    0xc3c(%rip),%rdx
jmp    14aa <decode_parallel_op+0x33a>
lea    0xc8f(%rip),%rsi
lea    0xc2c(%rip),%rdx
jmp    14aa <decode_parallel_op+0x33a>
lea    0xc90(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xc7a(%rip),%rsi
lea    0xc0c(%rip),%rdx
jmp    147d <decode_parallel_op+0x30d>
lea    0xc70(%rip),%rsi
jmp    1476 <decode_parallel_op+0x306>
lea    0xc6d(%rip),%rsi
lea    0xbfa(%rip),%rdx
mov    %rbp,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <decode_triadic_parallel_addressing@plt>
lea    0xc4e(%rip),%rsi
jmp    14a3 <decode_parallel_op+0x333>
lea    0xc4c(%rip),%rsi
lea    0xbc6(%rip),%rdx
mov    %rbp,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1090 <decode_diadic_parallel_addressing@plt>
mov    %rdx,%r14
lea    0xbc0(%rip),%rdi
xor    %eax,%eax
call   1040 <myprint@plt>
mov    $0xa,%edi
call   1070 <pad_to@plt>
shr    $0x3,%r13
and    $0x7,%ebp
mov    %r13,%rdi
mov    %rbp,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    %rbx,%rdi
call   1060 <_regname@plt>
lea    0xb7a(%rip),%rbx
mov    %rbx,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <myprint@plt>
xor    %eax,%eax
call   1030 <new_line@plt>
mov    $0x27,%edi
call   1070 <pad_to@plt>
lea    0xb62(%rip),%rdi
xor    %eax,%eax
call   1040 <myprint@plt>
mov    $0x31,%edi
call   1070 <pad_to@plt>
shr    $0x3,%r14
and    $0x7,%r15d
mov    %r14,%rdi
mov    %r15,%rsi
mov    $0x1,%edx
call   1080 <decode_indirect_address@plt>
mov    %r12,%rdi
call   1060 <_regname@plt>
mov    %rbx,%rdi
mov    %eax,%esi
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <myprint@plt>

LLVM IR (-O0):
@.str = [4 x i8] c"STF\00"
@.str.1 = [5 x i8] c"%s, \00"
@.str.2 = [7 x i8] c"|| STF\00"
@.str.3 = [4 x i8] c"STI\00"
@.str.4 = [7 x i8] c"|| STI\00"
@.str.5 = [4 x i8] c"LDF\00"
@.str.6 = [5 x i8] c", %s\00"
@.str.7 = [7 x i8] c"|| LDF\00"
@.str.8 = [4 x i8] c"LDI\00"
@.str.9 = [7 x i8] c"|| LDI\00"
@.str.10 = [5 x i8] c"ABSF\00"
@.str.11 = [5 x i8] c"ABSI\00"
@.str.12 = [6 x i8] c"ADDF3\00"
@.str.13 = [6 x i8] c"ADDI3\00"
@.str.14 = [5 x i8] c"AND3\00"
@.str.15 = [5 x i8] c"ASH3\00"
@.str.16 = [4 x i8] c"FIX\00"
@.str.17 = [6 x i8] c"FLOAT\00"
@.str.18 = [5 x i8] c"LSH3\00"
@.str.19 = [6 x i8] c"MPYF3\00"
@.str.20 = [6 x i8] c"MPYI3\00"
@.str.21 = [5 x i8] c"NEGF\00"
@.str.22 = [5 x i8] c"NEGI\00"
@.str.23 = [4 x i8] c"NOT\00"
@.str.24 = [4 x i8] c"OR3\00"
@.str.25 = [6 x i8] c"SUBF3\00"
@.str.26 = [6 x i8] c"SUBI3\00"
@.str.27 = [5 x i8] c"XOR3\00"
@.str.28 = [7 x i8] c"TOIEEE\00"
@.str.29 = [7 x i8] c"FRIEEE\00"
define void @decode_parallel_op(i64 %0) {
%2 = alloca i64
%3 = alloca i64
%4 = alloca i64
%5 = alloca i64
%6 = alloca i64
%7 = alloca i64
store i64 %0, i64* %2
%8 = load i64, i64* %2
%9 = and i64 %8, 255
store i64 %9, i64* %3
%10 = load i64, i64* %2
%11 = ashr i64 %10, 8
%12 = and i64 %11, 255
store i64 %12, i64* %4
%13 = load i64, i64* %2
%14 = ashr i64 %13, 16
%15 = and i64 %14, 7
store i64 %15, i64* %5
%16 = load i64, i64* %2
%17 = ashr i64 %16, 19
%18 = and i64 %17, 7
store i64 %18, i64* %6
%19 = load i64, i64* %2
%20 = ashr i64 %19, 22
%21 = and i64 %20, 7
store i64 %21, i64* %7
%22 = load i64, i64* %2
%23 = ashr i64 %22, 25
%24 = and i64 %23, 31
switch i64 %24, label %199 [
i64 0, label %25
i64 1, label %52
i64 2, label %79
i64 3, label %106
i64 4, label %133
i64 5, label %136
i64 6, label %139
i64 7, label %142
i64 8, label %145
i64 9, label %148
i64 10, label %151
i64 11, label %154
i64 12, label %157
i64 13, label %160
i64 14, label %163
i64 15, label %166
i64 16, label %169
i64 17, label %172
i64 18, label %175
i64 19, label %178
i64 20, label %181
i64 21, label %184
i64 22, label %187
i64 23, label %190
i64 24, label %193
i64 25, label %196
]
25: ; preds = %1
%26 = load i64, i64* %6
%27 = icmp ne i64 %26, 0
br i1 %27, label %28, label %29
28: ; preds = %25
br label %201
29: ; preds = %25
%30 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%31 = call i32 @pad_to(i32 10)
%32 = load i64, i64* %7
%33 = call i32 @_regname(i64 %32)
%34 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %33)
%35 = load i64, i64* %3
%36 = lshr i64 %35, 3
%37 = load i64, i64* %3
%38 = and i64 %37, 7
%39 = call i32 @decode_indirect_address(i64 %36, i64 %38, i32 1)
%40 = call i32 (...) @new_line()
%41 = call i32 @pad_to(i32 39)
%42 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0))
%43 = call i32 @pad_to(i32 49)
%44 = load i64, i64* %5
%45 = call i32 @_regname(i64 %44)
%46 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %45)
%47 = load i64, i64* %4
%48 = lshr i64 %47, 3
%49 = load i64, i64* %4
%50 = and i64 %49, 7
%51 = call i32 @decode_indirect_address(i64 %48, i64 %50, i32 1)
br label %200
52: ; preds = %1
%53 = load i64, i64* %6
%54 = icmp ne i64 %53, 0
br i1 %54, label %55, label %56
55: ; preds = %52
br label %201
56: ; preds = %52
%57 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%58 = call i32 @pad_to(i32 10)
%59 = load i64, i64* %7
%60 = call i32 @_regname(i64 %59)
%61 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %60)
%62 = load i64, i64* %3
%63 = lshr i64 %62, 3
%64 = load i64, i64* %3
%65 = and i64 %64, 7
%66 = call i32 @decode_indirect_address(i64 %63, i64 %65, i32 1)
%67 = call i32 (...) @new_line()
%68 = call i32 @pad_to(i32 39)
%69 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
%70 = call i32 @pad_to(i32 49)
%71 = load i64, i64* %5
%72 = call i32 @_regname(i64 %71)
%73 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %72)
%74 = load i64, i64* %4
%75 = lshr i64 %74, 3
%76 = load i64, i64* %4
%77 = and i64 %76, 7
%78 = call i32 @decode_indirect_address(i64 %75, i64 %77, i32 1)
br label %200
79: ; preds = %1
%80 = load i64, i64* %5
%81 = icmp ne i64 %80, 0
br i1 %81, label %82, label %83
82: ; preds = %79
br label %201
83: ; preds = %79
%84 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%85 = call i32 @pad_to(i32 10)
%86 = load i64, i64* %3
%87 = lshr i64 %86, 3
%88 = load i64, i64* %3
%89 = and i64 %88, 7
%90 = call i32 @decode_indirect_address(i64 %87, i64 %89, i32 1)
%91 = load i64, i64* %7
%92 = call i32 @_regname(i64 %91)
%93 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %92)
%94 = call i32 (...) @new_line()
%95 = call i32 @pad_to(i32 39)
%96 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
%97 = call i32 @pad_to(i32 49)
%98 = load i64, i64* %4
%99 = lshr i64 %98, 3
%100 = load i64, i64* %4
%101 = and i64 %100, 7
%102 = call i32 @decode_indirect_address(i64 %99, i64 %101, i32 1)
%103 = load i64, i64* %6
%104 = call i32 @_regname(i64 %103)
%105 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %104)
br label %200
106: ; preds = %1
%107 = load i64, i64* %5
%108 = icmp ne i64 %107, 0
br i1 %108, label %109, label %110
109: ; preds = %106
br label %201
110: ; preds = %106
%111 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%112 = call i32 @pad_to(i32 10)
%113 = load i64, i64* %3
%114 = lshr i64 %113, 3
%115 = load i64, i64* %3
%116 = and i64 %115, 7
%117 = call i32 @decode_indirect_address(i64 %114, i64 %116, i32 1)
%118 = load i64, i64* %7
%119 = call i32 @_regname(i64 %118)
%120 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %119)
%121 = call i32 (...) @new_line()
%122 = call i32 @pad_to(i32 39)
%123 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0))
%124 = call i32 @pad_to(i32 49)
%125 = load i64, i64* %4
%126 = lshr i64 %125, 3
%127 = load i64, i64* %4
%128 = and i64 %127, 7
%129 = call i32 @decode_indirect_address(i64 %126, i64 %128, i32 1)
%130 = load i64, i64* %6
%131 = call i32 @_regname(i64 %130)
%132 = call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %131)
br label %200
133: ; preds = %1
%134 = load i64, i64* %2
%135 = call i32 @decode_diadic_parallel_addressing(i64 %134, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
136: ; preds = %1
%137 = load i64, i64* %2
%138 = call i32 @decode_diadic_parallel_addressing(i64 %137, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
139: ; preds = %1
%140 = load i64, i64* %2
%141 = call i32 @decode_triadic_parallel_addressing(i64 %140, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
142: ; preds = %1
%143 = load i64, i64* %2
%144 = call i32 @decode_triadic_parallel_addressing(i64 %143, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
145: ; preds = %1
%146 = load i64, i64* %2
%147 = call i32 @decode_triadic_parallel_addressing(i64 %146, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
148: ; preds = %1
%149 = load i64, i64* %2
%150 = call i32 @decode_triadic_parallel_addressing(i64 %149, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
151: ; preds = %1
%152 = load i64, i64* %2
%153 = call i32 @decode_diadic_parallel_addressing(i64 %152, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
154: ; preds = %1
%155 = load i64, i64* %2
%156 = call i32 @decode_diadic_parallel_addressing(i64 %155, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
157: ; preds = %1
%158 = load i64, i64* %2
%159 = call i32 @decode_diadic_parallel_addressing(i64 %158, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
160: ; preds = %1
%161 = load i64, i64* %2
%162 = call i32 @decode_diadic_parallel_addressing(i64 %161, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
163: ; preds = %1
%164 = load i64, i64* %2
%165 = call i32 @decode_triadic_parallel_addressing(i64 %164, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
166: ; preds = %1
%167 = load i64, i64* %2
%168 = call i32 @decode_triadic_parallel_addressing(i64 %167, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
169: ; preds = %1
%170 = load i64, i64* %2
%171 = call i32 @decode_triadic_parallel_addressing(i64 %170, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
172: ; preds = %1
%173 = load i64, i64* %2
%174 = call i32 @decode_diadic_parallel_addressing(i64 %173, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
175: ; preds = %1
%176 = load i64, i64* %2
%177 = call i32 @decode_diadic_parallel_addressing(i64 %176, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
178: ; preds = %1
%179 = load i64, i64* %2
%180 = call i32 @decode_diadic_parallel_addressing(i64 %179, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
181: ; preds = %1
%182 = load i64, i64* %2
%183 = call i32 @decode_triadic_parallel_addressing(i64 %182, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
184: ; preds = %1
%185 = load i64, i64* %2
%186 = call i32 @decode_triadic_parallel_addressing(i64 %185, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
187: ; preds = %1
%188 = load i64, i64* %2
%189 = call i32 @decode_triadic_parallel_addressing(i64 %188, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
190: ; preds = %1
%191 = load i64, i64* %2
%192 = call i32 @decode_triadic_parallel_addressing(i64 %191, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.27, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %200
193: ; preds = %1
%194 = load i64, i64* %2
%195 = call i32 @decode_diadic_parallel_addressing(i64 %194, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
196: ; preds = %1
%197 = load i64, i64* %2
%198 = call i32 @decode_diadic_parallel_addressing(i64 %197, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %200
199: ; preds = %1
br label %201
200: ; preds = %196, %193, %190, %187, %184, %181, %178, %175, %172, %169, %166, %163, %160, %157, %154, %151, %148, %145, %142, %139, %136, %133, %110, %83, %56, %29
br label %201
201: ; preds = %200, %199, %109, %82, %55, %28
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c"STF\00"
@.str.1 = [5 x i8] c"%s, \00"
@.str.2 = [7 x i8] c"|| STF\00"
@.str.3 = [4 x i8] c"STI\00"
@.str.4 = [7 x i8] c"|| STI\00"
@.str.5 = [4 x i8] c"LDF\00"
@.str.6 = [5 x i8] c", %s\00"
@.str.7 = [7 x i8] c"|| LDF\00"
@.str.8 = [4 x i8] c"LDI\00"
@.str.9 = [7 x i8] c"|| LDI\00"
@.str.10 = [5 x i8] c"ABSF\00"
@.str.11 = [5 x i8] c"ABSI\00"
@.str.12 = [6 x i8] c"ADDF3\00"
@.str.13 = [6 x i8] c"ADDI3\00"
@.str.14 = [5 x i8] c"AND3\00"
@.str.15 = [5 x i8] c"ASH3\00"
@.str.16 = [4 x i8] c"FIX\00"
@.str.17 = [6 x i8] c"FLOAT\00"
@.str.18 = [5 x i8] c"LSH3\00"
@.str.19 = [6 x i8] c"MPYF3\00"
@.str.20 = [6 x i8] c"MPYI3\00"
@.str.21 = [5 x i8] c"NEGF\00"
@.str.22 = [5 x i8] c"NEGI\00"
@.str.23 = [4 x i8] c"NOT\00"
@.str.24 = [4 x i8] c"OR3\00"
@.str.25 = [6 x i8] c"SUBF3\00"
@.str.26 = [6 x i8] c"SUBI3\00"
@.str.27 = [5 x i8] c"XOR3\00"
@.str.28 = [7 x i8] c"TOIEEE\00"
@.str.29 = [7 x i8] c"FRIEEE\00"
define void @decode_parallel_op(i64 %0) {
%2 = and i64 %0, 255
%3 = lshr i64 %0, 8
%4 = and i64 %3, 255
%5 = lshr i64 %0, 16
%6 = and i64 %5, 7
%7 = lshr i64 %0, 19
%8 = and i64 %7, 7
%9 = lshr i64 %0, 22
%10 = and i64 %9, 7
%11 = lshr i64 %0, 25
%12 = and i64 %11, 31
switch i64 %12, label %133 [
i64 0, label %13
i64 1, label %32
i64 2, label %51
i64 3, label %70
i64 4, label %89
i64 5, label %91
i64 6, label %93
i64 7, label %95
i64 8, label %97
i64 9, label %99
i64 10, label %101
i64 11, label %103
i64 12, label %105
i64 13, label %107
i64 14, label %109
i64 15, label %111
i64 16, label %113
i64 17, label %115
i64 18, label %117
i64 19, label %119
i64 20, label %121
i64 21, label %123
i64 22, label %125
i64 23, label %127
i64 24, label %129
i64 25, label %131
]
13: ; preds = %1
%14 = icmp eq i64 %8, 0
br i1 %14, label %15, label %133
15: ; preds = %13
%16 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%17 = tail call i32 @pad_to(i32 10)
%18 = tail call i32 @_regname(i64 %10)
%19 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %18)
%20 = lshr i64 %2, 3
%21 = and i64 %0, 7
%22 = tail call i32 @decode_indirect_address(i64 %20, i64 %21, i32 1)
%23 = tail call i32 (...) @new_line()
%24 = tail call i32 @pad_to(i32 39)
%25 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0))
%26 = tail call i32 @pad_to(i32 49)
%27 = tail call i32 @_regname(i64 %6)
%28 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %27)
%29 = lshr i64 %4, 3
%30 = and i64 %3, 7
%31 = tail call i32 @decode_indirect_address(i64 %29, i64 %30, i32 1)
br label %133
32: ; preds = %1
%33 = icmp eq i64 %8, 0
br i1 %33, label %34, label %133
34: ; preds = %32
%35 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%36 = tail call i32 @pad_to(i32 10)
%37 = tail call i32 @_regname(i64 %10)
%38 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %37)
%39 = lshr i64 %2, 3
%40 = and i64 %0, 7
%41 = tail call i32 @decode_indirect_address(i64 %39, i64 %40, i32 1)
%42 = tail call i32 (...) @new_line()
%43 = tail call i32 @pad_to(i32 39)
%44 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
%45 = tail call i32 @pad_to(i32 49)
%46 = tail call i32 @_regname(i64 %6)
%47 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %46)
%48 = lshr i64 %4, 3
%49 = and i64 %3, 7
%50 = tail call i32 @decode_indirect_address(i64 %48, i64 %49, i32 1)
br label %133
51: ; preds = %1
%52 = icmp eq i64 %6, 0
br i1 %52, label %53, label %133
53: ; preds = %51
%54 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%55 = tail call i32 @pad_to(i32 10)
%56 = lshr i64 %2, 3
%57 = and i64 %0, 7
%58 = tail call i32 @decode_indirect_address(i64 %56, i64 %57, i32 1)
%59 = tail call i32 @_regname(i64 %10)
%60 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %59)
%61 = tail call i32 (...) @new_line()
%62 = tail call i32 @pad_to(i32 39)
%63 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
%64 = tail call i32 @pad_to(i32 49)
%65 = lshr i64 %4, 3
%66 = and i64 %3, 7
%67 = tail call i32 @decode_indirect_address(i64 %65, i64 %66, i32 1)
%68 = tail call i32 @_regname(i64 %8)
%69 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %68)
br label %133
70: ; preds = %1
%71 = icmp eq i64 %6, 0
br i1 %71, label %72, label %133
72: ; preds = %70
%73 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%74 = tail call i32 @pad_to(i32 10)
%75 = lshr i64 %2, 3
%76 = and i64 %0, 7
%77 = tail call i32 @decode_indirect_address(i64 %75, i64 %76, i32 1)
%78 = tail call i32 @_regname(i64 %10)
%79 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %78)
%80 = tail call i32 (...) @new_line()
%81 = tail call i32 @pad_to(i32 39)
%82 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0))
%83 = tail call i32 @pad_to(i32 49)
%84 = lshr i64 %4, 3
%85 = and i64 %3, 7
%86 = tail call i32 @decode_indirect_address(i64 %84, i64 %85, i32 1)
%87 = tail call i32 @_regname(i64 %8)
%88 = tail call i32 (i8*, ...) @myprint(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 %87)
br label %133
89: ; preds = %1
%90 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
91: ; preds = %1
%92 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
93: ; preds = %1
%94 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
95: ; preds = %1
%96 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
97: ; preds = %1
%98 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
99: ; preds = %1
%100 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
101: ; preds = %1
%102 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
103: ; preds = %1
%104 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
105: ; preds = %1
%106 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
107: ; preds = %1
%108 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
109: ; preds = %1
%110 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
111: ; preds = %1
%112 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
113: ; preds = %1
%114 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
115: ; preds = %1
%116 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
117: ; preds = %1
%118 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
119: ; preds = %1
%120 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
121: ; preds = %1
%122 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
123: ; preds = %1
%124 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
125: ; preds = %1
%126 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
127: ; preds = %1
%128 = tail call i32 @decode_triadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.27, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %133
129: ; preds = %1
%130 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
131: ; preds = %1
%132 = tail call i32 @decode_diadic_parallel_addressing(i64 %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %133
133: ; preds = %15, %34, %53, %72, %89, %91, %93, %95, %97, %99, %101, %103, %105, %107, %109, %111, %113, %115, %117, %119, %121, %123, %125, %127, %129, %131, %1, %70, %51, %32, %13
ret void
}