Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 14 ?? sub esp, 0x14<20>
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   53 ?? push ebx
   33 db ?? xor ebx, ebx
   89 5d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ebx
   3b c3 ?? cmp eax, ebx
   75 1d ?? jne basic block L5
  
  L2: e8 1b bb fe ff ?? call function 0x0040c522
  
  L3: 53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   e8 a9 5f fe ff ?? call function 0x004069c0
  
  L4: 83 c4 14 ?? add esp, 0x14<20>
   83 c8 ff ?? or eax, 0xff<255,-1>
   eb 6e ?? jmp basic block L21
  
  L5: 56 ?? push esi
   8b 30 ?? mov esi, dword ds:[eax]
   57 ?? push edi
   89 75 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], esi
   3b f3 ?? cmp esi, ebx
   74 53 ?? je basic block L17
  
  L6: 6a 3d ?? push 0x3d<61>
   56 ?? push esi
   e8 17 03 00 00 ?? call function 0x00420d49
  
  L7: 8b f8 ?? mov edi, eax
   59 ?? pop ecx
   59 ?? pop ecx
   89 7d ec ?? mov dword ss:[ebp + 0xec<236,-20>], edi
   3b fb ?? cmp edi, ebx
   74 40 ?? je basic block L17
  
  L8: 3b f7 ?? cmp esi, edi
   74 3c ?? je basic block L17
  
  L9: 33 c0 ?? xor eax, eax
   38 5f 01 ?? cmp byte ds:[edi + 1], bl
   0f 94 c0 ?? sete al
   89 45 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], eax
   a1 ac 5e 43 00 ?? mov eax, dword ds:[0x00435eac]
   3b 05 b0 5e 43 00 ?? cmp eax, dword ds:[0x00435eb0]
   75 0a ?? jne basic block L12
  
  L10: e8 35 ff ff ff ?? call function 0x00420993
  
  L11: a3 ac 5e 43 00 ?? mov dword ds:[0x00435eac], eax
  
  L12: 3b c3 ?? cmp eax, ebx
   75 60 ?? jne basic block L29
  
  L13: 39 5d 0c ?? cmp dword ss:[ebp + 12], ebx
   74 24 ?? je basic block L22
  
  L14: 39 1d b4 5e 43 00 ?? cmp dword ds:[0x00435eb4], ebx
   74 1c ?? je basic block L22
  
  L15: e8 e1 f8 ff ff ?? call function 0x0042035a
  
  L16: 85 c0 ?? test eax, eax
   74 4a ?? je basic block L29
  
  L17: e8 a0 ba fe ff ?? call function 0x0040c522
  
  L18: c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
  
  L19: 83 c8 ff ?? or eax, 0xff<255,-1>
  
  L20: 5f ?? pop edi
   5e ?? pop esi
  
  L21: 5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  L22: 39 5d f8 ?? cmp dword ss:[ebp + 0xf8<248,-8>], ebx
   0f 85 98 01 00 00 ?? jne basic block L72
  
  L23: 6a 04 ?? push 4
   e8 40 96 fe ff ?? call function 0x0040a0e0
  
  L24: 59 ?? pop ecx
   a3 ac 5e 43 00 ?? mov dword ds:[0x00435eac], eax
   3b c3 ?? cmp eax, ebx
   74 de ?? je basic block L19
  
  L25: 89 18 ?? mov dword ds:[eax], ebx
   39 1d b4 5e 43 00 ?? cmp dword ds:[0x00435eb4], ebx
   75 13 ?? jne basic block L29
  
  L26: 6a 04 ?? push 4
   e8 25 96 fe ff ?? call function 0x0040a0e0
  
  L27: 59 ?? pop ecx
   a3 b4 5e 43 00 ?? mov dword ds:[0x00435eb4], eax
   3b c3 ?? cmp eax, ebx
   74 c3 ?? je basic block L19
  
  L28: 89 18 ?? mov dword ds:[eax], ebx
  
  L29: 8b 35 ac 5e 43 00 ?? mov esi, dword ds:[0x00435eac]
   89 75 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], esi
   3b f3 ?? cmp esi, ebx
   74 b4 ?? je basic block L19
  
  L30: 2b 7d fc ?? sub edi, dword ss:[ebp + 0xfc<252,-4>]
   ff 75 fc ?? push dword ss:[ebp + 0xfc<252,-4>]
   e8 62 fe ff ff ?? call function 0x00420941
  
  L31: 8b f8 ?? mov edi, eax
   3b fb ?? cmp edi, ebx
   59 ?? pop ecx
   7c 52 ?? jl basic block L42
  
  L32: 39 1e ?? cmp dword ds:[esi], ebx
   74 4e ?? je basic block L42
  
  L33: 8d 34 be ?? lea esi, ds:[esi + edi * 4]
   ff 36 ?? push dword ds:[esi]
   e8 18 5f fe ff ?? call function 0x00406a0c
  
  L34: 59 ?? pop ecx
   39 5d f8 ?? cmp dword ss:[ebp + 0xf8<248,-8>], ebx
   75 1b ?? jne basic block L37
  
  L35: 8b 45 fc ?? mov eax, dword ss:[ebp + 0xfc<252,-4>]
   89 06 ?? mov dword ds:[esi], eax
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   89 18 ?? mov dword ds:[eax], ebx
   e9 82 00 00 00 ?? jmp basic block L51
  
  L36: 8b 46 04 ?? mov eax, dword ds:[esi + 4]
   89 06 ?? mov dword ds:[esi], eax
   8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   47 ?? inc edi
   8d 34 b8 ?? lea esi, ds:[eax + edi * 4]
  
  L37: 39 1e ?? cmp dword ds:[esi], ebx
   75 f0 ?? jne basic block L36
  
  L38: 81 ff ff ff ff 3f ?? cmp edi, 0x3fffffff
   73 6a ?? jae basic block L51
  
  L39: 6a 04 ?? push 4
   57 ?? push edi
   ff 35 ac 5e 43 00 ?? push dword ds:[0x00435eac]
   e8 90 96 fe ff ?? call function 0x0040a1bf
  
  L40: 83 c4 0c ?? add esp, 12
   3b c3 ?? cmp eax, ebx
   74 55 ?? je basic block L51
  
  L41: eb 4e ?? jmp basic block L50
  
  L42: 39 5d f8 ?? cmp dword ss:[ebp + 0xf8<248,-8>], ebx
   0f 85 e2 00 00 00 ?? jne basic block L70
  
  L43: 3b fb ?? cmp edi, ebx
   7d 02 ?? jge basic block L45
  
  L44: f7 df ?? neg edi
  
  L45: 8d 47 02 ?? lea eax, ds:[edi + 2]
   3b c7 ?? cmp eax, edi
   0f 8c 36 ff ff ff ?? jl basic block L19
  
  L46: 3d ff ff ff 3f ?? cmp eax, 0x3fffffff
   0f 83 2b ff ff ff ?? jae basic block L19
  
  L47: 50 ?? push eax
   6a 04 ?? push 4
   ff 35 ac 5e 43 00 ?? push dword ds:[0x00435eac]
   e8 54 96 fe ff ?? call function 0x0040a1bf
  
  L48: 83 c4 0c ?? add esp, 12
   3b c3 ?? cmp eax, ebx
   0f 84 12 ff ff ff ?? je basic block L19
  
  L49: 8b 55 fc ?? mov edx, dword ss:[ebp + 0xfc<252,-4>]
   8d 0c b8 ?? lea ecx, ds:[eax + edi * 4]
   89 11 ?? mov dword ds:[ecx], edx
   89 59 04 ?? mov dword ds:[ecx + 4], ebx
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   89 19 ?? mov dword ds:[ecx], ebx
  
  L50: a3 ac 5e 43 00 ?? mov dword ds:[0x00435eac], eax
  
  L51: 39 5d 0c ?? cmp dword ss:[ebp + 12], ebx
   74 78 ?? je basic block L66
  
  L52: 8b 75 fc ?? mov esi, dword ss:[ebp + 0xfc<252,-4>]
   6a 01 ?? push 1
   56 ?? push esi
   e8 f5 58 fe ff ?? call function 0x00406490
  
  L53: 40 ?? inc eax
   59 ?? pop ecx
   40 ?? inc eax
   50 ?? push eax
   e8 81 95 fe ff ?? call function 0x0040a125
  
  L54: 8b f8 ?? mov edi, eax
   59 ?? pop ecx
   59 ?? pop ecx
   3b fb ?? cmp edi, ebx
   74 5c ?? je basic block L66
  
  L55: 56 ?? push esi
   56 ?? push esi
   e8 dd 58 fe ff ?? call function 0x00406490
  
  L56: 40 ?? inc eax
   59 ?? pop ecx
   40 ?? inc eax
   50 ?? push eax
   57 ?? push edi
   e8 bb b8 fe ff ?? call function 0x0040c478
  
  L57: 83 c4 0c ?? add esp, 12
   85 c0 ?? test eax, eax
   74 0d ?? je basic block L60
  
  L58: 53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   e8 8b 5c fe ff ?? call function 0x00406859
  
  L59: 83 c4 14 ?? add esp, 0x14<20>
  
  L60: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   8b c7 ?? mov eax, edi
   2b c6 ?? sub eax, esi
   03 45 ec ?? add eax, dword ss:[ebp + 0xec<236,-20>]
   88 18 ?? mov byte ds:[eax], bl
   40 ?? inc eax
   f7 d9 ?? neg ecx
   1b c9 ?? sbb ecx, ecx
   f7 d1 ?? not ecx
   23 c8 ?? and ecx, eax
   51 ?? push ecx
   57 ?? push edi
   ff 15 44 83 43 00 ?? call dword ds:[0x00438344]
  
  L61: 85 c0 ?? test eax, eax
   75 0f ?? jne basic block L64
  
  L62: 83 4d f4 ff ?? or dword ss:[ebp + 0xf4<244,-12>], 0xff<255,-1>
   e8 27 b9 fe ff ?? call function 0x0040c522
  
  L63: c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
  
  L64: 57 ?? push edi
   e8 05 5e fe ff ?? call function 0x00406a0c
  
  L65: 59 ?? pop ecx
  
  L66: 39 5d f8 ?? cmp dword ss:[ebp + 0xf8<248,-8>], ebx
   74 0e ?? je basic block L69
  
  L67: ff 75 fc ?? push dword ss:[ebp + 0xfc<252,-4>]
   e8 f7 5d fe ff ?? call function 0x00406a0c
  
  L68: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   59 ?? pop ecx
   89 18 ?? mov dword ds:[eax], ebx
  
  L69: 8b 45 f4 ?? mov eax, dword ss:[ebp + 0xf4<244,-12>]
   e9 68 fe ff ff ?? jmp basic block L20
  
  L70: ff 75 fc ?? push dword ss:[ebp + 0xfc<252,-4>]
   e8 e1 5d fe ff ?? call function 0x00406a0c
  
  L71: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   59 ?? pop ecx
   89 18 ?? mov dword ds:[eax], ebx
  
  L72: 33 c0 ?? xor eax, eax
   e9 53 fe ff ff ?? jmp basic block L20
  
  