403ffb:	76 12                	jbe    0x40400f
403ffd:	89 45 08             	mov    %eax,0x8(%ebp)
404000:	66 8b 1a             	mov    (%edx),%bx
404003:	66 89 19             	mov    %bx,(%ecx)
404006:	41                   	inc    %ecx
404007:	41                   	inc    %ecx
404008:	42                   	inc    %edx
404009:	42                   	inc    %edx
40400a:	ff 4d 08             	decl   0x8(%ebp)
40400d:	75 f1                	jne    0x404000
40400f:	01 45 fc             	add    %eax,-0x4(%ebp)
404012:	29 45 0c             	sub    %eax,0xc(%ebp)
404015:	50                   	push   %eax
404016:	8b cf                	mov    %edi,%ecx
404018:	8d 34 46             	lea    (%esi,%eax,2),%esi
40401b:	e8 4d 06 00 00       	call   0x40466d
404020:	eb 18                	jmp    0x40403a
404022:	8b 07                	mov    (%edi),%eax
404024:	8b cf                	mov    %edi,%ecx
404026:	ff 50 14             	call   *0x14(%eax)
404029:	66 3d ff ff          	cmp    $0xffff,%ax
40402d:	74 11                	je     0x404040
40402f:	66 89 06             	mov    %ax,(%esi)
404032:	46                   	inc    %esi
404033:	46                   	inc    %esi
404034:	ff 45 fc             	incl   -0x4(%ebp)
404037:	ff 4d 0c             	decl   0xc(%ebp)
40403a:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40403e:	7f 99                	jg     0x403fd9
404040:	8b 45 fc             	mov    -0x4(%ebp),%eax
404043:	5f                   	pop    %edi
404044:	5e                   	pop    %esi
404045:	5b                   	pop    %ebx
404046:	c9                   	leave
404047:	c2 08 00             	ret    $0x8
40404a:	55                   	push   %ebp
40404b:	8b ec                	mov    %esp,%ebp
40404d:	51                   	push   %ecx
40404e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
404052:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
404056:	53                   	push   %ebx
404057:	56                   	push   %esi
404058:	57                   	push   %edi
404059:	8b f9                	mov    %ecx,%edi
40405b:	7e 6b                	jle    0x4040c8
40405d:	8b 75 08             	mov    0x8(%ebp),%esi
404060:	8b 47 20             	mov    0x20(%edi),%eax
404063:	8b 08                	mov    (%eax),%ecx
404065:	85 c9                	test   %ecx,%ecx
404067:	74 40                	je     0x4040a9
404069:	8b 47 30             	mov    0x30(%edi),%eax
40406c:	8b 00                	mov    (%eax),%eax
40406e:	d1 e0                	shl    $1,%eax
404070:	d1 f8                	sar    $1,%eax
404072:	85 c0                	test   %eax,%eax
404074:	7e 33                	jle    0x4040a9
404076:	39 45 0c             	cmp    %eax,0xc(%ebp)
404079:	7d 03                	jge    0x40407e
40407b:	8b 45 0c             	mov    0xc(%ebp),%eax
40407e:	85 c0                	test   %eax,%eax
404080:	8b d6                	mov    %esi,%edx
404082:	76 12                	jbe    0x404096
404084:	89 45 08             	mov    %eax,0x8(%ebp)
404087:	66 8b 1a             	mov    (%edx),%bx
40408a:	66 89 19             	mov    %bx,(%ecx)
40408d:	41                   	inc    %ecx
40408e:	41                   	inc    %ecx
40408f:	42                   	inc    %edx
404090:	42                   	inc    %edx
404091:	ff 4d 08             	decl   0x8(%ebp)
404094:	75 f1                	jne    0x404087
404096:	01 45 fc             	add    %eax,-0x4(%ebp)
404099:	29 45 0c             	sub    %eax,0xc(%ebp)
40409c:	50                   	push   %eax
40409d:	8b cf                	mov    %edi,%ecx
40409f:	8d 34 46             	lea    (%esi,%eax,2),%esi
4040a2:	e8 fb 05 00 00       	call   0x4046a2
4040a7:	eb 19                	jmp    0x4040c2
4040a9:	66 8b 06             	mov    (%esi),%ax
4040ac:	8b 17                	mov    (%edi),%edx
4040ae:	50                   	push   %eax
4040af:	8b cf                	mov    %edi,%ecx
4040b1:	ff 52 04             	call   *0x4(%edx)
4040b4:	66 3d ff ff          	cmp    $0xffff,%ax
4040b8:	74 0e                	je     0x4040c8
4040ba:	46                   	inc    %esi
4040bb:	46                   	inc    %esi
4040bc:	ff 45 fc             	incl   -0x4(%ebp)
4040bf:	ff 4d 0c             	decl   0xc(%ebp)
4040c2:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4040c6:	7f 98                	jg     0x404060
4040c8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4040cb:	5f                   	pop    %edi
4040cc:	5e                   	pop    %esi
4040cd:	5b                   	pop    %ebx
4040ce:	c9                   	leave
4040cf:	c2 08 00             	ret    $0x8
4040d2:	55                   	push   %ebp
4040d3:	8b ec                	mov    %esp,%ebp
4040d5:	83 ec 18             	sub    $0x18,%esp
4040d8:	56                   	push   %esi
4040d9:	57                   	push   %edi
4040da:	6a ff                	push   $0xffffffff
4040dc:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4040df:	e8 76 f5 ff ff       	call   0x40365a
4040e4:	8b f0                	mov    %eax,%esi
4040e6:	8b 45 08             	mov    0x8(%ebp),%eax
4040e9:	6a 06                	push   $0x6
4040eb:	8b f8                	mov    %eax,%edi
4040ed:	59                   	pop    %ecx
4040ee:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4040f0:	5f                   	pop    %edi
4040f1:	5e                   	pop    %esi
4040f2:	c9                   	leave
4040f3:	c2 20 00             	ret    $0x20
4040f6:	33 c0                	xor    %eax,%eax
4040f8:	c3                   	ret
4040f9:	8b c1                	mov    %ecx,%eax
4040fb:	c7 00 98 d2 40 00    	movl   $0x40d298,(%eax)
404101:	c2 04 00             	ret    $0x4
404104:	b8 cb c6 40 00       	mov    $0x40c6cb,%eax
404109:	e8 32 1c 00 00       	call   0x405d40
40410e:	51                   	push   %ecx
40410f:	56                   	push   %esi
404110:	8b f1                	mov    %ecx,%esi
404112:	57                   	push   %edi
404113:	89 75 f0             	mov    %esi,-0x10(%ebp)
404116:	c7 06 98 d2 40 00    	movl   $0x40d298,(%esi)
40411c:	80 7e 48 00          	cmpb   $0x0,0x48(%esi)
404120:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
404127:	74 05                	je     0x40412e
404129:	e8 98 05 00 00       	call   0x4046c6
40412e:	8b 7e 44             	mov    0x44(%esi),%edi
404131:	85 ff                	test   %edi,%edi
404133:	74 10                	je     0x404145
404135:	6a 01                	push   $0x1
404137:	8b cf                	mov    %edi,%ecx
404139:	e8 a0 f4 ff ff       	call   0x4035de
40413e:	57                   	push   %edi
40413f:	e8 3d 0e 00 00       	call   0x404f81
404144:	59                   	pop    %ecx
404145:	8d 4e 4c             	lea    0x4c(%esi),%ecx
404148:	e8 5b ed ff ff       	call   0x402ea8
40414d:	8d 4e 34             	lea    0x34(%esi),%ecx
404150:	c7 06 d0 d2 40 00    	movl   $0x40d2d0,(%esi)
404156:	e8 4d ed ff ff       	call   0x402ea8
40415b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40415e:	5f                   	pop    %edi
40415f:	5e                   	pop    %esi
404160:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
404167:	c9                   	leave
404168:	c3                   	ret
404169:	55                   	push   %ebp
40416a:	8b ec                	mov    %esp,%ebp
40416c:	83 ec 10             	sub    $0x10,%esp
40416f:	53                   	push   %ebx
404170:	56                   	push   %esi
404171:	57                   	push   %edi
404172:	8b 7d 08             	mov    0x8(%ebp),%edi
404175:	66 81 ff ff ff       	cmp    $0xffff,%di
40417a:	8b f1                	mov    %ecx,%esi
40417c:	75 08                	jne    0x404186
40417e:	66 33 c0             	xor    %ax,%ax
404181:	e9 24 01 00 00       	jmp    0x4042aa
404186:	8b 46 20             	mov    0x20(%esi),%eax
404189:	33 db                	xor    %ebx,%ebx
40418b:	8b 00                	mov    (%eax),%eax
40418d:	3b c3                	cmp    %ebx,%eax
40418f:	74 1e                	je     0x4041af
404191:	8b 4e 30             	mov    0x30(%esi),%ecx
404194:	8b 09                	mov    (%ecx),%ecx
404196:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
404199:	3b c1                	cmp    %ecx,%eax
40419b:	73 12                	jae    0x4041af
40419d:	8b ce                	mov    %esi,%ecx
40419f:	e8 12 05 00 00       	call   0x4046b6
4041a4:	66 89 38             	mov    %di,(%eax)
4041a7:	66 8b c7             	mov    %di,%ax
4041aa:	e9 fb 00 00 00       	jmp    0x4042aa
4041af:	8b 46 50             	mov    0x50(%esi),%eax
4041b2:	3b c3                	cmp    %ebx,%eax
4041b4:	75 09                	jne    0x4041bf
4041b6:	66 0d ff ff          	or     $0xffff,%ax
4041ba:	e9 eb 00 00 00       	jmp    0x4042aa
4041bf:	39 5e 38             	cmp    %ebx,0x38(%esi)
4041c2:	75 14                	jne    0x4041d8
4041c4:	50                   	push   %eax
4041c5:	57                   	push   %edi
4041c6:	e8 be 28 00 00       	call   0x406a89
4041cb:	59                   	pop    %ecx
4041cc:	66 3d ff ff          	cmp    $0xffff,%ax
4041d0:	59                   	pop    %ecx
4041d1:	8b c7                	mov    %edi,%eax
4041d3:	e9 8a 00 00 00       	jmp    0x404262
4041d8:	ff 35 68 d2 40 00    	push   0x40d268
4041de:	8b 4e 44             	mov    0x44(%esi),%ecx
4041e1:	89 7d fc             	mov    %edi,-0x4(%ebp)
4041e4:	53                   	push   %ebx
4041e5:	e8 8d f3 ff ff       	call   0x403577
4041ea:	8b 4e 44             	mov    0x44(%esi),%ecx
4041ed:	53                   	push   %ebx
4041ee:	6a 08                	push   $0x8
4041f0:	e8 29 f3 ff ff       	call   0x40351e
4041f5:	8b 7e 44             	mov    0x44(%esi),%edi
4041f8:	8b cf                	mov    %edi,%ecx
4041fa:	e8 64 f5 ff ff       	call   0x403763
4041ff:	8b 5e 44             	mov    0x44(%esi),%ebx
404202:	8b 47 04             	mov    0x4(%edi),%eax
404205:	8b cb                	mov    %ebx,%ecx
404207:	89 45 f8             	mov    %eax,-0x8(%ebp)
40420a:	e8 54 f5 ff ff       	call   0x403763
40420f:	8b 45 f8             	mov    -0x8(%ebp),%eax
404212:	8b 4f 08             	mov    0x8(%edi),%ecx
404215:	8b 5b 04             	mov    0x4(%ebx),%ebx
404218:	03 c8                	add    %eax,%ecx
40421a:	f7 d8                	neg    %eax
40421c:	1b c0                	sbb    %eax,%eax
40421e:	8d 7d f0             	lea    -0x10(%ebp),%edi
404221:	23 c1                	and    %ecx,%eax
404223:	57                   	push   %edi
404224:	8b 4e 38             	mov    0x38(%esi),%ecx
404227:	50                   	push   %eax
404228:	8d 45 f4             	lea    -0xc(%ebp),%eax
40422b:	53                   	push   %ebx
40422c:	8b 11                	mov    (%ecx),%edx
40422e:	50                   	push   %eax
40422f:	8d 45 fe             	lea    -0x2(%ebp),%eax
404232:	50                   	push   %eax
404233:	8d 45 fc             	lea    -0x4(%ebp),%eax
404236:	50                   	push   %eax
404237:	8d 46 40             	lea    0x40(%esi),%eax
40423a:	50                   	push   %eax
40423b:	ff 52 14             	call   *0x14(%edx)
40423e:	83 e8 00             	sub    $0x0,%eax
404241:	74 2f                	je     0x404272
404243:	48                   	dec    %eax
404244:	74 20                	je     0x404266
404246:	48                   	dec    %eax
404247:	48                   	dec    %eax
404248:	0f 85 68 ff ff ff    	jne    0x4041b6
40424e:	ff 76 50             	push   0x50(%esi)
404251:	ff 75 fc             	push   -0x4(%ebp)
404254:	e8 30 28 00 00       	call   0x406a89
404259:	59                   	pop    %ecx
40425a:	66 3d ff ff          	cmp    $0xffff,%ax
40425e:	8b 45 08             	mov    0x8(%ebp),%eax
404261:	59                   	pop    %ecx
404262:	75 46                	jne    0x4042aa
404264:	eb 3f                	jmp    0x4042a5
404266:	8d 45 fc             	lea    -0x4(%ebp),%eax
404269:	39 45 f4             	cmp    %eax,-0xc(%ebp)
40426c:	0f 84 44 ff ff ff    	je     0x4041b6
404272:	8b 5e 44             	mov    0x44(%esi),%ebx
404275:	8b cb                	mov    %ebx,%ecx
404277:	e8 e7 f4 ff ff       	call   0x403763
40427c:	8b 7d f0             	mov    -0x10(%ebp),%edi
40427f:	2b 7b 04             	sub    0x4(%ebx),%edi
404282:	8b 5e 44             	mov    0x44(%esi),%ebx
404285:	8b cb                	mov    %ebx,%ecx
404287:	e8 d7 f4 ff ff       	call   0x403763
40428c:	ff 76 50             	push   0x50(%esi)
40428f:	8b 5b 04             	mov    0x4(%ebx),%ebx
404292:	6a 01                	push   $0x1
404294:	57                   	push   %edi
404295:	53                   	push   %ebx
404296:	e8 fa 1d 00 00       	call   0x406095
40429b:	83 c4 10             	add    $0x10,%esp
40429e:	3b c7                	cmp    %edi,%eax
4042a0:	8b 45 08             	mov    0x8(%ebp),%eax
4042a3:	74 05                	je     0x4042aa
4042a5:	b8 ff ff 00 00       	mov    $0xffff,%eax
4042aa:	5f                   	pop    %edi
4042ab:	5e                   	pop    %esi
4042ac:	5b                   	pop    %ebx
4042ad:	c9                   	leave
4042ae:	c2 04 00             	ret    $0x4
4042b1:	53                   	push   %ebx
4042b2:	56                   	push   %esi
4042b3:	8b f1                	mov    %ecx,%esi
4042b5:	57                   	push   %edi
4042b6:	8b 46 1c             	mov    0x1c(%esi),%eax
4042b9:	8b 00                	mov    (%eax),%eax
4042bb:	85 c0                	test   %eax,%eax
4042bd:	74 2d                	je     0x4042ec
4042bf:	8b 4e 0c             	mov    0xc(%esi),%ecx
4042c2:	39 01                	cmp    %eax,(%ecx)
4042c4:	73 26                	jae    0x4042ec
4042c6:	8b 7c 24 10          	mov    0x10(%esp),%edi
4042ca:	66 81 ff ff ff       	cmp    $0xffff,%di
4042cf:	74 06                	je     0x4042d7
4042d1:	66 39 78 fe          	cmp    %di,-0x2(%eax)
4042d5:	75 19                	jne    0x4042f0
4042d7:	8b ce                	mov    %esi,%ecx
4042d9:	e8 a3 03 00 00       	call   0x404681
4042de:	66 8b c7             	mov    %di,%ax
4042e1:	66 40                	inc    %ax
4042e3:	66 f7 d8             	neg    %ax
4042e6:	1b c0                	sbb    %eax,%eax
4042e8:	23 c7                	and    %edi,%eax
4042ea:	eb 76                	jmp    0x404362
4042ec:	8b 7c 24 10          	mov    0x10(%esp),%edi
4042f0:	8b 46 50             	mov    0x50(%esi),%eax
4042f3:	85 c0                	test   %eax,%eax
4042f5:	74 67                	je     0x40435e
4042f7:	66 81 ff ff ff       	cmp    $0xffff,%di
4042fc:	74 60                	je     0x40435e
4042fe:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
404302:	75 18                	jne    0x40431c
404304:	50                   	push   %eax
404305:	57                   	push   %edi
404306:	e8 a1 28 00 00       	call   0x406bac
40430b:	59                   	pop    %ecx
40430c:	66 3d ff ff          	cmp    $0xffff,%ax
404310:	59                   	pop    %ecx
404311:	8b c7                	mov    %edi,%eax
404313:	75 4d                	jne    0x404362
404315:	b8 ff ff 00 00       	mov    $0xffff,%eax
40431a:	eb 46                	jmp    0x404362
40431c:	8b 7e 44             	mov    0x44(%esi),%edi
40431f:	8b 5f 08             	mov    0x8(%edi),%ebx
404322:	85 db                	test   %ebx,%ebx
404324:	76 38                	jbe    0x40435e
404326:	8b cf                	mov    %edi,%ecx
404328:	e8 36 f4 ff ff       	call   0x403763
40432d:	8b 7f 04             	mov    0x4(%edi),%edi
404330:	53                   	push   %ebx
404331:	ff 76 50             	push   0x50(%esi)
404334:	57                   	push   %edi
404335:	e8 3e f6 ff ff       	call   0x403978
40433a:	83 c4 0c             	add    $0xc,%esp
40433d:	84 c0                	test   %al,%al
40433f:	74 1d                	je     0x40435e
404341:	ff 35 68 d2 40 00    	push   0x40d268
404347:	8b 4e 44             	mov    0x44(%esi),%ecx
40434a:	6a 00                	push   $0x0
40434c:	e8 26 f2 ff ff       	call   0x403577
404351:	8b 46 3c             	mov    0x3c(%esi),%eax
404354:	89 46 40             	mov    %eax,0x40(%esi)
404357:	66 8b 44 24 10       	mov    0x10(%esp),%ax
40435c:	eb 04                	jmp    0x404362
40435e:	66 0d ff ff          	or     $0xffff,%ax
404362:	5f                   	pop    %edi
404363:	5e                   	pop    %esi
404364:	5b                   	pop    %ebx
404365:	c2 04 00             	ret    $0x4
404368:	56                   	push   %esi
404369:	8b f1                	mov    %ecx,%esi
40436b:	8b 46 1c             	mov    0x1c(%esi),%eax
40436e:	8b 00                	mov    (%eax),%eax
404370:	85 c0                	test   %eax,%eax