40cecf:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40ced3:	0f 84 f0 01 00 00    	je     0x40d0c9
40ced9:	ff 75 ec             	push   -0x14(%ebp)
40cedc:	ff 15 04 40 41 00    	call   *0x414004
40cee2:	85 c0                	test   %eax,%eax
40cee4:	0f 84 df 01 00 00    	je     0x40d0c9
40ceea:	ff 75 ec             	push   -0x14(%ebp)
40ceed:	8d 7b 18             	lea    0x18(%ebx),%edi
40cef0:	8b cf                	mov    %edi,%ecx
40cef2:	e8 aa 95 ff ff       	call   0x4064a1
40cef7:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
40cefb:	72 04                	jb     0x40cf01
40cefd:	8b 07                	mov    (%edi),%eax
40ceff:	eb 02                	jmp    0x40cf03
40cf01:	8b c7                	mov    %edi,%eax
40cf03:	6a 01                	push   $0x1
40cf05:	6a 03                	push   $0x3
40cf07:	50                   	push   %eax
40cf08:	ff 15 28 20 41 00    	call   *0x412028
40cf0e:	8b f0                	mov    %eax,%esi
40cf10:	85 f6                	test   %esi,%esi
40cf12:	75 1c                	jne    0x40cf30
40cf14:	ff 15 70 20 41 00    	call   *0x412070
40cf1a:	83 f8 50             	cmp    $0x50,%eax
40cf1d:	0f 84 ba 01 00 00    	je     0x40d0dd
40cf23:	ff 15 70 20 41 00    	call   *0x412070
40cf29:	6a 08                	push   $0x8
40cf2b:	e9 a5 01 00 00       	jmp    0x40d0d5
40cf30:	a1 30 20 41 00       	mov    0x412030,%eax
40cf35:	c6 45 c8 00          	movb   $0x0,-0x38(%ebp)
40cf39:	89 45 cc             	mov    %eax,-0x34(%ebp)
40cf3c:	89 75 d0             	mov    %esi,-0x30(%ebp)
40cf3f:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40cf43:	8b cb                	mov    %ebx,%ecx
40cf45:	ff 75 e8             	push   -0x18(%ebp)
40cf48:	56                   	push   %esi
40cf49:	e8 83 ef ff ff       	call   0x40bed1
40cf4e:	33 db                	xor    %ebx,%ebx
40cf50:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
40cf53:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40cf56:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40cf59:	8d 45 f0             	lea    -0x10(%ebp),%eax
40cf5c:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40cf60:	50                   	push   %eax
40cf61:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40cf64:	50                   	push   %eax
40cf65:	51                   	push   %ecx
40cf66:	6a 1b                	push   $0x1b
40cf68:	5a                   	pop    %edx
40cf69:	8b ce                	mov    %esi,%ecx
40cf6b:	e8 f5 b0 ff ff       	call   0x408065
40cf70:	85 c0                	test   %eax,%eax
40cf72:	74 0c                	je     0x40cf80
40cf74:	68 f8 26 40 00       	push   $0x4026f8
40cf79:	6a 0e                	push   $0xe
40cf7b:	e9 6d 01 00 00       	jmp    0x40d0ed
40cf80:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40cf83:	8b 41 0c             	mov    0xc(%ecx),%eax
40cf86:	85 c0                	test   %eax,%eax
40cf88:	0f 84 d3 00 00 00    	je     0x40d061
40cf8e:	83 f8 02             	cmp    $0x2,%eax
40cf91:	74 0e                	je     0x40cfa1
40cf93:	68 f8 26 40 00       	push   $0x4026f8
40cf98:	6a 0e                	push   $0xe
40cf9a:	6a 0d                	push   $0xd
40cf9c:	e9 4d 01 00 00       	jmp    0x40d0ee
40cfa1:	85 c0                	test   %eax,%eax
40cfa3:	0f 84 b8 00 00 00    	je     0x40d061
40cfa9:	83 39 00             	cmpl   $0x0,(%ecx)
40cfac:	0f 85 af 00 00 00    	jne    0x40d061
40cfb2:	8d 45 f0             	lea    -0x10(%ebp),%eax
40cfb5:	50                   	push   %eax
40cfb6:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40cfb9:	50                   	push   %eax
40cfba:	51                   	push   %ecx
40cfbb:	6a 1c                	push   $0x1c
40cfbd:	5a                   	pop    %edx
40cfbe:	8b ce                	mov    %esi,%ecx
40cfc0:	e8 a0 b0 ff ff       	call   0x408065
40cfc5:	85 c0                	test   %eax,%eax
40cfc7:	0f 85 94 00 00 00    	jne    0x40d061
40cfcd:	8b 45 f0             	mov    -0x10(%ebp),%eax
40cfd0:	39 58 0c             	cmp    %ebx,0xc(%eax)
40cfd3:	0f 85 88 00 00 00    	jne    0x40d061
40cfd9:	8d 45 f0             	lea    -0x10(%ebp),%eax
40cfdc:	50                   	push   %eax
40cfdd:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40cfe0:	50                   	push   %eax
40cfe1:	51                   	push   %ecx
40cfe2:	6a 1d                	push   $0x1d
40cfe4:	5a                   	pop    %edx
40cfe5:	8b ce                	mov    %esi,%ecx
40cfe7:	e8 79 b0 ff ff       	call   0x408065
40cfec:	85 c0                	test   %eax,%eax
40cfee:	75 71                	jne    0x40d061
40cff0:	8b 45 f0             	mov    -0x10(%ebp),%eax
40cff3:	39 58 0c             	cmp    %ebx,0xc(%eax)
40cff6:	75 69                	jne    0x40d061
40cff8:	8d 45 f0             	lea    -0x10(%ebp),%eax
40cffb:	50                   	push   %eax
40cffc:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40cfff:	50                   	push   %eax
40d000:	51                   	push   %ecx
40d001:	6a 1e                	push   $0x1e
40d003:	5a                   	pop    %edx
40d004:	8b ce                	mov    %esi,%ecx
40d006:	e8 5a b0 ff ff       	call   0x408065
40d00b:	85 c0                	test   %eax,%eax
40d00d:	75 52                	jne    0x40d061
40d00f:	8b 45 f0             	mov    -0x10(%ebp),%eax
40d012:	39 58 0c             	cmp    %ebx,0xc(%eax)
40d015:	75 4a                	jne    0x40d061
40d017:	8d 45 f0             	lea    -0x10(%ebp),%eax
40d01a:	50                   	push   %eax
40d01b:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40d01e:	50                   	push   %eax
40d01f:	51                   	push   %ecx
40d020:	6a 1f                	push   $0x1f
40d022:	5a                   	pop    %edx
40d023:	8b ce                	mov    %esi,%ecx
40d025:	e8 3b b0 ff ff       	call   0x408065
40d02a:	85 c0                	test   %eax,%eax
40d02c:	75 33                	jne    0x40d061
40d02e:	8b 45 f0             	mov    -0x10(%ebp),%eax
40d031:	39 58 0c             	cmp    %ebx,0xc(%eax)
40d034:	75 2b                	jne    0x40d061
40d036:	50                   	push   %eax
40d037:	53                   	push   %ebx
40d038:	89 58 08             	mov    %ebx,0x8(%eax)
40d03b:	6a 1f                	push   $0x1f
40d03d:	c7 00 10 46 40 00    	movl   $0x404610,(%eax)
40d043:	56                   	push   %esi
40d044:	c7 40 0c 04 00 00 00 	movl   $0x4,0xc(%eax)
40d04b:	ff 15 18 20 41 00    	call   *0x412018
40d051:	85 c0                	test   %eax,%eax
40d053:	75 0c                	jne    0x40d061
40d055:	68 cc 2d 40 00       	push   $0x402dcc
40d05a:	6a 0f                	push   $0xf
40d05c:	e9 86 00 00 00       	jmp    0x40d0e7
40d061:	53                   	push   %ebx
40d062:	56                   	push   %esi
40d063:	ff 15 08 20 41 00    	call   *0x412008
40d069:	85 c0                	test   %eax,%eax
40d06b:	75 18                	jne    0x40d085
40d06d:	ff 15 70 20 41 00    	call   *0x412070
40d073:	b9 e8 3a 00 00       	mov    $0x3ae8,%ecx
40d078:	3b c1                	cmp    %ecx,%eax
40d07a:	75 05                	jne    0x40d081
40d07c:	6a 0a                	push   $0xa
40d07e:	5a                   	pop    %edx
40d07f:	eb 57                	jmp    0x40d0d8
40d081:	6a 09                	push   $0x9
40d083:	eb 50                	jmp    0x40d0d5
40d085:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40d088:	e8 8a 8e ff ff       	call   0x405f17
40d08d:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40d090:	e8 ce 8d ff ff       	call   0x405e63
40d095:	ff 75 ec             	push   -0x14(%ebp)
40d098:	ff 15 0c 40 41 00    	call   *0x41400c
40d09e:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40d0a2:	8b 45 e8             	mov    -0x18(%ebp),%eax
40d0a5:	85 c0                	test   %eax,%eax
40d0a7:	74 10                	je     0x40d0b9
40d0a9:	8b 08                	mov    (%eax),%ecx
40d0ab:	50                   	push   %eax
40d0ac:	8b 71 08             	mov    0x8(%ecx),%esi
40d0af:	8b ce                	mov    %esi,%ecx
40d0b1:	ff 15 10 22 41 00    	call   *0x412210
40d0b7:	ff d6                	call   *%esi
40d0b9:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40d0bd:	ff 15 44 20 41 00    	call   *0x412044
40d0c3:	e8 54 15 00 00       	call   0x40e61c
40d0c8:	c3                   	ret
40d0c9:	6a 07                	push   $0x7
40d0cb:	5a                   	pop    %edx
40d0cc:	b9 57 00 07 80       	mov    $0x80070057,%ecx
40d0d1:	eb 05                	jmp    0x40d0d8
40d0d3:	6a 06                	push   $0x6
40d0d5:	5a                   	pop    %edx
40d0d6:	8b c8                	mov    %eax,%ecx
40d0d8:	e8 06 a5 ff ff       	call   0x4075e3
40d0dd:	8b cf                	mov    %edi,%ecx
40d0df:	e8 f7 93 ff ff       	call   0x4064db
40d0e4:	50                   	push   %eax
40d0e5:	6a 26                	push   $0x26
40d0e7:	ff 15 70 20 41 00    	call   *0x412070
40d0ed:	50                   	push   %eax
40d0ee:	e8 22 a5 ff ff       	call   0x407615
40d0f3:	cc                   	int3
40d0f4:	8b ff                	mov    %edi,%edi
40d0f6:	55                   	push   %ebp
40d0f7:	8b ec                	mov    %esp,%ebp
40d0f9:	8b 45 0c             	mov    0xc(%ebp),%eax
40d0fc:	56                   	push   %esi
40d0fd:	33 f6                	xor    %esi,%esi
40d0ff:	85 c0                	test   %eax,%eax
40d101:	74 07                	je     0x40d10a
40d103:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40d108:	76 05                	jbe    0x40d10f
40d10a:	be 57 00 07 80       	mov    $0x80070057,%esi
40d10f:	85 f6                	test   %esi,%esi
40d111:	78 37                	js     0x40d14a
40d113:	53                   	push   %ebx
40d114:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d117:	33 f6                	xor    %esi,%esi
40d119:	57                   	push   %edi
40d11a:	8d 78 ff             	lea    -0x1(%eax),%edi
40d11d:	8d 45 14             	lea    0x14(%ebp),%eax
40d120:	50                   	push   %eax
40d121:	ff 75 10             	push   0x10(%ebp)
40d124:	57                   	push   %edi
40d125:	53                   	push   %ebx
40d126:	ff 15 9c 21 41 00    	call   *0x41219c
40d12c:	83 c4 10             	add    $0x10,%esp
40d12f:	85 c0                	test   %eax,%eax
40d131:	78 08                	js     0x40d13b
40d133:	3b c7                	cmp    %edi,%eax
40d135:	77 04                	ja     0x40d13b
40d137:	75 0d                	jne    0x40d146
40d139:	eb 05                	jmp    0x40d140
40d13b:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40d140:	33 c0                	xor    %eax,%eax
40d142:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
40d146:	5f                   	pop    %edi
40d147:	5b                   	pop    %ebx
40d148:	eb 0c                	jmp    0x40d156
40d14a:	85 c0                	test   %eax,%eax
40d14c:	74 08                	je     0x40d156
40d14e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d151:	33 c0                	xor    %eax,%eax
40d153:	66 89 01             	mov    %ax,(%ecx)
40d156:	8b c6                	mov    %esi,%eax
40d158:	5e                   	pop    %esi
40d159:	5d                   	pop    %ebp
40d15a:	c3                   	ret
40d15b:	cc                   	int3
40d15c:	cc                   	int3
40d15d:	cc                   	int3
40d15e:	cc                   	int3
40d15f:	cc                   	int3
40d160:	6a 31                	push   $0x31
40d162:	e8 d5 93 ff ff       	call   0x40653c
40d167:	c3                   	ret
40d168:	cc                   	int3
40d169:	cc                   	int3
40d16a:	cc                   	int3
40d16b:	cc                   	int3
40d16c:	cc                   	int3
40d16d:	cc                   	int3
40d16e:	cc                   	int3
40d16f:	cc                   	int3
40d170:	8b ff                	mov    %edi,%edi
40d172:	55                   	push   %ebp
40d173:	8b ec                	mov    %esp,%ebp
40d175:	51                   	push   %ecx
40d176:	56                   	push   %esi
40d177:	8b f1                	mov    %ecx,%esi
40d179:	6a 01                	push   $0x1
40d17b:	6a 01                	push   $0x1
40d17d:	8b 4e 08             	mov    0x8(%esi),%ecx
40d180:	e8 3c 9a ff ff       	call   0x406bc1
40d185:	8b 4e 08             	mov    0x8(%esi),%ecx
40d188:	68 54 11 41 00       	push   $0x411154
40d18d:	e8 fe 98 ff ff       	call   0x406a90
40d192:	8b 4e 08             	mov    0x8(%esi),%ecx
40d195:	8d 45 ff             	lea    -0x1(%ebp),%eax
40d198:	50                   	push   %eax
40d199:	6a 00                	push   $0x0
40d19b:	68 64 46 40 00       	push   $0x404664
40d1a0:	68 58 46 40 00       	push   $0x404658
40d1a5:	e8 01 98 ff ff       	call   0x4069ab
40d1aa:	88 46 18             	mov    %al,0x18(%esi)
40d1ad:	5e                   	pop    %esi
40d1ae:	c9                   	leave
40d1af:	c3                   	ret
40d1b0:	6a 48                	push   $0x48
40d1b2:	b8 ed f4 40 00       	mov    $0x40f4ed,%eax
40d1b7:	e8 92 14 00 00       	call   0x40e64e
40d1bc:	8b f9                	mov    %ecx,%edi
40d1be:	33 f6                	xor    %esi,%esi
40d1c0:	89 75 dc             	mov    %esi,-0x24(%ebp)
40d1c3:	89 75 e0             	mov    %esi,-0x20(%ebp)
40d1c6:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40d1c9:	89 75 fc             	mov    %esi,-0x4(%ebp)
40d1cc:	89 75 b8             	mov    %esi,-0x48(%ebp)
40d1cf:	89 75 bc             	mov    %esi,-0x44(%ebp)
40d1d2:	89 75 c0             	mov    %esi,-0x40(%ebp)
40d1d5:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40d1d8:	89 75 c8             	mov    %esi,-0x38(%ebp)
40d1db:	89 75 cc             	mov    %esi,-0x34(%ebp)
40d1de:	56                   	push   %esi
40d1df:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40d1e3:	ff 15 b0 20 41 00    	call   *0x4120b0
40d1e9:	56                   	push   %esi
40d1ea:	6a 36                	push   $0x36
40d1ec:	8d 55 dc             	lea    -0x24(%ebp),%edx
40d1ef:	8b c8                	mov    %eax,%ecx
40d1f1:	e8 b3 06 00 00       	call   0x40d8a9
40d1f6:	56                   	push   %esi
40d1f7:	ff 15 b0 20 41 00    	call   *0x4120b0
40d1fd:	56                   	push   %esi
40d1fe:	6a 37                	push   $0x37
40d200:	8d 55 b8             	lea    -0x48(%ebp),%edx
40d203:	8b c8                	mov    %eax,%ecx
40d205:	e8 9f 06 00 00       	call   0x40d8a9
40d20a:	56                   	push   %esi
40d20b:	ff 15 b0 20 41 00    	call   *0x4120b0
40d211:	56                   	push   %esi
40d212:	6a 38                	push   $0x38
40d214:	8d 55 c4             	lea    -0x3c(%ebp),%edx
40d217:	8b c8                	mov    %eax,%ecx
40d219:	e8 8b 06 00 00       	call   0x40d8a9
40d21e:	8b de                	mov    %esi,%ebx
40d220:	89 75 d4             	mov    %esi,-0x2c(%ebp)
40d223:	8b ce                	mov    %esi,%ecx
40d225:	89 5d d0             	mov    %ebx,-0x30(%ebp)
40d228:	89 4d d8             	mov    %ecx,-0x28(%ebp)
40d22b:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40d22f:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40d232:	8b 75 dc             	mov    -0x24(%ebp),%esi
40d235:	2b c6                	sub    %esi,%eax
40d237:	d1 f8                	sar    $1,%eax
40d239:	83 c0 20             	add    $0x20,%eax
40d23c:	74 1a                	je     0x40d258
40d23e:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40d243:	0f 87 a8 01 00 00    	ja     0x40d3f1
40d249:	50                   	push   %eax
40d24a:	8d 4d d0             	lea    -0x30(%ebp),%ecx
40d24d:	e8 a0 a7 ff ff       	call   0x4079f2
40d252:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40d255:	8b 5d d0             	mov    -0x30(%ebp),%ebx
40d258:	8b 45 c4             	mov    -0x3c(%ebp),%eax
40d25b:	2b cb                	sub    %ebx,%ecx
40d25d:	d1 f9                	sar    $1,%ecx
40d25f:	0f b7 00             	movzwl (%eax),%eax
40d262:	50                   	push   %eax
40d263:	8b 45 b8             	mov    -0x48(%ebp),%eax
40d266:	0f b7 00             	movzwl (%eax),%eax
40d269:	50                   	push   %eax
40d26a:	56                   	push   %esi
40d26b:	51                   	push   %ecx
40d26c:	53                   	push   %ebx
40d26d:	e8 82 fe ff ff       	call   0x40d0f4
40d272:	33 f6                	xor    %esi,%esi
40d274:	83 c4 14             	add    $0x14,%esp
40d277:	89 75 ac             	mov    %esi,-0x54(%ebp)
40d27a:	89 75 b0             	mov    %esi,-0x50(%ebp)
40d27d:	89 75 b4             	mov    %esi,-0x4c(%ebp)
40d280:	6a 40                	push   $0x40
40d282:	8d 4d ac             	lea    -0x54(%ebp),%ecx