40cb59:	77 57                	ja     0x40cbb2
40cb5b:	8b c3                	mov    %ebx,%eax
40cb5d:	c1 e0 02             	shl    $0x2,%eax
40cb60:	50                   	push   %eax
40cb61:	e8 62 13 00 00       	call   0x40dec8
40cb66:	8b f0                	mov    %eax,%esi
40cb68:	59                   	pop    %ecx
40cb69:	85 f6                	test   %esi,%esi
40cb6b:	74 45                	je     0x40cbb2
40cb6d:	8b 47 04             	mov    0x4(%edi),%eax
40cb70:	2b 07                	sub    (%edi),%eax
40cb72:	83 e0 fc             	and    $0xfffffffc,%eax
40cb75:	50                   	push   %eax
40cb76:	ff 37                	push   (%edi)
40cb78:	56                   	push   %esi
40cb79:	e8 ae 1b 00 00       	call   0x40e72c
40cb7e:	8b 47 04             	mov    0x4(%edi),%eax
40cb81:	83 c4 0c             	add    $0xc,%esp
40cb84:	2b 07                	sub    (%edi),%eax
40cb86:	c1 f8 02             	sar    $0x2,%eax
40cb89:	83 3f 00             	cmpl   $0x0,(%edi)
40cb8c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cb8f:	74 09                	je     0x40cb9a
40cb91:	ff 37                	push   (%edi)
40cb93:	ff 15 e4 21 41 00    	call   *0x4121e4
40cb99:	59                   	pop    %ecx
40cb9a:	8d 04 9e             	lea    (%esi,%ebx,4),%eax
40cb9d:	89 37                	mov    %esi,(%edi)
40cb9f:	89 47 08             	mov    %eax,0x8(%edi)
40cba2:	8b 45 fc             	mov    -0x4(%ebp),%eax
40cba5:	8d 04 86             	lea    (%esi,%eax,4),%eax
40cba8:	89 47 04             	mov    %eax,0x4(%edi)
40cbab:	5f                   	pop    %edi
40cbac:	5e                   	pop    %esi
40cbad:	5b                   	pop    %ebx
40cbae:	c9                   	leave
40cbaf:	c2 04 00             	ret    $0x4
40cbb2:	e8 5a 14 00 00       	call   0x40e011
40cbb7:	cc                   	int3
40cbb8:	6a 1c                	push   $0x1c
40cbba:	b8 67 f4 40 00       	mov    $0x40f467,%eax
40cbbf:	e8 8a 1a 00 00       	call   0x40e64e
40cbc4:	8b f1                	mov    %ecx,%esi
40cbc6:	89 75 f0             	mov    %esi,-0x10(%ebp)
40cbc9:	8d 45 08             	lea    0x8(%ebp),%eax
40cbcc:	33 db                	xor    %ebx,%ebx
40cbce:	50                   	push   %eax
40cbcf:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40cbd2:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40cbd5:	e8 94 fe ff ff       	call   0x40ca6e
40cbda:	8d 45 d8             	lea    -0x28(%ebp),%eax
40cbdd:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40cbe1:	50                   	push   %eax
40cbe2:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40cbe5:	e8 84 fe ff ff       	call   0x40ca6e
40cbea:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40cbed:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40cbf1:	50                   	push   %eax
40cbf2:	8d 4e 08             	lea    0x8(%esi),%ecx
40cbf5:	88 1e                	mov    %bl,(%esi)
40cbf7:	c7 46 04 70 ab 40 00 	movl   $0x40ab70,0x4(%esi)
40cbfe:	e8 6b fe ff ff       	call   0x40ca6e
40cc03:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
40cc06:	74 13                	je     0x40cc1b
40cc08:	ff 75 e4             	push   -0x1c(%ebp)
40cc0b:	ff 15 e4 21 41 00    	call   *0x4121e4
40cc11:	59                   	pop    %ecx
40cc12:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40cc15:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40cc18:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40cc1b:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
40cc1f:	74 13                	je     0x40cc34
40cc21:	ff 75 d8             	push   -0x28(%ebp)
40cc24:	ff 15 e4 21 41 00    	call   *0x4121e4
40cc2a:	59                   	pop    %ecx
40cc2b:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40cc2e:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40cc31:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40cc34:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40cc38:	74 0a                	je     0x40cc44
40cc3a:	ff 75 08             	push   0x8(%ebp)
40cc3d:	ff 15 e4 21 41 00    	call   *0x4121e4
40cc43:	59                   	pop    %ecx
40cc44:	8b c6                	mov    %esi,%eax
40cc46:	e8 d1 19 00 00       	call   0x40e61c
40cc4b:	c2 0c 00             	ret    $0xc
40cc4e:	8b ff                	mov    %edi,%edi
40cc50:	55                   	push   %ebp
40cc51:	8b ec                	mov    %esp,%ebp
40cc53:	51                   	push   %ecx
40cc54:	51                   	push   %ecx
40cc55:	53                   	push   %ebx
40cc56:	57                   	push   %edi
40cc57:	8b 7d 10             	mov    0x10(%ebp),%edi
40cc5a:	8b d9                	mov    %ecx,%ebx
40cc5c:	2b 7d 0c             	sub    0xc(%ebp),%edi
40cc5f:	d1 ff                	sar    $1,%edi
40cc61:	0f 84 d6 00 00 00    	je     0x40cd3d
40cc67:	8b 43 08             	mov    0x8(%ebx),%eax
40cc6a:	8b 4b 04             	mov    0x4(%ebx),%ecx
40cc6d:	2b c1                	sub    %ecx,%eax
40cc6f:	d1 f8                	sar    $1,%eax
40cc71:	56                   	push   %esi
40cc72:	3b c7                	cmp    %edi,%eax
40cc74:	0f 83 8e 00 00 00    	jae    0x40cd08
40cc7a:	2b 0b                	sub    (%ebx),%ecx
40cc7c:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40cc81:	d1 f9                	sar    $1,%ecx
40cc83:	2b c1                	sub    %ecx,%eax
40cc85:	3b c7                	cmp    %edi,%eax
40cc87:	0f 82 b6 00 00 00    	jb     0x40cd43
40cc8d:	8d 04 39             	lea    (%ecx,%edi,1),%eax
40cc90:	8b cb                	mov    %ebx,%ecx
40cc92:	50                   	push   %eax
40cc93:	e8 af ad ff ff       	call   0x407a47
40cc98:	50                   	push   %eax
40cc99:	89 45 f8             	mov    %eax,-0x8(%ebp)
40cc9c:	e8 25 96 ff ff       	call   0x4062c6
40cca1:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cca4:	2b 0b                	sub    (%ebx),%ecx
40cca6:	d1 f9                	sar    $1,%ecx
40cca8:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ccab:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
40ccae:	56                   	push   %esi
40ccaf:	ff 33                	push   (%ebx)
40ccb1:	50                   	push   %eax
40ccb2:	e8 75 1a 00 00       	call   0x40e72c
40ccb7:	03 c6                	add    %esi,%eax
40ccb9:	8d 34 3f             	lea    (%edi,%edi,1),%esi
40ccbc:	56                   	push   %esi
40ccbd:	ff 75 0c             	push   0xc(%ebp)
40ccc0:	50                   	push   %eax
40ccc1:	e8 66 1a 00 00       	call   0x40e72c
40ccc6:	8b 4b 04             	mov    0x4(%ebx),%ecx
40ccc9:	03 c6                	add    %esi,%eax
40cccb:	2b 4d 08             	sub    0x8(%ebp),%ecx
40ccce:	83 e1 fe             	and    $0xfffffffe,%ecx
40ccd1:	51                   	push   %ecx
40ccd2:	ff 75 08             	push   0x8(%ebp)
40ccd5:	50                   	push   %eax
40ccd6:	e8 51 1a 00 00       	call   0x40e72c
40ccdb:	8b 43 04             	mov    0x4(%ebx),%eax
40ccde:	83 c4 24             	add    $0x24,%esp
40cce1:	2b 03                	sub    (%ebx),%eax
40cce3:	d1 f8                	sar    $1,%eax
40cce5:	03 f8                	add    %eax,%edi
40cce7:	83 3b 00             	cmpl   $0x0,(%ebx)
40ccea:	74 09                	je     0x40ccf5
40ccec:	ff 33                	push   (%ebx)
40ccee:	ff 15 e4 21 41 00    	call   *0x4121e4
40ccf4:	59                   	pop    %ecx
40ccf5:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ccf8:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ccfb:	89 0b                	mov    %ecx,(%ebx)
40ccfd:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40cd00:	89 43 08             	mov    %eax,0x8(%ebx)
40cd03:	8d 04 79             	lea    (%ecx,%edi,2),%eax
40cd06:	eb 31                	jmp    0x40cd39
40cd08:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40cd0b:	50                   	push   %eax
40cd0c:	ff 75 0c             	push   0xc(%ebp)
40cd0f:	51                   	push   %ecx
40cd10:	e8 17 1a 00 00       	call   0x40e72c
40cd15:	8b 53 04             	mov    0x4(%ebx),%edx
40cd18:	83 c4 0c             	add    $0xc,%esp
40cd1b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cd1e:	8b c2                	mov    %edx,%eax
40cd20:	8d 34 7a             	lea    (%edx,%edi,2),%esi
40cd23:	3b ca                	cmp    %edx,%ecx
40cd25:	74 0f                	je     0x40cd36
40cd27:	3b d6                	cmp    %esi,%edx
40cd29:	74 0b                	je     0x40cd36
40cd2b:	51                   	push   %ecx
40cd2c:	51                   	push   %ecx
40cd2d:	56                   	push   %esi
40cd2e:	e8 3c 00 00 00       	call   0x40cd6f
40cd33:	8b 43 04             	mov    0x4(%ebx),%eax
40cd36:	8d 04 78             	lea    (%eax,%edi,2),%eax
40cd39:	89 43 04             	mov    %eax,0x4(%ebx)
40cd3c:	5e                   	pop    %esi
40cd3d:	5f                   	pop    %edi
40cd3e:	5b                   	pop    %ebx
40cd3f:	c9                   	leave
40cd40:	c2 10 00             	ret    $0x10
40cd43:	e8 02 a0 ff ff       	call   0x406d4a
40cd48:	cc                   	int3
40cd49:	8b ff                	mov    %edi,%edi
40cd4b:	55                   	push   %ebp
40cd4c:	8b ec                	mov    %esp,%ebp
40cd4e:	8b 45 08             	mov    0x8(%ebp),%eax
40cd51:	8b d1                	mov    %ecx,%edx
40cd53:	eb 0f                	jmp    0x40cd64
40cd55:	66 8b 08             	mov    (%eax),%cx
40cd58:	66 89 0a             	mov    %cx,(%edx)
40cd5b:	83 c2 02             	add    $0x2,%edx
40cd5e:	83 c0 02             	add    $0x2,%eax
40cd61:	89 45 08             	mov    %eax,0x8(%ebp)
40cd64:	3b 45 0c             	cmp    0xc(%ebp),%eax
40cd67:	75 ec                	jne    0x40cd55
40cd69:	8b c2                	mov    %edx,%eax
40cd6b:	5d                   	pop    %ebp
40cd6c:	c2 0c 00             	ret    $0xc
40cd6f:	8b ff                	mov    %edi,%edi
40cd71:	55                   	push   %ebp
40cd72:	8b ec                	mov    %esp,%ebp
40cd74:	83 ec 10             	sub    $0x10,%esp
40cd77:	53                   	push   %ebx
40cd78:	8b d9                	mov    %ecx,%ebx
40cd7a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cd7d:	56                   	push   %esi
40cd7e:	57                   	push   %edi
40cd7f:	8b fa                	mov    %edx,%edi
40cd81:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40cd84:	2b cb                	sub    %ebx,%ecx
40cd86:	2b fb                	sub    %ebx,%edi
40cd88:	d1 f9                	sar    $1,%ecx
40cd8a:	d1 ff                	sar    $1,%edi
40cd8c:	8b f1                	mov    %ecx,%esi
40cd8e:	74 78                	je     0x40ce08
40cd90:	8b df                	mov    %edi,%ebx
40cd92:	8b c6                	mov    %esi,%eax
40cd94:	8b f3                	mov    %ebx,%esi
40cd96:	99                   	cltd
40cd97:	f7 fb                	idiv   %ebx
40cd99:	8b da                	mov    %edx,%ebx
40cd9b:	85 d2                	test   %edx,%edx
40cd9d:	75 f3                	jne    0x40cd92
40cd9f:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40cda2:	89 75 f4             	mov    %esi,-0xc(%ebp)
40cda5:	3b f1                	cmp    %ecx,%esi
40cda7:	7d 5f                	jge    0x40ce08
40cda9:	85 f6                	test   %esi,%esi
40cdab:	7e 5b                	jle    0x40ce08
40cdad:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40cdb0:	8d 14 73             	lea    (%ebx,%esi,2),%edx
40cdb3:	8d 0c 02             	lea    (%edx,%eax,1),%ecx
40cdb6:	89 55 f8             	mov    %edx,-0x8(%ebp)
40cdb9:	3b 4d 08             	cmp    0x8(%ebp),%ecx
40cdbc:	75 03                	jne    0x40cdc1
40cdbe:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40cdc1:	0f b7 1a             	movzwl (%edx),%ebx
40cdc4:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40cdc7:	8b 75 f8             	mov    -0x8(%ebp),%esi
40cdca:	66 8b 01             	mov    (%ecx),%ax
40cdcd:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40cdd0:	66 89 06             	mov    %ax,(%esi)
40cdd3:	8b 75 fc             	mov    -0x4(%ebp),%esi
40cdd6:	66 89 19             	mov    %bx,(%ecx)
40cdd9:	8b 5d 08             	mov    0x8(%ebp),%ebx
40cddc:	2b d9                	sub    %ecx,%ebx
40cdde:	d1 fb                	sar    $1,%ebx
40cde0:	3b fb                	cmp    %ebx,%edi
40cde2:	7d 05                	jge    0x40cde9
40cde4:	8d 0c 79             	lea    (%ecx,%edi,2),%ecx
40cde7:	eb 07                	jmp    0x40cdf0
40cde9:	8b c7                	mov    %edi,%eax
40cdeb:	2b c3                	sub    %ebx,%eax
40cded:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40cdf0:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40cdf3:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40cdf6:	3b ca                	cmp    %edx,%ecx
40cdf8:	75 cd                	jne    0x40cdc7
40cdfa:	8b 75 f4             	mov    -0xc(%ebp),%esi
40cdfd:	83 ea 02             	sub    $0x2,%edx
40ce00:	4e                   	dec    %esi
40ce01:	89 75 f4             	mov    %esi,-0xc(%ebp)
40ce04:	85 f6                	test   %esi,%esi
40ce06:	7f ab                	jg     0x40cdb3
40ce08:	5f                   	pop    %edi
40ce09:	5e                   	pop    %esi
40ce0a:	5b                   	pop    %ebx
40ce0b:	c9                   	leave
40ce0c:	c2 0c 00             	ret    $0xc
40ce0f:	cc                   	int3
40ce10:	6a 29                	push   $0x29
40ce12:	e8 25 97 ff ff       	call   0x40653c
40ce17:	c3                   	ret
40ce18:	cc                   	int3
40ce19:	cc                   	int3
40ce1a:	cc                   	int3
40ce1b:	cc                   	int3
40ce1c:	cc                   	int3
40ce1d:	cc                   	int3
40ce1e:	cc                   	int3
40ce1f:	cc                   	int3
40ce20:	8b ff                	mov    %edi,%edi
40ce22:	56                   	push   %esi
40ce23:	8b f1                	mov    %ecx,%esi
40ce25:	6a 02                	push   $0x2
40ce27:	6a 02                	push   $0x2
40ce29:	8b 4e 08             	mov    0x8(%esi),%ecx
40ce2c:	e8 90 9d ff ff       	call   0x406bc1
40ce31:	8b 4e 08             	mov    0x8(%esi),%ecx
40ce34:	68 40 11 41 00       	push   $0x411140
40ce39:	e8 52 9c ff ff       	call   0x406a90
40ce3e:	8b 4e 08             	mov    0x8(%esi),%ecx
40ce41:	6a 01                	push   $0x1
40ce43:	e8 08 9c ff ff       	call   0x406a50
40ce48:	50                   	push   %eax
40ce49:	8d 4e 30             	lea    0x30(%esi),%ecx
40ce4c:	e8 50 96 ff ff       	call   0x4064a1
40ce51:	5e                   	pop    %esi
40ce52:	c3                   	ret
40ce53:	cc                   	int3
40ce54:	cc                   	int3
40ce55:	cc                   	int3
40ce56:	cc                   	int3
40ce57:	cc                   	int3
40ce58:	cc                   	int3
40ce59:	cc                   	int3
40ce5a:	cc                   	int3
40ce5b:	cc                   	int3
40ce5c:	cc                   	int3
40ce5d:	cc                   	int3
40ce5e:	cc                   	int3
40ce5f:	cc                   	int3
40ce60:	6a 2c                	push   $0x2c
40ce62:	b8 aa f4 40 00       	mov    $0x40f4aa,%eax
40ce67:	e8 e2 17 00 00       	call   0x40e64e
40ce6c:	8b d9                	mov    %ecx,%ebx
40ce6e:	6a 00                	push   $0x0
40ce70:	ff 15 1c 40 41 00    	call   *0x41401c
40ce76:	85 c0                	test   %eax,%eax
40ce78:	0f 88 55 02 00 00    	js     0x40d0d3
40ce7e:	a1 44 20 41 00       	mov    0x412044,%eax
40ce83:	33 c9                	xor    %ecx,%ecx
40ce85:	88 4d e0             	mov    %cl,-0x20(%ebp)
40ce88:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40ce8b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40ce8e:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40ce91:	8d 43 30             	lea    0x30(%ebx),%eax
40ce94:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40ce98:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40ce9c:	72 02                	jb     0x40cea0
40ce9e:	8b 00                	mov    (%eax),%eax
40cea0:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40cea3:	51                   	push   %ecx
40cea4:	50                   	push   %eax
40cea5:	e8 bf de ff ff       	call   0x40ad69
40ceaa:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40ceae:	8d 45 ec             	lea    -0x14(%ebp),%eax
40ceb1:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40ceb5:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40ceb8:	50                   	push   %eax
40ceb9:	e8 1d ad ff ff       	call   0x407bdb
40cebe:	85 c0                	test   %eax,%eax
40cec0:	79 07                	jns    0x40cec9
40cec2:	6a 07                	push   $0x7
40cec4:	e9 0c 02 00 00       	jmp    0x40d0d5
40cec9:	0f 85 fa 01 00 00    	jne    0x40d0c9