#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 */
typedef struct TYPE_17__ TYPE_6__;
typedef struct TYPE_16__ TYPE_5__;
typedef struct TYPE_15__ TYPE_4__;
typedef struct TYPE_14__ TYPE_3__;
typedef struct TYPE_13__ TYPE_2__;
typedef struct TYPE_12__ TYPE_1__;

/* Type definitions */
struct passwd {
  char *pw_name;
  char *pw_passwd;
  char *pw_gecos;
  char *pw_dir;
  char *pw_shell;
  void *pw_gid;
  void *pw_uid;
};
struct TYPE_16__ {
  scalar_t__ status;
};
typedef TYPE_5__ nis_result;
struct TYPE_14__ {
  int en_cols_len;
  TYPE_2__ *en_cols_val;
};
struct TYPE_15__ {
  TYPE_3__ en_cols;
  int /*<<< orphan*/ en_type;
};
struct TYPE_17__ {
  TYPE_4__ EN_data;
};
typedef TYPE_6__ nis_object;
struct TYPE_12__ {
  size_t ec_value_len;
  char *ec_value_val;
};
struct TYPE_13__ {
  TYPE_1__ ec_value;
};

/* Variables and functions */
int ERANGE;
scalar_t__ NIS_ENTRY_OBJ;
int NIS_RES_NUMOBJ(TYPE_5__ *);
TYPE_6__ *NIS_RES_OBJECT(TYPE_5__ *);
scalar_t__ NIS_SUCCESS;
scalar_t__ NIS_S_SUCCESS;
scalar_t__ __type_of(TYPE_6__ *);
scalar_t__ strcmp(int /*<<< orphan*/, char *);
size_t strlen(char *);
int /*<<< orphan*/ strncpy(char *, char *, size_t);
void *strtoul(char *, int /*<<< orphan*/ *, int);
int _nss_nisplus_parse_pwent(nis_result *result, struct passwd *pw,
                             char *buffer, size_t buflen, int *errnop) {
  if ((result->status != NIS_SUCCESS && result->status != NIS_S_SUCCESS) ||
      NIS_RES_NUMOBJ(result) != 1 ||
      __type_of(NIS_RES_OBJECT(result)) != NIS_ENTRY_OBJ ||
      strcmp(NIS_RES_OBJECT(result)->EN_data.en_type, "passwd_tbl") != 0 ||
      NIS_RES_OBJECT(result)->EN_data.en_cols.en_cols_len < 7)
    return 0;
  nis_object *obj = NIS_RES_OBJECT(result);
  char *first_unused = buffer;
  size_t room_left = buflen;
  size_t len;
  if (((obj)->EN_data.en_cols.en_cols_val[0].ec_value.ec_value_len) >=
      room_left) {
  no_more_room:
    *errnop = ERANGE;
    return -1;
  }
  strncpy(first_unused,
          ((obj)->EN_data.en_cols.en_cols_val[0].ec_value.ec_value_val),
          ((obj)->EN_data.en_cols.en_cols_val[0].ec_value.ec_value_len));
  first_unused[((obj)->EN_data.en_cols.en_cols_val[0].ec_value.ec_value_len)] =
      '\0';
  len = strlen(first_unused);
  if (len == 0)
    return 0;
  pw->pw_name = first_unused;
  room_left -= len + 1;
  first_unused += len + 1;
  if (((obj)->EN_data.en_cols.en_cols_val[1].ec_value.ec_value_len) >=
      room_left)
    goto no_more_room;
  strncpy(first_unused,
          ((obj)->EN_data.en_cols.en_cols_val[1].ec_value.ec_value_val),
          ((obj)->EN_data.en_cols.en_cols_val[1].ec_value.ec_value_len));
  first_unused[((obj)->EN_data.en_cols.en_cols_val[1].ec_value.ec_value_len)] =
      '\0';
  pw->pw_passwd = first_unused;
  len = strlen(first_unused);
  room_left -= len + 1;
  first_unused += len + 1;
  char *numstr = ((obj)->EN_data.en_cols.en_cols_val[2].ec_value.ec_value_val);
  len = ((obj)->EN_data.en_cols.en_cols_val[2].ec_value.ec_value_len);
  if (len == 0 && numstr[len - 1] != '\0') {
    if (len >= room_left)
      goto no_more_room;
    strncpy(first_unused, numstr, len);
    first_unused[len] = '\0';
    numstr = first_unused;
  }
  if (numstr[0] == '\0')
    return 0;
  pw->pw_uid = strtoul(numstr, NULL, 10);
  numstr = ((obj)->EN_data.en_cols.en_cols_val[3].ec_value.ec_value_val);
  len = ((obj)->EN_data.en_cols.en_cols_val[3].ec_value.ec_value_len);
  if (len == 0 && numstr[len - 1] != '\0') {
    if (len >= room_left)
      goto no_more_room;
    strncpy(first_unused, numstr, len);
    first_unused[len] = '\0';
    numstr = first_unused;
  }
  if (numstr[0] == '\0')
    return 0;
  pw->pw_gid = strtoul(numstr, NULL, 10);
  if (((obj)->EN_data.en_cols.en_cols_val[4].ec_value.ec_value_len) >=
      room_left)
    goto no_more_room;
  strncpy(first_unused,
          ((obj)->EN_data.en_cols.en_cols_val[4].ec_value.ec_value_val),
          ((obj)->EN_data.en_cols.en_cols_val[4].ec_value.ec_value_len));
  first_unused[((obj)->EN_data.en_cols.en_cols_val[4].ec_value.ec_value_len)] =
      '\0';
  pw->pw_gecos = first_unused;
  len = strlen(first_unused);
  room_left -= len + 1;
  first_unused += len + 1;
  if (((obj)->EN_data.en_cols.en_cols_val[5].ec_value.ec_value_len) >=
      room_left)
    goto no_more_room;
  strncpy(first_unused,
          ((obj)->EN_data.en_cols.en_cols_val[5].ec_value.ec_value_val),
          ((obj)->EN_data.en_cols.en_cols_val[5].ec_value.ec_value_len));
  first_unused[((obj)->EN_data.en_cols.en_cols_val[5].ec_value.ec_value_len)] =
      '\0';
  pw->pw_dir = first_unused;
  len = strlen(first_unused);
  room_left -= len + 1;
  first_unused += len + 1;
  if (((obj)->EN_data.en_cols.en_cols_val[6].ec_value.ec_value_len) >=
      room_left)
    goto no_more_room;
  strncpy(first_unused,
          ((obj)->EN_data.en_cols.en_cols_val[6].ec_value.ec_value_val),
          ((obj)->EN_data.en_cols.en_cols_val[6].ec_value.ec_value_len));
  first_unused[((obj)->EN_data.en_cols.en_cols_val[6].ec_value.ec_value_len)] =
      '\0';
  pw->pw_shell = first_unused;
  len = strlen(first_unused);
  room_left -= len + 1;
  first_unused += len + 1;
  return 1;
}


x86 assembly (clang, -O0):
<_nss_nisplus_parse_pwent>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    0x2e46(%rip),%rcx
cmp    (%rcx),%rax
je     11ba <_nss_nisplus_parse_pwent+0x4a>
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    0x2e17(%rip),%rcx
cmp    (%rcx),%rax
jne    1221 <_nss_nisplus_parse_pwent+0xb1>
mov    -0x10(%rbp),%rdi
call   1070 <NIS_RES_NUMOBJ@plt>
cmp    $0x1,%eax
jne    1221 <_nss_nisplus_parse_pwent+0xb1>
mov    -0x10(%rbp),%rdi
call   1080 <NIS_RES_OBJECT@plt>
mov    %rax,%rdi
call   1030 <__type_of@plt>
mov    0x2e04(%rip),%rcx
cmp    (%rcx),%rax
jne    1221 <_nss_nisplus_parse_pwent+0xb1>
mov    -0x10(%rbp),%rdi
call   1080 <NIS_RES_OBJECT@plt>
mov    0x10(%rax),%edi
lea    0xe00(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    1221 <_nss_nisplus_parse_pwent+0xb1>
mov    -0x10(%rbp),%rdi
call   1080 <NIS_RES_OBJECT@plt>
cmpl   $0x7,(%rax)
jge    122d <_nss_nisplus_parse_pwent+0xbd>
movl   $0x0,-0x4(%rbp)
jmp    16a5 <_nss_nisplus_parse_pwent+0x535>
mov    -0x10(%rbp),%rdi
call   1080 <NIS_RES_OBJECT@plt>
mov    %rax,-0x38(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    (%rax),%rax
cmp    -0x48(%rbp),%rax
jb     127f <_nss_nisplus_parse_pwent+0x10f>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    0x2d6d(%rip),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
movl   $0xffffffff,-0x4(%rbp)
jmp    16a5 <_nss_nisplus_parse_pwent+0x535>
mov    -0x40(%rbp),%rdi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x8(%rax),%rsi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    (%rax),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    0x8(%rcx),%rcx
mov    (%rcx),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,-0x50(%rbp)
cmpq   $0x0,-0x50(%rbp)
jne    12d6 <_nss_nisplus_parse_pwent+0x166>
movl   $0x0,-0x4(%rbp)
jmp    16a5 <_nss_nisplus_parse_pwent+0x535>
mov    -0x40(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x50(%rbp),%rcx
add    $0x1,%rcx
mov    -0x48(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x1,%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x10(%rax),%rax
cmp    -0x48(%rbp),%rax
jb     131f <_nss_nisplus_parse_pwent+0x1af>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    -0x40(%rbp),%rdi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x18(%rax),%rsi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x10(%rax),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    0x8(%rcx),%rcx
mov    0x10(%rcx),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    -0x40(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rcx
add    $0x1,%rcx
mov    -0x48(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x1,%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x28(%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x20(%rax),%rax
mov    %rax,-0x50(%rbp)
cmpq   $0x0,-0x50(%rbp)
jne    140c <_nss_nisplus_parse_pwent+0x29c>
mov    -0x58(%rbp),%rax
mov    -0x50(%rbp),%rcx
sub    $0x1,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     140c <_nss_nisplus_parse_pwent+0x29c>
mov    -0x50(%rbp),%rax
cmp    -0x48(%rbp),%rax
jb     13e7 <_nss_nisplus_parse_pwent+0x277>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    -0x40(%rbp),%rdi
mov    -0x58(%rbp),%rsi
mov    -0x50(%rbp),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1428 <_nss_nisplus_parse_pwent+0x2b8>
movl   $0x0,-0x4(%rbp)
jmp    16a5 <_nss_nisplus_parse_pwent+0x535>
mov    -0x58(%rbp),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %rax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x30(%rax)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x38(%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x30(%rax),%rax
mov    %rax,-0x50(%rbp)
cmpq   $0x0,-0x50(%rbp)
jne    14c1 <_nss_nisplus_parse_pwent+0x351>
mov    -0x58(%rbp),%rax
mov    -0x50(%rbp),%rcx
sub    $0x1,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     14c1 <_nss_nisplus_parse_pwent+0x351>
mov    -0x50(%rbp),%rax
cmp    -0x48(%rbp),%rax
jb     149c <_nss_nisplus_parse_pwent+0x32c>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    -0x40(%rbp),%rdi
mov    -0x58(%rbp),%rsi
mov    -0x50(%rbp),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    14dd <_nss_nisplus_parse_pwent+0x36d>
movl   $0x0,-0x4(%rbp)
jmp    16a5 <_nss_nisplus_parse_pwent+0x535>
mov    -0x58(%rbp),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %rax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x28(%rax)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x40(%rax),%rax
cmp    -0x48(%rbp),%rax
jb     1515 <_nss_nisplus_parse_pwent+0x3a5>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    -0x40(%rbp),%rdi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x48(%rax),%rsi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x40(%rax),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    0x8(%rcx),%rcx
mov    0x40(%rcx),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x10(%rax)
mov    -0x40(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rcx
add    $0x1,%rcx
mov    -0x48(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x1,%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x50(%rax),%rax
cmp    -0x48(%rbp),%rax
jb     15a1 <_nss_nisplus_parse_pwent+0x431>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    -0x40(%rbp),%rdi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x58(%rax),%rsi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x50(%rax),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    0x8(%rcx),%rcx
mov    0x50(%rcx),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x18(%rax)
mov    -0x40(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rcx
add    $0x1,%rcx
mov    -0x48(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x1,%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x60(%rax),%rax
cmp    -0x48(%rbp),%rax
jb     162d <_nss_nisplus_parse_pwent+0x4bd>
jmp    1264 <_nss_nisplus_parse_pwent+0xf4>
mov    -0x40(%rbp),%rdi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x68(%rax),%rsi
mov    -0x38(%rbp),%rax
mov    0x8(%rax),%rax
mov    0x60(%rax),%rdx
call   1040 <strncpy@plt>
mov    -0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    0x8(%rcx),%rcx
mov    0x60(%rcx),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x40(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x20(%rax)
mov    -0x40(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rcx
add    $0x1,%rcx
mov    -0x48(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x1,%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_nss_nisplus_parse_pwent>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %r8,%r14
mov    %rcx,%r12
mov    %rdx,%r13
mov    %rsi,%r15
mov    %rdi,%rbp
mov    (%rdi),%rax
mov    0x2e4c(%rip),%rcx
xor    %ebx,%ebx
cmp    (%rcx),%rax
je     11ab <_nss_nisplus_parse_pwent+0x3b>
mov    0x2e26(%rip),%rcx
cmp    (%rcx),%rax
jne    140c <_nss_nisplus_parse_pwent+0x29c>
mov    %rbp,%rdi
call   1070 <NIS_RES_NUMOBJ@plt>
cmp    $0x1,%eax
jne    140c <_nss_nisplus_parse_pwent+0x29c>
mov    %rbp,%rdi
call   1080 <NIS_RES_OBJECT@plt>
mov    %rax,%rdi
call   1030 <__type_of@plt>
mov    0x2e15(%rip),%rcx
cmp    (%rcx),%rax
jne    140c <_nss_nisplus_parse_pwent+0x29c>
mov    %rbp,%rdi
call   1080 <NIS_RES_OBJECT@plt>
mov    0x10(%rax),%edi
lea    0xe12(%rip),%rsi
call   1060 <strcmp@plt>
test   %rax,%rax
jne    140c <_nss_nisplus_parse_pwent+0x29c>
mov    %rbp,%rdi
call   1080 <NIS_RES_OBJECT@plt>
cmpl   $0x7,(%rax)
jl     140c <_nss_nisplus_parse_pwent+0x29c>
mov    %rbp,%rdi
call   1080 <NIS_RES_OBJECT@plt>
mov    %rax,%rbp
mov    0x8(%rax),%rax
mov    (%rax),%rdx
cmp    %r12,%rdx
jae    13fb <_nss_nisplus_parse_pwent+0x28b>
mov    0x8(%rax),%rsi
mov    %r13,%rdi
call   1040 <strncpy@plt>
mov    0x8(%rbp),%rax
mov    (%rax),%rax
movb   $0x0,0x0(%r13,%rax,1)
mov    %r13,%rdi
call   1050 <strlen@plt>
test   %rax,%rax
je     140c <_nss_nisplus_parse_pwent+0x29c>
mov    %r13,(%r15)
lea    0x1(%rax),%rcx
sub    %rcx,%r12
mov    0x8(%rbp),%rcx
mov    0x10(%rcx),%rdx
cmp    %r12,%rdx
jae    13fb <_nss_nisplus_parse_pwent+0x28b>
mov    %rbp,(%rsp)
lea    (%rax,%r13,1),%rbp
add    $0x1,%rbp
mov    0x18(%rcx),%rsi
mov    %rbp,%rdi
call   1040 <strncpy@plt>
mov    (%rsp),%rax
mov    0x8(%rax),%rax
mov    0x10(%rax),%rax
movb   $0x0,0x0(%rbp,%rax,1)
mov    %rbp,0x8(%r15)
mov    %rbp,%rdi
call   1050 <strlen@plt>
lea    0x1(%rax),%rcx
sub    %rcx,%r12
lea    (%rax,%rbp,1),%r13
add    $0x1,%r13
mov    (%rsp),%rbp
mov    0x8(%rbp),%rax
mov    0x28(%rax),%rsi
cmpq   $0x0,0x20(%rax)
je     13ce <_nss_nisplus_parse_pwent+0x25e>
cmpb   $0x0,(%rsi)
je     140c <_nss_nisplus_parse_pwent+0x29c>
xor    %ebx,%ebx
mov    %rsi,%rdi
xor    %esi,%esi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %rax,0x30(%r15)
mov    0x8(%rbp),%rax
mov    0x38(%rax),%rsi
cmpq   $0x0,0x30(%rax)
je     13d9 <_nss_nisplus_parse_pwent+0x269>
cmpb   $0x0,(%rsi)
je     140c <_nss_nisplus_parse_pwent+0x29c>
mov    %rsi,%rdi
xor    %esi,%esi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %rax,0x28(%r15)
mov    0x8(%rbp),%rax
mov    0x40(%rax),%rdx
cmp    %r12,%rdx
jae    13fb <_nss_nisplus_parse_pwent+0x28b>
mov    0x48(%rax),%rsi
mov    %r13,%rdi
call   1040 <strncpy@plt>
mov    0x8(%rbp),%rax
mov    0x40(%rax),%rax
movb   $0x0,0x0(%r13,%rax,1)
mov    %r13,0x10(%r15)
mov    %r13,%rdi
call   1050 <strlen@plt>
lea    0x1(%rax),%rcx
sub    %rcx,%r12
mov    0x8(%rbp),%rcx
mov    0x50(%rcx),%rdx
cmp    %r12,%rdx
jae    13fb <_nss_nisplus_parse_pwent+0x28b>
lea    (%rax,%r13,1),%rbx
add    $0x1,%rbx
mov    0x58(%rcx),%rsi
mov    %rbx,%rdi
call   1040 <strncpy@plt>
mov    0x8(%rbp),%rax
mov    0x50(%rax),%rax
movb   $0x0,(%rbx,%rax,1)
mov    %rbx,0x18(%r15)
mov    %rbx,%rdi
call   1050 <strlen@plt>
lea    0x1(%rax),%rcx
sub    %rcx,%r12
mov    0x8(%rbp),%rcx
mov    0x60(%rcx),%rdx
cmp    %r12,%rdx
jae    13fb <_nss_nisplus_parse_pwent+0x28b>
add    %rax,%rbx
add    $0x1,%rbx
mov    0x68(%rcx),%rsi
mov    %rbx,%rdi
call   1040 <strncpy@plt>
mov    0x8(%rbp),%rax
mov    0x60(%rax),%rax
movb   $0x0,(%rbx,%rax,1)
mov    %rbx,0x20(%r15)
mov    $0x1,%ebx
jmp    140c <_nss_nisplus_parse_pwent+0x29c>
cmpb   $0x0,-0x1(%rsi)
jne    13e3 <_nss_nisplus_parse_pwent+0x273>
jmp    12c8 <_nss_nisplus_parse_pwent+0x158>
cmpb   $0x0,-0x1(%rsi)
je     12f9 <_nss_nisplus_parse_pwent+0x189>
test   %r12,%r12
je     13fb <_nss_nisplus_parse_pwent+0x28b>
xor    %ebx,%ebx
mov    %r13,%rdi
xor    %edx,%edx
call   1040 <strncpy@plt>
movb   $0x0,0x0(%r13)
jmp    140c <_nss_nisplus_parse_pwent+0x29c>
mov    0x2bd6(%rip),%rax
mov    (%rax),%eax
mov    %eax,(%r14)
mov    $0xffffffff,%ebx
mov    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.TYPE_16__ = type { i64 }
%struct.passwd = type { i8*, i8*, i8*, i8*, i8*, i8*, i8* }
%struct.TYPE_17__ = type { %struct.TYPE_15__ }
%struct.TYPE_15__ = type { %struct.TYPE_14__, i32 }
%struct.TYPE_14__ = type { i32, %struct.TYPE_13__* }
%struct.TYPE_13__ = type { %struct.TYPE_12__ }
%struct.TYPE_12__ = type { i64, i8* }
@NIS_SUCCESS = global i64 0
@NIS_S_SUCCESS = global i64 0
@NIS_ENTRY_OBJ = global i64 0
@.str = [11 x i8] c"passwd_tbl\00"
@ERANGE = global i32 0
define i32 @_nss_nisplus_parse_pwent(%struct.TYPE_16__* %0, %struct.passwd* %1, i8* %2, i64 %3, i32* %4) {
%6 = alloca i32
%7 = alloca %struct.TYPE_16__*
%8 = alloca %struct.passwd*
%9 = alloca i8*
%10 = alloca i64
%11 = alloca i32*
%12 = alloca %struct.TYPE_17__*
%13 = alloca i8*
%14 = alloca i64
%15 = alloca i64
%16 = alloca i8*
store %struct.TYPE_16__* %0, %struct.TYPE_16__** %7
store %struct.passwd* %1, %struct.passwd** %8
store i8* %2, i8** %9
store i64 %3, i64* %10
store i32* %4, i32** %11
%17 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%18 = getelementptr inbounds %struct.TYPE_16__, %struct.TYPE_16__* %17, i32 0, i32 0
%19 = load i64, i64* %18
%20 = load i64, i64* @NIS_SUCCESS
%21 = icmp ne i64 %19, %20
br i1 %21, label %22, label %28
22: ; preds = %5
%23 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%24 = getelementptr inbounds %struct.TYPE_16__, %struct.TYPE_16__* %23, i32 0, i32 0
%25 = load i64, i64* %24
%26 = load i64, i64* @NIS_S_SUCCESS
%27 = icmp ne i64 %25, %26
br i1 %27, label %54, label %28
28: ; preds = %22, %5
%29 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%30 = call i32 @NIS_RES_NUMOBJ(%struct.TYPE_16__* %29)
%31 = icmp ne i32 %30, 1
br i1 %31, label %54, label %32
32: ; preds = %28
%33 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%34 = call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %33)
%35 = call i64 @__type_of(%struct.TYPE_17__* %34)
%36 = load i64, i64* @NIS_ENTRY_OBJ
%37 = icmp ne i64 %35, %36
br i1 %37, label %54, label %38
38: ; preds = %32
%39 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%40 = call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %39)
%41 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %40, i32 0, i32 0
%42 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %41, i32 0, i32 1
%43 = load i32, i32* %42
%44 = call i64 @strcmp(i32 %43, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0))
%45 = icmp ne i64 %44, 0
br i1 %45, label %54, label %46
46: ; preds = %38
%47 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%48 = call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %47)
%49 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %48, i32 0, i32 0
%50 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %49, i32 0, i32 0
%51 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %50, i32 0, i32 0
%52 = load i32, i32* %51
%53 = icmp slt i32 %52, 7
br i1 %53, label %54, label %55
54: ; preds = %46, %38, %32, %28, %22
store i32 0, i32* %6
br label %460
55: ; preds = %46
%56 = load %struct.TYPE_16__*, %struct.TYPE_16__** %7
%57 = call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %56)
store %struct.TYPE_17__* %57, %struct.TYPE_17__** %12
%58 = load i8*, i8** %9
store i8* %58, i8** %13
%59 = load i64, i64* %10
store i64 %59, i64* %14
%60 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%61 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %60, i32 0, i32 0
%62 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %61, i32 0, i32 0
%63 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %62, i32 0, i32 1
%64 = load %struct.TYPE_13__*, %struct.TYPE_13__** %63
%65 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %64, i64 0
%66 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %65, i32 0, i32 0
%67 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %66, i32 0, i32 0
%68 = load i64, i64* %67
%69 = load i64, i64* %14
%70 = icmp uge i64 %68, %69
br i1 %70, label %71, label %75
71: ; preds = %55
br label %72
72: ; preds = %414, %357, %300, %267, %213, %135, %71
%73 = load i32, i32* @ERANGE
%74 = load i32*, i32** %11
store i32 %73, i32* %74
store i32 -1, i32* %6
br label %460
75: ; preds = %55
%76 = load i8*, i8** %13
%77 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%78 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %77, i32 0, i32 0
%79 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %78, i32 0, i32 0
%80 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %79, i32 0, i32 1
%81 = load %struct.TYPE_13__*, %struct.TYPE_13__** %80
%82 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %81, i64 0
%83 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %82, i32 0, i32 0
%84 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %83, i32 0, i32 1
%85 = load i8*, i8** %84
%86 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%87 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %86, i32 0, i32 0
%88 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %87, i32 0, i32 0
%89 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %88, i32 0, i32 1
%90 = load %struct.TYPE_13__*, %struct.TYPE_13__** %89
%91 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %90, i64 0
%92 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %91, i32 0, i32 0
%93 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %92, i32 0, i32 0
%94 = load i64, i64* %93
%95 = call i32 @strncpy(i8* %76, i8* %85, i64 %94)
%96 = load i8*, i8** %13
%97 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%98 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %97, i32 0, i32 0
%99 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %98, i32 0, i32 0
%100 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %99, i32 0, i32 1
%101 = load %struct.TYPE_13__*, %struct.TYPE_13__** %100
%102 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %101, i64 0
%103 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %102, i32 0, i32 0
%104 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %103, i32 0, i32 0
%105 = load i64, i64* %104
%106 = getelementptr inbounds i8, i8* %96, i64 %105
store i8 0, i8* %106
%107 = load i8*, i8** %13
%108 = call i64 @strlen(i8* %107)
store i64 %108, i64* %15
%109 = load i64, i64* %15
%110 = icmp eq i64 %109, 0
br i1 %110, label %111, label %112
111: ; preds = %75
store i32 0, i32* %6
br label %460
112: ; preds = %75
%113 = load i8*, i8** %13
%114 = load %struct.passwd*, %struct.passwd** %8
%115 = getelementptr inbounds %struct.passwd, %struct.passwd* %114, i32 0, i32 0
store i8* %113, i8** %115
%116 = load i64, i64* %15
%117 = add i64 %116, 1
%118 = load i64, i64* %14
%119 = sub i64 %118, %117
store i64 %119, i64* %14
%120 = load i64, i64* %15
%121 = add i64 %120, 1
%122 = load i8*, i8** %13
%123 = getelementptr inbounds i8, i8* %122, i64 %121
store i8* %123, i8** %13
%124 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%125 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %124, i32 0, i32 0
%126 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %125, i32 0, i32 0
%127 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %126, i32 0, i32 1
%128 = load %struct.TYPE_13__*, %struct.TYPE_13__** %127
%129 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %128, i64 1
%130 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %129, i32 0, i32 0
%131 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %130, i32 0, i32 0
%132 = load i64, i64* %131
%133 = load i64, i64* %14
%134 = icmp uge i64 %132, %133
br i1 %134, label %135, label %136
135: ; preds = %112
br label %72
136: ; preds = %112
%137 = load i8*, i8** %13
%138 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%139 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %138, i32 0, i32 0
%140 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %139, i32 0, i32 0
%141 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %140, i32 0, i32 1
%142 = load %struct.TYPE_13__*, %struct.TYPE_13__** %141
%143 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %142, i64 1
%144 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %143, i32 0, i32 0
%145 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %144, i32 0, i32 1
%146 = load i8*, i8** %145
%147 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%148 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %147, i32 0, i32 0
%149 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %148, i32 0, i32 0
%150 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %149, i32 0, i32 1
%151 = load %struct.TYPE_13__*, %struct.TYPE_13__** %150
%152 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %151, i64 1
%153 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %152, i32 0, i32 0
%154 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %153, i32 0, i32 0
%155 = load i64, i64* %154
%156 = call i32 @strncpy(i8* %137, i8* %146, i64 %155)
%157 = load i8*, i8** %13
%158 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%159 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %158, i32 0, i32 0
%160 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %159, i32 0, i32 0
%161 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %160, i32 0, i32 1
%162 = load %struct.TYPE_13__*, %struct.TYPE_13__** %161
%163 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %162, i64 1
%164 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %163, i32 0, i32 0
%165 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %164, i32 0, i32 0
%166 = load i64, i64* %165
%167 = getelementptr inbounds i8, i8* %157, i64 %166
store i8 0, i8* %167
%168 = load i8*, i8** %13
%169 = load %struct.passwd*, %struct.passwd** %8
%170 = getelementptr inbounds %struct.passwd, %struct.passwd* %169, i32 0, i32 1
store i8* %168, i8** %170
%171 = load i8*, i8** %13
%172 = call i64 @strlen(i8* %171)
store i64 %172, i64* %15
%173 = load i64, i64* %15
%174 = add i64 %173, 1
%175 = load i64, i64* %14
%176 = sub i64 %175, %174
store i64 %176, i64* %14
%177 = load i64, i64* %15
%178 = add i64 %177, 1
%179 = load i8*, i8** %13
%180 = getelementptr inbounds i8, i8* %179, i64 %178
store i8* %180, i8** %13
%181 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%182 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %181, i32 0, i32 0
%183 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %182, i32 0, i32 0
%184 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %183, i32 0, i32 1
%185 = load %struct.TYPE_13__*, %struct.TYPE_13__** %184
%186 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %185, i64 2
%187 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %186, i32 0, i32 0
%188 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %187, i32 0, i32 1
%189 = load i8*, i8** %188
store i8* %189, i8** %16
%190 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%191 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %190, i32 0, i32 0
%192 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %191, i32 0, i32 0
%193 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %192, i32 0, i32 1
%194 = load %struct.TYPE_13__*, %struct.TYPE_13__** %193
%195 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %194, i64 2
%196 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %195, i32 0, i32 0
%197 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %196, i32 0, i32 0
%198 = load i64, i64* %197
store i64 %198, i64* %15
%199 = load i64, i64* %15
%200 = icmp eq i64 %199, 0
br i1 %200, label %201, label %223
201: ; preds = %136
%202 = load i8*, i8** %16
%203 = load i64, i64* %15
%204 = sub i64 %203, 1
%205 = getelementptr inbounds i8, i8* %202, i64 %204
%206 = load i8, i8* %205
%207 = sext i8 %206 to i32
%208 = icmp ne i32 %207, 0
br i1 %208, label %209, label %223
209: ; preds = %201
%210 = load i64, i64* %15
%211 = load i64, i64* %14
%212 = icmp uge i64 %210, %211
br i1 %212, label %213, label %214
213: ; preds = %209
br label %72
214: ; preds = %209
%215 = load i8*, i8** %13
%216 = load i8*, i8** %16
%217 = load i64, i64* %15
%218 = call i32 @strncpy(i8* %215, i8* %216, i64 %217)
%219 = load i8*, i8** %13
%220 = load i64, i64* %15
%221 = getelementptr inbounds i8, i8* %219, i64 %220
store i8 0, i8* %221
%222 = load i8*, i8** %13
store i8* %222, i8** %16
br label %223
223: ; preds = %214, %201, %136
%224 = load i8*, i8** %16
%225 = getelementptr inbounds i8, i8* %224, i64 0
%226 = load i8, i8* %225
%227 = sext i8 %226 to i32
%228 = icmp eq i32 %227, 0
br i1 %228, label %229, label %230
229: ; preds = %223
store i32 0, i32* %6
br label %460
230: ; preds = %223
%231 = load i8*, i8** %16
%232 = call i8* @strtoul(i8* %231, i32* null, i32 10)
%233 = load %struct.passwd*, %struct.passwd** %8
%234 = getelementptr inbounds %struct.passwd, %struct.passwd* %233, i32 0, i32 6
store i8* %232, i8** %234
%235 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%236 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %235, i32 0, i32 0
%237 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %236, i32 0, i32 0
%238 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %237, i32 0, i32 1
%239 = load %struct.TYPE_13__*, %struct.TYPE_13__** %238
%240 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %239, i64 3
%241 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %240, i32 0, i32 0
%242 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %241, i32 0, i32 1
%243 = load i8*, i8** %242
store i8* %243, i8** %16
%244 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%245 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %244, i32 0, i32 0
%246 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %245, i32 0, i32 0
%247 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %246, i32 0, i32 1
%248 = load %struct.TYPE_13__*, %struct.TYPE_13__** %247
%249 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %248, i64 3
%250 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %249, i32 0, i32 0
%251 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %250, i32 0, i32 0
%252 = load i64, i64* %251
store i64 %252, i64* %15
%253 = load i64, i64* %15
%254 = icmp eq i64 %253, 0
br i1 %254, label %255, label %277
255: ; preds = %230
%256 = load i8*, i8** %16
%257 = load i64, i64* %15
%258 = sub i64 %257, 1
%259 = getelementptr inbounds i8, i8* %256, i64 %258
%260 = load i8, i8* %259
%261 = sext i8 %260 to i32
%262 = icmp ne i32 %261, 0
br i1 %262, label %263, label %277
263: ; preds = %255
%264 = load i64, i64* %15
%265 = load i64, i64* %14
%266 = icmp uge i64 %264, %265
br i1 %266, label %267, label %268
267: ; preds = %263
br label %72
268: ; preds = %263
%269 = load i8*, i8** %13
%270 = load i8*, i8** %16
%271 = load i64, i64* %15
%272 = call i32 @strncpy(i8* %269, i8* %270, i64 %271)
%273 = load i8*, i8** %13
%274 = load i64, i64* %15
%275 = getelementptr inbounds i8, i8* %273, i64 %274
store i8 0, i8* %275
%276 = load i8*, i8** %13
store i8* %276, i8** %16
br label %277
277: ; preds = %268, %255, %230
%278 = load i8*, i8** %16
%279 = getelementptr inbounds i8, i8* %278, i64 0
%280 = load i8, i8* %279
%281 = sext i8 %280 to i32
%282 = icmp eq i32 %281, 0
br i1 %282, label %283, label %284
283: ; preds = %277
store i32 0, i32* %6
br label %460
284: ; preds = %277
%285 = load i8*, i8** %16
%286 = call i8* @strtoul(i8* %285, i32* null, i32 10)
%287 = load %struct.passwd*, %struct.passwd** %8
%288 = getelementptr inbounds %struct.passwd, %struct.passwd* %287, i32 0, i32 5
store i8* %286, i8** %288
%289 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%290 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %289, i32 0, i32 0
%291 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %290, i32 0, i32 0
%292 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %291, i32 0, i32 1
%293 = load %struct.TYPE_13__*, %struct.TYPE_13__** %292
%294 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %293, i64 4
%295 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %294, i32 0, i32 0
%296 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %295, i32 0, i32 0
%297 = load i64, i64* %296
%298 = load i64, i64* %14
%299 = icmp uge i64 %297, %298
br i1 %299, label %300, label %301
300: ; preds = %284
br label %72
301: ; preds = %284
%302 = load i8*, i8** %13
%303 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%304 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %303, i32 0, i32 0
%305 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %304, i32 0, i32 0
%306 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %305, i32 0, i32 1
%307 = load %struct.TYPE_13__*, %struct.TYPE_13__** %306
%308 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %307, i64 4
%309 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %308, i32 0, i32 0
%310 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %309, i32 0, i32 1
%311 = load i8*, i8** %310
%312 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%313 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %312, i32 0, i32 0
%314 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %313, i32 0, i32 0
%315 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %314, i32 0, i32 1
%316 = load %struct.TYPE_13__*, %struct.TYPE_13__** %315
%317 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %316, i64 4
%318 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %317, i32 0, i32 0
%319 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %318, i32 0, i32 0
%320 = load i64, i64* %319
%321 = call i32 @strncpy(i8* %302, i8* %311, i64 %320)
%322 = load i8*, i8** %13
%323 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%324 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %323, i32 0, i32 0
%325 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %324, i32 0, i32 0
%326 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %325, i32 0, i32 1
%327 = load %struct.TYPE_13__*, %struct.TYPE_13__** %326
%328 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %327, i64 4
%329 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %328, i32 0, i32 0
%330 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %329, i32 0, i32 0
%331 = load i64, i64* %330
%332 = getelementptr inbounds i8, i8* %322, i64 %331
store i8 0, i8* %332
%333 = load i8*, i8** %13
%334 = load %struct.passwd*, %struct.passwd** %8
%335 = getelementptr inbounds %struct.passwd, %struct.passwd* %334, i32 0, i32 2
store i8* %333, i8** %335
%336 = load i8*, i8** %13
%337 = call i64 @strlen(i8* %336)
store i64 %337, i64* %15
%338 = load i64, i64* %15
%339 = add i64 %338, 1
%340 = load i64, i64* %14
%341 = sub i64 %340, %339
store i64 %341, i64* %14
%342 = load i64, i64* %15
%343 = add i64 %342, 1
%344 = load i8*, i8** %13
%345 = getelementptr inbounds i8, i8* %344, i64 %343
store i8* %345, i8** %13
%346 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%347 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %346, i32 0, i32 0
%348 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %347, i32 0, i32 0
%349 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %348, i32 0, i32 1
%350 = load %struct.TYPE_13__*, %struct.TYPE_13__** %349
%351 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %350, i64 5
%352 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %351, i32 0, i32 0
%353 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %352, i32 0, i32 0
%354 = load i64, i64* %353
%355 = load i64, i64* %14
%356 = icmp uge i64 %354, %355
br i1 %356, label %357, label %358
357: ; preds = %301
br label %72
358: ; preds = %301
%359 = load i8*, i8** %13
%360 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%361 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %360, i32 0, i32 0
%362 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %361, i32 0, i32 0
%363 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %362, i32 0, i32 1
%364 = load %struct.TYPE_13__*, %struct.TYPE_13__** %363
%365 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %364, i64 5
%366 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %365, i32 0, i32 0
%367 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %366, i32 0, i32 1
%368 = load i8*, i8** %367
%369 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%370 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %369, i32 0, i32 0
%371 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %370, i32 0, i32 0
%372 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %371, i32 0, i32 1
%373 = load %struct.TYPE_13__*, %struct.TYPE_13__** %372
%374 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %373, i64 5
%375 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %374, i32 0, i32 0
%376 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %375, i32 0, i32 0
%377 = load i64, i64* %376
%378 = call i32 @strncpy(i8* %359, i8* %368, i64 %377)
%379 = load i8*, i8** %13
%380 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%381 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %380, i32 0, i32 0
%382 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %381, i32 0, i32 0
%383 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %382, i32 0, i32 1
%384 = load %struct.TYPE_13__*, %struct.TYPE_13__** %383
%385 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %384, i64 5
%386 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %385, i32 0, i32 0
%387 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %386, i32 0, i32 0
%388 = load i64, i64* %387
%389 = getelementptr inbounds i8, i8* %379, i64 %388
store i8 0, i8* %389
%390 = load i8*, i8** %13
%391 = load %struct.passwd*, %struct.passwd** %8
%392 = getelementptr inbounds %struct.passwd, %struct.passwd* %391, i32 0, i32 3
store i8* %390, i8** %392
%393 = load i8*, i8** %13
%394 = call i64 @strlen(i8* %393)
store i64 %394, i64* %15
%395 = load i64, i64* %15
%396 = add i64 %395, 1
%397 = load i64, i64* %14
%398 = sub i64 %397, %396
store i64 %398, i64* %14
%399 = load i64, i64* %15
%400 = add i64 %399, 1
%401 = load i8*, i8** %13
%402 = getelementptr inbounds i8, i8* %401, i64 %400
store i8* %402, i8** %13
%403 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%404 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %403, i32 0, i32 0
%405 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %404, i32 0, i32 0
%406 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %405, i32 0, i32 1
%407 = load %struct.TYPE_13__*, %struct.TYPE_13__** %406
%408 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %407, i64 6
%409 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %408, i32 0, i32 0
%410 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %409, i32 0, i32 0
%411 = load i64, i64* %410
%412 = load i64, i64* %14
%413 = icmp uge i64 %411, %412
br i1 %413, label %414, label %415
414: ; preds = %358
br label %72
415: ; preds = %358
%416 = load i8*, i8** %13
%417 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%418 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %417, i32 0, i32 0
%419 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %418, i32 0, i32 0
%420 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %419, i32 0, i32 1
%421 = load %struct.TYPE_13__*, %struct.TYPE_13__** %420
%422 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %421, i64 6
%423 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %422, i32 0, i32 0
%424 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %423, i32 0, i32 1
%425 = load i8*, i8** %424
%426 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%427 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %426, i32 0, i32 0
%428 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %427, i32 0, i32 0
%429 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %428, i32 0, i32 1
%430 = load %struct.TYPE_13__*, %struct.TYPE_13__** %429
%431 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %430, i64 6
%432 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %431, i32 0, i32 0
%433 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %432, i32 0, i32 0
%434 = load i64, i64* %433
%435 = call i32 @strncpy(i8* %416, i8* %425, i64 %434)
%436 = load i8*, i8** %13
%437 = load %struct.TYPE_17__*, %struct.TYPE_17__** %12
%438 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %437, i32 0, i32 0
%439 = getelementptr inbounds %struct.TYPE_15__, %struct.TYPE_15__* %438, i32 0, i32 0
%440 = getelementptr inbounds %struct.TYPE_14__, %struct.TYPE_14__* %439, i32 0, i32 1
%441 = load %struct.TYPE_13__*, %struct.TYPE_13__** %440
%442 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %441, i64 6
%443 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %442, i32 0, i32 0
%444 = getelementptr inbounds %struct.TYPE_12__, %struct.TYPE_12__* %443, i32 0, i32 0
%445 = load i64, i64* %444
%446 = getelementptr inbounds i8, i8* %436, i64 %445
store i8 0, i8* %446
%447 = load i8*, i8** %13
%448 = load %struct.passwd*, %struct.passwd** %8
%449 = getelementptr inbounds %struct.passwd, %struct.passwd* %448, i32 0, i32 4
store i8* %447, i8** %449
%450 = load i8*, i8** %13
%451 = call i64 @strlen(i8* %450)
store i64 %451, i64* %15
%452 = load i64, i64* %15
%453 = add i64 %452, 1
%454 = load i64, i64* %14
%455 = sub i64 %454, %453
store i64 %455, i64* %14
%456 = load i64, i64* %15
%457 = add i64 %456, 1
%458 = load i8*, i8** %13
%459 = getelementptr inbounds i8, i8* %458, i64 %457
store i8* %459, i8** %13
store i32 1, i32* %6
br label %460
460: ; preds = %415, %283, %229, %111, %72, %54
%461 = load i32, i32* %6
ret i32 %461
}

LLVM IR (-O2):
%struct.TYPE_16__ = type { i64 }
%struct.passwd = type { i8*, i8*, i8*, i8*, i8*, i8*, i8* }
%struct.TYPE_17__ = type { %struct.TYPE_15__ }
%struct.TYPE_15__ = type { %struct.TYPE_14__, i32 }
%struct.TYPE_14__ = type { i32, %struct.TYPE_13__* }
%struct.TYPE_13__ = type { %struct.TYPE_12__ }
%struct.TYPE_12__ = type { i64, i8* }
@NIS_SUCCESS = global i64 0
@NIS_S_SUCCESS = global i64 0
@NIS_ENTRY_OBJ = global i64 0
@.str = [11 x i8] c"passwd_tbl\00"
@ERANGE = global i32 0
define i32 @_nss_nisplus_parse_pwent(%struct.TYPE_16__* %0, %struct.passwd* nocapture writeonly %1, i8* %2, i64 %3, i32* nocapture writeonly %4) {
%6 = getelementptr inbounds %struct.TYPE_16__, %struct.TYPE_16__* %0, i64 0, i32 0
%7 = load i64, i64* %6
%8 = load i64, i64* @NIS_SUCCESS
%9 = icmp eq i64 %7, %8
%10 = load i64, i64* @NIS_S_SUCCESS
%11 = icmp eq i64 %7, %10
%12 = select i1 %9, i1 true, i1 %11
br i1 %12, label %13, label %160
13: ; preds = %5
%14 = tail call i32 @NIS_RES_NUMOBJ(%struct.TYPE_16__* %0)
%15 = icmp eq i32 %14, 1
br i1 %15, label %16, label %160
16: ; preds = %13
%17 = tail call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %0)
%18 = tail call i64 @__type_of(%struct.TYPE_17__* %17)
%19 = load i64, i64* @NIS_ENTRY_OBJ
%20 = icmp eq i64 %18, %19
br i1 %20, label %21, label %160
21: ; preds = %16
%22 = tail call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %0)
%23 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %22, i64 0, i32 0, i32 1
%24 = load i32, i32* %23
%25 = tail call i64 @strcmp(i32 %24, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0))
%26 = icmp eq i64 %25, 0
br i1 %26, label %27, label %160
27: ; preds = %21
%28 = tail call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %0)
%29 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %28, i64 0, i32 0, i32 0, i32 0
%30 = load i32, i32* %29
%31 = icmp slt i32 %30, 7
br i1 %31, label %160, label %32
32: ; preds = %27
%33 = tail call %struct.TYPE_17__* @NIS_RES_OBJECT(%struct.TYPE_16__* %0)
%34 = getelementptr inbounds %struct.TYPE_17__, %struct.TYPE_17__* %33, i64 0, i32 0, i32 0, i32 1
%35 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%36 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %35, i64 0, i32 0, i32 0
%37 = load i64, i64* %36
%38 = icmp ult i64 %37, %3
br i1 %38, label %41, label %39
39: ; preds = %134, %117, %110, %103, %83, %51, %32
%40 = load i32, i32* @ERANGE
store i32 %40, i32* %4
br label %160
41: ; preds = %32
%42 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %35, i64 0, i32 0, i32 1
%43 = load i8*, i8** %42
%44 = tail call i32 @strncpy(i8* %2, i8* %43, i64 %37)
%45 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%46 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %45, i64 0, i32 0, i32 0
%47 = load i64, i64* %46
%48 = getelementptr inbounds i8, i8* %2, i64 %47
store i8 0, i8* %48
%49 = tail call i64 @strlen(i8* dereferenceable(1) %2)
%50 = icmp eq i64 %49, 0
br i1 %50, label %160, label %51
51: ; preds = %41
%52 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 0
store i8* %2, i8** %52
%53 = add i64 %49, 1
%54 = sub i64 %3, %53
%55 = getelementptr inbounds i8, i8* %2, i64 %53
%56 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%57 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %56, i64 1, i32 0, i32 0
%58 = load i64, i64* %57
%59 = icmp ult i64 %58, %54
br i1 %59, label %60, label %39
60: ; preds = %51
%61 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %56, i64 1, i32 0, i32 1
%62 = load i8*, i8** %61
%63 = tail call i32 @strncpy(i8* %55, i8* %62, i64 %58)
%64 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%65 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %64, i64 1, i32 0, i32 0
%66 = load i64, i64* %65
%67 = getelementptr inbounds i8, i8* %55, i64 %66
store i8 0, i8* %67
%68 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 1
store i8* %55, i8** %68
%69 = tail call i64 @strlen(i8* dereferenceable(1) %55)
%70 = add i64 %69, 1
%71 = sub i64 %54, %70
%72 = getelementptr inbounds i8, i8* %55, i64 %70
%73 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%74 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %73, i64 2, i32 0, i32 1
%75 = load i8*, i8** %74
%76 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %73, i64 2, i32 0, i32 0
%77 = load i64, i64* %76
%78 = icmp eq i64 %77, 0
br i1 %78, label %79, label %87
79: ; preds = %60
%80 = getelementptr inbounds i8, i8* %75, i64 -1
%81 = load i8, i8* %80
%82 = icmp eq i8 %81, 0
br i1 %82, label %87, label %83
83: ; preds = %79
%84 = icmp eq i64 %71, 0
br i1 %84, label %39, label %85
85: ; preds = %83
%86 = tail call i32 @strncpy(i8* %72, i8* %75, i64 0)
store i8 0, i8* %72
br label %160
87: ; preds = %79, %60
%88 = load i8, i8* %75
%89 = icmp eq i8 %88, 0
br i1 %89, label %160, label %90
90: ; preds = %87
%91 = tail call i8* @strtoul(i8* nocapture %75, i32* null, i32 10)
%92 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 6
store i8* %91, i8** %92
%93 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%94 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %93, i64 3, i32 0, i32 1
%95 = load i8*, i8** %94
%96 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %93, i64 3, i32 0, i32 0
%97 = load i64, i64* %96
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %107
99: ; preds = %90
%100 = getelementptr inbounds i8, i8* %95, i64 -1
%101 = load i8, i8* %100
%102 = icmp eq i8 %101, 0
br i1 %102, label %107, label %103
103: ; preds = %99
%104 = icmp eq i64 %71, 0
br i1 %104, label %39, label %105
105: ; preds = %103
%106 = tail call i32 @strncpy(i8* %72, i8* %95, i64 0)
store i8 0, i8* %72
br label %160
107: ; preds = %99, %90
%108 = load i8, i8* %95
%109 = icmp eq i8 %108, 0
br i1 %109, label %160, label %110
110: ; preds = %107
%111 = tail call i8* @strtoul(i8* nocapture %95, i32* null, i32 10)
%112 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 5
store i8* %111, i8** %112
%113 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%114 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %113, i64 4, i32 0, i32 0
%115 = load i64, i64* %114
%116 = icmp ult i64 %115, %71
br i1 %116, label %117, label %39
117: ; preds = %110
%118 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %113, i64 4, i32 0, i32 1
%119 = load i8*, i8** %118
%120 = tail call i32 @strncpy(i8* %72, i8* %119, i64 %115)
%121 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%122 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %121, i64 4, i32 0, i32 0
%123 = load i64, i64* %122
%124 = getelementptr inbounds i8, i8* %72, i64 %123
store i8 0, i8* %124
%125 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 2
store i8* %72, i8** %125
%126 = tail call i64 @strlen(i8* dereferenceable(1) %72)
%127 = add i64 %126, 1
%128 = sub i64 %71, %127
%129 = getelementptr inbounds i8, i8* %72, i64 %127
%130 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%131 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %130, i64 5, i32 0, i32 0
%132 = load i64, i64* %131
%133 = icmp ult i64 %132, %128
br i1 %133, label %134, label %39
134: ; preds = %117
%135 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %130, i64 5, i32 0, i32 1
%136 = load i8*, i8** %135
%137 = tail call i32 @strncpy(i8* %129, i8* %136, i64 %132)
%138 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%139 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %138, i64 5, i32 0, i32 0
%140 = load i64, i64* %139
%141 = getelementptr inbounds i8, i8* %129, i64 %140
store i8 0, i8* %141
%142 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 3
store i8* %129, i8** %142
%143 = tail call i64 @strlen(i8* dereferenceable(1) %129)
%144 = add i64 %143, 1
%145 = sub i64 %128, %144
%146 = getelementptr inbounds i8, i8* %129, i64 %144
%147 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%148 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %147, i64 6, i32 0, i32 0
%149 = load i64, i64* %148
%150 = icmp ult i64 %149, %145
br i1 %150, label %151, label %39
151: ; preds = %134
%152 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %147, i64 6, i32 0, i32 1
%153 = load i8*, i8** %152
%154 = tail call i32 @strncpy(i8* %146, i8* %153, i64 %149)
%155 = load %struct.TYPE_13__*, %struct.TYPE_13__** %34
%156 = getelementptr inbounds %struct.TYPE_13__, %struct.TYPE_13__* %155, i64 6, i32 0, i32 0
%157 = load i64, i64* %156
%158 = getelementptr inbounds i8, i8* %146, i64 %157
store i8 0, i8* %158
%159 = getelementptr inbounds %struct.passwd, %struct.passwd* %1, i64 0, i32 4
store i8* %146, i8** %159
br label %160
160: ; preds = %105, %85, %39, %151, %41, %87, %107, %13, %16, %21, %27, %5
%161 = phi i32 [ 0, %5 ], [ 0, %27 ], [ 0, %21 ], [ 0, %16 ], [ 0, %13 ], [ -1, %39 ], [ 1, %151 ], [ 0, %41 ], [ 0, %87 ], [ 0, %107 ], [ 0, %85 ], [ 0, %105 ]
ret i32 %161
}