40f98e:	8b 01                	mov    (%ecx),%eax
40f990:	89 46 20             	mov    %eax,0x20(%esi)
40f993:	85 c0                	test   %eax,%eax
40f995:	79 09                	jns    0x40f9a0
40f997:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
40f99b:	f7 d8                	neg    %eax
40f99d:	89 46 20             	mov    %eax,0x20(%esi)
40f9a0:	b0 01                	mov    $0x1,%al
40f9a2:	eb 38                	jmp    0x40f9dc
40f9a4:	89 5e 24             	mov    %ebx,0x24(%esi)
40f9a7:	eb 3b                	jmp    0x40f9e4
40f9a9:	80 7d ff 2a          	cmpb   $0x2a,-0x1(%ebp)
40f9ad:	74 05                	je     0x40f9b4
40f9af:	8d 46 24             	lea    0x24(%esi),%eax
40f9b2:	eb c7                	jmp    0x40f97b
40f9b4:	8b 4e 10             	mov    0x10(%esi),%ecx
40f9b7:	8d 41 04             	lea    0x4(%ecx),%eax
40f9ba:	89 46 10             	mov    %eax,0x10(%esi)
40f9bd:	8b 01                	mov    (%ecx),%eax
40f9bf:	89 46 24             	mov    %eax,0x24(%esi)
40f9c2:	85 c0                	test   %eax,%eax
40f9c4:	79 da                	jns    0x40f9a0
40f9c6:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
40f9ca:	eb d4                	jmp    0x40f9a0
40f9cc:	8b ce                	mov    %esi,%ecx
40f9ce:	e8 09 08 00 00       	call   0x4101dc
40f9d3:	eb 07                	jmp    0x40f9dc
40f9d5:	8b ce                	mov    %esi,%ecx
40f9d7:	e8 3c 0c 00 00       	call   0x410618
40f9dc:	84 c0                	test   %al,%al
40f9de:	0f 84 3e fe ff ff    	je     0x40f822
40f9e4:	8b 46 0c             	mov    0xc(%esi),%eax
40f9e7:	8a 10                	mov    (%eax),%dl
40f9e9:	8d 48 01             	lea    0x1(%eax),%ecx
40f9ec:	89 4e 0c             	mov    %ecx,0xc(%esi)
40f9ef:	8d 46 14             	lea    0x14(%esi),%eax
40f9f2:	88 55 ff             	mov    %dl,-0x1(%ebp)
40f9f5:	88 56 2d             	mov    %dl,0x2d(%esi)
40f9f8:	88 55 f0             	mov    %dl,-0x10(%ebp)
40f9fb:	84 d2                	test   %dl,%dl
40f9fd:	0f 85 5f fe ff ff    	jne    0x40f862
40fa03:	ff 86 50 04 00 00    	incl   0x450(%esi)
40fa09:	83 be 50 04 00 00 02 	cmpl   $0x2,0x450(%esi)
40fa10:	0f 85 2c fe ff ff    	jne    0x40f842
40fa16:	8b 46 14             	mov    0x14(%esi),%eax
40fa19:	e9 07 fe ff ff       	jmp    0x40f825
40fa1e:	8b 46 08             	mov    0x8(%esi),%eax
40fa21:	6a 16                	push   $0x16
40fa23:	5f                   	pop    %edi
40fa24:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40fa28:	89 78 18             	mov    %edi,0x18(%eax)
40fa2b:	ff 76 08             	push   0x8(%esi)
40fa2e:	53                   	push   %ebx
40fa2f:	53                   	push   %ebx
40fa30:	53                   	push   %ebx
40fa31:	53                   	push   %ebx
40fa32:	53                   	push   %ebx
40fa33:	e8 39 d9 ff ff       	call   0x40d371
40fa38:	8b 46 08             	mov    0x8(%esi),%eax
40fa3b:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40fa3f:	89 78 18             	mov    %edi,0x18(%eax)
40fa42:	ff 76 08             	push   0x8(%esi)
40fa45:	53                   	push   %ebx
40fa46:	53                   	push   %ebx
40fa47:	53                   	push   %ebx
40fa48:	53                   	push   %ebx
40fa49:	53                   	push   %ebx
40fa4a:	e8 22 d9 ff ff       	call   0x40d371
40fa4f:	83 c4 30             	add    $0x30,%esp
40fa52:	e9 cb fd ff ff       	jmp    0x40f822
40fa57:	8b 4e 08             	mov    0x8(%esi),%ecx
40fa5a:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40fa5e:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40fa65:	e9 a8 fd ff ff       	jmp    0x40f812
40fa6a:	8b ff                	mov    %edi,%edi
40fa6c:	93                   	xchg   %eax,%ebx
40fa6d:	f8                   	clc
40fa6e:	40                   	inc    %eax
40fa6f:	00 14 f9             	add    %dl,(%ecx,%edi,8)
40fa72:	40                   	inc    %eax
40fa73:	00 2c f9             	add    %ch,(%ecx,%edi,8)
40fa76:	40                   	inc    %eax
40fa77:	00 72 f9             	add    %dh,-0x7(%edx)
40fa7a:	40                   	inc    %eax
40fa7b:	00 a4 f9 40 00 a9 f9 	add    %ah,-0x656ffc0(%ecx,%edi,8)
40fa82:	40                   	inc    %eax
40fa83:	00 cc                	add    %cl,%ah
40fa85:	f9                   	stc
40fa86:	40                   	inc    %eax
40fa87:	00 d5                	add    %dl,%ch
40fa89:	f9                   	stc
40fa8a:	40                   	inc    %eax
40fa8b:	00 8b ff 55 8b ec    	add    %cl,-0x1374aa01(%ebx)
40fa91:	51                   	push   %ecx
40fa92:	51                   	push   %ecx
40fa93:	53                   	push   %ebx
40fa94:	56                   	push   %esi
40fa95:	8b f1                	mov    %ecx,%esi
40fa97:	57                   	push   %edi
40fa98:	ff 76 08             	push   0x8(%esi)
40fa9b:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40faa1:	e8 c8 1e 00 00       	call   0x41196e
40faa6:	84 c0                	test   %al,%al
40faa8:	74 27                	je     0x40fad1
40faaa:	8b 4e 0c             	mov    0xc(%esi),%ecx
40faad:	85 c9                	test   %ecx,%ecx
40faaf:	75 28                	jne    0x40fad9
40fab1:	8b 46 08             	mov    0x8(%esi),%eax
40fab4:	33 db                	xor    %ebx,%ebx
40fab6:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40faba:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40fac1:	ff 76 08             	push   0x8(%esi)
40fac4:	53                   	push   %ebx
40fac5:	53                   	push   %ebx
40fac6:	53                   	push   %ebx
40fac7:	53                   	push   %ebx
40fac8:	53                   	push   %ebx
40fac9:	e8 a3 d8 ff ff       	call   0x40d371
40face:	83 c4 18             	add    $0x18,%esp
40fad1:	83 c8 ff             	or     $0xffffffff,%eax
40fad4:	5f                   	pop    %edi
40fad5:	5e                   	pop    %esi
40fad6:	5b                   	pop    %ebx
40fad7:	c9                   	leave
40fad8:	c3                   	ret
40fad9:	8b 86 50 04 00 00    	mov    0x450(%esi),%eax
40fadf:	40                   	inc    %eax
40fae0:	89 86 50 04 00 00    	mov    %eax,0x450(%esi)
40fae6:	83 f8 02             	cmp    $0x2,%eax
40fae9:	0f 84 36 02 00 00    	je     0x40fd25
40faef:	33 db                	xor    %ebx,%ebx
40faf1:	89 5e 34             	mov    %ebx,0x34(%esi)
40faf4:	88 5e 18             	mov    %bl,0x18(%esi)
40faf7:	8a 11                	mov    (%ecx),%dl
40faf9:	41                   	inc    %ecx
40fafa:	88 55 ff             	mov    %dl,-0x1(%ebp)
40fafd:	89 4e 0c             	mov    %ecx,0xc(%esi)
40fb00:	88 56 2d             	mov    %dl,0x2d(%esi)
40fb03:	84 d2                	test   %dl,%dl
40fb05:	0f 84 07 02 00 00    	je     0x40fd12
40fb0b:	88 55 fb             	mov    %dl,-0x5(%ebp)
40fb0e:	39 5e 14             	cmp    %ebx,0x14(%esi)
40fb11:	0f 8c fb 01 00 00    	jl     0x40fd12
40fb17:	0f b6 46 18          	movzbl 0x18(%esi),%eax
40fb1b:	8b ce                	mov    %esi,%ecx
40fb1d:	50                   	push   %eax
40fb1e:	ff 75 fb             	push   -0x5(%ebp)
40fb21:	e8 b7 fa ff ff       	call   0x40f5dd
40fb26:	88 46 18             	mov    %al,0x18(%esi)
40fb29:	3c 08                	cmp    $0x8,%al
40fb2b:	0f 83 fc 01 00 00    	jae    0x40fd2d
40fb31:	0f b6 c0             	movzbl %al,%eax
40fb34:	83 f8 07             	cmp    $0x7,%eax
40fb37:	77 98                	ja     0x40fad1
40fb39:	ff 24 85 40 fd 40 00 	jmp    *0x40fd40(,%eax,4)
40fb40:	8b 7e 08             	mov    0x8(%esi),%edi
40fb43:	88 5e 38             	mov    %bl,0x38(%esi)
40fb46:	38 5f 14             	cmp    %bl,0x14(%edi)
40fb49:	75 07                	jne    0x40fb52
40fb4b:	8b cf                	mov    %edi,%ecx
40fb4d:	e8 6e 1d 00 00       	call   0x4118c0
40fb52:	8a 46 2d             	mov    0x2d(%esi),%al
40fb55:	88 45 ff             	mov    %al,-0x1(%ebp)
40fb58:	0f be c0             	movsbl %al,%eax
40fb5b:	68 00 80 00 00       	push   $0x8000
40fb60:	50                   	push   %eax
40fb61:	8b 47 0c             	mov    0xc(%edi),%eax
40fb64:	ff 30                	push   (%eax)
40fb66:	e8 9a 20 00 00       	call   0x411c05
40fb6b:	83 c4 0c             	add    $0xc,%esp
40fb6e:	8d be 48 04 00 00    	lea    0x448(%esi),%edi
40fb74:	85 c0                	test   %eax,%eax
40fb76:	74 76                	je     0x40fbee
40fb78:	8b 0f                	mov    (%edi),%ecx
40fb7a:	8b 41 08             	mov    0x8(%ecx),%eax
40fb7d:	3b 41 04             	cmp    0x4(%ecx),%eax
40fb80:	75 10                	jne    0x40fb92
40fb82:	38 59 0c             	cmp    %bl,0xc(%ecx)
40fb85:	74 05                	je     0x40fb8c
40fb87:	ff 46 14             	incl   0x14(%esi)
40fb8a:	eb 19                	jmp    0x40fba5
40fb8c:	83 4e 14 ff          	orl    $0xffffffff,0x14(%esi)
40fb90:	eb 13                	jmp    0x40fba5
40fb92:	ff 46 14             	incl   0x14(%esi)
40fb95:	ff 41 08             	incl   0x8(%ecx)
40fb98:	8b 07                	mov    (%edi),%eax
40fb9a:	8a 4d ff             	mov    -0x1(%ebp),%cl
40fb9d:	8b 00                	mov    (%eax),%eax
40fb9f:	88 08                	mov    %cl,(%eax)
40fba1:	8b 07                	mov    (%edi),%eax
40fba3:	ff 00                	incl   (%eax)
40fba5:	8b 46 0c             	mov    0xc(%esi),%eax
40fba8:	8a 08                	mov    (%eax),%cl
40fbaa:	40                   	inc    %eax
40fbab:	89 46 0c             	mov    %eax,0xc(%esi)
40fbae:	88 4e 2d             	mov    %cl,0x2d(%esi)
40fbb1:	84 c9                	test   %cl,%cl
40fbb3:	75 3c                	jne    0x40fbf1
40fbb5:	8b 46 08             	mov    0x8(%esi),%eax
40fbb8:	6a 16                	push   $0x16
40fbba:	5f                   	pop    %edi
40fbbb:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40fbbf:	89 78 18             	mov    %edi,0x18(%eax)
40fbc2:	ff 76 08             	push   0x8(%esi)
40fbc5:	53                   	push   %ebx
40fbc6:	53                   	push   %ebx
40fbc7:	53                   	push   %ebx
40fbc8:	53                   	push   %ebx
40fbc9:	53                   	push   %ebx
40fbca:	e8 a2 d7 ff ff       	call   0x40d371
40fbcf:	8b 46 08             	mov    0x8(%esi),%eax
40fbd2:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40fbd6:	89 78 18             	mov    %edi,0x18(%eax)
40fbd9:	ff 76 08             	push   0x8(%esi)
40fbdc:	53                   	push   %ebx
40fbdd:	53                   	push   %ebx
40fbde:	53                   	push   %ebx
40fbdf:	53                   	push   %ebx
40fbe0:	53                   	push   %ebx
40fbe1:	e8 8b d7 ff ff       	call   0x40d371
40fbe6:	83 c4 30             	add    $0x30,%esp
40fbe9:	e9 e3 fe ff ff       	jmp    0x40fad1
40fbee:	8a 4d ff             	mov    -0x1(%ebp),%cl
40fbf1:	8b 17                	mov    (%edi),%edx
40fbf3:	8b 42 08             	mov    0x8(%edx),%eax
40fbf6:	3b 42 04             	cmp    0x4(%edx),%eax
40fbf9:	75 16                	jne    0x40fc11
40fbfb:	38 5a 0c             	cmp    %bl,0xc(%edx)
40fbfe:	74 08                	je     0x40fc08
40fc00:	ff 46 14             	incl   0x14(%esi)
40fc03:	e9 ee 00 00 00       	jmp    0x40fcf6
40fc08:	83 4e 14 ff          	orl    $0xffffffff,0x14(%esi)
40fc0c:	e9 e5 00 00 00       	jmp    0x40fcf6
40fc11:	ff 46 14             	incl   0x14(%esi)
40fc14:	ff 42 08             	incl   0x8(%edx)
40fc17:	8b 07                	mov    (%edi),%eax
40fc19:	8b 00                	mov    (%eax),%eax
40fc1b:	88 08                	mov    %cl,(%eax)
40fc1d:	8b 07                	mov    (%edi),%eax
40fc1f:	ff 00                	incl   (%eax)
40fc21:	e9 d0 00 00 00       	jmp    0x40fcf6
40fc26:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
40fc2a:	89 5e 20             	mov    %ebx,0x20(%esi)
40fc2d:	88 5e 2c             	mov    %bl,0x2c(%esi)
40fc30:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40fc33:	89 5e 28             	mov    %ebx,0x28(%esi)
40fc36:	88 5e 38             	mov    %bl,0x38(%esi)
40fc39:	e9 b8 00 00 00       	jmp    0x40fcf6
40fc3e:	0f be 45 ff          	movsbl -0x1(%ebp),%eax
40fc42:	83 e8 20             	sub    $0x20,%eax
40fc45:	74 37                	je     0x40fc7e
40fc47:	83 e8 03             	sub    $0x3,%eax
40fc4a:	74 2c                	je     0x40fc78
40fc4c:	83 e8 08             	sub    $0x8,%eax
40fc4f:	74 21                	je     0x40fc72
40fc51:	48                   	dec    %eax
40fc52:	83 e8 01             	sub    $0x1,%eax
40fc55:	74 12                	je     0x40fc69
40fc57:	83 e8 03             	sub    $0x3,%eax
40fc5a:	0f 85 96 00 00 00    	jne    0x40fcf6
40fc60:	83 4e 1c 08          	orl    $0x8,0x1c(%esi)
40fc64:	e9 8d 00 00 00       	jmp    0x40fcf6
40fc69:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
40fc6d:	e9 84 00 00 00       	jmp    0x40fcf6
40fc72:	83 4e 1c 01          	orl    $0x1,0x1c(%esi)
40fc76:	eb 7e                	jmp    0x40fcf6
40fc78:	83 4e 1c 20          	orl    $0x20,0x1c(%esi)
40fc7c:	eb 78                	jmp    0x40fcf6
40fc7e:	83 4e 1c 02          	orl    $0x2,0x1c(%esi)
40fc82:	eb 72                	jmp    0x40fcf6
40fc84:	80 7d ff 2a          	cmpb   $0x2a,-0x1(%ebp)
40fc88:	74 0d                	je     0x40fc97
40fc8a:	8d 46 20             	lea    0x20(%esi),%eax
40fc8d:	50                   	push   %eax
40fc8e:	8b ce                	mov    %esi,%ecx
40fc90:	e8 55 fa ff ff       	call   0x40f6ea
40fc95:	eb 57                	jmp    0x40fcee
40fc97:	8b 4e 10             	mov    0x10(%esi),%ecx
40fc9a:	8d 41 04             	lea    0x4(%ecx),%eax
40fc9d:	89 46 10             	mov    %eax,0x10(%esi)
40fca0:	8b 01                	mov    (%ecx),%eax
40fca2:	89 46 20             	mov    %eax,0x20(%esi)
40fca5:	85 c0                	test   %eax,%eax
40fca7:	79 09                	jns    0x40fcb2
40fca9:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
40fcad:	f7 d8                	neg    %eax
40fcaf:	89 46 20             	mov    %eax,0x20(%esi)
40fcb2:	b0 01                	mov    $0x1,%al
40fcb4:	eb 38                	jmp    0x40fcee
40fcb6:	89 5e 24             	mov    %ebx,0x24(%esi)
40fcb9:	eb 3b                	jmp    0x40fcf6
40fcbb:	80 7d ff 2a          	cmpb   $0x2a,-0x1(%ebp)
40fcbf:	74 05                	je     0x40fcc6
40fcc1:	8d 46 24             	lea    0x24(%esi),%eax
40fcc4:	eb c7                	jmp    0x40fc8d
40fcc6:	8b 4e 10             	mov    0x10(%esi),%ecx
40fcc9:	8d 41 04             	lea    0x4(%ecx),%eax
40fccc:	89 46 10             	mov    %eax,0x10(%esi)
40fccf:	8b 01                	mov    (%ecx),%eax
40fcd1:	89 46 24             	mov    %eax,0x24(%esi)
40fcd4:	85 c0                	test   %eax,%eax
40fcd6:	79 da                	jns    0x40fcb2
40fcd8:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
40fcdc:	eb d4                	jmp    0x40fcb2
40fcde:	8b ce                	mov    %esi,%ecx
40fce0:	e8 50 06 00 00       	call   0x410335
40fce5:	eb 07                	jmp    0x40fcee
40fce7:	8b ce                	mov    %esi,%ecx
40fce9:	e8 6c 0c 00 00       	call   0x41095a
40fcee:	84 c0                	test   %al,%al
40fcf0:	0f 84 db fd ff ff    	je     0x40fad1
40fcf6:	8b 46 0c             	mov    0xc(%esi),%eax
40fcf9:	8a 10                	mov    (%eax),%dl
40fcfb:	8d 48 01             	lea    0x1(%eax),%ecx
40fcfe:	89 4e 0c             	mov    %ecx,0xc(%esi)
40fd01:	88 55 ff             	mov    %dl,-0x1(%ebp)
40fd04:	88 56 2d             	mov    %dl,0x2d(%esi)
40fd07:	88 55 fb             	mov    %dl,-0x5(%ebp)
40fd0a:	84 d2                	test   %dl,%dl
40fd0c:	0f 85 fc fd ff ff    	jne    0x40fb0e
40fd12:	ff 86 50 04 00 00    	incl   0x450(%esi)
40fd18:	83 be 50 04 00 00 02 	cmpl   $0x2,0x450(%esi)
40fd1f:	0f 85 cc fd ff ff    	jne    0x40faf1
40fd25:	8b 46 14             	mov    0x14(%esi),%eax
40fd28:	e9 a7 fd ff ff       	jmp    0x40fad4
40fd2d:	8b 4e 08             	mov    0x8(%esi),%ecx
40fd30:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40fd34:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40fd3b:	e9 81 fd ff ff       	jmp    0x40fac1
40fd40:	40                   	inc    %eax
40fd41:	fb                   	sti
40fd42:	40                   	inc    %eax
40fd43:	00 26                	add    %ah,(%esi)
40fd45:	fc                   	cld
40fd46:	40                   	inc    %eax
40fd47:	00 3e                	add    %bh,(%esi)
40fd49:	fc                   	cld
40fd4a:	40                   	inc    %eax
40fd4b:	00 84 fc 40 00 b6 fc 	add    %al,-0x349ffc0(%esp,%edi,8)
40fd52:	40                   	inc    %eax
40fd53:	00 bb fc 40 00 de    	add    %bh,-0x21ffbf04(%ebx)
40fd59:	fc                   	cld
40fd5a:	40                   	inc    %eax
40fd5b:	00 e7                	add    %ah,%bh
40fd5d:	fc                   	cld
40fd5e:	40                   	inc    %eax
40fd5f:	00 8b ff 53 56 8b    	add    %cl,-0x74a9ac01(%ebx)
40fd65:	f1                   	int1
40fd66:	57                   	push   %edi
40fd67:	ff 76 08             	push   0x8(%esi)