40fd6a:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40fd70:	e8 f9 1b 00 00       	call   0x41196e
40fd75:	84 c0                	test   %al,%al
40fd77:	74 27                	je     0x40fda0
40fd79:	8b 56 0c             	mov    0xc(%esi),%edx
40fd7c:	85 d2                	test   %edx,%edx
40fd7e:	75 27                	jne    0x40fda7
40fd80:	33 db                	xor    %ebx,%ebx
40fd82:	8b 46 08             	mov    0x8(%esi),%eax
40fd85:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40fd8c:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40fd90:	ff 76 08             	push   0x8(%esi)
40fd93:	53                   	push   %ebx
40fd94:	53                   	push   %ebx
40fd95:	53                   	push   %ebx
40fd96:	53                   	push   %ebx
40fd97:	53                   	push   %ebx
40fd98:	e8 d4 d5 ff ff       	call   0x40d371
40fd9d:	83 c4 18             	add    $0x18,%esp
40fda0:	83 c8 ff             	or     $0xffffffff,%eax
40fda3:	5f                   	pop    %edi
40fda4:	5e                   	pop    %esi
40fda5:	5b                   	pop    %ebx
40fda6:	c3                   	ret
40fda7:	8b 86 50 04 00 00    	mov    0x450(%esi),%eax
40fdad:	40                   	inc    %eax
40fdae:	89 86 50 04 00 00    	mov    %eax,0x450(%esi)
40fdb4:	83 f8 02             	cmp    $0x2,%eax
40fdb7:	0f 84 a6 01 00 00    	je     0x40ff63
40fdbd:	33 db                	xor    %ebx,%ebx
40fdbf:	89 5e 34             	mov    %ebx,0x34(%esi)
40fdc2:	88 5e 18             	mov    %bl,0x18(%esi)
40fdc5:	0f b7 02             	movzwl (%edx),%eax
40fdc8:	83 c2 02             	add    $0x2,%edx
40fdcb:	89 56 0c             	mov    %edx,0xc(%esi)
40fdce:	66 89 46 2e          	mov    %ax,0x2e(%esi)
40fdd2:	66 85 c0             	test   %ax,%ax
40fdd5:	0f 84 66 01 00 00    	je     0x40ff41
40fddb:	8b f8                	mov    %eax,%edi
40fddd:	8b 46 14             	mov    0x14(%esi),%eax
40fde0:	85 c0                	test   %eax,%eax
40fde2:	0f 88 59 01 00 00    	js     0x40ff41
40fde8:	0f b6 46 18          	movzbl 0x18(%esi),%eax
40fdec:	8b ce                	mov    %esi,%ecx
40fdee:	50                   	push   %eax
40fdef:	57                   	push   %edi
40fdf0:	e8 23 f8 ff ff       	call   0x40f618
40fdf5:	88 46 18             	mov    %al,0x18(%esi)
40fdf8:	3c 08                	cmp    $0x8,%al
40fdfa:	0f 83 6b 01 00 00    	jae    0x40ff6b
40fe00:	0f b6 c0             	movzbl %al,%eax
40fe03:	83 f8 07             	cmp    $0x7,%eax
40fe06:	77 98                	ja     0x40fda0
40fe08:	ff 24 85 80 ff 40 00 	jmp    *0x40ff80(,%eax,4)
40fe0f:	c6 46 38 01          	movb   $0x1,0x38(%esi)
40fe13:	8d 96 48 04 00 00    	lea    0x448(%esi),%edx
40fe19:	8b 0a                	mov    (%edx),%ecx
40fe1b:	8b 41 08             	mov    0x8(%ecx),%eax
40fe1e:	3b 41 04             	cmp    0x4(%ecx),%eax
40fe21:	75 16                	jne    0x40fe39
40fe23:	38 59 0c             	cmp    %bl,0xc(%ecx)
40fe26:	74 08                	je     0x40fe30
40fe28:	ff 46 14             	incl   0x14(%esi)
40fe2b:	e9 f6 00 00 00       	jmp    0x40ff26
40fe30:	83 4e 14 ff          	orl    $0xffffffff,0x14(%esi)
40fe34:	e9 ed 00 00 00       	jmp    0x40ff26
40fe39:	ff 46 14             	incl   0x14(%esi)
40fe3c:	ff 41 08             	incl   0x8(%ecx)
40fe3f:	8b 02                	mov    (%edx),%eax
40fe41:	8b 00                	mov    (%eax),%eax
40fe43:	66 89 38             	mov    %di,(%eax)
40fe46:	8b 02                	mov    (%edx),%eax
40fe48:	83 00 02             	addl   $0x2,(%eax)
40fe4b:	e9 d6 00 00 00       	jmp    0x40ff26
40fe50:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
40fe54:	89 5e 20             	mov    %ebx,0x20(%esi)
40fe57:	88 5e 2c             	mov    %bl,0x2c(%esi)
40fe5a:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40fe5d:	89 5e 28             	mov    %ebx,0x28(%esi)
40fe60:	88 5e 38             	mov    %bl,0x38(%esi)
40fe63:	e9 be 00 00 00       	jmp    0x40ff26
40fe68:	0f b7 c7             	movzwl %di,%eax
40fe6b:	83 e8 20             	sub    $0x20,%eax
40fe6e:	74 3a                	je     0x40feaa
40fe70:	83 e8 03             	sub    $0x3,%eax
40fe73:	74 2f                	je     0x40fea4
40fe75:	83 e8 08             	sub    $0x8,%eax
40fe78:	74 21                	je     0x40fe9b
40fe7a:	48                   	dec    %eax
40fe7b:	83 e8 01             	sub    $0x1,%eax
40fe7e:	74 12                	je     0x40fe92
40fe80:	83 e8 03             	sub    $0x3,%eax
40fe83:	0f 85 9d 00 00 00    	jne    0x40ff26
40fe89:	83 4e 1c 08          	orl    $0x8,0x1c(%esi)
40fe8d:	e9 94 00 00 00       	jmp    0x40ff26
40fe92:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
40fe96:	e9 8b 00 00 00       	jmp    0x40ff26
40fe9b:	83 4e 1c 01          	orl    $0x1,0x1c(%esi)
40fe9f:	e9 82 00 00 00       	jmp    0x40ff26
40fea4:	83 4e 1c 20          	orl    $0x20,0x1c(%esi)
40fea8:	eb 7c                	jmp    0x40ff26
40feaa:	83 4e 1c 02          	orl    $0x2,0x1c(%esi)
40feae:	eb 76                	jmp    0x40ff26
40feb0:	6a 2a                	push   $0x2a
40feb2:	58                   	pop    %eax
40feb3:	66 3b f8             	cmp    %ax,%di
40feb6:	74 0d                	je     0x40fec5
40feb8:	8d 46 20             	lea    0x20(%esi),%eax
40febb:	50                   	push   %eax
40febc:	8b ce                	mov    %esi,%ecx
40febe:	e8 9f f8 ff ff       	call   0x40f762
40fec3:	eb 59                	jmp    0x40ff1e
40fec5:	8b 4e 10             	mov    0x10(%esi),%ecx
40fec8:	8d 41 04             	lea    0x4(%ecx),%eax
40fecb:	89 46 10             	mov    %eax,0x10(%esi)
40fece:	8b 01                	mov    (%ecx),%eax
40fed0:	89 46 20             	mov    %eax,0x20(%esi)
40fed3:	85 c0                	test   %eax,%eax
40fed5:	79 09                	jns    0x40fee0
40fed7:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
40fedb:	f7 d8                	neg    %eax
40fedd:	89 46 20             	mov    %eax,0x20(%esi)
40fee0:	b0 01                	mov    $0x1,%al
40fee2:	eb 3a                	jmp    0x40ff1e
40fee4:	89 5e 24             	mov    %ebx,0x24(%esi)
40fee7:	eb 3d                	jmp    0x40ff26
40fee9:	6a 2a                	push   $0x2a
40feeb:	58                   	pop    %eax
40feec:	66 3b f8             	cmp    %ax,%di
40feef:	74 05                	je     0x40fef6
40fef1:	8d 46 24             	lea    0x24(%esi),%eax
40fef4:	eb c5                	jmp    0x40febb
40fef6:	8b 4e 10             	mov    0x10(%esi),%ecx
40fef9:	8d 41 04             	lea    0x4(%ecx),%eax
40fefc:	89 46 10             	mov    %eax,0x10(%esi)
40feff:	8b 01                	mov    (%ecx),%eax
40ff01:	89 46 24             	mov    %eax,0x24(%esi)
40ff04:	85 c0                	test   %eax,%eax
40ff06:	79 d8                	jns    0x40fee0
40ff08:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
40ff0c:	eb d2                	jmp    0x40fee0
40ff0e:	8b ce                	mov    %esi,%ecx
40ff10:	e8 79 05 00 00       	call   0x41048e
40ff15:	eb 07                	jmp    0x40ff1e
40ff17:	8b ce                	mov    %esi,%ecx
40ff19:	e8 9b 0d 00 00       	call   0x410cb9
40ff1e:	84 c0                	test   %al,%al
40ff20:	0f 84 7a fe ff ff    	je     0x40fda0
40ff26:	8b 46 0c             	mov    0xc(%esi),%eax
40ff29:	0f b7 08             	movzwl (%eax),%ecx
40ff2c:	8d 50 02             	lea    0x2(%eax),%edx
40ff2f:	89 56 0c             	mov    %edx,0xc(%esi)
40ff32:	8b f9                	mov    %ecx,%edi
40ff34:	66 89 4e 2e          	mov    %cx,0x2e(%esi)
40ff38:	66 85 c9             	test   %cx,%cx
40ff3b:	0f 85 9c fe ff ff    	jne    0x40fddd
40ff41:	8a 46 18             	mov    0x18(%esi),%al
40ff44:	84 c0                	test   %al,%al
40ff46:	74 08                	je     0x40ff50
40ff48:	3c 07                	cmp    $0x7,%al
40ff4a:	0f 85 32 fe ff ff    	jne    0x40fd82
40ff50:	ff 86 50 04 00 00    	incl   0x450(%esi)
40ff56:	83 be 50 04 00 00 02 	cmpl   $0x2,0x450(%esi)
40ff5d:	0f 85 5c fe ff ff    	jne    0x40fdbf
40ff63:	8b 46 14             	mov    0x14(%esi),%eax
40ff66:	e9 38 fe ff ff       	jmp    0x40fda3
40ff6b:	8b 4e 08             	mov    0x8(%esi),%ecx
40ff6e:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40ff72:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40ff79:	e9 12 fe ff ff       	jmp    0x40fd90
40ff7e:	8b ff                	mov    %edi,%edi
40ff80:	0f fe 40 00          	paddd  0x0(%eax),%mm0
40ff84:	50                   	push   %eax
40ff85:	fe 40 00             	incb   0x0(%eax)
40ff88:	68 fe 40 00 b0       	push   $0xb00040fe
40ff8d:	fe 40 00             	incb   0x0(%eax)
40ff90:	e4 fe                	in     $0xfe,%al
40ff92:	40                   	inc    %eax
40ff93:	00 e9                	add    %ch,%cl
40ff95:	fe 40 00             	incb   0x0(%eax)
40ff98:	0e                   	push   %cs
40ff99:	ff 40 00             	incl   0x0(%eax)
40ff9c:	17                   	pop    %ss
40ff9d:	ff 40 00             	incl   0x0(%eax)
40ffa0:	8b ff                	mov    %edi,%edi
40ffa2:	53                   	push   %ebx
40ffa3:	56                   	push   %esi
40ffa4:	8b f1                	mov    %ecx,%esi
40ffa6:	57                   	push   %edi
40ffa7:	ff 76 08             	push   0x8(%esi)
40ffaa:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40ffb0:	e8 b9 19 00 00       	call   0x41196e
40ffb5:	84 c0                	test   %al,%al
40ffb7:	74 27                	je     0x40ffe0
40ffb9:	8b 56 0c             	mov    0xc(%esi),%edx
40ffbc:	85 d2                	test   %edx,%edx
40ffbe:	75 27                	jne    0x40ffe7
40ffc0:	8b 46 08             	mov    0x8(%esi),%eax
40ffc3:	33 db                	xor    %ebx,%ebx
40ffc5:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ffc9:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40ffd0:	ff 76 08             	push   0x8(%esi)
40ffd3:	53                   	push   %ebx
40ffd4:	53                   	push   %ebx
40ffd5:	53                   	push   %ebx
40ffd6:	53                   	push   %ebx
40ffd7:	53                   	push   %ebx
40ffd8:	e8 94 d3 ff ff       	call   0x40d371
40ffdd:	83 c4 18             	add    $0x18,%esp
40ffe0:	83 c8 ff             	or     $0xffffffff,%eax
40ffe3:	5f                   	pop    %edi
40ffe4:	5e                   	pop    %esi
40ffe5:	5b                   	pop    %ebx
40ffe6:	c3                   	ret
40ffe7:	8b 86 50 04 00 00    	mov    0x450(%esi),%eax
40ffed:	40                   	inc    %eax
40ffee:	89 86 50 04 00 00    	mov    %eax,0x450(%esi)
40fff4:	83 f8 02             	cmp    $0x2,%eax
40fff7:	0f 84 a2 01 00 00    	je     0x41019f
40fffd:	33 db                	xor    %ebx,%ebx
40ffff:	89 5e 34             	mov    %ebx,0x34(%esi)
410002:	88 5e 18             	mov    %bl,0x18(%esi)
410005:	0f b7 02             	movzwl (%edx),%eax
410008:	83 c2 02             	add    $0x2,%edx
41000b:	89 56 0c             	mov    %edx,0xc(%esi)
41000e:	66 89 46 2e          	mov    %ax,0x2e(%esi)
410012:	66 85 c0             	test   %ax,%ax
410015:	0f 84 71 01 00 00    	je     0x41018c
41001b:	8b f8                	mov    %eax,%edi
41001d:	8d 46 14             	lea    0x14(%esi),%eax
410020:	8b 00                	mov    (%eax),%eax
410022:	85 c0                	test   %eax,%eax
410024:	0f 88 62 01 00 00    	js     0x41018c
41002a:	0f b6 46 18          	movzbl 0x18(%esi),%eax
41002e:	8b ce                	mov    %esi,%ecx
410030:	50                   	push   %eax
410031:	57                   	push   %edi
410032:	e8 1d f6 ff ff       	call   0x40f654
410037:	88 46 18             	mov    %al,0x18(%esi)
41003a:	3c 08                	cmp    $0x8,%al
41003c:	0f 83 65 01 00 00    	jae    0x4101a7
410042:	0f b6 c0             	movzbl %al,%eax
410045:	83 f8 07             	cmp    $0x7,%eax
410048:	77 96                	ja     0x40ffe0
41004a:	ff 24 85 bc 01 41 00 	jmp    *0x4101bc(,%eax,4)
410051:	c6 46 38 01          	movb   $0x1,0x38(%esi)
410055:	8b 8e 48 04 00 00    	mov    0x448(%esi),%ecx
41005b:	8b 41 08             	mov    0x8(%ecx),%eax
41005e:	3b 41 04             	cmp    0x4(%ecx),%eax
410061:	75 18                	jne    0x41007b
410063:	38 59 0c             	cmp    %bl,0xc(%ecx)
410066:	8d 4e 14             	lea    0x14(%esi),%ecx
410069:	74 06                	je     0x410071
41006b:	8b 46 14             	mov    0x14(%esi),%eax
41006e:	40                   	inc    %eax
41006f:	eb 03                	jmp    0x410074
410071:	83 c8 ff             	or     $0xffffffff,%eax
410074:	89 01                	mov    %eax,(%ecx)
410076:	e9 f3 00 00 00       	jmp    0x41016e
41007b:	ff 46 14             	incl   0x14(%esi)
41007e:	ff 41 08             	incl   0x8(%ecx)
410081:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
410087:	8b 01                	mov    (%ecx),%eax
410089:	8b 00                	mov    (%eax),%eax
41008b:	66 89 38             	mov    %di,(%eax)
41008e:	8b 01                	mov    (%ecx),%eax
410090:	83 00 02             	addl   $0x2,(%eax)
410093:	e9 d6 00 00 00       	jmp    0x41016e
410098:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
41009c:	89 5e 20             	mov    %ebx,0x20(%esi)
41009f:	88 5e 2c             	mov    %bl,0x2c(%esi)
4100a2:	89 5e 1c             	mov    %ebx,0x1c(%esi)
4100a5:	89 5e 28             	mov    %ebx,0x28(%esi)
4100a8:	88 5e 38             	mov    %bl,0x38(%esi)
4100ab:	e9 be 00 00 00       	jmp    0x41016e
4100b0:	0f b7 c7             	movzwl %di,%eax
4100b3:	83 e8 20             	sub    $0x20,%eax
4100b6:	74 3a                	je     0x4100f2
4100b8:	83 e8 03             	sub    $0x3,%eax
4100bb:	74 2f                	je     0x4100ec
4100bd:	83 e8 08             	sub    $0x8,%eax
4100c0:	74 21                	je     0x4100e3
4100c2:	48                   	dec    %eax
4100c3:	83 e8 01             	sub    $0x1,%eax
4100c6:	74 12                	je     0x4100da
4100c8:	83 e8 03             	sub    $0x3,%eax
4100cb:	0f 85 9d 00 00 00    	jne    0x41016e
4100d1:	83 4e 1c 08          	orl    $0x8,0x1c(%esi)
4100d5:	e9 94 00 00 00       	jmp    0x41016e
4100da:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
4100de:	e9 8b 00 00 00       	jmp    0x41016e
4100e3:	83 4e 1c 01          	orl    $0x1,0x1c(%esi)
4100e7:	e9 82 00 00 00       	jmp    0x41016e
4100ec:	83 4e 1c 20          	orl    $0x20,0x1c(%esi)
4100f0:	eb 7c                	jmp    0x41016e
4100f2:	83 4e 1c 02          	orl    $0x2,0x1c(%esi)
4100f6:	eb 76                	jmp    0x41016e
4100f8:	6a 2a                	push   $0x2a
4100fa:	58                   	pop    %eax
4100fb:	66 3b f8             	cmp    %ax,%di
4100fe:	74 0d                	je     0x41010d
410100:	8d 46 20             	lea    0x20(%esi),%eax
410103:	50                   	push   %eax
410104:	8b ce                	mov    %esi,%ecx
410106:	e8 57 f6 ff ff       	call   0x40f762
41010b:	eb 59                	jmp    0x410166
41010d:	8b 4e 10             	mov    0x10(%esi),%ecx
410110:	8d 41 04             	lea    0x4(%ecx),%eax
410113:	89 46 10             	mov    %eax,0x10(%esi)
410116:	8b 01                	mov    (%ecx),%eax
410118:	89 46 20             	mov    %eax,0x20(%esi)
41011b:	85 c0                	test   %eax,%eax
41011d:	79 09                	jns    0x410128
41011f:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
410123:	f7 d8                	neg    %eax
410125:	89 46 20             	mov    %eax,0x20(%esi)
410128:	b0 01                	mov    $0x1,%al
41012a:	eb 3a                	jmp    0x410166
41012c:	89 5e 24             	mov    %ebx,0x24(%esi)
41012f:	eb 3d                	jmp    0x41016e
410131:	6a 2a                	push   $0x2a
410133:	58                   	pop    %eax
410134:	66 3b f8             	cmp    %ax,%di
410137:	74 05                	je     0x41013e
410139:	8d 46 24             	lea    0x24(%esi),%eax
41013c:	eb c5                	jmp    0x410103
41013e:	8b 4e 10             	mov    0x10(%esi),%ecx
410141:	8d 41 04             	lea    0x4(%ecx),%eax
410144:	89 46 10             	mov    %eax,0x10(%esi)
410147:	8b 01                	mov    (%ecx),%eax
410149:	89 46 24             	mov    %eax,0x24(%esi)
41014c:	85 c0                	test   %eax,%eax
41014e:	79 d8                	jns    0x410128
410150:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
410154:	eb d2                	jmp    0x410128
410156:	8b ce                	mov    %esi,%ecx
410158:	e8 31 03 00 00       	call   0x41048e
41015d:	eb 07                	jmp    0x410166
41015f:	8b ce                	mov    %esi,%ecx
410161:	e8 53 0b 00 00       	call   0x410cb9
410166:	84 c0                	test   %al,%al
410168:	0f 84 72 fe ff ff    	je     0x40ffe0
41016e:	8b 46 0c             	mov    0xc(%esi),%eax
410171:	0f b7 08             	movzwl (%eax),%ecx
410174:	8d 50 02             	lea    0x2(%eax),%edx
410177:	89 56 0c             	mov    %edx,0xc(%esi)
41017a:	8b f9                	mov    %ecx,%edi
41017c:	66 89 4e 2e          	mov    %cx,0x2e(%esi)
410180:	8d 46 14             	lea    0x14(%esi),%eax
410183:	66 85 c9             	test   %cx,%cx