404f93:	83 ec 04             	sub    $0x4,%esp
404f96:	53                   	push   %ebx
404f97:	51                   	push   %ecx
404f98:	8b 45 0c             	mov    0xc(%ebp),%eax
404f9b:	83 c0 0c             	add    $0xc,%eax
404f9e:	89 45 fc             	mov    %eax,-0x4(%ebp)
404fa1:	8b 45 08             	mov    0x8(%ebp),%eax
404fa4:	55                   	push   %ebp
404fa5:	ff 75 10             	push   0x10(%ebp)
404fa8:	8b 4d 10             	mov    0x10(%ebp),%ecx
404fab:	8b 6d fc             	mov    -0x4(%ebp),%ebp
404fae:	e8 1d 0a 00 00       	call   0x4059d0
404fb3:	56                   	push   %esi
404fb4:	57                   	push   %edi
404fb5:	ff d0                	call   *%eax
404fb7:	5f                   	pop    %edi
404fb8:	5e                   	pop    %esi
404fb9:	8b dd                	mov    %ebp,%ebx
404fbb:	5d                   	pop    %ebp
404fbc:	8b 4d 10             	mov    0x10(%ebp),%ecx
404fbf:	55                   	push   %ebp
404fc0:	8b eb                	mov    %ebx,%ebp
404fc2:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
404fc8:	75 05                	jne    0x404fcf
404fca:	b9 02 00 00 00       	mov    $0x2,%ecx
404fcf:	51                   	push   %ecx
404fd0:	e8 fb 09 00 00       	call   0x4059d0
404fd5:	5d                   	pop    %ebp
404fd6:	59                   	pop    %ecx
404fd7:	5b                   	pop    %ebx
404fd8:	c9                   	leave
404fd9:	c2 0c 00             	ret    $0xc
404fdc:	55                   	push   %ebp
404fdd:	8b ec                	mov    %esp,%ebp
404fdf:	a1 18 f1 40 00       	mov    0x40f118,%eax
404fe4:	3d 72 31 40 00       	cmp    $0x403172,%eax
404fe9:	74 1f                	je     0x40500a
404feb:	64 8b 0d 18 00 00 00 	mov    %fs:0x18,%ecx
404ff2:	8b 45 08             	mov    0x8(%ebp),%eax
404ff5:	8b 80 c4 00 00 00    	mov    0xc4(%eax),%eax
404ffb:	3b 41 08             	cmp    0x8(%ecx),%eax
404ffe:	72 05                	jb     0x405005
405000:	3b 41 04             	cmp    0x4(%ecx),%eax
405003:	76 05                	jbe    0x40500a
405005:	6a 0d                	push   $0xd
405007:	59                   	pop    %ecx
405008:	cd 29                	int    $0x29
40500a:	5d                   	pop    %ebp
40500b:	c3                   	ret
40500c:	cc                   	int3
40500d:	cc                   	int3
40500e:	cc                   	int3
40500f:	cc                   	int3
405010:	53                   	push   %ebx
405011:	56                   	push   %esi
405012:	57                   	push   %edi
405013:	8b 54 24 10          	mov    0x10(%esp),%edx
405017:	8b 44 24 14          	mov    0x14(%esp),%eax
40501b:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40501f:	55                   	push   %ebp
405020:	52                   	push   %edx
405021:	50                   	push   %eax
405022:	51                   	push   %ecx
405023:	51                   	push   %ecx
405024:	68 b0 50 40 00       	push   $0x4050b0
405029:	64 ff 35 00 00 00 00 	push   %fs:0x0
405030:	a1 14 60 41 00       	mov    0x416014,%eax
405035:	33 c4                	xor    %esp,%eax
405037:	89 44 24 08          	mov    %eax,0x8(%esp)
40503b:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
405042:	8b 44 24 30          	mov    0x30(%esp),%eax
405046:	8b 58 08             	mov    0x8(%eax),%ebx
405049:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
40504d:	33 19                	xor    (%ecx),%ebx
40504f:	8b 70 0c             	mov    0xc(%eax),%esi
405052:	83 fe fe             	cmp    $0xfffffffe,%esi
405055:	0f 84 46 00 00 00    	je     0x4050a1
40505b:	8b 54 24 34          	mov    0x34(%esp),%edx
40505f:	83 fa fe             	cmp    $0xfffffffe,%edx
405062:	74 08                	je     0x40506c
405064:	3b f2                	cmp    %edx,%esi
405066:	0f 86 35 00 00 00    	jbe    0x4050a1
40506c:	8d 34 76             	lea    (%esi,%esi,2),%esi
40506f:	8d 5c b3 10          	lea    0x10(%ebx,%esi,4),%ebx
405073:	8b 0b                	mov    (%ebx),%ecx
405075:	89 48 0c             	mov    %ecx,0xc(%eax)
405078:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
40507c:	0f 85 c0 ff ff ff    	jne    0x405042
405082:	68 01 01 00 00       	push   $0x101
405087:	8b 43 08             	mov    0x8(%ebx),%eax
40508a:	e8 51 09 00 00       	call   0x4059e0
40508f:	b9 01 00 00 00       	mov    $0x1,%ecx
405094:	8b 43 08             	mov    0x8(%ebx),%eax
405097:	e8 64 09 00 00       	call   0x405a00
40509c:	e9 a1 ff ff ff       	jmp    0x405042
4050a1:	64 8f 05 00 00 00 00 	pop    %fs:0x0
4050a8:	83 c4 18             	add    $0x18,%esp
4050ab:	5f                   	pop    %edi
4050ac:	5e                   	pop    %esi
4050ad:	5b                   	pop    %ebx
4050ae:	c3                   	ret
4050af:	cc                   	int3
4050b0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
4050b4:	f7 41 04 06 00 00 00 	testl  $0x6,0x4(%ecx)
4050bb:	b8 01 00 00 00       	mov    $0x1,%eax
4050c0:	74 33                	je     0x4050f5
4050c2:	8b 44 24 08          	mov    0x8(%esp),%eax
4050c6:	8b 48 08             	mov    0x8(%eax),%ecx
4050c9:	33 c8                	xor    %eax,%ecx
4050cb:	e8 65 e5 ff ff       	call   0x403635
4050d0:	55                   	push   %ebp
4050d1:	8b 68 18             	mov    0x18(%eax),%ebp
4050d4:	ff 70 0c             	push   0xc(%eax)
4050d7:	ff 70 10             	push   0x10(%eax)
4050da:	ff 70 14             	push   0x14(%eax)
4050dd:	e8 2e ff ff ff       	call   0x405010
4050e2:	83 c4 0c             	add    $0xc,%esp
4050e5:	5d                   	pop    %ebp
4050e6:	8b 44 24 08          	mov    0x8(%esp),%eax
4050ea:	8b 54 24 10          	mov    0x10(%esp),%edx
4050ee:	89 02                	mov    %eax,(%edx)
4050f0:	b8 03 00 00 00       	mov    $0x3,%eax
4050f5:	c3                   	ret
4050f6:	cc                   	int3
4050f7:	cc                   	int3
4050f8:	cc                   	int3
4050f9:	cc                   	int3
4050fa:	cc                   	int3
4050fb:	cc                   	int3
4050fc:	cc                   	int3
4050fd:	cc                   	int3
4050fe:	cc                   	int3
4050ff:	cc                   	int3
405100:	55                   	push   %ebp
405101:	56                   	push   %esi
405102:	57                   	push   %edi
405103:	53                   	push   %ebx
405104:	8b ea                	mov    %edx,%ebp
405106:	33 c0                	xor    %eax,%eax
405108:	33 db                	xor    %ebx,%ebx
40510a:	33 d2                	xor    %edx,%edx
40510c:	33 f6                	xor    %esi,%esi
40510e:	33 ff                	xor    %edi,%edi
405110:	ff d1                	call   *%ecx
405112:	5b                   	pop    %ebx
405113:	5f                   	pop    %edi
405114:	5e                   	pop    %esi
405115:	5d                   	pop    %ebp
405116:	c3                   	ret
405117:	cc                   	int3
405118:	cc                   	int3
405119:	cc                   	int3
40511a:	cc                   	int3
40511b:	cc                   	int3
40511c:	cc                   	int3
40511d:	cc                   	int3
40511e:	cc                   	int3
40511f:	cc                   	int3
405120:	8b ea                	mov    %edx,%ebp
405122:	8b f1                	mov    %ecx,%esi
405124:	8b c1                	mov    %ecx,%eax
405126:	6a 01                	push   $0x1
405128:	e8 b3 08 00 00       	call   0x4059e0
40512d:	33 c0                	xor    %eax,%eax
40512f:	33 db                	xor    %ebx,%ebx
405131:	33 c9                	xor    %ecx,%ecx
405133:	33 d2                	xor    %edx,%edx
405135:	33 ff                	xor    %edi,%edi
405137:	ff e6                	jmp    *%esi
405139:	cc                   	int3
40513a:	cc                   	int3
40513b:	cc                   	int3
40513c:	cc                   	int3
40513d:	cc                   	int3
40513e:	cc                   	int3
40513f:	cc                   	int3
405140:	55                   	push   %ebp
405141:	8b ec                	mov    %esp,%ebp
405143:	53                   	push   %ebx
405144:	56                   	push   %esi
405145:	57                   	push   %edi
405146:	6a 00                	push   $0x0
405148:	52                   	push   %edx
405149:	68 55 51 40 00       	push   $0x405155
40514e:	51                   	push   %ecx
40514f:	ff 15 50 f0 40 00    	call   *0x40f050
405155:	5f                   	pop    %edi
405156:	5e                   	pop    %esi
405157:	5b                   	pop    %ebx
405158:	5d                   	pop    %ebp
405159:	c3                   	ret
40515a:	cc                   	int3
40515b:	cc                   	int3
40515c:	cc                   	int3
40515d:	cc                   	int3
40515e:	cc                   	int3
40515f:	cc                   	int3
405160:	55                   	push   %ebp
405161:	8b 6c 24 08          	mov    0x8(%esp),%ebp
405165:	52                   	push   %edx
405166:	51                   	push   %ecx
405167:	ff 74 24 14          	push   0x14(%esp)
40516b:	e8 a0 fe ff ff       	call   0x405010
405170:	83 c4 0c             	add    $0xc,%esp
405173:	5d                   	pop    %ebp
405174:	c2 08 00             	ret    $0x8
405177:	56                   	push   %esi
405178:	57                   	push   %edi
405179:	bf 10 6d 41 00       	mov    $0x416d10,%edi
40517e:	33 f6                	xor    %esi,%esi
405180:	6a 00                	push   $0x0
405182:	68 a0 0f 00 00       	push   $0xfa0
405187:	57                   	push   %edi
405188:	e8 2f 02 00 00       	call   0x4053bc
40518d:	83 c4 0c             	add    $0xc,%esp
405190:	85 c0                	test   %eax,%eax
405192:	74 15                	je     0x4051a9
405194:	ff 05 28 6d 41 00    	incl   0x416d28
40519a:	83 c6 18             	add    $0x18,%esi
40519d:	83 c7 18             	add    $0x18,%edi
4051a0:	83 fe 18             	cmp    $0x18,%esi
4051a3:	72 db                	jb     0x405180
4051a5:	b0 01                	mov    $0x1,%al
4051a7:	eb 07                	jmp    0x4051b0
4051a9:	e8 05 00 00 00       	call   0x4051b3
4051ae:	32 c0                	xor    %al,%al
4051b0:	5f                   	pop    %edi
4051b1:	5e                   	pop    %esi
4051b2:	c3                   	ret
4051b3:	56                   	push   %esi
4051b4:	8b 35 28 6d 41 00    	mov    0x416d28,%esi
4051ba:	85 f6                	test   %esi,%esi
4051bc:	74 20                	je     0x4051de
4051be:	6b c6 18             	imul   $0x18,%esi,%eax
4051c1:	57                   	push   %edi
4051c2:	8d b8 f8 6c 41 00    	lea    0x416cf8(%eax),%edi
4051c8:	57                   	push   %edi
4051c9:	ff 15 6c f0 40 00    	call   *0x40f06c
4051cf:	ff 0d 28 6d 41 00    	decl   0x416d28
4051d5:	83 ef 18             	sub    $0x18,%edi
4051d8:	83 ee 01             	sub    $0x1,%esi
4051db:	75 eb                	jne    0x4051c8
4051dd:	5f                   	pop    %edi
4051de:	b0 01                	mov    $0x1,%al
4051e0:	5e                   	pop    %esi
4051e1:	c3                   	ret
4051e2:	55                   	push   %ebp
4051e3:	8b ec                	mov    %esp,%ebp
4051e5:	51                   	push   %ecx
4051e6:	51                   	push   %ecx
4051e7:	8b 45 08             	mov    0x8(%ebp),%eax
4051ea:	57                   	push   %edi
4051eb:	8d 04 85 74 6d 41 00 	lea    0x416d74(,%eax,4),%eax
4051f2:	89 45 f8             	mov    %eax,-0x8(%ebp)
4051f5:	8b 00                	mov    (%eax),%eax
4051f7:	90                   	nop
4051f8:	83 cf ff             	or     $0xffffffff,%edi
4051fb:	3b c7                	cmp    %edi,%eax
4051fd:	75 04                	jne    0x405203
4051ff:	33 c0                	xor    %eax,%eax
405201:	eb 56                	jmp    0x405259
405203:	85 c0                	test   %eax,%eax
405205:	75 52                	jne    0x405259
405207:	53                   	push   %ebx
405208:	8b 5d 10             	mov    0x10(%ebp),%ebx
40520b:	56                   	push   %esi
40520c:	eb 3d                	jmp    0x40524b
40520e:	8b 0b                	mov    (%ebx),%ecx
405210:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405213:	8d 04 8d 68 6d 41 00 	lea    0x416d68(,%ecx,4),%eax
40521a:	8b 30                	mov    (%eax),%esi
40521c:	90                   	nop
40521d:	85 f6                	test   %esi,%esi
40521f:	74 06                	je     0x405227
405221:	3b f7                	cmp    %edi,%esi
405223:	75 46                	jne    0x40526b
405225:	eb 21                	jmp    0x405248
405227:	ff 34 8d ac fb 40 00 	push   0x40fbac(,%ecx,4)
40522e:	e8 4f 00 00 00       	call   0x405282
405233:	8b 55 fc             	mov    -0x4(%ebp),%edx
405236:	8b f0                	mov    %eax,%esi
405238:	59                   	pop    %ecx
405239:	8d 0c 95 68 6d 41 00 	lea    0x416d68(,%edx,4),%ecx
405240:	85 f6                	test   %esi,%esi
405242:	75 18                	jne    0x40525c
405244:	8b c7                	mov    %edi,%eax
405246:	87 01                	xchg   %eax,(%ecx)
405248:	83 c3 04             	add    $0x4,%ebx
40524b:	3b 5d 14             	cmp    0x14(%ebp),%ebx
40524e:	75 be                	jne    0x40520e
405250:	8b 55 f8             	mov    -0x8(%ebp),%edx
405253:	87 3a                	xchg   %edi,(%edx)
405255:	33 c0                	xor    %eax,%eax
405257:	5e                   	pop    %esi
405258:	5b                   	pop    %ebx
405259:	5f                   	pop    %edi
40525a:	c9                   	leave
40525b:	c3                   	ret
40525c:	8b c6                	mov    %esi,%eax
40525e:	87 01                	xchg   %eax,(%ecx)
405260:	85 c0                	test   %eax,%eax
405262:	74 07                	je     0x40526b
405264:	56                   	push   %esi
405265:	ff 15 84 f0 40 00    	call   *0x40f084
40526b:	ff 75 0c             	push   0xc(%ebp)
40526e:	56                   	push   %esi
40526f:	ff 15 88 f0 40 00    	call   *0x40f088
405275:	85 c0                	test   %eax,%eax
405277:	74 d7                	je     0x405250
405279:	8b 55 f8             	mov    -0x8(%ebp),%edx
40527c:	8b c8                	mov    %eax,%ecx
40527e:	87 0a                	xchg   %ecx,(%edx)
405280:	eb d5                	jmp    0x405257
405282:	55                   	push   %ebp
405283:	8b ec                	mov    %esp,%ebp
405285:	68 00 08 00 00       	push   $0x800
40528a:	6a 00                	push   $0x0
40528c:	ff 75 08             	push   0x8(%ebp)
40528f:	ff 15 8c f0 40 00    	call   *0x40f08c
405295:	85 c0                	test   %eax,%eax
405297:	75 32                	jne    0x4052cb
405299:	ff 15 58 f0 40 00    	call   *0x40f058
40529f:	83 f8 57             	cmp    $0x57,%eax
4052a2:	75 25                	jne    0x4052c9
4052a4:	6a 07                	push   $0x7
4052a6:	68 44 fc 40 00       	push   $0x40fc44
4052ab:	ff 75 08             	push   0x8(%ebp)
4052ae:	e8 75 1e 00 00       	call   0x407128
4052b3:	83 c4 0c             	add    $0xc,%esp
4052b6:	85 c0                	test   %eax,%eax
4052b8:	74 0f                	je     0x4052c9
4052ba:	6a 00                	push   $0x0
4052bc:	6a 00                	push   $0x0
4052be:	ff 75 08             	push   0x8(%ebp)
4052c1:	ff 15 8c f0 40 00    	call   *0x40f08c
4052c7:	5d                   	pop    %ebp
4052c8:	c3                   	ret
4052c9:	33 c0                	xor    %eax,%eax
4052cb:	5d                   	pop    %ebp
4052cc:	c3                   	ret
4052cd:	55                   	push   %ebp
4052ce:	8b ec                	mov    %esp,%ebp
4052d0:	56                   	push   %esi
4052d1:	68 5c fc 40 00       	push   $0x40fc5c
4052d6:	68 54 fc 40 00       	push   $0x40fc54
4052db:	68 5c fc 40 00       	push   $0x40fc5c
4052e0:	6a 00                	push   $0x0
4052e2:	e8 fb fe ff ff       	call   0x4051e2
4052e7:	8b f0                	mov    %eax,%esi
4052e9:	83 c4 10             	add    $0x10,%esp