Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 2c ?? sub esp, 0x2c<44>
   8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   53 ?? push ebx
   8b 5d 18 ?? mov ebx, dword ss:[ebp + 0x18<24>]
   8b 43 04 ?? mov eax, dword ds:[ebx + 4]
   3d 80 00 00 00 ?? cmp eax, 0x00000080<128>
   56 ?? push esi
   57 ?? push edi
   c6 45 ff 00 ?? mov byte ss:[ebp + 0xff<255,-1>], 0
   7f 06 ?? jg basic block L3
  
  L2: 0f be 49 08 ?? movsx ecx, byte ds:[ecx + 8]
   eb 03 ?? jmp basic block L4
  
  L3: 8b 49 08 ?? mov ecx, dword ds:[ecx + 8]
  
  L4: 83 f9 ff ?? cmp ecx, 0xff<255,-1>
   89 4d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ecx
   7c 04 ?? jl basic block L6
  
  L5: 3b c8 ?? cmp ecx, eax
   7c 05 ?? jl basic block L7
  
  L6: e8 cb 0a 00 00 ?? call function 0x00403a15
  
  L7: 8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   bf 63 73 6d e0 ?? mov edi, 0xe06d7363
   39 3e ?? cmp dword ds:[esi], edi
   0f 85 ba 02 00 00 ?? jne basic block L83
  
  L8: 83 7e 10 03 ?? cmp dword ds:[esi + 0x10<16>], 3
   bb 20 05 93 19 ?? mov ebx, 0x19930520
   0f 85 18 01 00 00 ?? jne basic block L42
  
  L9: 8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   3b c3 ?? cmp eax, ebx
   74 12 ?? je basic block L12
  
  L10: 3d 21 05 93 19 ?? cmp eax, 0x19930521
   74 0b ?? je basic block L12
  
  L11: 3d 22 05 93 19 ?? cmp eax, 0x19930522
   0f 85 ff 00 00 00 ?? jne basic block L42
  
  L12: 83 7e 1c 00 ?? cmp dword ds:[esi + 0x1c<28>], 0
   0f 85 f5 00 00 00 ?? jne basic block L42
  
  L13: e8 e8 06 00 00 ?? call function 0x00403679
  
  L14: 83 b8 88 00 00 00 00 ?? cmp dword ds:[eax + 0x00000088<136>], 0
   0f 84 b5 02 00 00 ?? je basic block L90
  
  L15: e8 d6 06 00 00 ?? call function 0x00403679
  
  L16: 8b b0 88 00 00 00 ?? mov esi, dword ds:[eax + 0x00000088<136>]
   89 75 08 ?? mov dword ss:[ebp + 8], esi
   e8 c8 06 00 00 ?? call function 0x00403679
  
  L17: 8b 80 8c 00 00 00 ?? mov eax, dword ds:[eax + 0x0000008c<140>]
   6a 01 ?? push 1
   56 ?? push esi
   89 45 10 ?? mov dword ss:[ebp + 0x10<16>], eax
   e8 bf 39 00 00 ?? call function 0x00406981
  
  L18: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 05 ?? jne basic block L20
  
  L19: e8 48 0a 00 00 ?? call function 0x00403a15
  
  L20: 39 3e ?? cmp dword ds:[esi], edi
   75 26 ?? jne basic block L27
  
  L21: 83 7e 10 03 ?? cmp dword ds:[esi + 0x10<16>], 3
   75 20 ?? jne basic block L27
  
  L22: 8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   3b c3 ?? cmp eax, ebx
   74 0e ?? je basic block L25
  
  L23: 3d 21 05 93 19 ?? cmp eax, 0x19930521
   74 07 ?? je basic block L25
  
  L24: 3d 22 05 93 19 ?? cmp eax, 0x19930522
   75 0b ?? jne basic block L27
  
  L25: 83 7e 1c 00 ?? cmp dword ds:[esi + 0x1c<28>], 0
   75 05 ?? jne basic block L27
  
  L26: e8 1e 0a 00 00 ?? call function 0x00403a15
  
  L27: e8 7d 06 00 00 ?? call function 0x00403679
  
  L28: 83 b8 94 00 00 00 00 ?? cmp dword ds:[eax + 0x00000094<148>], 0
   74 7c ?? je basic block L42
  
  L29: e8 6f 06 00 00 ?? call function 0x00403679
  
  L30: 8b b8 94 00 00 00 ?? mov edi, dword ds:[eax + 0x00000094<148>]
   e8 64 06 00 00 ?? call function 0x00403679
  
  L31: ff 75 08 ?? push dword ss:[ebp + 8]
   33 f6 ?? xor esi, esi
   89 b0 94 00 00 00 ?? mov dword ds:[eax + 0x00000094<148>], esi
   e8 1c f7 ff ff ?? call function 0x00402741
  
  L32: 59 ?? pop ecx
   84 c0 ?? test al, al
   75 4f ?? jne basic block L41
  
  L33: 33 db ?? xor ebx, ebx
   39 1f ?? cmp dword ds:[edi], ebx
   7e 1d ?? jle basic block L37
  
  L34: 8b 47 04 ?? mov eax, dword ds:[edi + 4]
   8b 4c 03 04 ?? mov ecx, dword ds:[ebx + eax + 4]
   68 cc 80 42 00 ?? push 0x004280cc
   e8 1a ed ff ff ?? call function 0x00401d5b
  
  L35: 84 c0 ?? test al, al
   75 0d ?? jne basic block L38
  
  L36: 46 ?? inc esi
   83 c3 10 ?? add ebx, 0x10<16>
   3b 37 ?? cmp esi, dword ds:[edi]
   7c e3 ?? jl basic block L34
  
  L37: e8 77 09 00 00 ?? call function 0x004039c9
  
  L38: 6a 01 ?? push 1
   ff 75 08 ?? push dword ss:[ebp + 8]
   e8 36 f3 ff ff ?? call function 0x00402392
  
  L39: 59 ?? pop ecx
   59 ?? pop ecx
   68 08 3b 42 00 ?? push 0x00423b08<"bad exception">
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 09 f1 ff ff ?? call function 0x00402174
  
  L40: 68 54 75 42 00 ?? push 0x00427554
   8d 45 d4 ?? lea eax, ss:[ebp + 0xd4<212,-44>]
   50 ?? push eax
   e8 af f0 ff ff ?? call function 0x00402128
  
  L41: 8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   bf 63 73 6d e0 ?? mov edi, 0xe06d7363
  
  L42: 39 3e ?? cmp dword ds:[esi], edi
   0f 85 88 01 00 00 ?? jne basic block L82
  
  L43: 83 7e 10 03 ?? cmp dword ds:[esi + 0x10<16>], 3
   0f 85 7e 01 00 00 ?? jne basic block L82
  
  L44: 8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   3b c3 ?? cmp eax, ebx
   74 12 ?? je basic block L47
  
  L45: 3d 21 05 93 19 ?? cmp eax, 0x19930521
   74 0b ?? je basic block L47
  
  L46: 3d 22 05 93 19 ?? cmp eax, 0x19930522
   0f 85 65 01 00 00 ?? jne basic block L82
  
  L47: 8b 7d 18 ?? mov edi, dword ss:[ebp + 0x18<24>]
   83 7f 0c 00 ?? cmp dword ds:[edi + 12], 0
   0f 86 bf 00 00 00 ?? jbe basic block L64
  
  L48: 8d 45 e4 ?? lea eax, ss:[ebp + 0xe4<228,-28>]
   50 ?? push eax
   8d 45 f0 ?? lea eax, ss:[ebp + 0xf0<240,-16>]
   50 ?? push eax
   ff 75 f8 ?? push dword ss:[ebp + 0xf8<248,-8>]
   ff 75 20 ?? push dword ss:[ebp + 0x20<32>]
   57 ?? push edi
   e8 51 e5 ff ff ?? call function 0x0040161e
  
  L49: 83 c4 14 ?? add esp, 0x14<20>
   8b f8 ?? mov edi, eax
  
  L50: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   3b 45 e4 ?? cmp eax, dword ss:[ebp + 0xe4<228,-28>]
   0f 83 97 00 00 00 ?? jae basic block L63
  
  L51: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
   39 07 ?? cmp dword ds:[edi], eax
   0f 8f 81 00 00 00 ?? jg basic block L62
  
  L52: 3b 47 04 ?? cmp eax, dword ds:[edi + 4]
   7f 7c ?? jg basic block L62
  
  L53: 8b 47 10 ?? mov eax, dword ds:[edi + 0x10<16>]
   89 45 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], eax
   8b 47 0c ?? mov eax, dword ds:[edi + 12]
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   85 c0 ?? test eax, eax
   7e 6c ?? jle basic block L62
  
  L54: 8b 46 1c ?? mov eax, dword ds:[esi + 0x1c<28>]
   8b 40 0c ?? mov eax, dword ds:[eax + 12]
   8d 58 04 ?? lea ebx, ds:[eax + 4]
   8b 00 ?? mov eax, dword ds:[eax]
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   85 c0 ?? test eax, eax
   7e 23 ?? jle basic block L58
  
  L55: ff 76 1c ?? push dword ds:[esi + 0x1c<28>]
   8b 03 ?? mov eax, dword ds:[ebx]
   50 ?? push eax
   ff 75 f4 ?? push dword ss:[ebp + 0xf4<244,-12>]
   89 45 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], eax
   e8 a3 f0 ff ff ?? call function 0x004021c4
  
  L56: 83 c4 0c ?? add esp, 12
   85 c0 ?? test eax, eax
   75 1a ?? jne basic block L60
  
  L57: ff 4d ec ?? dec dword ss:[ebp + 0xec<236,-20>]
   83 c3 04 ?? add ebx, 4
   39 45 ec ?? cmp dword ss:[ebp + 0xec<236,-20>], eax
   7f dd ?? jg basic block L55
  
  L58: ff 4d e8 ?? dec dword ss:[ebp + 0xe8<232,-24>]
   83 45 f4 10 ?? add dword ss:[ebp + 0xf4<244,-12>], 0x10<16>
   83 7d e8 00 ?? cmp dword ss:[ebp + 0xe8<232,-24>], 0
   7f be ?? jg basic block L54
  
  L59: eb 28 ?? jmp basic block L62
  
  L60: ff 75 24 ?? push dword ss:[ebp + 0x24<36>]
   8b 5d f4 ?? mov ebx, dword ss:[ebp + 0xf4<244,-12>]
   ff 75 20 ?? push dword ss:[ebp + 0x20<32>]
   c6 45 ff 01 ?? mov byte ss:[ebp + 0xff<255,-1>], 1
   ff 75 e0 ?? push dword ss:[ebp + 0xe0<224,-32>]
   ff 75 18 ?? push dword ss:[ebp + 0x18<24>]
   ff 75 14 ?? push dword ss:[ebp + 0x14<20>]
   ff 75 10 ?? push dword ss:[ebp + 0x10<16>]
   56 ?? push esi
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   e8 4b fc ff ff ?? call function 0x00402daf
  
  L61: 8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   83 c4 1c ?? add esp, 0x1c<28>
  
  L62: ff 45 f0 ?? inc dword ss:[ebp + 0xf0<240,-16>]
   83 c7 14 ?? add edi, 0x14<20>
   e9 5d ff ff ff ?? jmp basic block L50
  
  L63: 8b 7d 18 ?? mov edi, dword ss:[ebp + 0x18<24>]
  
  L64: 80 7d 1c 00 ?? cmp byte ss:[ebp + 0x1c<28>], 0
   74 0a ?? je basic block L67
  
  L65: 6a 01 ?? push 1
   56 ?? push esi
   e8 0c f2 ff ff ?? call function 0x00402392
  
  L66: 59 ?? pop ecx
   59 ?? pop ecx
  
  L67: 80 7d ff 00 ?? cmp byte ss:[ebp + 0xff<255,-1>], 0
   0f 85 ae 00 00 00 ?? jne basic block L87
  
  L68: 8b 07 ?? mov eax, dword ds:[edi]
   25 ff ff ff 1f ?? and eax, 0x1fffffff
   3d 21 05 93 19 ?? cmp eax, 0x19930521
   0f 82 9c 00 00 00 ?? jb basic block L87
  
  L69: 8b 7f 1c ?? mov edi, dword ds:[edi + 0x1c<28>]
   85 ff ?? test edi, edi
   0f 84 91 00 00 00 ?? je basic block L87
  
  L70: 56 ?? push esi
   e8 8c f5 ff ff ?? call function 0x00402741
  
  L71: 59 ?? pop ecx
   84 c0 ?? test al, al
   0f 85 82 00 00 00 ?? jne basic block L87
  
  L72: e8 b6 04 00 00 ?? call function 0x00403679
  
  L73: e8 b1 04 00 00 ?? call function 0x00403679
  
  L74: e8 ac 04 00 00 ?? call function 0x00403679
  
  L75: 89 b0 88 00 00 00 ?? mov dword ds:[eax + 0x00000088<136>], esi
   e8 a1 04 00 00 ?? call function 0x00403679
  
  L76: 83 7d 24 00 ?? cmp dword ss:[ebp + 0x24<36>], 0
   8b 4d 10 ?? mov ecx, dword ss:[ebp + 0x10<16>]
   89 88 8c 00 00 00 ?? mov dword ds:[eax + 0x0000008c<140>], ecx
   56 ?? push esi
   75 05 ?? jne basic block L78
  
  L77: ff 75 0c ?? push dword ss:[ebp + 12]
   eb 03 ?? jmp basic block L79
  
  L78: ff 75 24 ?? push dword ss:[ebp + 0x24<36>]
  
  L79: e8 6b e1 ff ff ?? call function 0x00401360
  
  L80: 8b 75 18 ?? mov esi, dword ss:[ebp + 0x18<24>]
   6a ff ?? push 0xff<255,-1>
   56 ?? push esi
   ff 75 14 ?? push dword ss:[ebp + 0x14<20>]
   ff 75 0c ?? push dword ss:[ebp + 12]
   e8 66 f0 ff ff ?? call function 0x0040226c
  
  L81: 83 c4 10 ?? add esp, 0x10<16>
   ff 76 1c ?? push dword ds:[esi + 0x1c<28>]
   e8 ab f5 ff ff ?? call function 0x004027bc
  
  L82: 8b 5d 18 ?? mov ebx, dword ss:[ebp + 0x18<24>]
  
  L83: 83 7b 0c 00 ?? cmp dword ds:[ebx + 12], 0
   76 26 ?? jbe basic block L87
  
  L84: 80 7d 1c 00 ?? cmp byte ss:[ebp + 0x1c<28>], 0
   0f 85 29 fe ff ff ?? jne basic block L37
  
  L85: ff 75 24 ?? push dword ss:[ebp + 0x24<36>]
   ff 75 20 ?? push dword ss:[ebp + 0x20<32>]
   ff 75 f8 ?? push dword ss:[ebp + 0xf8<248,-8>]
   53 ?? push ebx
   ff 75 14 ?? push dword ss:[ebp + 0x14<20>]
   ff 75 10 ?? push dword ss:[ebp + 0x10<16>]
   ff 75 0c ?? push dword ss:[ebp + 12]
   56 ?? push esi
   e8 e0 fb ff ff ?? call function 0x00402e1d
  
  L86: 83 c4 20 ?? add esp, 0x20<32>
  
  L87: e8 34 04 00 00 ?? call function 0x00403679
  
  L88: 83 b8 94 00 00 00 00 ?? cmp dword ds:[eax + 0x00000094<148>], 0
   74 05 ?? je basic block L90
  
  L89: e8 c2 07 00 00 ?? call function 0x00403a15
  
  L90: 5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  