#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 /*<<< orphan*/ computeKCV(char *, char *);
int /*<<< orphan*/ str_sub(char *, int, int);
int /*<<< orphan*/ strcat(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
scalar_t__ tripleDES_ECB_encrypt(int /*<<< orphan*/, char *, char *);
int createPutKeyCommand(char *numKeyset, char *mode, char *sdekKey,
                        char *gp_enc, char *gp_mac, char *gp_dek,
                        char *keyUsage, char *keyAccess, char *putKeyCommand) {
  char putKeyCommand_temp[(255 + 5) * 2 + 1] = "", element1[2 * 2 + 1] = "80d8",
                                          element2[1 * 2 + 1] = "",
                                          element3[1 * 2 + 1] = "",
                                          element4[1 * 2 + 1] = "55",
                                          element5[3 * 2 + 1] = "ff8010",
                                          element6[16 * 2 + 1] = "",
                                          element7[1 * 2 + 1] = "03",
                                          element8[3 * 2 + 1] = "",
                                          element9[1 * 2 + 1] = "01",
                                          element10[1 * 2 + 1] = "",
                                          element11[1 * 2 + 1] = "02",
                                          element12[2 * 2 + 1] = "",
                                          element13[16 * 2 + 1] = "",
                                          element14[3 * 2 + 1] = "",
                                          element15[16 * 2 + 1] = "",
                                          element16[3 * 2 + 1] = "",
                                          element17[10 * 2 + 1] = "";
  strcpy(element2, numKeyset);
  strcpy(element3, mode);
  strcpy(element10, keyUsage);
  strcpy(element12, keyAccess);
  char tmp[8 * 2 + 1] = "";
  if (tripleDES_ECB_encrypt(str_sub(gp_enc, 0, 15), sdekKey, tmp))
    strcat(element6, tmp);
  else
    return 0;
  if (tripleDES_ECB_encrypt(str_sub(gp_enc, 16, 31), sdekKey, tmp))
    strcat(element6, tmp);
  else
    return 0;
  if (tripleDES_ECB_encrypt(str_sub(gp_mac, 0, 15), sdekKey, tmp))
    strcat(element13, tmp);
  else
    return 0;
  if (tripleDES_ECB_encrypt(str_sub(gp_mac, 16, 31), sdekKey, tmp))
    strcat(element13, tmp);
  else
    return 0;
  if (tripleDES_ECB_encrypt(str_sub(gp_dek, 0, 15), sdekKey, tmp))
    strcat(element15, tmp);
  else
    return 0;
  if (tripleDES_ECB_encrypt(str_sub(gp_dek, 16, 31), sdekKey, tmp))
    strcat(element15, tmp);
  else
    return 0;
  computeKCV(gp_enc, element8);
  computeKCV(gp_mac, element14);
  computeKCV(gp_dek, element16);
  strcat(putKeyCommand_temp, element1);
  strcat(putKeyCommand_temp, element2);
  strcat(putKeyCommand_temp, element3);
  strcat(putKeyCommand_temp, element4);
  strcat(putKeyCommand_temp, element2);
  strcat(putKeyCommand_temp, element5);
  strcat(putKeyCommand_temp, element6);
  strcat(putKeyCommand_temp, element7);
  strcat(putKeyCommand_temp, element8);
  strcat(putKeyCommand_temp, element9);
  strcat(putKeyCommand_temp, element10);
  strcat(putKeyCommand_temp, element11);
  strcat(putKeyCommand_temp, element12);
  strcat(putKeyCommand_temp, element5);
  strcat(putKeyCommand_temp, element13);
  strcat(putKeyCommand_temp, element7);
  strcat(putKeyCommand_temp, element14);
  strcat(putKeyCommand_temp, element9);
  strcat(putKeyCommand_temp, element10);
  strcat(putKeyCommand_temp, element11);
  strcat(putKeyCommand_temp, element12);
  strcat(putKeyCommand_temp, element5);
  strcat(putKeyCommand_temp, element15);
  strcat(putKeyCommand_temp, element7);
  strcat(putKeyCommand_temp, element16);
  strcat(putKeyCommand_temp, element9);
  strcat(putKeyCommand_temp, element10);
  strcat(putKeyCommand_temp, element11);
  strcat(putKeyCommand_temp, element12);
  strcat(putKeyCommand_temp, element17);
  strcpy(putKeyCommand, putKeyCommand_temp);
  return 1;
}


x86 assembly (clang, -O0):
<createPutKeyCommand>:
push   %rbp
mov    %rsp,%rbp
sub    $0x340,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
lea    -0x250(%rbp),%rdi
xor    %esi,%esi
mov    $0x209,%edx
call   1050 <memset@plt>
mov    0xe58(%rip),%eax
mov    %eax,-0x255(%rbp)
mov    0xe50(%rip),%al
mov    %al,-0x251(%rbp)
lea    -0x258(%rbp),%rdi
xor    %esi,%esi
mov    $0x3,%edx
call   1050 <memset@plt>
lea    -0x25b(%rbp),%rdi
xor    %esi,%esi
mov    $0x3,%edx
call   1050 <memset@plt>
mov    0xe1e(%rip),%ax
mov    %ax,-0x25e(%rbp)
mov    0xe13(%rip),%al
mov    %al,-0x25c(%rbp)
mov    0xe08(%rip),%eax
mov    %eax,-0x265(%rbp)
mov    0xdff(%rip),%ax
mov    %ax,-0x261(%rbp)
mov    0xdf4(%rip),%al
mov    %al,-0x25f(%rbp)
lea    -0x290(%rbp),%rdi
xor    %esi,%esi
mov    $0x21,%edx
call   1050 <memset@plt>
mov    0xdd5(%rip),%ax
mov    %ax,-0x293(%rbp)
mov    0xdca(%rip),%al
mov    %al,-0x291(%rbp)
lea    -0x29a(%rbp),%rdi
xor    %esi,%esi
mov    $0x7,%edx
call   1050 <memset@plt>
mov    0xdab(%rip),%ax
mov    %ax,-0x29d(%rbp)
mov    0xda0(%rip),%al
mov    %al,-0x29b(%rbp)
lea    -0x2a0(%rbp),%rdi
xor    %esi,%esi
mov    $0x3,%edx
call   1050 <memset@plt>
mov    0xd81(%rip),%ax
mov    %ax,-0x2a3(%rbp)
mov    0xd76(%rip),%al
mov    %al,-0x2a1(%rbp)
lea    -0x2a8(%rbp),%rdi
xor    %esi,%esi
mov    $0x5,%edx
call   1050 <memset@plt>
lea    -0x2d0(%rbp),%rdi
xor    %esi,%esi
mov    $0x21,%edx
call   1050 <memset@plt>
lea    -0x2d7(%rbp),%rdi
xor    %esi,%esi
mov    $0x7,%edx
call   1050 <memset@plt>
lea    -0x300(%rbp),%rdi
xor    %esi,%esi
mov    $0x21,%edx
call   1050 <memset@plt>
lea    -0x307(%rbp),%rdi
xor    %esi,%esi
mov    $0x7,%edx
call   1050 <memset@plt>
lea    -0x320(%rbp),%rdi
xor    %esi,%esi
mov    $0x15,%edx
call   1050 <memset@plt>
lea    -0x258(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <strcpy@plt>
lea    -0x25b(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   1030 <strcpy@plt>
lea    -0x2a0(%rbp),%rdi
mov    0x10(%rbp),%rsi
call   1030 <strcpy@plt>
lea    -0x2a8(%rbp),%rdi
mov    0x18(%rbp),%rsi
call   1030 <strcpy@plt>
lea    -0x340(%rbp),%rdi
xor    %esi,%esi
mov    $0x11,%edx
call   1050 <memset@plt>
mov    -0x28(%rbp),%rdi
xor    %esi,%esi
mov    $0xf,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    -0x20(%rbp),%rsi
lea    -0x340(%rbp),%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
cmp    $0x0,%rax
je     13b0 <createPutKeyCommand+0x250>
lea    -0x290(%rbp),%rdi
lea    -0x340(%rbp),%rsi
call   1070 <strcat@plt>
jmp    13bc <createPutKeyCommand+0x25c>
movl   $0x0,-0x4(%rbp)
jmp    17d6 <createPutKeyCommand+0x676>
mov    -0x28(%rbp),%rdi
mov    $0x10,%esi
mov    $0x1f,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    -0x20(%rbp),%rsi
lea    -0x340(%rbp),%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
cmp    $0x0,%rax
je     1403 <createPutKeyCommand+0x2a3>
lea    -0x290(%rbp),%rdi
lea    -0x340(%rbp),%rsi
call   1070 <strcat@plt>
jmp    140f <createPutKeyCommand+0x2af>
movl   $0x0,-0x4(%rbp)
jmp    17d6 <createPutKeyCommand+0x676>
mov    -0x30(%rbp),%rdi
xor    %esi,%esi
mov    $0xf,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    -0x20(%rbp),%rsi
lea    -0x340(%rbp),%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
cmp    $0x0,%rax
je     1453 <createPutKeyCommand+0x2f3>
lea    -0x2d0(%rbp),%rdi
lea    -0x340(%rbp),%rsi
call   1070 <strcat@plt>
jmp    145f <createPutKeyCommand+0x2ff>
movl   $0x0,-0x4(%rbp)
jmp    17d6 <createPutKeyCommand+0x676>
mov    -0x30(%rbp),%rdi
mov    $0x10,%esi
mov    $0x1f,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    -0x20(%rbp),%rsi
lea    -0x340(%rbp),%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
cmp    $0x0,%rax
je     14a6 <createPutKeyCommand+0x346>
lea    -0x2d0(%rbp),%rdi
lea    -0x340(%rbp),%rsi
call   1070 <strcat@plt>
jmp    14b2 <createPutKeyCommand+0x352>
movl   $0x0,-0x4(%rbp)
jmp    17d6 <createPutKeyCommand+0x676>
mov    -0x38(%rbp),%rdi
xor    %esi,%esi
mov    $0xf,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    -0x20(%rbp),%rsi
lea    -0x340(%rbp),%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
cmp    $0x0,%rax
je     14f6 <createPutKeyCommand+0x396>
lea    -0x300(%rbp),%rdi
lea    -0x340(%rbp),%rsi
call   1070 <strcat@plt>
jmp    1502 <createPutKeyCommand+0x3a2>
movl   $0x0,-0x4(%rbp)
jmp    17d6 <createPutKeyCommand+0x676>
mov    -0x38(%rbp),%rdi
mov    $0x10,%esi
mov    $0x1f,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    -0x20(%rbp),%rsi
lea    -0x340(%rbp),%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
cmp    $0x0,%rax
je     1549 <createPutKeyCommand+0x3e9>
lea    -0x300(%rbp),%rdi
lea    -0x340(%rbp),%rsi
call   1070 <strcat@plt>
jmp    1555 <createPutKeyCommand+0x3f5>
movl   $0x0,-0x4(%rbp)
jmp    17d6 <createPutKeyCommand+0x676>
mov    -0x28(%rbp),%rdi
lea    -0x29a(%rbp),%rsi
call   1040 <computeKCV@plt>
mov    -0x30(%rbp),%rdi
lea    -0x2d7(%rbp),%rsi
call   1040 <computeKCV@plt>
mov    -0x38(%rbp),%rdi
lea    -0x307(%rbp),%rsi
call   1040 <computeKCV@plt>
lea    -0x250(%rbp),%rdi
lea    -0x255(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x258(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x25b(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x25e(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x258(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x265(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x290(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x293(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x29a(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x29d(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a0(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a3(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a8(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x265(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2d0(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x293(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2d7(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x29d(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a0(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a3(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a8(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x265(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x300(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x293(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x307(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x29d(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a0(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a3(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x2a8(%rbp),%rsi
call   1070 <strcat@plt>
lea    -0x250(%rbp),%rdi
lea    -0x320(%rbp),%rsi
call   1070 <strcat@plt>
mov    0x20(%rbp),%rdi
lea    -0x250(%rbp),%rsi
call   1030 <strcpy@plt>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x340,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<createPutKeyCommand>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x348,%rsp
mov    %r9,0x78(%rsp)
mov    %r8,%r13
mov    %rcx,%rbp
mov    %rdx,%rbx
mov    %rsi,%r15
mov    %rdi,%r12
mov    0x380(%rsp),%r14
lea    0x130(%rsp),%rdi
mov    $0x209,%edx
xor    %esi,%esi
call   1050 <memset@plt>
movb   $0x0,0x3c(%rsp)
movl   $0x38643038,0x38(%rsp)
38
movb   $0x0,0x16(%rsp)
movw   $0x0,0x14(%rsp)
movb   $0x0,0x12(%rsp)
movw   $0x0,0x10(%rsp)
movb   $0x0,0x26(%rsp)
movw   $0x3535,0x24(%rsp)
movl   $0x303130,0x33(%rsp)
movl   $0x30386666,0x30(%rsp)
30
xorps  %xmm0,%xmm0
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0xe0(%rsp)
movb   $0x0,0x100(%rsp)
movb   $0x0,0x22(%rsp)
movw   $0x3330,0x20(%rsp)
movl   $0x0,0x73(%rsp)
movl   $0x0,0x70(%rsp)
movb   $0x0,0x1e(%rsp)
movw   $0x3130,0x1c(%rsp)
movb   $0x0,0xe(%rsp)
movw   $0x0,0xc(%rsp)
movb   $0x0,0x1a(%rsp)
movw   $0x3230,0x18(%rsp)
movb   $0x0,0x2c(%rsp)
movl   $0x0,0x28(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xb0(%rsp)
movb   $0x0,0xd0(%rsp)
movl   $0x0,0x4b(%rsp)
movl   $0x0,0x48(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0x80(%rsp)
movb   $0x0,0xa0(%rsp)
movl   $0x0,0x43(%rsp)
movl   $0x0,0x40(%rsp)
movaps %xmm0,0x110(%rsp)
movq   $0x0,0x11d(%rsp)
lea    0x14(%rsp),%rdi
mov    %r12,%rsi
mov    %rbp,%r12
call   1030 <strcpy@plt>
lea    0x10(%rsp),%rdi
mov    %r15,%rsi
call   1030 <strcpy@plt>
lea    0xc(%rsp),%rdi
mov    %r14,%rsi
call   1030 <strcpy@plt>
lea    0x28(%rsp),%rdi
mov    0x388(%rsp),%rsi
call   1030 <strcpy@plt>
xorps  %xmm0,%xmm0
movaps %xmm0,0x50(%rsp)
movb   $0x0,0x60(%rsp)
mov    %rbp,%rdi
xor    %esi,%esi
mov    $0xf,%edx
call   1080 <str_sub@plt>
lea    0x50(%rsp),%rdx
mov    %eax,%edi
mov    %rbx,%rsi
call   1060 <tripleDES_ECB_encrypt@plt>
test   %rax,%rax
je     1641 <createPutKeyCommand+0x4e1>
lea    0xe0(%rsp),%rdi
lea    0x50(%rsp),%rbp
mov    %rbp,%rsi
call   1070 <strcat@plt>
mov    %r12,%rdi
mov    $0x10,%esi
mov    $0x1f,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    %rbx,%rsi
mov    %rbp,%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
test   %rax,%rax
mov    0x78(%rsp),%r14
mov    $0x0,%ebp
je     1643 <createPutKeyCommand+0x4e3>
mov    %r13,%r15
lea    0xe0(%rsp),%rdi
lea    0x50(%rsp),%r13
mov    %r13,%rsi
call   1070 <strcat@plt>
xor    %ebp,%ebp
mov    %r15,%rdi
xor    %esi,%esi
mov    $0xf,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    %rbx,%rsi
mov    %r13,%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
test   %rax,%rax
je     1643 <createPutKeyCommand+0x4e3>
lea    0xb0(%rsp),%rdi
lea    0x50(%rsp),%r13
mov    %r13,%rsi
call   1070 <strcat@plt>
mov    %r15,%rdi
mov    $0x10,%esi
mov    $0x1f,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    %rbx,%rsi
mov    %r13,%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
test   %rax,%rax
je     1643 <createPutKeyCommand+0x4e3>
lea    0xb0(%rsp),%rdi
lea    0x50(%rsp),%r13
mov    %r13,%rsi
call   1070 <strcat@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0xf,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    %rbx,%rsi
mov    %r13,%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
test   %rax,%rax
je     1643 <createPutKeyCommand+0x4e3>
lea    0x80(%rsp),%rdi
lea    0x50(%rsp),%r13
mov    %r13,%rsi
call   1070 <strcat@plt>
mov    %r14,%rdi
mov    $0x10,%esi
mov    $0x1f,%edx
call   1080 <str_sub@plt>
mov    %eax,%edi
mov    %rbx,%rsi
mov    %r13,%rdx
call   1060 <tripleDES_ECB_encrypt@plt>
test   %rax,%rax
je     1643 <createPutKeyCommand+0x4e3>
lea    0x80(%rsp),%rdi
lea    0x50(%rsp),%rsi
call   1070 <strcat@plt>
lea    0x70(%rsp),%rsi
mov    %r12,%rdi
mov    %rsi,%r12
call   1040 <computeKCV@plt>
lea    0x48(%rsp),%rsi
mov    %r15,%rdi
call   1040 <computeKCV@plt>
lea    0x40(%rsp),%rsi
mov    %r14,%rdi
call   1040 <computeKCV@plt>
lea    0x130(%rsp),%rbp
lea    0x38(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
lea    0x14(%rsp),%rbx
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1070 <strcat@plt>
lea    0x10(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
lea    0x24(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1070 <strcat@plt>
lea    0x30(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
lea    0xe0(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
lea    0x20(%rsp),%r13
mov    %rbp,%rdi
mov    %r13,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r12,%rsi
call   1070 <strcat@plt>
lea    0x1c(%rsp),%r15
mov    %rbp,%rdi
mov    %r15,%rsi
call   1070 <strcat@plt>
lea    0xc(%rsp),%r12
mov    %rbp,%rdi
mov    %r12,%rsi
call   1070 <strcat@plt>
lea    0x18(%rsp),%r14
mov    %rbp,%rdi
mov    %r14,%rsi
call   1070 <strcat@plt>
lea    0x28(%rsp),%rbx
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
lea    0x30(%rsp),%rsi
call   1070 <strcat@plt>
lea    0xb0(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r13,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
lea    0x48(%rsp),%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r12,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r14,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
lea    0x30(%rsp),%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
lea    0x80(%rsp),%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r13,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
lea    0x40(%rsp),%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r12,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %r14,%rsi
call   1070 <strcat@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1070 <strcat@plt>
lea    0x110(%rsp),%rsi
mov    %rbp,%rdi
call   1070 <strcat@plt>
mov    0x390(%rsp),%rdi
mov    %rbp,%rsi
call   1030 <strcpy@plt>
mov    $0x1,%ebp
jmp    1643 <createPutKeyCommand+0x4e3>
xor    %ebp,%ebp
mov    %ebp,%eax
add    $0x348,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.createPutKeyCommand.element1 = [5 x i8] c"80d8\00"
@__const.createPutKeyCommand.element4 = [3 x i8] c"55\00"
@__const.createPutKeyCommand.element5 = [7 x i8] c"ff8010\00"
@__const.createPutKeyCommand.element7 = [3 x i8] c"03\00"
@__const.createPutKeyCommand.element9 = [3 x i8] c"01\00"
@__const.createPutKeyCommand.element11 = [3 x i8] c"02\00"
define i32 @createPutKeyCommand(i8* %0, i8* %1, i8* %2, i8* %3, i8* %4, i8* %5, i8* %6, i8* %7, i8* %8) {
%10 = alloca i32
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i8*
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i8*
%17 = alloca i8*
%18 = alloca i8*
%19 = alloca i8*
%20 = alloca [521 x i8]
%21 = alloca [5 x i8]
%22 = alloca [3 x i8]
%23 = alloca [3 x i8]
%24 = alloca [3 x i8]
%25 = alloca [7 x i8]
%26 = alloca [33 x i8]
%27 = alloca [3 x i8]
%28 = alloca [7 x i8]
%29 = alloca [3 x i8]
%30 = alloca [3 x i8]
%31 = alloca [3 x i8]
%32 = alloca [5 x i8]
%33 = alloca [33 x i8]
%34 = alloca [7 x i8]
%35 = alloca [33 x i8]
%36 = alloca [7 x i8]
%37 = alloca [21 x i8]
%38 = alloca [17 x i8]
store i8* %0, i8** %11
store i8* %1, i8** %12
store i8* %2, i8** %13
store i8* %3, i8** %14
store i8* %4, i8** %15
store i8* %5, i8** %16
store i8* %6, i8** %17
store i8* %7, i8** %18
store i8* %8, i8** %19
%39 = bitcast [521 x i8]* %20 to i8*
%40 = bitcast [5 x i8]* %21 to i8*
%41 = bitcast [3 x i8]* %22 to i8*
%42 = bitcast [3 x i8]* %23 to i8*
%43 = bitcast [3 x i8]* %24 to i8*
%44 = bitcast [7 x i8]* %25 to i8*
%45 = bitcast [33 x i8]* %26 to i8*
%46 = bitcast [3 x i8]* %27 to i8*
%47 = bitcast [7 x i8]* %28 to i8*
%48 = bitcast [3 x i8]* %29 to i8*
%49 = bitcast [3 x i8]* %30 to i8*
%50 = bitcast [3 x i8]* %31 to i8*
%51 = bitcast [5 x i8]* %32 to i8*
%52 = bitcast [33 x i8]* %33 to i8*
%53 = bitcast [7 x i8]* %34 to i8*
%54 = bitcast [33 x i8]* %35 to i8*
%55 = bitcast [7 x i8]* %36 to i8*
%56 = bitcast [21 x i8]* %37 to i8*
%57 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 0
%58 = load i8*, i8** %11
%59 = call i32 @strcpy(i8* %57, i8* %58)
%60 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 0
%61 = load i8*, i8** %12
%62 = call i32 @strcpy(i8* %60, i8* %61)
%63 = getelementptr inbounds [3 x i8], [3 x i8]* %30, i64 0, i64 0
%64 = load i8*, i8** %17
%65 = call i32 @strcpy(i8* %63, i8* %64)
%66 = getelementptr inbounds [5 x i8], [5 x i8]* %32, i64 0, i64 0
%67 = load i8*, i8** %18
%68 = call i32 @strcpy(i8* %66, i8* %67)
%69 = bitcast [17 x i8]* %38 to i8*
%70 = load i8*, i8** %14
%71 = call i32 @str_sub(i8* %70, i32 0, i32 15)
%72 = load i8*, i8** %13
%73 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%74 = call i64 @tripleDES_ECB_encrypt(i32 %71, i8* %72, i8* %73)
%75 = icmp ne i64 %74, 0
br i1 %75, label %76, label %80
76: ; preds = %9
%77 = getelementptr inbounds [33 x i8], [33 x i8]* %26, i64 0, i64 0
%78 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%79 = call i32 @strcat(i8* %77, i8* %78)
br label %81
80: ; preds = %9
store i32 0, i32* %10
br label %244
81: ; preds = %76
%82 = load i8*, i8** %14
%83 = call i32 @str_sub(i8* %82, i32 16, i32 31)
%84 = load i8*, i8** %13
%85 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%86 = call i64 @tripleDES_ECB_encrypt(i32 %83, i8* %84, i8* %85)
%87 = icmp ne i64 %86, 0
br i1 %87, label %88, label %92
88: ; preds = %81
%89 = getelementptr inbounds [33 x i8], [33 x i8]* %26, i64 0, i64 0
%90 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%91 = call i32 @strcat(i8* %89, i8* %90)
br label %93
92: ; preds = %81
store i32 0, i32* %10
br label %244
93: ; preds = %88
%94 = load i8*, i8** %15
%95 = call i32 @str_sub(i8* %94, i32 0, i32 15)
%96 = load i8*, i8** %13
%97 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%98 = call i64 @tripleDES_ECB_encrypt(i32 %95, i8* %96, i8* %97)
%99 = icmp ne i64 %98, 0
br i1 %99, label %100, label %104
100: ; preds = %93
%101 = getelementptr inbounds [33 x i8], [33 x i8]* %33, i64 0, i64 0
%102 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%103 = call i32 @strcat(i8* %101, i8* %102)
br label %105
104: ; preds = %93
store i32 0, i32* %10
br label %244
105: ; preds = %100
%106 = load i8*, i8** %15
%107 = call i32 @str_sub(i8* %106, i32 16, i32 31)
%108 = load i8*, i8** %13
%109 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%110 = call i64 @tripleDES_ECB_encrypt(i32 %107, i8* %108, i8* %109)
%111 = icmp ne i64 %110, 0
br i1 %111, label %112, label %116
112: ; preds = %105
%113 = getelementptr inbounds [33 x i8], [33 x i8]* %33, i64 0, i64 0
%114 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%115 = call i32 @strcat(i8* %113, i8* %114)
br label %117
116: ; preds = %105
store i32 0, i32* %10
br label %244
117: ; preds = %112
%118 = load i8*, i8** %16
%119 = call i32 @str_sub(i8* %118, i32 0, i32 15)
%120 = load i8*, i8** %13
%121 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%122 = call i64 @tripleDES_ECB_encrypt(i32 %119, i8* %120, i8* %121)
%123 = icmp ne i64 %122, 0
br i1 %123, label %124, label %128
124: ; preds = %117
%125 = getelementptr inbounds [33 x i8], [33 x i8]* %35, i64 0, i64 0
%126 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%127 = call i32 @strcat(i8* %125, i8* %126)
br label %129
128: ; preds = %117
store i32 0, i32* %10
br label %244
129: ; preds = %124
%130 = load i8*, i8** %16
%131 = call i32 @str_sub(i8* %130, i32 16, i32 31)
%132 = load i8*, i8** %13
%133 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%134 = call i64 @tripleDES_ECB_encrypt(i32 %131, i8* %132, i8* %133)
%135 = icmp ne i64 %134, 0
br i1 %135, label %136, label %140
136: ; preds = %129
%137 = getelementptr inbounds [33 x i8], [33 x i8]* %35, i64 0, i64 0
%138 = getelementptr inbounds [17 x i8], [17 x i8]* %38, i64 0, i64 0
%139 = call i32 @strcat(i8* %137, i8* %138)
br label %141
140: ; preds = %129
store i32 0, i32* %10
br label %244
141: ; preds = %136
%142 = load i8*, i8** %14
%143 = getelementptr inbounds [7 x i8], [7 x i8]* %28, i64 0, i64 0
%144 = call i32 @computeKCV(i8* %142, i8* %143)
%145 = load i8*, i8** %15
%146 = getelementptr inbounds [7 x i8], [7 x i8]* %34, i64 0, i64 0
%147 = call i32 @computeKCV(i8* %145, i8* %146)
%148 = load i8*, i8** %16
%149 = getelementptr inbounds [7 x i8], [7 x i8]* %36, i64 0, i64 0
%150 = call i32 @computeKCV(i8* %148, i8* %149)
%151 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%152 = getelementptr inbounds [5 x i8], [5 x i8]* %21, i64 0, i64 0
%153 = call i32 @strcat(i8* %151, i8* %152)
%154 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%155 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 0
%156 = call i32 @strcat(i8* %154, i8* %155)
%157 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%158 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 0
%159 = call i32 @strcat(i8* %157, i8* %158)
%160 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%161 = getelementptr inbounds [3 x i8], [3 x i8]* %24, i64 0, i64 0
%162 = call i32 @strcat(i8* %160, i8* %161)
%163 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%164 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 0
%165 = call i32 @strcat(i8* %163, i8* %164)
%166 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%167 = getelementptr inbounds [7 x i8], [7 x i8]* %25, i64 0, i64 0
%168 = call i32 @strcat(i8* %166, i8* %167)
%169 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%170 = getelementptr inbounds [33 x i8], [33 x i8]* %26, i64 0, i64 0
%171 = call i32 @strcat(i8* %169, i8* %170)
%172 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%173 = getelementptr inbounds [3 x i8], [3 x i8]* %27, i64 0, i64 0
%174 = call i32 @strcat(i8* %172, i8* %173)
%175 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%176 = getelementptr inbounds [7 x i8], [7 x i8]* %28, i64 0, i64 0
%177 = call i32 @strcat(i8* %175, i8* %176)
%178 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%179 = getelementptr inbounds [3 x i8], [3 x i8]* %29, i64 0, i64 0
%180 = call i32 @strcat(i8* %178, i8* %179)
%181 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%182 = getelementptr inbounds [3 x i8], [3 x i8]* %30, i64 0, i64 0
%183 = call i32 @strcat(i8* %181, i8* %182)
%184 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%185 = getelementptr inbounds [3 x i8], [3 x i8]* %31, i64 0, i64 0
%186 = call i32 @strcat(i8* %184, i8* %185)
%187 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%188 = getelementptr inbounds [5 x i8], [5 x i8]* %32, i64 0, i64 0
%189 = call i32 @strcat(i8* %187, i8* %188)
%190 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%191 = getelementptr inbounds [7 x i8], [7 x i8]* %25, i64 0, i64 0
%192 = call i32 @strcat(i8* %190, i8* %191)
%193 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%194 = getelementptr inbounds [33 x i8], [33 x i8]* %33, i64 0, i64 0
%195 = call i32 @strcat(i8* %193, i8* %194)
%196 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%197 = getelementptr inbounds [3 x i8], [3 x i8]* %27, i64 0, i64 0
%198 = call i32 @strcat(i8* %196, i8* %197)
%199 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%200 = getelementptr inbounds [7 x i8], [7 x i8]* %34, i64 0, i64 0
%201 = call i32 @strcat(i8* %199, i8* %200)
%202 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%203 = getelementptr inbounds [3 x i8], [3 x i8]* %29, i64 0, i64 0
%204 = call i32 @strcat(i8* %202, i8* %203)
%205 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%206 = getelementptr inbounds [3 x i8], [3 x i8]* %30, i64 0, i64 0
%207 = call i32 @strcat(i8* %205, i8* %206)
%208 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%209 = getelementptr inbounds [3 x i8], [3 x i8]* %31, i64 0, i64 0
%210 = call i32 @strcat(i8* %208, i8* %209)
%211 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%212 = getelementptr inbounds [5 x i8], [5 x i8]* %32, i64 0, i64 0
%213 = call i32 @strcat(i8* %211, i8* %212)
%214 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%215 = getelementptr inbounds [7 x i8], [7 x i8]* %25, i64 0, i64 0
%216 = call i32 @strcat(i8* %214, i8* %215)
%217 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%218 = getelementptr inbounds [33 x i8], [33 x i8]* %35, i64 0, i64 0
%219 = call i32 @strcat(i8* %217, i8* %218)
%220 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%221 = getelementptr inbounds [3 x i8], [3 x i8]* %27, i64 0, i64 0
%222 = call i32 @strcat(i8* %220, i8* %221)
%223 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%224 = getelementptr inbounds [7 x i8], [7 x i8]* %36, i64 0, i64 0
%225 = call i32 @strcat(i8* %223, i8* %224)
%226 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%227 = getelementptr inbounds [3 x i8], [3 x i8]* %29, i64 0, i64 0
%228 = call i32 @strcat(i8* %226, i8* %227)
%229 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%230 = getelementptr inbounds [3 x i8], [3 x i8]* %30, i64 0, i64 0
%231 = call i32 @strcat(i8* %229, i8* %230)
%232 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%233 = getelementptr inbounds [3 x i8], [3 x i8]* %31, i64 0, i64 0
%234 = call i32 @strcat(i8* %232, i8* %233)
%235 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%236 = getelementptr inbounds [5 x i8], [5 x i8]* %32, i64 0, i64 0
%237 = call i32 @strcat(i8* %235, i8* %236)
%238 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%239 = getelementptr inbounds [21 x i8], [21 x i8]* %37, i64 0, i64 0
%240 = call i32 @strcat(i8* %238, i8* %239)
%241 = load i8*, i8** %19
%242 = getelementptr inbounds [521 x i8], [521 x i8]* %20, i64 0, i64 0
%243 = call i32 @strcpy(i8* %241, i8* %242)
store i32 1, i32* %10
br label %244
244: ; preds = %141, %140, %128, %116, %104, %92, %80
%245 = load i32, i32* %10
ret i32 %245
}

LLVM IR (-O2):
@__const.createPutKeyCommand.element1 = [5 x i8] c"80d8\00"
@__const.createPutKeyCommand.element4 = [3 x i8] c"55\00"
@__const.createPutKeyCommand.element5 = [7 x i8] c"ff8010\00"
@__const.createPutKeyCommand.element7 = [3 x i8] c"03\00"
@__const.createPutKeyCommand.element9 = [3 x i8] c"01\00"
@__const.createPutKeyCommand.element11 = [3 x i8] c"02\00"
define i32 @createPutKeyCommand(i8* %0, i8* %1, i8* %2, i8* %3, i8* %4, i8* %5, i8* %6, i8* %7, i8* %8) {
%10 = alloca [521 x i8]
%11 = alloca [5 x i8]
%12 = alloca [3 x i8]
%13 = alloca [3 x i8]
%14 = alloca [3 x i8]
%15 = alloca [7 x i8]
%16 = alloca [33 x i8]
%17 = alloca [3 x i8]
%18 = alloca [7 x i8]
%19 = alloca [3 x i8]
%20 = alloca [3 x i8]
%21 = alloca [3 x i8]
%22 = alloca [5 x i8]
%23 = alloca [33 x i8]
%24 = alloca [7 x i8]
%25 = alloca [33 x i8]
%26 = alloca [7 x i8]
%27 = alloca [21 x i8]
%28 = alloca [17 x i8]
%29 = getelementptr inbounds [521 x i8], [521 x i8]* %10, i64 0, i64 0
%30 = getelementptr inbounds [5 x i8], [5 x i8]* %11, i64 0, i64 0
%31 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%32 = getelementptr inbounds [3 x i8], [3 x i8]* %13, i64 0, i64 0
%33 = getelementptr inbounds [3 x i8], [3 x i8]* %14, i64 0, i64 0
%34 = getelementptr inbounds [7 x i8], [7 x i8]* %15, i64 0, i64 0
%35 = getelementptr inbounds [33 x i8], [33 x i8]* %16, i64 0, i64 0
%36 = getelementptr inbounds [3 x i8], [3 x i8]* %17, i64 0, i64 0
%37 = getelementptr inbounds [7 x i8], [7 x i8]* %18, i64 0, i64 0
%38 = getelementptr inbounds [3 x i8], [3 x i8]* %19, i64 0, i64 0
%39 = getelementptr inbounds [3 x i8], [3 x i8]* %20, i64 0, i64 0
%40 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 0
%41 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%42 = getelementptr inbounds [33 x i8], [33 x i8]* %23, i64 0, i64 0
%43 = getelementptr inbounds [7 x i8], [7 x i8]* %24, i64 0, i64 0
%44 = getelementptr inbounds [33 x i8], [33 x i8]* %25, i64 0, i64 0
%45 = getelementptr inbounds [7 x i8], [7 x i8]* %26, i64 0, i64 0
%46 = getelementptr inbounds [21 x i8], [21 x i8]* %27, i64 0, i64 0
%47 = call i32 @strcpy(i8* %31, i8* %0)
%48 = call i32 @strcpy(i8* %32, i8* %1)
%49 = call i32 @strcpy(i8* %39, i8* %6)
%50 = call i32 @strcpy(i8* %41, i8* %7)
%51 = getelementptr inbounds [17 x i8], [17 x i8]* %28, i64 0, i64 0
%52 = call i32 @str_sub(i8* %3, i32 0, i32 15)
%53 = call i64 @tripleDES_ECB_encrypt(i32 %52, i8* %2, i8* %51)
%54 = icmp eq i64 %53, 0
br i1 %54, label %116, label %55
55: ; preds = %9
%56 = call i32 @strcat(i8* %35, i8* %51)
%57 = call i32 @str_sub(i8* %3, i32 16, i32 31)
%58 = call i64 @tripleDES_ECB_encrypt(i32 %57, i8* %2, i8* %51)
%59 = icmp eq i64 %58, 0
br i1 %59, label %116, label %60
60: ; preds = %55
%61 = call i32 @strcat(i8* %35, i8* %51)
%62 = call i32 @str_sub(i8* %4, i32 0, i32 15)
%63 = call i64 @tripleDES_ECB_encrypt(i32 %62, i8* %2, i8* %51)
%64 = icmp eq i64 %63, 0
br i1 %64, label %116, label %65
65: ; preds = %60
%66 = call i32 @strcat(i8* %42, i8* %51)
%67 = call i32 @str_sub(i8* %4, i32 16, i32 31)
%68 = call i64 @tripleDES_ECB_encrypt(i32 %67, i8* %2, i8* %51)
%69 = icmp eq i64 %68, 0
br i1 %69, label %116, label %70
70: ; preds = %65
%71 = call i32 @strcat(i8* %42, i8* %51)
%72 = call i32 @str_sub(i8* %5, i32 0, i32 15)
%73 = call i64 @tripleDES_ECB_encrypt(i32 %72, i8* %2, i8* %51)
%74 = icmp eq i64 %73, 0
br i1 %74, label %116, label %75
75: ; preds = %70
%76 = call i32 @strcat(i8* %44, i8* %51)
%77 = call i32 @str_sub(i8* %5, i32 16, i32 31)
%78 = call i64 @tripleDES_ECB_encrypt(i32 %77, i8* %2, i8* %51)
%79 = icmp eq i64 %78, 0
br i1 %79, label %116, label %80
80: ; preds = %75
%81 = call i32 @strcat(i8* %44, i8* %51)
%82 = call i32 @computeKCV(i8* %3, i8* %37)
%83 = call i32 @computeKCV(i8* %4, i8* %43)
%84 = call i32 @computeKCV(i8* %5, i8* %45)
%85 = call i32 @strcat(i8* %29, i8* %30)
%86 = call i32 @strcat(i8* %29, i8* %31)
%87 = call i32 @strcat(i8* %29, i8* %32)
%88 = call i32 @strcat(i8* %29, i8* %33)
%89 = call i32 @strcat(i8* %29, i8* %31)
%90 = call i32 @strcat(i8* %29, i8* %34)
%91 = call i32 @strcat(i8* %29, i8* %35)
%92 = call i32 @strcat(i8* %29, i8* %36)
%93 = call i32 @strcat(i8* %29, i8* %37)
%94 = call i32 @strcat(i8* %29, i8* %38)
%95 = call i32 @strcat(i8* %29, i8* %39)
%96 = call i32 @strcat(i8* %29, i8* %40)
%97 = call i32 @strcat(i8* %29, i8* %41)
%98 = call i32 @strcat(i8* %29, i8* %34)
%99 = call i32 @strcat(i8* %29, i8* %42)
%100 = call i32 @strcat(i8* %29, i8* %36)
%101 = call i32 @strcat(i8* %29, i8* %43)
%102 = call i32 @strcat(i8* %29, i8* %38)
%103 = call i32 @strcat(i8* %29, i8* %39)
%104 = call i32 @strcat(i8* %29, i8* %40)
%105 = call i32 @strcat(i8* %29, i8* %41)
%106 = call i32 @strcat(i8* %29, i8* %34)
%107 = call i32 @strcat(i8* %29, i8* %44)
%108 = call i32 @strcat(i8* %29, i8* %36)
%109 = call i32 @strcat(i8* %29, i8* %45)
%110 = call i32 @strcat(i8* %29, i8* %38)
%111 = call i32 @strcat(i8* %29, i8* %39)
%112 = call i32 @strcat(i8* %29, i8* %40)
%113 = call i32 @strcat(i8* %29, i8* %41)
%114 = call i32 @strcat(i8* %29, i8* %46)
%115 = call i32 @strcpy(i8* %8, i8* %29)
br label %116
116: ; preds = %75, %70, %65, %60, %55, %9, %80
%117 = phi i32 [ 1, %80 ], [ 0, %9 ], [ 0, %55 ], [ 0, %60 ], [ 0, %65 ], [ 0, %70 ], [ 0, %75 ]
ret i32 %117
}