struct List *check_patients_assess(struct Village *village, struct List *list) {
  float rand___0;
  struct Patient *p;
  int label;
  void *__cil_tmp6;
  unsigned int __cil_tmp7;
  unsigned int __cil_tmp8;
  unsigned int __cil_tmp9;
  unsigned int __cil_tmp10;
  unsigned int __cil_tmp11;
  unsigned int __cil_tmp12;
  int __cil_tmp13;
  unsigned int __cil_tmp14;
  unsigned int __cil_tmp15;
  unsigned int __cil_tmp16;
  unsigned int __cil_tmp17;
  int __cil_tmp18;
  unsigned int __cil_tmp19;
  unsigned int __cil_tmp20;
  long __cil_tmp21;
  unsigned int __cil_tmp22;
  unsigned int __cil_tmp23;
  float __cil_tmp24;
  float __cil_tmp25;
  unsigned int __cil_tmp26;
  unsigned int __cil_tmp27;
  double __cil_tmp28;
  unsigned int __cil_tmp29;
  unsigned int __cil_tmp30;
  unsigned int __cil_tmp31;
  struct List *__cil_tmp32;
  unsigned int __cil_tmp33;
  unsigned int __cil_tmp34;
  unsigned int __cil_tmp35;
  struct List *__cil_tmp36;
  unsigned int __cil_tmp37;
  unsigned int __cil_tmp38;
  unsigned int __cil_tmp39;
  unsigned int __cil_tmp40;
  unsigned int __cil_tmp41;
  unsigned int __cil_tmp42;
  int __cil_tmp43;
  unsigned int __cil_tmp44;
  unsigned int __cil_tmp45;
  int __cil_tmp46;
  unsigned int __cil_tmp47;
  unsigned int __cil_tmp48;
  unsigned int __cil_tmp49;
  struct List *__cil_tmp50;
  unsigned int __cil_tmp51;
  unsigned int __cil_tmp52;
  unsigned int __cil_tmp53;
  struct List *__cil_tmp54;
  unsigned int __cil_tmp55;
  unsigned int __cil_tmp56;
  unsigned int __cil_tmp57;
  unsigned int __cil_tmp58;
  unsigned int __cil_tmp59;
  unsigned int __cil_tmp60;
  int __cil_tmp61;
  unsigned int __cil_tmp62;
  unsigned int __cil_tmp63;
  int __cil_tmp64;
  unsigned int __cil_tmp65;
  unsigned int __cil_tmp66;
  unsigned int __cil_tmp67;
  unsigned int __cil_tmp68;
  unsigned int __cil_tmp69;
  unsigned int __cil_tmp70;
  int __cil_tmp71;
  unsigned int __cil_tmp72;
  unsigned int __cil_tmp73;
  unsigned int __cil_tmp74;
  struct List *__cil_tmp75;
  unsigned int __cil_tmp76;
  unsigned int __cil_tmp77;
  unsigned int __cil_tmp78;
  struct List *__cil_tmp79;
  unsigned int __cil_tmp80;
  unsigned int __cil_tmp81;
  unsigned int __cil_tmp82;
  unsigned int __cil_tmp83;
  unsigned int __cil_tmp84;
  struct Patient **mem_85;
  int *mem_86;
  int *mem_87;
  int *mem_88;
  int *mem_89;
  long *mem_90;
  long *mem_91;
  int *mem_92;
  int *mem_93;
  int *mem_94;
  int *mem_95;
  int *mem_96;
  int *mem_97;
  int *mem_98;
  int *mem_99;
  int *mem_100;
  int *mem_101;
  int *mem_102;
  struct List **mem_103;
  {
    {
      while (1) {
      while_4_continue:;
        {
          __cil_tmp6 = (void *)0;
          __cil_tmp7 = (unsigned int)__cil_tmp6;
          __cil_tmp8 = (unsigned int)list;
          if (__cil_tmp8 != __cil_tmp7) {
          } else {
            goto while_4_break;
          }
        }
        mem_85 = (struct Patient **)list;
        p = *mem_85;
        __cil_tmp9 = (unsigned int)p;
        __cil_tmp10 = __cil_tmp9 + 8;
        __cil_tmp11 = (unsigned int)p;
        __cil_tmp12 = __cil_tmp11 + 8;
        mem_86 = (int *)__cil_tmp12;
        __cil_tmp13 = *mem_86;
        mem_87 = (int *)__cil_tmp10;
        *mem_87 = __cil_tmp13 - 1;
        __cil_tmp14 = (unsigned int)village;
        __cil_tmp15 = __cil_tmp14 + 92;
        mem_88 = (int *)__cil_tmp15;
        label = *mem_88;
        {
          __cil_tmp16 = (unsigned int)p;
          __cil_tmp17 = __cil_tmp16 + 8;
          mem_89 = (int *)__cil_tmp17;
          __cil_tmp18 = *mem_89;
          if (__cil_tmp18 == 0) {
            {
              __cil_tmp19 = (unsigned int)village;
              __cil_tmp20 = __cil_tmp19 + 96;
              mem_90 = (long *)__cil_tmp20;
              __cil_tmp21 = *mem_90;
              rand___0 = my_rand(__cil_tmp21);
              __cil_tmp22 = (unsigned int)village;
              __cil_tmp23 = __cil_tmp22 + 96;
              __cil_tmp24 = (float)2147483647;
              __cil_tmp25 = rand___0 * __cil_tmp24;
              mem_91 = (long *)__cil_tmp23;
              *mem_91 = (long)__cil_tmp25;
              __cil_tmp26 = (unsigned int)village;
              __cil_tmp27 = __cil_tmp26 + 92;
              mem_92 = (int *)__cil_tmp27;
              label = *mem_92;
            }
            {
              __cil_tmp28 = (double)rand___0;
              if (__cil_tmp28 > 0.1) {
                {
                  __cil_tmp29 = 32 + 24;
                  __cil_tmp30 = (unsigned int)village;
                  __cil_tmp31 = __cil_tmp30 + __cil_tmp29;
                  __cil_tmp32 = (struct List *)__cil_tmp31;
                  removeList(__cil_tmp32, p);
                  __cil_tmp33 = 32 + 36;
                  __cil_tmp34 = (unsigned int)village;
                  __cil_tmp35 = __cil_tmp34 + __cil_tmp33;
                  __cil_tmp36 = (struct List *)__cil_tmp35;
                  addList(__cil_tmp36, p);
                  __cil_tmp37 = (unsigned int)p;
                  __cil_tmp38 = __cil_tmp37 + 8;
                  mem_93 = (int *)__cil_tmp38;
                  *mem_93 = 10;
                  __cil_tmp39 = (unsigned int)p;
                  __cil_tmp40 = __cil_tmp39 + 4;
                  __cil_tmp41 = (unsigned int)p;
                  __cil_tmp42 = __cil_tmp41 + 8;
                  mem_94 = (int *)__cil_tmp42;
                  __cil_tmp43 = *mem_94;
                  __cil_tmp44 = (unsigned int)p;
                  __cil_tmp45 = __cil_tmp44 + 4;
                  mem_95 = (int *)__cil_tmp45;
                  __cil_tmp46 = *mem_95;
                  mem_96 = (int *)__cil_tmp40;
                  *mem_96 = __cil_tmp46 + __cil_tmp43;
                }
              } else {
                if (label == 0) {
                  {
                    __cil_tmp47 = 32 + 24;
                    __cil_tmp48 = (unsigned int)village;
                    __cil_tmp49 = __cil_tmp48 + __cil_tmp47;
                    __cil_tmp50 = (struct List *)__cil_tmp49;
                    removeList(__cil_tmp50, p);
                    __cil_tmp51 = 32 + 36;
                    __cil_tmp52 = (unsigned int)village;
                    __cil_tmp53 = __cil_tmp52 + __cil_tmp51;
                    __cil_tmp54 = (struct List *)__cil_tmp53;
                    addList(__cil_tmp54, p);
                    __cil_tmp55 = (unsigned int)p;
                    __cil_tmp56 = __cil_tmp55 + 8;
                    mem_97 = (int *)__cil_tmp56;
                    *mem_97 = 10;
                    __cil_tmp57 = (unsigned int)p;
                    __cil_tmp58 = __cil_tmp57 + 4;
                    __cil_tmp59 = (unsigned int)p;
                    __cil_tmp60 = __cil_tmp59 + 8;
                    mem_98 = (int *)__cil_tmp60;
                    __cil_tmp61 = *mem_98;
                    __cil_tmp62 = (unsigned int)p;
                    __cil_tmp63 = __cil_tmp62 + 4;
                    mem_99 = (int *)__cil_tmp63;
                    __cil_tmp64 = *mem_99;
                    mem_100 = (int *)__cil_tmp58;
                    *mem_100 = __cil_tmp64 + __cil_tmp61;
                  }
                } else {
                  {
                    __cil_tmp65 = 32 + 4;
                    __cil_tmp66 = (unsigned int)village;
                    __cil_tmp67 = __cil_tmp66 + __cil_tmp65;
                    __cil_tmp68 = 32 + 4;
                    __cil_tmp69 = (unsigned int)village;
                    __cil_tmp70 = __cil_tmp69 + __cil_tmp68;
                    mem_101 = (int *)__cil_tmp70;
                    __cil_tmp71 = *mem_101;
                    mem_102 = (int *)__cil_tmp67;
                    *mem_102 = __cil_tmp71 + 1;
                    __cil_tmp72 = 32 + 24;
                    __cil_tmp73 = (unsigned int)village;
                    __cil_tmp74 = __cil_tmp73 + __cil_tmp72;
                    __cil_tmp75 = (struct List *)__cil_tmp74;
                    removeList(__cil_tmp75, p);
                    __cil_tmp76 = 32 + 48;
                    __cil_tmp77 = (unsigned int)village;
                    __cil_tmp78 = __cil_tmp77 + __cil_tmp76;
                    __cil_tmp79 = (struct List *)__cil_tmp78;
                    addList(__cil_tmp79, p);
                  }
                }
              }
            }
          } else {
          }
        }
        __cil_tmp80 = (unsigned int)list;
        __cil_tmp81 = __cil_tmp80 + 8;
        mem_103 = (struct List **)__cil_tmp81;
        list = *mem_103;
      }
    while_4_break:;
    }
    {
      __cil_tmp82 = 32 + 48;
      __cil_tmp83 = (unsigned int)village;
      __cil_tmp84 = __cil_tmp83 + __cil_tmp82;
      return ((struct List *)__cil_tmp84);
    }
  }
}


x86 assembly (clang, -O0):
<check_patients_assess>:
push   %rbp
mov    %rsp,%rbp
sub    $0x240,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
jmp    1148 <check_patients_assess+0x18>
movq   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%rax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     116f <check_patients_assess+0x3f>
jmp    1174 <check_patients_assess+0x44>
jmp    1742 <check_patients_assess+0x612>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1a8(%rbp)
mov    -0x1a8(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %rax,-0x1b0(%rbp)
mov    -0x1b0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x40(%rbp),%eax
mov    %rax,-0x1b8(%rbp)
mov    -0x4c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x1b8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
add    $0x5c,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
mov    %rax,-0x1c0(%rbp)
mov    -0x1c0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %rax,-0x1c8(%rbp)
mov    -0x1c8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x60(%rbp)
jne    1704 <check_patients_assess+0x5d4>
mov    -0x8(%rbp),%rax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
add    $0x60,%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    %rax,-0x1d0(%rbp)
mov    -0x1d0(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rdi
mov    $0x0,%al
call   1030 <my_rand@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
add    $0x60,%eax
mov    %eax,-0x78(%rbp)
movss  0xd82(%rip),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x78(%rbp),%eax
mov    %rax,-0x1d8(%rbp)
cvttss2si -0x80(%rbp),%rcx
mov    -0x1d8(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x8(%rbp),%rax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
add    $0x5c,%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%eax
mov    %rax,-0x1e0(%rbp)
mov    -0x1e0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0xcf9(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1478 <check_patients_assess+0x348>
movl   $0x38,-0x94(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
add    -0x94(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1040 <removeList@plt>
movl   $0x44,-0xac(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
add    -0xac(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <addList@plt>
mov    -0x20(%rbp),%rax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
mov    %rax,-0x1e8(%rbp)
mov    -0x1e8(%rbp),%rax
movl   $0xa,(%rax)
mov    -0x20(%rbp),%rax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xd0(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
mov    %rax,-0x1f0(%rbp)
mov    -0x1f0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xdc(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
mov    %rax,-0x1f8(%rbp)
mov    -0x1f8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xe8(%rbp)
mov    -0xd0(%rbp),%eax
mov    %rax,-0x200(%rbp)
mov    -0xe8(%rbp),%ecx
add    -0xdc(%rbp),%ecx
mov    -0x200(%rbp),%rax
mov    %ecx,(%rax)
jmp    16ff <check_patients_assess+0x5cf>
cmpl   $0x0,-0x24(%rbp)
jne    15e9 <check_patients_assess+0x4b9>
movl   $0x38,-0xec(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0xf0(%rbp)
mov    -0xf0(%rbp),%eax
add    -0xec(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1040 <removeList@plt>
movl   $0x44,-0x104(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
add    -0x104(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x10c(%rbp),%eax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <addList@plt>
mov    -0x20(%rbp),%rax
mov    %eax,-0x11c(%rbp)
mov    -0x11c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%eax
mov    %rax,-0x208(%rbp)
mov    -0x208(%rbp),%rax
movl   $0xa,(%rax)
mov    -0x20(%rbp),%rax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x128(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0x12c(%rbp)
mov    -0x12c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x130(%rbp)
mov    -0x130(%rbp),%eax
mov    %rax,-0x210(%rbp)
mov    -0x210(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x134(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0x138(%rbp)
mov    -0x138(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x13c(%rbp)
mov    -0x13c(%rbp),%eax
mov    %rax,-0x218(%rbp)
mov    -0x218(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x140(%rbp)
mov    -0x128(%rbp),%eax
mov    %rax,-0x220(%rbp)
mov    -0x140(%rbp),%ecx
add    -0x134(%rbp),%ecx
mov    -0x220(%rbp),%rax
mov    %ecx,(%rax)
jmp    16fa <check_patients_assess+0x5ca>
movl   $0x24,-0x144(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x148(%rbp)
mov    -0x148(%rbp),%eax
add    -0x144(%rbp),%eax
mov    %eax,-0x14c(%rbp)
movl   $0x24,-0x150(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x154(%rbp)
mov    -0x154(%rbp),%eax
add    -0x150(%rbp),%eax
mov    %eax,-0x158(%rbp)
mov    -0x158(%rbp),%eax
mov    %rax,-0x228(%rbp)
mov    -0x228(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x15c(%rbp)
mov    -0x14c(%rbp),%eax
mov    %rax,-0x230(%rbp)
mov    -0x15c(%rbp),%ecx
add    $0x1,%ecx
mov    -0x230(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x38,-0x160(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x164(%rbp)
mov    -0x164(%rbp),%eax
add    -0x160(%rbp),%eax
mov    %eax,-0x168(%rbp)
mov    -0x168(%rbp),%eax
mov    %rax,-0x170(%rbp)
mov    -0x170(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1040 <removeList@plt>
movl   $0x50,-0x174(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x178(%rbp)
mov    -0x178(%rbp),%eax
add    -0x174(%rbp),%eax
mov    %eax,-0x17c(%rbp)
mov    -0x17c(%rbp),%eax
mov    %rax,-0x188(%rbp)
mov    -0x188(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <addList@plt>
jmp    16ff <check_patients_assess+0x5cf>
jmp    1709 <check_patients_assess+0x5d9>
jmp    1709 <check_patients_assess+0x5d9>
mov    -0x10(%rbp),%rax
mov    %eax,-0x18c(%rbp)
mov    -0x18c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x190(%rbp)
mov    -0x190(%rbp),%eax
mov    %rax,-0x238(%rbp)
mov    -0x238(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x10(%rbp)
jmp    1143 <check_patients_assess+0x13>
movl   $0x50,-0x194(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x198(%rbp)
mov    -0x198(%rbp),%eax
add    -0x194(%rbp),%eax
mov    %eax,-0x19c(%rbp)
mov    -0x19c(%rbp),%eax
add    $0x240,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_patients_assess>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%rbx
mov    %rdi,%r14
test   %ebx,%ebx
je     1230 <check_patients_assess+0x100>
lea    0x60(%r14),%ebp
lea    0x5c(%r14),%eax
mov    %rax,0x10(%rsp)
lea    0x24(%r14),%eax
mov    %rax,0x8(%rsp)
lea    0x38(%r14),%r15d
lea    0x50(%r14),%eax
mov    %rax,(%rsp)
add    $0x44,%r14d
jmp    11b5 <check_patients_assess+0x85>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r15,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1040 <removeList@plt>
mov    %r14,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1050 <addList@plt>
movl   $0xa,(%r12)
add    $0x4,%r13d
addl   $0xa,0x0(%r13)
add    $0x8,%ebx
mov    (%rbx),%rbx
test   %ebx,%ebx
je     122a <check_patients_assess+0xfa>
mov    (%rbx),%r13
lea    0x8(%r13),%r12d
addl   $0xffffffff,(%r12)
jne    11ab <check_patients_assess+0x7b>
mov    0x0(%rbp),%rdi
xor    %eax,%eax
call   1030 <my_rand@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
mulss  0xe1c(%rip),%xmm0
cvttss2si %xmm0,%rax
mov    %rax,0x0(%rbp)
ucomisd 0xe13(%rip),%xmm1
ja     1180 <check_patients_assess+0x50>
mov    0x10(%rsp),%rax
cmpl   $0x0,(%rax)
je     1180 <check_patients_assess+0x50>
mov    0x8(%rsp),%rax
addl   $0x1,(%rax)
mov    %r15,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1040 <removeList@plt>
mov    (%rsp),%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1050 <addList@plt>
jmp    11ab <check_patients_assess+0x7b>
mov    (%rsp),%r14
jmp    1234 <check_patients_assess+0x104>
add    $0x50,%r14d
mov    %r14,%rax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.Village = type opaque
%struct.List = type opaque
%struct.Patient = type opaque
define %struct.List* @check_patients_assess(%struct.Village* %0, %struct.List* %1) {
%3 = alloca %struct.Village*
%4 = alloca %struct.List*
%5 = alloca float
%6 = alloca %struct.Patient*
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i64
%24 = alloca i32
%25 = alloca i32
%26 = alloca float
%27 = alloca float
%28 = alloca i32
%29 = alloca i32
%30 = alloca double
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca %struct.List*
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca %struct.List*
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca %struct.List*
%53 = alloca i32
%54 = alloca i32
%55 = alloca i32
%56 = alloca %struct.List*
%57 = alloca i32
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i32
%62 = alloca i32
%63 = alloca i32
%64 = alloca i32
%65 = alloca i32
%66 = alloca i32
%67 = alloca i32
%68 = alloca i32
%69 = alloca i32
%70 = alloca i32
%71 = alloca i32
%72 = alloca i32
%73 = alloca i32
%74 = alloca i32
%75 = alloca i32
%76 = alloca i32
%77 = alloca %struct.List*
%78 = alloca i32
%79 = alloca i32
%80 = alloca i32
%81 = alloca %struct.List*
%82 = alloca i32
%83 = alloca i32
%84 = alloca i32
%85 = alloca i32
%86 = alloca i32
%87 = alloca %struct.Patient**
%88 = alloca i32*
%89 = alloca i32*
%90 = alloca i32*
%91 = alloca i32*
%92 = alloca i64*
%93 = alloca i64*
%94 = alloca i32*
%95 = alloca i32*
%96 = alloca i32*
%97 = alloca i32*
%98 = alloca i32*
%99 = alloca i32*
%100 = alloca i32*
%101 = alloca i32*
%102 = alloca i32*
%103 = alloca i32*
%104 = alloca i32*
%105 = alloca %struct.List**
store %struct.Village* %0, %struct.Village** %3
store %struct.List* %1, %struct.List** %4
br label %106
106: ; preds = %2, %370
br label %107
107: ; preds = %106
store i8* null, i8** %8
%108 = load i8*, i8** %8
%109 = ptrtoint i8* %108 to i32
store i32 %109, i32* %9
%110 = load %struct.List*, %struct.List** %4
%111 = ptrtoint %struct.List* %110 to i32
store i32 %111, i32* %10
%112 = load i32, i32* %10
%113 = load i32, i32* %9
%114 = icmp ne i32 %112, %113
br i1 %114, label %115, label %116
115: ; preds = %107
br label %117
116: ; preds = %107
br label %380
117: ; preds = %115
%118 = load %struct.List*, %struct.List** %4
%119 = bitcast %struct.List* %118 to %struct.Patient**
store %struct.Patient** %119, %struct.Patient*** %87
%120 = load %struct.Patient**, %struct.Patient*** %87
%121 = load %struct.Patient*, %struct.Patient** %120
store %struct.Patient* %121, %struct.Patient** %6
%122 = load %struct.Patient*, %struct.Patient** %6
%123 = ptrtoint %struct.Patient* %122 to i32
store i32 %123, i32* %11
%124 = load i32, i32* %11
%125 = add i32 %124, 8
store i32 %125, i32* %12
%126 = load %struct.Patient*, %struct.Patient** %6
%127 = ptrtoint %struct.Patient* %126 to i32
store i32 %127, i32* %13
%128 = load i32, i32* %13
%129 = add i32 %128, 8
store i32 %129, i32* %14
%130 = load i32, i32* %14
%131 = zext i32 %130 to i64
%132 = inttoptr i64 %131 to i32*
store i32* %132, i32** %88
%133 = load i32*, i32** %88
%134 = load i32, i32* %133
store i32 %134, i32* %15
%135 = load i32, i32* %12
%136 = zext i32 %135 to i64
%137 = inttoptr i64 %136 to i32*
store i32* %137, i32** %89
%138 = load i32, i32* %15
%139 = sub nsw i32 %138, 1
%140 = load i32*, i32** %89
store i32 %139, i32* %140
%141 = load %struct.Village*, %struct.Village** %3
%142 = ptrtoint %struct.Village* %141 to i32
store i32 %142, i32* %16
%143 = load i32, i32* %16
%144 = add i32 %143, 92
store i32 %144, i32* %17
%145 = load i32, i32* %17
%146 = zext i32 %145 to i64
%147 = inttoptr i64 %146 to i32*
store i32* %147, i32** %90
%148 = load i32*, i32** %90
%149 = load i32, i32* %148
store i32 %149, i32* %7
%150 = load %struct.Patient*, %struct.Patient** %6
%151 = ptrtoint %struct.Patient* %150 to i32
store i32 %151, i32* %18
%152 = load i32, i32* %18
%153 = add i32 %152, 8
store i32 %153, i32* %19
%154 = load i32, i32* %19
%155 = zext i32 %154 to i64
%156 = inttoptr i64 %155 to i32*
store i32* %156, i32** %91
%157 = load i32*, i32** %91
%158 = load i32, i32* %157
store i32 %158, i32* %20
%159 = load i32, i32* %20
%160 = icmp eq i32 %159, 0
br i1 %160, label %161, label %369
161: ; preds = %117
%162 = load %struct.Village*, %struct.Village** %3
%163 = ptrtoint %struct.Village* %162 to i32
store i32 %163, i32* %21
%164 = load i32, i32* %21
%165 = add i32 %164, 96
store i32 %165, i32* %22
%166 = load i32, i32* %22
%167 = zext i32 %166 to i64
%168 = inttoptr i64 %167 to i64*
store i64* %168, i64** %92
%169 = load i64*, i64** %92
%170 = load i64, i64* %169
store i64 %170, i64* %23
%171 = load i64, i64* %23
%172 = call i32 (i64, ...) bitcast (i32 (...)* @my_rand to i32 (i64, ...)*)(i64 %171)
%173 = sitofp i32 %172 to float
store float %173, float* %5
%174 = load %struct.Village*, %struct.Village** %3
%175 = ptrtoint %struct.Village* %174 to i32
store i32 %175, i32* %24
%176 = load i32, i32* %24
%177 = add i32 %176, 96
store i32 %177, i32* %25
store float 0x41E0000000000000, float* %26
%178 = load float, float* %5
%179 = load float, float* %26
%180 = fmul float %178, %179
store float %180, float* %27
%181 = load i32, i32* %25
%182 = zext i32 %181 to i64
%183 = inttoptr i64 %182 to i64*
store i64* %183, i64** %93
%184 = load float, float* %27
%185 = fptosi float %184 to i64
%186 = load i64*, i64** %93
store i64 %185, i64* %186
%187 = load %struct.Village*, %struct.Village** %3
%188 = ptrtoint %struct.Village* %187 to i32
store i32 %188, i32* %28
%189 = load i32, i32* %28
%190 = add i32 %189, 92
store i32 %190, i32* %29
%191 = load i32, i32* %29
%192 = zext i32 %191 to i64
%193 = inttoptr i64 %192 to i32*
store i32* %193, i32** %94
%194 = load i32*, i32** %94
%195 = load i32, i32* %194
store i32 %195, i32* %7
%196 = load float, float* %5
%197 = fpext float %196 to double
store double %197, double* %30
%198 = load double, double* %30
%199 = fcmp ogt double %198, 1.000000e-01
br i1 %199, label %200, label %260
200: ; preds = %161
store i32 56, i32* %31
%201 = load %struct.Village*, %struct.Village** %3
%202 = ptrtoint %struct.Village* %201 to i32
store i32 %202, i32* %32
%203 = load i32, i32* %32
%204 = load i32, i32* %31
%205 = add i32 %203, %204
store i32 %205, i32* %33
%206 = load i32, i32* %33
%207 = zext i32 %206 to i64
%208 = inttoptr i64 %207 to %struct.List*
store %struct.List* %208, %struct.List** %34
%209 = load %struct.List*, %struct.List** %34
%210 = load %struct.Patient*, %struct.Patient** %6
%211 = call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @removeList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %209, %struct.Patient* %210)
store i32 68, i32* %35
%212 = load %struct.Village*, %struct.Village** %3
%213 = ptrtoint %struct.Village* %212 to i32
store i32 %213, i32* %36
%214 = load i32, i32* %36
%215 = load i32, i32* %35
%216 = add i32 %214, %215
store i32 %216, i32* %37
%217 = load i32, i32* %37
%218 = zext i32 %217 to i64
%219 = inttoptr i64 %218 to %struct.List*
store %struct.List* %219, %struct.List** %38
%220 = load %struct.List*, %struct.List** %38
%221 = load %struct.Patient*, %struct.Patient** %6
%222 = call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @addList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %220, %struct.Patient* %221)
%223 = load %struct.Patient*, %struct.Patient** %6
%224 = ptrtoint %struct.Patient* %223 to i32
store i32 %224, i32* %39
%225 = load i32, i32* %39
%226 = add i32 %225, 8
store i32 %226, i32* %40
%227 = load i32, i32* %40
%228 = zext i32 %227 to i64
%229 = inttoptr i64 %228 to i32*
store i32* %229, i32** %95
%230 = load i32*, i32** %95
store i32 10, i32* %230
%231 = load %struct.Patient*, %struct.Patient** %6
%232 = ptrtoint %struct.Patient* %231 to i32
store i32 %232, i32* %41
%233 = load i32, i32* %41
%234 = add i32 %233, 4
store i32 %234, i32* %42
%235 = load %struct.Patient*, %struct.Patient** %6
%236 = ptrtoint %struct.Patient* %235 to i32
store i32 %236, i32* %43
%237 = load i32, i32* %43
%238 = add i32 %237, 8
store i32 %238, i32* %44
%239 = load i32, i32* %44
%240 = zext i32 %239 to i64
%241 = inttoptr i64 %240 to i32*
store i32* %241, i32** %96
%242 = load i32*, i32** %96
%243 = load i32, i32* %242
store i32 %243, i32* %45
%244 = load %struct.Patient*, %struct.Patient** %6
%245 = ptrtoint %struct.Patient* %244 to i32
store i32 %245, i32* %46
%246 = load i32, i32* %46
%247 = add i32 %246, 4
store i32 %247, i32* %47
%248 = load i32, i32* %47
%249 = zext i32 %248 to i64
%250 = inttoptr i64 %249 to i32*
store i32* %250, i32** %97
%251 = load i32*, i32** %97
%252 = load i32, i32* %251
store i32 %252, i32* %48
%253 = load i32, i32* %42
%254 = zext i32 %253 to i64
%255 = inttoptr i64 %254 to i32*
store i32* %255, i32** %98
%256 = load i32, i32* %48
%257 = load i32, i32* %45
%258 = add nsw i32 %256, %257
%259 = load i32*, i32** %98
store i32 %258, i32* %259
br label %368
260: ; preds = %161
%261 = load i32, i32* %7
%262 = icmp eq i32 %261, 0
br i1 %262, label %263, label %323
263: ; preds = %260
store i32 56, i32* %49
%264 = load %struct.Village*, %struct.Village** %3
%265 = ptrtoint %struct.Village* %264 to i32
store i32 %265, i32* %50
%266 = load i32, i32* %50
%267 = load i32, i32* %49
%268 = add i32 %266, %267
store i32 %268, i32* %51
%269 = load i32, i32* %51
%270 = zext i32 %269 to i64
%271 = inttoptr i64 %270 to %struct.List*
store %struct.List* %271, %struct.List** %52
%272 = load %struct.List*, %struct.List** %52
%273 = load %struct.Patient*, %struct.Patient** %6
%274 = call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @removeList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %272, %struct.Patient* %273)
store i32 68, i32* %53
%275 = load %struct.Village*, %struct.Village** %3
%276 = ptrtoint %struct.Village* %275 to i32
store i32 %276, i32* %54
%277 = load i32, i32* %54
%278 = load i32, i32* %53
%279 = add i32 %277, %278
store i32 %279, i32* %55
%280 = load i32, i32* %55
%281 = zext i32 %280 to i64
%282 = inttoptr i64 %281 to %struct.List*
store %struct.List* %282, %struct.List** %56
%283 = load %struct.List*, %struct.List** %56
%284 = load %struct.Patient*, %struct.Patient** %6
%285 = call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @addList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %283, %struct.Patient* %284)
%286 = load %struct.Patient*, %struct.Patient** %6
%287 = ptrtoint %struct.Patient* %286 to i32
store i32 %287, i32* %57
%288 = load i32, i32* %57
%289 = add i32 %288, 8
store i32 %289, i32* %58
%290 = load i32, i32* %58
%291 = zext i32 %290 to i64
%292 = inttoptr i64 %291 to i32*
store i32* %292, i32** %99
%293 = load i32*, i32** %99
store i32 10, i32* %293
%294 = load %struct.Patient*, %struct.Patient** %6
%295 = ptrtoint %struct.Patient* %294 to i32
store i32 %295, i32* %59
%296 = load i32, i32* %59
%297 = add i32 %296, 4
store i32 %297, i32* %60
%298 = load %struct.Patient*, %struct.Patient** %6
%299 = ptrtoint %struct.Patient* %298 to i32
store i32 %299, i32* %61
%300 = load i32, i32* %61
%301 = add i32 %300, 8
store i32 %301, i32* %62
%302 = load i32, i32* %62
%303 = zext i32 %302 to i64
%304 = inttoptr i64 %303 to i32*
store i32* %304, i32** %100
%305 = load i32*, i32** %100
%306 = load i32, i32* %305
store i32 %306, i32* %63
%307 = load %struct.Patient*, %struct.Patient** %6
%308 = ptrtoint %struct.Patient* %307 to i32
store i32 %308, i32* %64
%309 = load i32, i32* %64
%310 = add i32 %309, 4
store i32 %310, i32* %65
%311 = load i32, i32* %65
%312 = zext i32 %311 to i64
%313 = inttoptr i64 %312 to i32*
store i32* %313, i32** %101
%314 = load i32*, i32** %101
%315 = load i32, i32* %314
store i32 %315, i32* %66
%316 = load i32, i32* %60
%317 = zext i32 %316 to i64
%318 = inttoptr i64 %317 to i32*
store i32* %318, i32** %102
%319 = load i32, i32* %66
%320 = load i32, i32* %63
%321 = add nsw i32 %319, %320
%322 = load i32*, i32** %102
store i32 %321, i32* %322
br label %367
323: ; preds = %260
store i32 36, i32* %67
%324 = load %struct.Village*, %struct.Village** %3
%325 = ptrtoint %struct.Village* %324 to i32
store i32 %325, i32* %68
%326 = load i32, i32* %68
%327 = load i32, i32* %67
%328 = add i32 %326, %327
store i32 %328, i32* %69
store i32 36, i32* %70
%329 = load %struct.Village*, %struct.Village** %3
%330 = ptrtoint %struct.Village* %329 to i32
store i32 %330, i32* %71
%331 = load i32, i32* %71
%332 = load i32, i32* %70
%333 = add i32 %331, %332
store i32 %333, i32* %72
%334 = load i32, i32* %72
%335 = zext i32 %334 to i64
%336 = inttoptr i64 %335 to i32*
store i32* %336, i32** %103
%337 = load i32*, i32** %103
%338 = load i32, i32* %337
store i32 %338, i32* %73
%339 = load i32, i32* %69
%340 = zext i32 %339 to i64
%341 = inttoptr i64 %340 to i32*
store i32* %341, i32** %104
%342 = load i32, i32* %73
%343 = add nsw i32 %342, 1
%344 = load i32*, i32** %104
store i32 %343, i32* %344
store i32 56, i32* %74
%345 = load %struct.Village*, %struct.Village** %3
%346 = ptrtoint %struct.Village* %345 to i32
store i32 %346, i32* %75
%347 = load i32, i32* %75
%348 = load i32, i32* %74
%349 = add i32 %347, %348
store i32 %349, i32* %76
%350 = load i32, i32* %76
%351 = zext i32 %350 to i64
%352 = inttoptr i64 %351 to %struct.List*
store %struct.List* %352, %struct.List** %77
%353 = load %struct.List*, %struct.List** %77
%354 = load %struct.Patient*, %struct.Patient** %6
%355 = call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @removeList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %353, %struct.Patient* %354)
store i32 80, i32* %78
%356 = load %struct.Village*, %struct.Village** %3
%357 = ptrtoint %struct.Village* %356 to i32
store i32 %357, i32* %79
%358 = load i32, i32* %79
%359 = load i32, i32* %78
%360 = add i32 %358, %359
store i32 %360, i32* %80
%361 = load i32, i32* %80
%362 = zext i32 %361 to i64
%363 = inttoptr i64 %362 to %struct.List*
store %struct.List* %363, %struct.List** %81
%364 = load %struct.List*, %struct.List** %81
%365 = load %struct.Patient*, %struct.Patient** %6
%366 = call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @addList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %364, %struct.Patient* %365)
br label %367
367: ; preds = %323, %263
br label %368
368: ; preds = %367, %200
br label %370
369: ; preds = %117
br label %370
370: ; preds = %369, %368
%371 = load %struct.List*, %struct.List** %4
%372 = ptrtoint %struct.List* %371 to i32
store i32 %372, i32* %82
%373 = load i32, i32* %82
%374 = add i32 %373, 8
store i32 %374, i32* %83
%375 = load i32, i32* %83
%376 = zext i32 %375 to i64
%377 = inttoptr i64 %376 to %struct.List**
store %struct.List** %377, %struct.List*** %105
%378 = load %struct.List**, %struct.List*** %105
%379 = load %struct.List*, %struct.List** %378
store %struct.List* %379, %struct.List** %4
br label %106
380: ; preds = %116
store i32 80, i32* %84
%381 = load %struct.Village*, %struct.Village** %3
%382 = ptrtoint %struct.Village* %381 to i32
store i32 %382, i32* %85
%383 = load i32, i32* %85
%384 = load i32, i32* %84
%385 = add i32 %383, %384
store i32 %385, i32* %86
%386 = load i32, i32* %86
%387 = zext i32 %386 to i64
%388 = inttoptr i64 %387 to %struct.List*
ret %struct.List* %388
}

LLVM IR (-O2):
%struct.Village = type opaque
%struct.List = type opaque
%struct.Patient = type opaque
define %struct.List* @check_patients_assess(%struct.Village* %0, %struct.List* %1) {
%3 = ptrtoint %struct.List* %1 to i64
%4 = trunc i64 %3 to i32
%5 = icmp eq i32 %4, 0
%6 = ptrtoint %struct.Village* %0 to i64
br i1 %5, label %7, label %11
7: ; preds = %2
%8 = add i64 %6, 80
%9 = and i64 %8, 4294967295
%10 = inttoptr i64 %9 to %struct.List*
br label %82
11: ; preds = %2
%12 = add i64 %6, 96
%13 = and i64 %12, 4294967295
%14 = inttoptr i64 %13 to i64*
%15 = add i64 %6, 92
%16 = and i64 %15, 4294967295
%17 = inttoptr i64 %16 to i32*
%18 = add i64 %6, 36
%19 = and i64 %18, 4294967295
%20 = inttoptr i64 %19 to i32*
%21 = add i64 %6, 56
%22 = and i64 %21, 4294967295
%23 = inttoptr i64 %22 to %struct.List*
%24 = add i64 %6, 80
%25 = and i64 %24, 4294967295
%26 = inttoptr i64 %25 to %struct.List*
%27 = add i64 %6, 68
%28 = and i64 %27, 4294967295
%29 = inttoptr i64 %28 to %struct.List*
br label %30
30: ; preds = %11, %74
%31 = phi i64 [ %3, %11 ], [ %79, %74 ]
%32 = phi %struct.List* [ %1, %11 ], [ %78, %74 ]
%33 = bitcast %struct.List* %32 to %struct.Patient**
%34 = load %struct.Patient*, %struct.Patient** %33
%35 = ptrtoint %struct.Patient* %34 to i64
%36 = add i64 %35, 8
%37 = and i64 %36, 4294967295
%38 = inttoptr i64 %37 to i32*
%39 = load i32, i32* %38
%40 = add nsw i32 %39, -1
store i32 %40, i32* %38
%41 = icmp eq i32 %40, 0
br i1 %41, label %42, label %74
42: ; preds = %30
%43 = load i64, i64* %14
%44 = tail call i32 (i64, ...) bitcast (i32 (...)* @my_rand to i32 (i64, ...)*)(i64 %43)
%45 = sitofp i32 %44 to float
%46 = fmul float %45, 0x41E0000000000000
%47 = fptosi float %46 to i64
store i64 %47, i64* %14
%48 = fpext float %45 to double
%49 = fcmp ogt double %48, 1.000000e-01
br i1 %49, label %50, label %58
50: ; preds = %42
%51 = tail call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @removeList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %23, %struct.Patient* %34)
%52 = tail call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @addList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %29, %struct.Patient* %34)
store i32 10, i32* %38
%53 = add i64 %35, 4
%54 = and i64 %53, 4294967295
%55 = inttoptr i64 %54 to i32*
%56 = load i32, i32* %55
%57 = add nsw i32 %56, 10
store i32 %57, i32* %55
br label %74
58: ; preds = %42
%59 = load i32, i32* %17
%60 = icmp eq i32 %59, 0
br i1 %60, label %61, label %69
61: ; preds = %58
%62 = tail call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @removeList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %23, %struct.Patient* %34)
%63 = tail call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @addList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %29, %struct.Patient* %34)
store i32 10, i32* %38
%64 = add i64 %35, 4
%65 = and i64 %64, 4294967295
%66 = inttoptr i64 %65 to i32*
%67 = load i32, i32* %66
%68 = add nsw i32 %67, 10
store i32 %68, i32* %66
br label %74
69: ; preds = %58
%70 = load i32, i32* %20
%71 = add nsw i32 %70, 1
store i32 %71, i32* %20
%72 = tail call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @removeList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %23, %struct.Patient* %34)
%73 = tail call i32 (%struct.List*, %struct.Patient*, ...) bitcast (i32 (...)* @addList to i32 (%struct.List*, %struct.Patient*, ...)*)(%struct.List* %26, %struct.Patient* %34)
br label %74
74: ; preds = %30, %50, %69, %61
%75 = add i64 %31, 8
%76 = and i64 %75, 4294967295
%77 = inttoptr i64 %76 to %struct.List**
%78 = load %struct.List*, %struct.List** %77
%79 = ptrtoint %struct.List* %78 to i64
%80 = trunc i64 %79 to i32
%81 = icmp eq i32 %80, 0
br i1 %81, label %82, label %30
82: ; preds = %74, %7
%83 = phi %struct.List* [ %10, %7 ], [ %26, %74 ]
ret %struct.List* %83
}