Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a fe ?? push 0xfe<254,-2>
   68 40 87 40 00 ?? push 0x00408740
   68 20 44 40 00 ?? push function 0x00404420
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   83 c4 d8 ?? add esp, 0xd8<216,-40>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   a1 04 a0 40 00 ?? mov eax, dword ds:[0x0040a004]
   31 45 f8 ?? xor dword ss:[ebp + 0xf8<248,-8>], eax
   33 c5 ?? xor eax, ebp
   50 ?? push eax
   8d 45 f0 ?? lea eax, ss:[ebp + 0xf0<240,-16>]
   64 a3 00 00 00 00 ?? mov dword fs:[0], eax
   89 65 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], esp
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   89 45 d0 ?? mov dword ss:[ebp + 0xd0<208,-48>], eax
   c7 45 dc 00 00 40 00 ?? mov dword ss:[ebp + 0xdc<220,-36>], 0x00400000
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   8b 4d dc ?? mov ecx, dword ss:[ebp + 0xdc<220,-36>]
   51 ?? push ecx
   e8 70 fc ff ff ?? call function 0x00403890
  
  L2: 83 c4 04 ?? add esp, 4
   0f b6 d0 ?? movzx edx, al
   85 d2 ?? test edx, edx
   75 13 ?? jne basic block L4
  
  L3: c6 45 e7 00 ?? mov byte ss:[ebp + 0xe7<231,-25>], 0
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8a 45 e7 ?? mov al, byte ss:[ebp + 0xe7<231,-25>]
   e9 aa 00 00 00 ?? jmp basic block L17
  
  L4: 8b 45 d0 ?? mov eax, dword ss:[ebp + 0xd0<208,-48>]
   2b 45 dc ?? sub eax, dword ss:[ebp + 0xdc<220,-36>]
   89 45 cc ?? mov dword ss:[ebp + 0xcc<204,-52>], eax
   8b 4d cc ?? mov ecx, dword ss:[ebp + 0xcc<204,-52>]
   51 ?? push ecx
   8b 55 dc ?? mov edx, dword ss:[ebp + 0xdc<220,-36>]
   52 ?? push edx
   e8 ad fb ff ff ?? call function 0x00403800
  
  L5: 83 c4 08 ?? add esp, 8
   89 45 d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], eax
   83 7d d8 00 ?? cmp dword ss:[ebp + 0xd8<216,-40>], 0
   75 10 ?? jne basic block L7
  
  L6: c6 45 e6 00 ?? mov byte ss:[ebp + 0xe6<230,-26>], 0
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8a 45 e6 ?? mov al, byte ss:[ebp + 0xe6<230,-26>]
   eb 78 ?? jmp basic block L17
  
  L7: 8b 45 d8 ?? mov eax, dword ss:[ebp + 0xd8<216,-40>]
   8b 48 24 ?? mov ecx, dword ds:[eax + 0x24<36>]
   81 e1 00 00 00 80 ?? and ecx, 0x80000000
   74 10 ?? je basic block L9
  
  L8: c6 45 e5 00 ?? mov byte ss:[ebp + 0xe5<229,-27>], 0
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8a 45 e5 ?? mov al, byte ss:[ebp + 0xe5<229,-27>]
   eb 5a ?? jmp basic block L17
  
  L9: c6 45 e4 01 ?? mov byte ss:[ebp + 0xe4<228,-28>], 1
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8a 45 e4 ?? mov al, byte ss:[ebp + 0xe4<228,-28>]
   eb 4a ?? jmp basic block L17
  
  L10: c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   eb 41 ?? jmp basic block L17
  
  L11: 8b 55 ec ?? mov edx, dword ss:[ebp + 0xec<236,-20>]
   8b 02 ?? mov eax, dword ds:[edx]
   8b 08 ?? mov ecx, dword ds:[eax]
   89 4d c8 ?? mov dword ss:[ebp + 0xc8<200,-56>], ecx
   81 7d c8 05 00 00 c0 ?? cmp dword ss:[ebp + 0xc8<200,-56>], 0xc0000005
   75 09 ?? jne basic block L13
  
  L12: c7 45 d4 01 00 00 00 ?? mov dword ss:[ebp + 0xd4<212,-44>], 1
   eb 07 ?? jmp basic block L14
  
  L13: c7 45 d4 00 00 00 00 ?? mov dword ss:[ebp + 0xd4<212,-44>], 0
  
  L14: 8b 45 d4 ?? mov eax, dword ss:[ebp + 0xd4<212,-44>]
   c3 ?? ret
  
  L15: 8b 65 e8 ?? mov esp, dword ss:[ebp + 0xe8<232,-24>]
   c6 45 e3 00 ?? mov byte ss:[ebp + 0xe3<227,-29>], 0
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8a 45 e3 ?? mov al, byte ss:[ebp + 0xe3<227,-29>]
   eb 07 ?? jmp basic block L17
  
  L16: c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
  
  L17: 8b 4d f0 ?? mov ecx, dword ss:[ebp + 0xf0<240,-16>]
   64 89 0d 00 00 00 00 ?? mov dword fs:[0], ecx
   59 ?? pop ecx
   5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  