#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 */

/* Variables and functions */
int get_lif_int(unsigned char *, int);
int hp71_length(unsigned char *);
int /*<<< orphan*/ sprintf(char *, char *, unsigned int);
int /*<<< orphan*/ strcpy(char *, char *);
int file_length(unsigned char *entry, char *file_type) {
  unsigned int file_type_code;
  char *type_string;
  int length;
  char hex_type[8];
  file_type_code = get_lif_int(entry + 10, 2);
  switch (file_type_code) {
  case 1:
  case 0xE0D1:
    type_string = "TEXT";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0x00FF:
    type_string = "D-LEX71";
    length = hp71_length(entry);
    break;
  case 0xE0D0:
    type_string = "SDATA";
    length = get_lif_int(entry + 28, 2) * 8;
    break;
  case 0xE0F0:
  case 0xE0F1:
    type_string = "DAT71";
    length = ((*(entry + 28)) + ((*(entry + 29)) << 8)) *
             ((*(entry + 30)) + ((*(entry + 31)) << 8));
    break;
  case 0xE204:
  case 0xE205:
  case 0xE206:
  case 0xE207:
    type_string = "BIN71";
    length = hp71_length(entry);
    break;
  case 0xE208:
  case 0xE209:
  case 0xE20A:
  case 0xE20B:
    type_string = "LEX71";
    length = hp71_length(entry);
    break;
  case 0xE20C:
  case 0xE20D:
    type_string = "KEY71";
    length = hp71_length(entry);
    break;
  case 0xE214:
  case 0xE215:
  case 0xE216:
  case 0xE217:
    type_string = "BAS71";
    length = hp71_length(entry);
    break;
  case 0xE218:
  case 0xE219:
  case 0xE21A:
  case 0xE21B:
    type_string = "FTH71";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE21C:
    type_string = "ROM71";
    length = hp71_length(entry);
    break;
  case 0xE222:
    type_string = "GRA71";
    length = hp71_length(entry);
    break;
  case 0xE224:
    type_string = "ADR71";
    length = hp71_length(entry);
    break;
  case 0xE22E:
    type_string = "SYM71";
    length = hp71_length(entry);
    break;
  case 0xE020:
    type_string = "WAXM41";
    length = (get_lif_int(entry + 28, 2) * 8) + 1;
    break;
  case 0xE030:
    type_string = "XM41";
    length = (get_lif_int(entry + 28, 2) * 8) + 1;
    break;
  case 0xE040:
    type_string = "ALL41";
    length = (get_lif_int(entry + 28, 2) * 8) + 1;
    break;
  case 0xE050:
    type_string = "KEY41";
    length = (get_lif_int(entry + 28, 2) * 8) + 1;
    break;
  case 0xE060:
    type_string = "STAT41";
    length = (get_lif_int(entry + 28, 2) * 8) + 1;
    break;
  case 0xE070:
    type_string = "X-M41";
    length = (get_lif_int(entry + 28, 2) * 8) + 1;
    break;
  case 0xE080:
    type_string = "PGM41";
    length = get_lif_int(entry + 28, 2) + 1;
    break;
  case 0xE052:
    type_string = "TXT75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE053:
    type_string = "APP75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE058:
    type_string = "DAT75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE089:
    type_string = "LEX75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE08A:
    type_string = "WKS75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE0FE:
  case 0xE088:
    type_string = "BAS75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  case 0xE08B:
    type_string = "ROM75";
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  default:
    sprintf(hex_type, "?(%4X)", file_type_code);
    type_string = hex_type;
    length = get_lif_int(entry + 16, 4) * 256;
    break;
  }
  if (file_type) {
    strcpy(file_type, type_string);
  }
  return (length);
}


x86 assembly (clang, -O0):
<file_length>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
add    $0xa,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x30(%rbp)
sub    $0x1,%eax
je     139f <file_length+0x25f>
jmp    1179 <file_length+0x39>
mov    -0x30(%rbp),%eax
sub    $0xff,%eax
je     13c7 <file_length+0x287>
jmp    118c <file_length+0x4c>
mov    -0x30(%rbp),%eax
sub    $0xe020,%eax
je     1553 <file_length+0x413>
jmp    119f <file_length+0x5f>
mov    -0x30(%rbp),%eax
sub    $0xe030,%eax
je     157e <file_length+0x43e>
jmp    11b2 <file_length+0x72>
mov    -0x30(%rbp),%eax
sub    $0xe040,%eax
je     15a9 <file_length+0x469>
jmp    11c5 <file_length+0x85>
mov    -0x30(%rbp),%eax
sub    $0xe050,%eax
je     15d4 <file_length+0x494>
jmp    11d8 <file_length+0x98>
mov    -0x30(%rbp),%eax
sub    $0xe052,%eax
je     167d <file_length+0x53d>
jmp    11eb <file_length+0xab>
mov    -0x30(%rbp),%eax
sub    $0xe053,%eax
je     16a5 <file_length+0x565>
jmp    11fe <file_length+0xbe>
mov    -0x30(%rbp),%eax
sub    $0xe058,%eax
je     16cd <file_length+0x58d>
jmp    1211 <file_length+0xd1>
mov    -0x30(%rbp),%eax
sub    $0xe060,%eax
je     15ff <file_length+0x4bf>
jmp    1224 <file_length+0xe4>
mov    -0x30(%rbp),%eax
sub    $0xe070,%eax
je     162a <file_length+0x4ea>
jmp    1237 <file_length+0xf7>
mov    -0x30(%rbp),%eax
sub    $0xe080,%eax
je     1655 <file_length+0x515>
jmp    124a <file_length+0x10a>
mov    -0x30(%rbp),%eax
sub    $0xe088,%eax
je     1745 <file_length+0x605>
jmp    125d <file_length+0x11d>
mov    -0x30(%rbp),%eax
sub    $0xe089,%eax
je     16f5 <file_length+0x5b5>
jmp    1270 <file_length+0x130>
mov    -0x30(%rbp),%eax
sub    $0xe08a,%eax
je     171d <file_length+0x5dd>
jmp    1283 <file_length+0x143>
mov    -0x30(%rbp),%eax
sub    $0xe08b,%eax
je     176d <file_length+0x62d>
jmp    1296 <file_length+0x156>
mov    -0x30(%rbp),%eax
sub    $0xe0d0,%eax
je     13e3 <file_length+0x2a3>
jmp    12a9 <file_length+0x169>
mov    -0x30(%rbp),%eax
sub    $0xe0d1,%eax
je     139f <file_length+0x25f>
jmp    12bc <file_length+0x17c>
mov    -0x30(%rbp),%eax
add    $0xffff1f10,%eax
sub    $0x2,%eax
jb     140b <file_length+0x2cb>
jmp    12d2 <file_length+0x192>
mov    -0x30(%rbp),%eax
sub    $0xe0fe,%eax
je     1745 <file_length+0x605>
jmp    12e5 <file_length+0x1a5>
mov    -0x30(%rbp),%eax
add    $0xffff1dfc,%eax
sub    $0x4,%eax
jb     144b <file_length+0x30b>
jmp    12fb <file_length+0x1bb>
mov    -0x30(%rbp),%eax
add    $0xffff1df8,%eax
sub    $0x4,%eax
jb     1467 <file_length+0x327>
jmp    1311 <file_length+0x1d1>
mov    -0x30(%rbp),%eax
add    $0xffff1df4,%eax
sub    $0x2,%eax
jb     1483 <file_length+0x343>
jmp    1327 <file_length+0x1e7>
mov    -0x30(%rbp),%eax
add    $0xffff1dec,%eax
sub    $0x4,%eax
jb     149f <file_length+0x35f>
jmp    133d <file_length+0x1fd>
mov    -0x30(%rbp),%eax
add    $0xffff1de8,%eax
sub    $0x4,%eax
jb     14bb <file_length+0x37b>
jmp    1353 <file_length+0x213>
mov    -0x30(%rbp),%eax
sub    $0xe21c,%eax
je     14e3 <file_length+0x3a3>
jmp    1366 <file_length+0x226>
mov    -0x30(%rbp),%eax
sub    $0xe222,%eax
je     14ff <file_length+0x3bf>
jmp    1379 <file_length+0x239>
mov    -0x30(%rbp),%eax
sub    $0xe224,%eax
je     151b <file_length+0x3db>
jmp    138c <file_length+0x24c>
mov    -0x30(%rbp),%eax
sub    $0xe22e,%eax
je     1537 <file_length+0x3f7>
jmp    1795 <file_length+0x655>
lea    0xc5a(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xc37(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xc23(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xc01(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x1c(%rax),%eax
mov    -0x8(%rbp),%rcx
movzbl 0x1d(%rcx),%ecx
shl    $0x8,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movzbl 0x1e(%rcx),%ecx
mov    -0x8(%rbp),%rdx
movzbl 0x1f(%rdx),%edx
shl    $0x8,%edx
add    %edx,%ecx
imul   %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xbc7(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb99(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb95(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb7f(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb69(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb47(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb31(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb1b(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xb05(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1060 <hp71_length@plt>
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xaef(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xac6(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xaa0(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xa7b(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xa56(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xa32(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
shl    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0xa0d(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x1c,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x9eb(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x9c9(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x9a7(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x985(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x963(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x941(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    0x91f(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
jmp    17c8 <file_length+0x688>
lea    -0x2c(%rbp),%rdi
mov    -0x14(%rbp),%edx
lea    0x8f6(%rip),%rsi
call   1050 <sprintf@plt>
lea    -0x2c(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     17e0 <file_length+0x6a0>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rsi
call   1030 <strcpy@plt>
mov    -0x24(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<file_length>:
push   %rbp
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %rsi,%r14
mov    %rdi,%rbp
add    $0xa,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
cmp    $0xe0cf,%eax
jle    1194 <file_length+0x54>
lea    -0xe204(%rax),%ecx
cmp    $0x2a,%ecx
ja     11d7 <file_length+0x97>
lea    0x10f7(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0x11a2(%rip),%rbx
jmp    1514 <file_length+0x3d4>
lea    -0xe020(%rax),%ecx
cmp    $0x6b,%ecx
ja     125b <file_length+0x11b>
lea    0xe56(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
lea    0x1(,%rax,8),%ebp
lea    0x118f(%rip),%rbx
jmp    1514 <file_length+0x3d4>
lea    -0xe0d0(%rax),%ecx
cmp    $0x2e,%ecx
ja     147d <file_length+0x33d>
lea    0xfc3(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
movzwl 0x1c(%rbp),%eax
movzwl 0x1e(%rbp),%ebp
imul   %eax,%ebp
lea    0x1123(%rip),%rbx
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0x1101(%rip),%rbx
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0x1109(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0x10ed(%rip),%rbx
jmp    1514 <file_length+0x3d4>
cmp    $0x1,%eax
je     12a3 <file_length+0x163>
cmp    $0xff,%eax
jne    147d <file_length+0x33d>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0x10a1(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0x1107(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0x1058(%rip),%rbx
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0x1061(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
lea    0x1(,%rax,8),%ebp
lea    0x1069(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
lea    0x1(,%rax,8),%ebp
lea    0x104a(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
lea    0x1(,%rax,8),%ebp
lea    0x102c(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0x1023(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0x1007(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0xfeb(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
lea    0x1(,%rax,8),%ebp
lea    0xfa8(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
lea    0x1(,%rax,8),%ebp
lea    0xf8b(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
add    $0x1,%ebp
lea    0xf6f(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0xf65(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0xf49(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
lea    0xf33(%rip),%rbx
jmp    1514 <file_length+0x3d4>
lea    0x8(%rsp),%rbx
lea    0xf28(%rip),%rsi
mov    %rbx,%rdi
mov    %eax,%edx
call   1050 <sprintf@plt>
add    $0x10,%rbp
mov    %rbp,%rdi
mov    $0x4,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x8,%ebp
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0xe8d(%rip),%rbx
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0xe80(%rip),%rbx
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0xe73(%rip),%rbx
jmp    1514 <file_length+0x3d4>
mov    %rbp,%rdi
call   1060 <hp71_length@plt>
mov    %eax,%ebp
lea    0xe66(%rip),%rbx
jmp    1514 <file_length+0x3d4>
add    $0x1c,%rbp
mov    %rbp,%rdi
mov    $0x2,%esi
call   1040 <get_lif_int@plt>
mov    %eax,%ebp
shl    $0x3,%ebp
lea    0xe11(%rip),%rbx
test   %r14,%r14
je     1524 <file_length+0x3e4>
mov    %r14,%rdi
mov    %rbx,%rsi
call   1030 <strcpy@plt>
mov    %ebp,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [5 x i8] c"TEXT\00"
@.str.1 = [8 x i8] c"D-LEX71\00"
@.str.2 = [6 x i8] c"SDATA\00"
@.str.3 = [6 x i8] c"DAT71\00"
@.str.4 = [6 x i8] c"BIN71\00"
@.str.5 = [6 x i8] c"LEX71\00"
@.str.6 = [6 x i8] c"KEY71\00"
@.str.7 = [6 x i8] c"BAS71\00"
@.str.8 = [6 x i8] c"FTH71\00"
@.str.9 = [6 x i8] c"ROM71\00"
@.str.10 = [6 x i8] c"GRA71\00"
@.str.11 = [6 x i8] c"ADR71\00"
@.str.12 = [6 x i8] c"SYM71\00"
@.str.13 = [7 x i8] c"WAXM41\00"
@.str.14 = [5 x i8] c"XM41\00"
@.str.15 = [6 x i8] c"ALL41\00"
@.str.16 = [6 x i8] c"KEY41\00"
@.str.17 = [7 x i8] c"STAT41\00"
@.str.18 = [6 x i8] c"X-M41\00"
@.str.19 = [6 x i8] c"PGM41\00"
@.str.20 = [6 x i8] c"TXT75\00"
@.str.21 = [6 x i8] c"APP75\00"
@.str.22 = [6 x i8] c"DAT75\00"
@.str.23 = [6 x i8] c"LEX75\00"
@.str.24 = [6 x i8] c"WKS75\00"
@.str.25 = [6 x i8] c"BAS75\00"
@.str.26 = [6 x i8] c"ROM75\00"
@.str.27 = [7 x i8] c"?(%4X)\00"
define i32 @file_length(i8* %0, i8* %1) {
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i32
%8 = alloca [8 x i8]
store i8* %0, i8** %3
store i8* %1, i8** %4
%9 = load i8*, i8** %3
%10 = getelementptr inbounds i8, i8* %9, i64 10
%11 = call i32 @get_lif_int(i8* %10, i32 2)
store i32 %11, i32* %5
%12 = load i32, i32* %5
switch i32 %12, label %153 [
i32 1, label %13
i32 57553, label %13
i32 255, label %18
i32 57552, label %21
i32 57584, label %26
i32 57585, label %26
i32 57860, label %48
i32 57861, label %48
i32 57862, label %48
i32 57863, label %48
i32 57864, label %51
i32 57865, label %51
i32 57866, label %51
i32 57867, label %51
i32 57868, label %54
i32 57869, label %54
i32 57876, label %57
i32 57877, label %57
i32 57878, label %57
i32 57879, label %57
i32 57880, label %60
i32 57881, label %60
i32 57882, label %60
i32 57883, label %60
i32 57884, label %65
i32 57890, label %68
i32 57892, label %71
i32 57902, label %74
i32 57376, label %77
i32 57392, label %83
i32 57408, label %89
i32 57424, label %95
i32 57440, label %101
i32 57456, label %107
i32 57472, label %113
i32 57426, label %118
i32 57427, label %123
i32 57432, label %128
i32 57481, label %133
i32 57482, label %138
i32 57598, label %143
i32 57480, label %143
i32 57483, label %148
]
13: ; preds = %2, %2
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8** %6
%14 = load i8*, i8** %3
%15 = getelementptr inbounds i8, i8* %14, i64 16
%16 = call i32 @get_lif_int(i8* %15, i32 4)
%17 = mul nsw i32 %16, 256
store i32 %17, i32* %7
br label %162
18: ; preds = %2
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8** %6
%19 = load i8*, i8** %3
%20 = call i32 @hp71_length(i8* %19)
store i32 %20, i32* %7
br label %162
21: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8** %6
%22 = load i8*, i8** %3
%23 = getelementptr inbounds i8, i8* %22, i64 28
%24 = call i32 @get_lif_int(i8* %23, i32 2)
%25 = mul nsw i32 %24, 8
store i32 %25, i32* %7
br label %162
26: ; preds = %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), i8** %6
%27 = load i8*, i8** %3
%28 = getelementptr inbounds i8, i8* %27, i64 28
%29 = load i8, i8* %28
%30 = zext i8 %29 to i32
%31 = load i8*, i8** %3
%32 = getelementptr inbounds i8, i8* %31, i64 29
%33 = load i8, i8* %32
%34 = zext i8 %33 to i32
%35 = shl i32 %34, 8
%36 = add nsw i32 %30, %35
%37 = load i8*, i8** %3
%38 = getelementptr inbounds i8, i8* %37, i64 30
%39 = load i8, i8* %38
%40 = zext i8 %39 to i32
%41 = load i8*, i8** %3
%42 = getelementptr inbounds i8, i8* %41, i64 31
%43 = load i8, i8* %42
%44 = zext i8 %43 to i32
%45 = shl i32 %44, 8
%46 = add nsw i32 %40, %45
%47 = mul nsw i32 %36, %46
store i32 %47, i32* %7
br label %162
48: ; preds = %2, %2, %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i8** %6
%49 = load i8*, i8** %3
%50 = call i32 @hp71_length(i8* %49)
store i32 %50, i32* %7
br label %162
51: ; preds = %2, %2, %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8** %6
%52 = load i8*, i8** %3
%53 = call i32 @hp71_length(i8* %52)
store i32 %53, i32* %7
br label %162
54: ; preds = %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i8** %6
%55 = load i8*, i8** %3
%56 = call i32 @hp71_length(i8* %55)
store i32 %56, i32* %7
br label %162
57: ; preds = %2, %2, %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8** %6
%58 = load i8*, i8** %3
%59 = call i32 @hp71_length(i8* %58)
store i32 %59, i32* %7
br label %162
60: ; preds = %2, %2, %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8** %6
%61 = load i8*, i8** %3
%62 = getelementptr inbounds i8, i8* %61, i64 16
%63 = call i32 @get_lif_int(i8* %62, i32 4)
%64 = mul nsw i32 %63, 256
store i32 %64, i32* %7
br label %162
65: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i8** %6
%66 = load i8*, i8** %3
%67 = call i32 @hp71_length(i8* %66)
store i32 %67, i32* %7
br label %162
68: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8** %6
%69 = load i8*, i8** %3
%70 = call i32 @hp71_length(i8* %69)
store i32 %70, i32* %7
br label %162
71: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i64 0, i64 0), i8** %6
%72 = load i8*, i8** %3
%73 = call i32 @hp71_length(i8* %72)
store i32 %73, i32* %7
br label %162
74: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8** %6
%75 = load i8*, i8** %3
%76 = call i32 @hp71_length(i8* %75)
store i32 %76, i32* %7
br label %162
77: ; preds = %2
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0), i8** %6
%78 = load i8*, i8** %3
%79 = getelementptr inbounds i8, i8* %78, i64 28
%80 = call i32 @get_lif_int(i8* %79, i32 2)
%81 = mul nsw i32 %80, 8
%82 = add nsw i32 %81, 1
store i32 %82, i32* %7
br label %162
83: ; preds = %2
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8** %6
%84 = load i8*, i8** %3
%85 = getelementptr inbounds i8, i8* %84, i64 28
%86 = call i32 @get_lif_int(i8* %85, i32 2)
%87 = mul nsw i32 %86, 8
%88 = add nsw i32 %87, 1
store i32 %88, i32* %7
br label %162
89: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i8** %6
%90 = load i8*, i8** %3
%91 = getelementptr inbounds i8, i8* %90, i64 28
%92 = call i32 @get_lif_int(i8* %91, i32 2)
%93 = mul nsw i32 %92, 8
%94 = add nsw i32 %93, 1
store i32 %94, i32* %7
br label %162
95: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0), i8** %6
%96 = load i8*, i8** %3
%97 = getelementptr inbounds i8, i8* %96, i64 28
%98 = call i32 @get_lif_int(i8* %97, i32 2)
%99 = mul nsw i32 %98, 8
%100 = add nsw i32 %99, 1
store i32 %100, i32* %7
br label %162
101: ; preds = %2
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8** %6
%102 = load i8*, i8** %3
%103 = getelementptr inbounds i8, i8* %102, i64 28
%104 = call i32 @get_lif_int(i8* %103, i32 2)
%105 = mul nsw i32 %104, 8
%106 = add nsw i32 %105, 1
store i32 %106, i32* %7
br label %162
107: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8** %6
%108 = load i8*, i8** %3
%109 = getelementptr inbounds i8, i8* %108, i64 28
%110 = call i32 @get_lif_int(i8* %109, i32 2)
%111 = mul nsw i32 %110, 8
%112 = add nsw i32 %111, 1
store i32 %112, i32* %7
br label %162
113: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), i8** %6
%114 = load i8*, i8** %3
%115 = getelementptr inbounds i8, i8* %114, i64 28
%116 = call i32 @get_lif_int(i8* %115, i32 2)
%117 = add nsw i32 %116, 1
store i32 %117, i32* %7
br label %162
118: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i8** %6
%119 = load i8*, i8** %3
%120 = getelementptr inbounds i8, i8* %119, i64 16
%121 = call i32 @get_lif_int(i8* %120, i32 4)
%122 = mul nsw i32 %121, 256
store i32 %122, i32* %7
br label %162
123: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i64 0, i64 0), i8** %6
%124 = load i8*, i8** %3
%125 = getelementptr inbounds i8, i8* %124, i64 16
%126 = call i32 @get_lif_int(i8* %125, i32 4)
%127 = mul nsw i32 %126, 256
store i32 %127, i32* %7
br label %162
128: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %6
%129 = load i8*, i8** %3
%130 = getelementptr inbounds i8, i8* %129, i64 16
%131 = call i32 @get_lif_int(i8* %130, i32 4)
%132 = mul nsw i32 %131, 256
store i32 %132, i32* %7
br label %162
133: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i8** %6
%134 = load i8*, i8** %3
%135 = getelementptr inbounds i8, i8* %134, i64 16
%136 = call i32 @get_lif_int(i8* %135, i32 4)
%137 = mul nsw i32 %136, 256
store i32 %137, i32* %7
br label %162
138: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.24, i64 0, i64 0), i8** %6
%139 = load i8*, i8** %3
%140 = getelementptr inbounds i8, i8* %139, i64 16
%141 = call i32 @get_lif_int(i8* %140, i32 4)
%142 = mul nsw i32 %141, 256
store i32 %142, i32* %7
br label %162
143: ; preds = %2, %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0), i8** %6
%144 = load i8*, i8** %3
%145 = getelementptr inbounds i8, i8* %144, i64 16
%146 = call i32 @get_lif_int(i8* %145, i32 4)
%147 = mul nsw i32 %146, 256
store i32 %147, i32* %7
br label %162
148: ; preds = %2
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %6
%149 = load i8*, i8** %3
%150 = getelementptr inbounds i8, i8* %149, i64 16
%151 = call i32 @get_lif_int(i8* %150, i32 4)
%152 = mul nsw i32 %151, 256
store i32 %152, i32* %7
br label %162
153: ; preds = %2
%154 = getelementptr inbounds [8 x i8], [8 x i8]* %8, i64 0, i64 0
%155 = load i32, i32* %5
%156 = call i32 @sprintf(i8* %154, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i64 0, i64 0), i32 %155)
%157 = getelementptr inbounds [8 x i8], [8 x i8]* %8, i64 0, i64 0
store i8* %157, i8** %6
%158 = load i8*, i8** %3
%159 = getelementptr inbounds i8, i8* %158, i64 16
%160 = call i32 @get_lif_int(i8* %159, i32 4)
%161 = mul nsw i32 %160, 256
store i32 %161, i32* %7
br label %162
162: ; preds = %153, %148, %143, %138, %133, %128, %123, %118, %113, %107, %101, %95, %89, %83, %77, %74, %71, %68, %65, %60, %57, %54, %51, %48, %26, %21, %18, %13
%163 = load i8*, i8** %4
%164 = icmp ne i8* %163, null
br i1 %164, label %165, label %169
165: ; preds = %162
%166 = load i8*, i8** %4
%167 = load i8*, i8** %6
%168 = call i32 @strcpy(i8* %166, i8* %167)
br label %169
169: ; preds = %165, %162
%170 = load i32, i32* %7
ret i32 %170
}

LLVM IR (-O2):
@.str = [5 x i8] c"TEXT\00"
@.str.1 = [8 x i8] c"D-LEX71\00"
@.str.2 = [6 x i8] c"SDATA\00"
@.str.3 = [6 x i8] c"DAT71\00"
@.str.4 = [6 x i8] c"BIN71\00"
@.str.5 = [6 x i8] c"LEX71\00"
@.str.6 = [6 x i8] c"KEY71\00"
@.str.7 = [6 x i8] c"BAS71\00"
@.str.8 = [6 x i8] c"FTH71\00"
@.str.9 = [6 x i8] c"ROM71\00"
@.str.10 = [6 x i8] c"GRA71\00"
@.str.11 = [6 x i8] c"ADR71\00"
@.str.12 = [6 x i8] c"SYM71\00"
@.str.13 = [7 x i8] c"WAXM41\00"
@.str.14 = [5 x i8] c"XM41\00"
@.str.15 = [6 x i8] c"ALL41\00"
@.str.16 = [6 x i8] c"KEY41\00"
@.str.17 = [7 x i8] c"STAT41\00"
@.str.18 = [6 x i8] c"X-M41\00"
@.str.19 = [6 x i8] c"PGM41\00"
@.str.20 = [6 x i8] c"TXT75\00"
@.str.21 = [6 x i8] c"APP75\00"
@.str.22 = [6 x i8] c"DAT75\00"
@.str.23 = [6 x i8] c"LEX75\00"
@.str.24 = [6 x i8] c"WKS75\00"
@.str.25 = [6 x i8] c"BAS75\00"
@.str.26 = [6 x i8] c"ROM75\00"
@.str.27 = [7 x i8] c"?(%4X)\00"
define i32 @file_length(i8* %0, i8* %1) {
%3 = alloca [8 x i8]
%4 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 0
%5 = getelementptr inbounds i8, i8* %0, i64 10
%6 = tail call i32 @get_lif_int(i8* %5, i32 2)
switch i32 %6, label %117 [
i32 1, label %7
i32 57553, label %7
i32 255, label %11
i32 57552, label %13
i32 57584, label %17
i32 57585, label %17
i32 57860, label %35
i32 57861, label %35
i32 57862, label %35
i32 57863, label %35
i32 57864, label %37
i32 57865, label %37
i32 57866, label %37
i32 57867, label %37
i32 57868, label %39
i32 57869, label %39
i32 57876, label %41
i32 57877, label %41
i32 57878, label %41
i32 57879, label %41
i32 57880, label %43
i32 57881, label %43
i32 57882, label %43
i32 57883, label %43
i32 57884, label %47
i32 57890, label %49
i32 57892, label %51
i32 57902, label %53
i32 57376, label %55
i32 57392, label %60
i32 57408, label %65
i32 57424, label %70
i32 57440, label %75
i32 57456, label %80
i32 57472, label %85
i32 57426, label %89
i32 57427, label %93
i32 57432, label %97
i32 57481, label %101
i32 57482, label %105
i32 57598, label %109
i32 57480, label %109
i32 57483, label %113
]
7: ; preds = %2, %2
%8 = getelementptr inbounds i8, i8* %0, i64 16
%9 = tail call i32 @get_lif_int(i8* %8, i32 4)
%10 = shl nsw i32 %9, 8
br label %122
11: ; preds = %2
%12 = tail call i32 @hp71_length(i8* %0)
br label %122
13: ; preds = %2
%14 = getelementptr inbounds i8, i8* %0, i64 28
%15 = tail call i32 @get_lif_int(i8* %14, i32 2)
%16 = shl nsw i32 %15, 3
br label %122
17: ; preds = %2, %2
%18 = getelementptr inbounds i8, i8* %0, i64 28
%19 = load i8, i8* %18
%20 = zext i8 %19 to i32
%21 = getelementptr inbounds i8, i8* %0, i64 29
%22 = load i8, i8* %21
%23 = zext i8 %22 to i32
%24 = shl nuw nsw i32 %23, 8
%25 = or i32 %24, %20
%26 = getelementptr inbounds i8, i8* %0, i64 30
%27 = load i8, i8* %26
%28 = zext i8 %27 to i32
%29 = getelementptr inbounds i8, i8* %0, i64 31
%30 = load i8, i8* %29
%31 = zext i8 %30 to i32
%32 = shl nuw nsw i32 %31, 8
%33 = or i32 %32, %28
%34 = mul nuw nsw i32 %33, %25
br label %122
35: ; preds = %2, %2, %2, %2
%36 = tail call i32 @hp71_length(i8* %0)
br label %122
37: ; preds = %2, %2, %2, %2
%38 = tail call i32 @hp71_length(i8* %0)
br label %122
39: ; preds = %2, %2
%40 = tail call i32 @hp71_length(i8* %0)
br label %122
41: ; preds = %2, %2, %2, %2
%42 = tail call i32 @hp71_length(i8* %0)
br label %122
43: ; preds = %2, %2, %2, %2
%44 = getelementptr inbounds i8, i8* %0, i64 16
%45 = tail call i32 @get_lif_int(i8* %44, i32 4)
%46 = shl nsw i32 %45, 8
br label %122
47: ; preds = %2
%48 = tail call i32 @hp71_length(i8* %0)
br label %122
49: ; preds = %2
%50 = tail call i32 @hp71_length(i8* %0)
br label %122
51: ; preds = %2
%52 = tail call i32 @hp71_length(i8* %0)
br label %122
53: ; preds = %2
%54 = tail call i32 @hp71_length(i8* %0)
br label %122
55: ; preds = %2
%56 = getelementptr inbounds i8, i8* %0, i64 28
%57 = tail call i32 @get_lif_int(i8* %56, i32 2)
%58 = shl nsw i32 %57, 3
%59 = or i32 %58, 1
br label %122
60: ; preds = %2
%61 = getelementptr inbounds i8, i8* %0, i64 28
%62 = tail call i32 @get_lif_int(i8* %61, i32 2)
%63 = shl nsw i32 %62, 3
%64 = or i32 %63, 1
br label %122
65: ; preds = %2
%66 = getelementptr inbounds i8, i8* %0, i64 28
%67 = tail call i32 @get_lif_int(i8* %66, i32 2)
%68 = shl nsw i32 %67, 3
%69 = or i32 %68, 1
br label %122
70: ; preds = %2
%71 = getelementptr inbounds i8, i8* %0, i64 28
%72 = tail call i32 @get_lif_int(i8* %71, i32 2)
%73 = shl nsw i32 %72, 3
%74 = or i32 %73, 1
br label %122
75: ; preds = %2
%76 = getelementptr inbounds i8, i8* %0, i64 28
%77 = tail call i32 @get_lif_int(i8* %76, i32 2)
%78 = shl nsw i32 %77, 3
%79 = or i32 %78, 1
br label %122
80: ; preds = %2
%81 = getelementptr inbounds i8, i8* %0, i64 28
%82 = tail call i32 @get_lif_int(i8* %81, i32 2)
%83 = shl nsw i32 %82, 3
%84 = or i32 %83, 1
br label %122
85: ; preds = %2
%86 = getelementptr inbounds i8, i8* %0, i64 28
%87 = tail call i32 @get_lif_int(i8* %86, i32 2)
%88 = add nsw i32 %87, 1
br label %122
89: ; preds = %2
%90 = getelementptr inbounds i8, i8* %0, i64 16
%91 = tail call i32 @get_lif_int(i8* %90, i32 4)
%92 = shl nsw i32 %91, 8
br label %122
93: ; preds = %2
%94 = getelementptr inbounds i8, i8* %0, i64 16
%95 = tail call i32 @get_lif_int(i8* %94, i32 4)
%96 = shl nsw i32 %95, 8
br label %122
97: ; preds = %2
%98 = getelementptr inbounds i8, i8* %0, i64 16
%99 = tail call i32 @get_lif_int(i8* %98, i32 4)
%100 = shl nsw i32 %99, 8
br label %122
101: ; preds = %2
%102 = getelementptr inbounds i8, i8* %0, i64 16
%103 = tail call i32 @get_lif_int(i8* %102, i32 4)
%104 = shl nsw i32 %103, 8
br label %122
105: ; preds = %2
%106 = getelementptr inbounds i8, i8* %0, i64 16
%107 = tail call i32 @get_lif_int(i8* %106, i32 4)
%108 = shl nsw i32 %107, 8
br label %122
109: ; preds = %2, %2
%110 = getelementptr inbounds i8, i8* %0, i64 16
%111 = tail call i32 @get_lif_int(i8* %110, i32 4)
%112 = shl nsw i32 %111, 8
br label %122
113: ; preds = %2
%114 = getelementptr inbounds i8, i8* %0, i64 16
%115 = tail call i32 @get_lif_int(i8* %114, i32 4)
%116 = shl nsw i32 %115, 8
br label %122
117: ; preds = %2
%118 = call i32 @sprintf(i8* %4, i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i64 0, i64 0), i32 %6)
%119 = getelementptr inbounds i8, i8* %0, i64 16
%120 = tail call i32 @get_lif_int(i8* %119, i32 4)
%121 = shl nsw i32 %120, 8
br label %122
122: ; preds = %117, %113, %109, %105, %101, %97, %93, %89, %85, %80, %75, %70, %65, %60, %55, %53, %51, %49, %47, %43, %41, %39, %37, %35, %17, %13, %11, %7
%123 = phi i8* [ %4, %117 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), %113 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0), %109 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.24, i64 0, i64 0), %105 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), %101 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), %97 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i64 0, i64 0), %93 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), %89 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), %85 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), %80 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), %75 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0), %70 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), %65 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), %60 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0), %55 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), %53 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i64 0, i64 0), %51 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), %49 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), %47 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), %43 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), %41 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), %39 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), %37 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), %35 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), %17 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), %13 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), %11 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), %7 ]
%124 = phi i32 [ %121, %117 ], [ %116, %113 ], [ %112, %109 ], [ %108, %105 ], [ %104, %101 ], [ %100, %97 ], [ %96, %93 ], [ %92, %89 ], [ %88, %85 ], [ %84, %80 ], [ %79, %75 ], [ %74, %70 ], [ %69, %65 ], [ %64, %60 ], [ %59, %55 ], [ %54, %53 ], [ %52, %51 ], [ %50, %49 ], [ %48, %47 ], [ %46, %43 ], [ %42, %41 ], [ %40, %39 ], [ %38, %37 ], [ %36, %35 ], [ %34, %17 ], [ %16, %13 ], [ %12, %11 ], [ %10, %7 ]
%125 = icmp eq i8* %1, null
br i1 %125, label %128, label %126
126: ; preds = %122
%127 = call i32 @strcpy(i8* %1, i8* %123)
br label %128
128: ; preds = %126, %122
ret i32 %124
}