40da79:	2b f8                	sub    %eax,%edi
40da7b:	d1 ff                	sar    $1,%edi
40da7d:	3b 4e 08             	cmp    0x8(%esi),%ecx
40da80:	75 0e                	jne    0x40da90
40da82:	6a 01                	push   $0x1
40da84:	8b ce                	mov    %esi,%ecx
40da86:	e8 d3 9e ff ff       	call   0x40795e
40da8b:	8b 06                	mov    (%esi),%eax
40da8d:	8b 4e 04             	mov    0x4(%esi),%ecx
40da90:	66 8b 04 78          	mov    (%eax,%edi,2),%ax
40da94:	eb 14                	jmp    0x40daaa
40da96:	3b 4e 08             	cmp    0x8(%esi),%ecx
40da99:	75 0c                	jne    0x40daa7
40da9b:	6a 01                	push   $0x1
40da9d:	8b ce                	mov    %esi,%ecx
40da9f:	e8 ba 9e ff ff       	call   0x40795e
40daa4:	8b 4e 04             	mov    0x4(%esi),%ecx
40daa7:	66 8b 07             	mov    (%edi),%ax
40daaa:	66 89 01             	mov    %ax,(%ecx)
40daad:	83 46 04 02          	addl   $0x2,0x4(%esi)
40dab1:	5f                   	pop    %edi
40dab2:	5e                   	pop    %esi
40dab3:	5d                   	pop    %ebp
40dab4:	c2 04 00             	ret    $0x4
40dab7:	8b ff                	mov    %edi,%edi
40dab9:	55                   	push   %ebp
40daba:	8b ec                	mov    %esp,%ebp
40dabc:	56                   	push   %esi
40dabd:	8b f1                	mov    %ecx,%esi
40dabf:	57                   	push   %edi
40dac0:	8b 7e 08             	mov    0x8(%esi),%edi
40dac3:	8b c7                	mov    %edi,%eax
40dac5:	8b 56 04             	mov    0x4(%esi),%edx
40dac8:	2b c2                	sub    %edx,%eax
40daca:	3b 45 08             	cmp    0x8(%ebp),%eax
40dacd:	73 31                	jae    0x40db00
40dacf:	8b 06                	mov    (%esi),%eax
40dad1:	2b c2                	sub    %edx,%eax
40dad3:	48                   	dec    %eax
40dad4:	3b 45 08             	cmp    0x8(%ebp),%eax
40dad7:	72 2d                	jb     0x40db06
40dad9:	2b 3e                	sub    (%esi),%edi
40dadb:	2b 16                	sub    (%esi),%edx
40dadd:	8b cf                	mov    %edi,%ecx
40dadf:	03 55 08             	add    0x8(%ebp),%edx
40dae2:	d1 e9                	shr    $1,%ecx
40dae4:	8b c1                	mov    %ecx,%eax
40dae6:	03 cf                	add    %edi,%ecx
40dae8:	f7 d0                	not    %eax
40daea:	3b c7                	cmp    %edi,%eax
40daec:	1b c0                	sbb    %eax,%eax
40daee:	f7 d0                	not    %eax
40daf0:	23 c1                	and    %ecx,%eax
40daf2:	3b c2                	cmp    %edx,%eax
40daf4:	73 02                	jae    0x40daf8
40daf6:	8b c2                	mov    %edx,%eax
40daf8:	50                   	push   %eax
40daf9:	8b ce                	mov    %esi,%ecx
40dafb:	e8 0c 00 00 00       	call   0x40db0c
40db00:	5f                   	pop    %edi
40db01:	5e                   	pop    %esi
40db02:	5d                   	pop    %ebp
40db03:	c2 04 00             	ret    $0x4
40db06:	e8 3f 92 ff ff       	call   0x406d4a
40db0b:	cc                   	int3
40db0c:	8b ff                	mov    %edi,%edi
40db0e:	55                   	push   %ebp
40db0f:	8b ec                	mov    %esp,%ebp
40db11:	51                   	push   %ecx
40db12:	53                   	push   %ebx
40db13:	56                   	push   %esi
40db14:	57                   	push   %edi
40db15:	ff 75 08             	push   0x8(%ebp)
40db18:	8b f1                	mov    %ecx,%esi
40db1a:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40db1d:	e8 16 78 ff ff       	call   0x405338
40db22:	8b 56 04             	mov    0x4(%esi),%edx
40db25:	8b f8                	mov    %eax,%edi
40db27:	2b 16                	sub    (%esi),%edx
40db29:	52                   	push   %edx
40db2a:	ff 36                	push   (%esi)
40db2c:	57                   	push   %edi
40db2d:	e8 fa 0b 00 00       	call   0x40e72c
40db32:	8b 5e 04             	mov    0x4(%esi),%ebx
40db35:	83 c4 0c             	add    $0xc,%esp
40db38:	2b 1e                	sub    (%esi),%ebx
40db3a:	83 3e 00             	cmpl   $0x0,(%esi)
40db3d:	74 09                	je     0x40db48
40db3f:	ff 36                	push   (%esi)
40db41:	ff 15 e4 21 41 00    	call   *0x4121e4
40db47:	59                   	pop    %ecx
40db48:	8b 45 08             	mov    0x8(%ebp),%eax
40db4b:	03 c7                	add    %edi,%eax
40db4d:	89 3e                	mov    %edi,(%esi)
40db4f:	89 46 08             	mov    %eax,0x8(%esi)
40db52:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
40db55:	5f                   	pop    %edi
40db56:	89 46 04             	mov    %eax,0x4(%esi)
40db59:	5e                   	pop    %esi
40db5a:	5b                   	pop    %ebx
40db5b:	c9                   	leave
40db5c:	c2 04 00             	ret    $0x4
40db5f:	eb 08                	jmp    0x40db69
40db61:	39 51 04             	cmp    %edx,0x4(%ecx)
40db64:	74 0b                	je     0x40db71
40db66:	83 c1 08             	add    $0x8,%ecx
40db69:	83 39 00             	cmpl   $0x0,(%ecx)
40db6c:	75 f3                	jne    0x40db61
40db6e:	33 c0                	xor    %eax,%eax
40db70:	c3                   	ret
40db71:	8b 01                	mov    (%ecx),%eax
40db73:	c3                   	ret
40db74:	8b ff                	mov    %edi,%edi
40db76:	56                   	push   %esi
40db77:	57                   	push   %edi
40db78:	8b fa                	mov    %edx,%edi
40db7a:	8b f1                	mov    %ecx,%esi
40db7c:	eb 11                	jmp    0x40db8f
40db7e:	57                   	push   %edi
40db7f:	50                   	push   %eax
40db80:	ff 15 a0 21 41 00    	call   *0x4121a0
40db86:	59                   	pop    %ecx
40db87:	59                   	pop    %ecx
40db88:	85 c0                	test   %eax,%eax
40db8a:	74 0f                	je     0x40db9b
40db8c:	83 c6 08             	add    $0x8,%esi
40db8f:	8b 06                	mov    (%esi),%eax
40db91:	85 c0                	test   %eax,%eax
40db93:	75 e9                	jne    0x40db7e
40db95:	83 c8 ff             	or     $0xffffffff,%eax
40db98:	5f                   	pop    %edi
40db99:	5e                   	pop    %esi
40db9a:	c3                   	ret
40db9b:	8b 46 04             	mov    0x4(%esi),%eax
40db9e:	eb f8                	jmp    0x40db98
40dba0:	8b ff                	mov    %edi,%edi
40dba2:	55                   	push   %ebp
40dba3:	8b ec                	mov    %esp,%ebp
40dba5:	83 ec 3c             	sub    $0x3c,%esp
40dba8:	53                   	push   %ebx
40dba9:	56                   	push   %esi
40dbaa:	57                   	push   %edi
40dbab:	8b f1                	mov    %ecx,%esi
40dbad:	8d 7d ec             	lea    -0x14(%ebp),%edi
40dbb0:	8b da                	mov    %edx,%ebx
40dbb2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dbb3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dbb4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dbb5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dbb6:	0f b7 45 f8          	movzwl -0x8(%ebp),%eax
40dbba:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40dbbd:	50                   	push   %eax
40dbbe:	8b c1                	mov    %ecx,%eax
40dbc0:	c1 e8 10             	shr    $0x10,%eax
40dbc3:	50                   	push   %eax
40dbc4:	0f b7 c1             	movzwl %cx,%eax
40dbc7:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40dbca:	50                   	push   %eax
40dbcb:	8b 45 f0             	mov    -0x10(%ebp),%eax
40dbce:	c1 e8 10             	shr    $0x10,%eax
40dbd1:	50                   	push   %eax
40dbd2:	8b c1                	mov    %ecx,%eax
40dbd4:	c1 e8 10             	shr    $0x10,%eax
40dbd7:	50                   	push   %eax
40dbd8:	0f b7 c1             	movzwl %cx,%eax
40dbdb:	50                   	push   %eax
40dbdc:	68 e8 47 40 00       	push   $0x4047e8
40dbe1:	6a 20                	push   $0x20
40dbe3:	5f                   	pop    %edi
40dbe4:	57                   	push   %edi
40dbe5:	53                   	push   %ebx
40dbe6:	ff 15 c8 21 41 00    	call   *0x4121c8
40dbec:	83 c4 24             	add    $0x24,%esp
40dbef:	89 45 fc             	mov    %eax,-0x4(%ebp)
40dbf2:	83 f8 ff             	cmp    $0xffffffff,%eax
40dbf5:	0f 84 9f 00 00 00    	je     0x40dc9a
40dbfb:	2b f8                	sub    %eax,%edi
40dbfd:	8d 0c 43             	lea    (%ebx,%eax,2),%ecx
40dc00:	8b 45 0c             	mov    0xc(%ebp),%eax
40dc03:	85 c0                	test   %eax,%eax
40dc05:	74 3f                	je     0x40dc46
40dc07:	6a 00                	push   $0x0
40dc09:	68 80 96 98 00       	push   $0x989680
40dc0e:	ff 70 04             	push   0x4(%eax)
40dc11:	ff 30                	push   (%eax)
40dc13:	e8 98 0f 00 00       	call   0x40ebb0
40dc18:	6a 64                	push   $0x64
40dc1a:	5e                   	pop    %esi
40dc1b:	8b c8                	mov    %eax,%ecx
40dc1d:	8b c2                	mov    %edx,%eax
40dc1f:	f7 e6                	mul    %esi
40dc21:	6a 64                	push   $0x64
40dc23:	8b f0                	mov    %eax,%esi
40dc25:	8b c1                	mov    %ecx,%eax
40dc27:	59                   	pop    %ecx
40dc28:	f7 e1                	mul    %ecx
40dc2a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40dc2d:	03 f2                	add    %edx,%esi
40dc2f:	56                   	push   %esi
40dc30:	50                   	push   %eax
40dc31:	68 6c 48 40 00       	push   $0x40486c
40dc36:	8d 04 4b             	lea    (%ebx,%ecx,2),%eax
40dc39:	57                   	push   %edi
40dc3a:	50                   	push   %eax
40dc3b:	ff 15 c8 21 41 00    	call   *0x4121c8
40dc41:	83 c4 14             	add    $0x14,%esp
40dc44:	eb 15                	jmp    0x40dc5b
40dc46:	0f b7 45 fa          	movzwl -0x6(%ebp),%eax
40dc4a:	50                   	push   %eax
40dc4b:	68 80 48 40 00       	push   $0x404880
40dc50:	57                   	push   %edi
40dc51:	51                   	push   %ecx
40dc52:	ff 15 c8 21 41 00    	call   *0x4121c8
40dc58:	83 c4 10             	add    $0x10,%esp
40dc5b:	83 f8 ff             	cmp    $0xffffffff,%eax
40dc5e:	75 31                	jne    0x40dc91
40dc60:	a1 00 10 41 00       	mov    0x411000,%eax
40dc65:	3d 00 10 41 00       	cmp    $0x411000,%eax
40dc6a:	74 21                	je     0x40dc8d
40dc6c:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40dc70:	74 1b                	je     0x40dc8d
40dc72:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40dc76:	72 15                	jb     0x40dc8d
40dc78:	6a 0d                	push   $0xd
40dc7a:	ff 70 14             	push   0x14(%eax)
40dc7d:	ba f4 48 40 00       	mov    $0x4048f4,%edx
40dc82:	ff 70 10             	push   0x10(%eax)
40dc85:	6a 0b                	push   $0xb
40dc87:	59                   	pop    %ecx
40dc88:	e8 09 f9 ff ff       	call   0x40d596
40dc8d:	6a 38                	push   $0x38
40dc8f:	eb 38                	jmp    0x40dcc9
40dc91:	5f                   	pop    %edi
40dc92:	5e                   	pop    %esi
40dc93:	8b c3                	mov    %ebx,%eax
40dc95:	5b                   	pop    %ebx
40dc96:	c9                   	leave
40dc97:	c2 08 00             	ret    $0x8
40dc9a:	a1 00 10 41 00       	mov    0x411000,%eax
40dc9f:	3d 00 10 41 00       	cmp    $0x411000,%eax
40dca4:	74 21                	je     0x40dcc7
40dca6:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40dcaa:	74 1b                	je     0x40dcc7
40dcac:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40dcb0:	72 15                	jb     0x40dcc7
40dcb2:	6a 0d                	push   $0xd
40dcb4:	ff 70 14             	push   0x14(%eax)
40dcb7:	ba f4 48 40 00       	mov    $0x4048f4,%edx
40dcbc:	ff 70 10             	push   0x10(%eax)
40dcbf:	6a 0a                	push   $0xa
40dcc1:	59                   	pop    %ecx
40dcc2:	e8 cf f8 ff ff       	call   0x40d596
40dcc7:	6a 25                	push   $0x25
40dcc9:	68 3c 48 40 00       	push   $0x40483c
40dcce:	6a 0d                	push   $0xd
40dcd0:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40dcd3:	e8 29 f7 ff ff       	call   0x40d401
40dcd8:	68 60 03 41 00       	push   $0x410360
40dcdd:	8b c1                	mov    %ecx,%eax
40dcdf:	50                   	push   %eax
40dce0:	e8 31 09 00 00       	call   0x40e616
40dce5:	cc                   	int3
40dce6:	8b ff                	mov    %edi,%edi
40dce8:	55                   	push   %ebp
40dce9:	8b ec                	mov    %esp,%ebp
40dceb:	83 ec 50             	sub    $0x50,%esp
40dcee:	a1 54 13 41 00       	mov    0x411354,%eax
40dcf3:	33 c5                	xor    %ebp,%eax
40dcf5:	89 45 f8             	mov    %eax,-0x8(%ebp)
40dcf8:	53                   	push   %ebx
40dcf9:	56                   	push   %esi
40dcfa:	57                   	push   %edi
40dcfb:	8b f1                	mov    %ecx,%esi
40dcfd:	8d 7d d8             	lea    -0x28(%ebp),%edi
40dd00:	8d 45 e8             	lea    -0x18(%ebp),%eax
40dd03:	8b da                	mov    %edx,%ebx
40dd05:	50                   	push   %eax
40dd06:	8d 45 d8             	lea    -0x28(%ebp),%eax
40dd09:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dd0a:	50                   	push   %eax
40dd0b:	6a 00                	push   $0x0
40dd0d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dd0e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dd0f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40dd10:	ff 15 24 21 41 00    	call   *0x412124
40dd16:	85 c0                	test   %eax,%eax
40dd18:	0f 84 82 00 00 00    	je     0x40dda0
40dd1e:	0f b7 45 f6          	movzwl -0xa(%ebp),%eax
40dd22:	50                   	push   %eax
40dd23:	0f b7 45 f4          	movzwl -0xc(%ebp),%eax
40dd27:	50                   	push   %eax
40dd28:	0f b7 45 f2          	movzwl -0xe(%ebp),%eax
40dd2c:	50                   	push   %eax
40dd2d:	0f b7 45 f0          	movzwl -0x10(%ebp),%eax
40dd31:	50                   	push   %eax
40dd32:	0f b7 45 ee          	movzwl -0x12(%ebp),%eax
40dd36:	50                   	push   %eax
40dd37:	0f b7 45 ea          	movzwl -0x16(%ebp),%eax
40dd3b:	50                   	push   %eax
40dd3c:	0f b7 45 e8          	movzwl -0x18(%ebp),%eax
40dd40:	50                   	push   %eax
40dd41:	68 90 48 40 00       	push   $0x404890
40dd46:	6a 20                	push   $0x20
40dd48:	53                   	push   %ebx
40dd49:	e8 a6 f3 ff ff       	call   0x40d0f4
40dd4e:	83 c4 28             	add    $0x28,%esp
40dd51:	85 c0                	test   %eax,%eax
40dd53:	79 38                	jns    0x40dd8d
40dd55:	a1 00 10 41 00       	mov    0x411000,%eax
40dd5a:	3d 00 10 41 00       	cmp    $0x411000,%eax
40dd5f:	74 21                	je     0x40dd82
40dd61:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40dd65:	74 1b                	je     0x40dd82
40dd67:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40dd6b:	72 15                	jb     0x40dd82
40dd6d:	6a 0d                	push   $0xd
40dd6f:	ff 70 14             	push   0x14(%eax)
40dd72:	ba f4 48 40 00       	mov    $0x4048f4,%edx
40dd77:	ff 70 10             	push   0x10(%eax)
40dd7a:	6a 0d                	push   $0xd
40dd7c:	59                   	pop    %ecx
40dd7d:	e8 14 f8 ff ff       	call   0x40d596
40dd82:	6a 58                	push   $0x58
40dd84:	68 3c 48 40 00       	push   $0x40483c
40dd89:	6a 0d                	push   $0xd
40dd8b:	eb 58                	jmp    0x40dde5
40dd8d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40dd90:	8b c3                	mov    %ebx,%eax
40dd92:	5f                   	pop    %edi
40dd93:	5e                   	pop    %esi
40dd94:	33 cd                	xor    %ebp,%ecx
40dd96:	5b                   	pop    %ebx
40dd97:	e8 04 06 00 00       	call   0x40e3a0
40dd9c:	c9                   	leave
40dd9d:	c2 04 00             	ret    $0x4
40dda0:	ff 15 70 20 41 00    	call   *0x412070
40dda6:	8b f0                	mov    %eax,%esi
40dda8:	85 f6                	test   %esi,%esi
40ddaa:	75 05                	jne    0x40ddb1
40ddac:	be 07 05 00 00       	mov    $0x507,%esi
40ddb1:	a1 00 10 41 00       	mov    0x411000,%eax
40ddb6:	3d 00 10 41 00       	cmp    $0x411000,%eax
40ddbb:	74 20                	je     0x40dddd
40ddbd:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40ddc1:	74 1a                	je     0x40dddd
40ddc3:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40ddc7:	72 14                	jb     0x40dddd
40ddc9:	56                   	push   %esi
40ddca:	ff 70 14             	push   0x14(%eax)
40ddcd:	ba f4 48 40 00       	mov    $0x4048f4,%edx