40c98f:	8b 00                	mov    (%eax),%eax
40c991:	6a 02                	push   $0x2
40c993:	6a 03                	push   $0x3
40c995:	50                   	push   %eax
40c996:	ff 15 28 20 41 00    	call   *0x412028
40c99c:	8b f0                	mov    %eax,%esi
40c99e:	85 f6                	test   %esi,%esi
40c9a0:	75 17                	jne    0x40c9b9
40c9a2:	ff 15 70 20 41 00    	call   *0x412070
40c9a8:	6a 08                	push   $0x8
40c9aa:	e9 80 00 00 00       	jmp    0x40ca2f
40c9af:	6a 07                	push   $0x7
40c9b1:	5a                   	pop    %edx
40c9b2:	b9 57 00 07 80       	mov    $0x80070057,%ecx
40c9b7:	eb 79                	jmp    0x40ca32
40c9b9:	a1 30 20 41 00       	mov    0x412030,%eax
40c9be:	88 5d d8             	mov    %bl,-0x28(%ebp)
40c9c1:	89 45 dc             	mov    %eax,-0x24(%ebp)
40c9c4:	89 75 e0             	mov    %esi,-0x20(%ebp)
40c9c7:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40c9cb:	8b cf                	mov    %edi,%ecx
40c9cd:	ff 75 ec             	push   -0x14(%ebp)
40c9d0:	56                   	push   %esi
40c9d1:	e8 fb f4 ff ff       	call   0x40bed1
40c9d6:	53                   	push   %ebx
40c9d7:	56                   	push   %esi
40c9d8:	ff 15 08 20 41 00    	call   *0x412008
40c9de:	85 c0                	test   %eax,%eax
40c9e0:	75 18                	jne    0x40c9fa
40c9e2:	ff 15 70 20 41 00    	call   *0x412070
40c9e8:	b9 e8 3a 00 00       	mov    $0x3ae8,%ecx
40c9ed:	3b c1                	cmp    %ecx,%eax
40c9ef:	75 05                	jne    0x40c9f6
40c9f1:	6a 0a                	push   $0xa
40c9f3:	5a                   	pop    %edx
40c9f4:	eb 3c                	jmp    0x40ca32
40c9f6:	6a 09                	push   $0x9
40c9f8:	eb 35                	jmp    0x40ca2f
40c9fa:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c9fd:	e8 61 94 ff ff       	call   0x405e63
40ca02:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40ca06:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ca09:	85 c0                	test   %eax,%eax
40ca0b:	74 10                	je     0x40ca1d
40ca0d:	8b 08                	mov    (%eax),%ecx
40ca0f:	50                   	push   %eax
40ca10:	8b 71 08             	mov    0x8(%ecx),%esi
40ca13:	8b ce                	mov    %esi,%ecx
40ca15:	ff 15 10 22 41 00    	call   *0x412210
40ca1b:	ff d6                	call   *%esi
40ca1d:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40ca21:	ff 15 44 20 41 00    	call   *0x412044
40ca27:	e8 f0 1b 00 00       	call   0x40e61c
40ca2c:	c3                   	ret
40ca2d:	6a 06                	push   $0x6
40ca2f:	5a                   	pop    %edx
40ca30:	8b c8                	mov    %eax,%ecx
40ca32:	e8 ac ab ff ff       	call   0x4075e3
40ca37:	cc                   	int3
40ca38:	80 39 00             	cmpb   $0x0,(%ecx)
40ca3b:	75 0f                	jne    0x40ca4c
40ca3d:	56                   	push   %esi
40ca3e:	8b 71 04             	mov    0x4(%ecx),%esi
40ca41:	8b ce                	mov    %esi,%ecx
40ca43:	ff 15 10 22 41 00    	call   *0x412210
40ca49:	ff d6                	call   *%esi
40ca4b:	5e                   	pop    %esi
40ca4c:	c3                   	ret
40ca4d:	80 39 00             	cmpb   $0x0,(%ecx)
40ca50:	57                   	push   %edi
40ca51:	8d 79 08             	lea    0x8(%ecx),%edi
40ca54:	75 10                	jne    0x40ca66
40ca56:	56                   	push   %esi
40ca57:	8b 71 04             	mov    0x4(%ecx),%esi
40ca5a:	8b ce                	mov    %esi,%ecx
40ca5c:	57                   	push   %edi
40ca5d:	ff 15 10 22 41 00    	call   *0x412210
40ca63:	ff d6                	call   *%esi
40ca65:	5e                   	pop    %esi
40ca66:	8b cf                	mov    %edi,%ecx
40ca68:	5f                   	pop    %edi
40ca69:	e9 a9 94 ff ff       	jmp    0x405f17
40ca6e:	6a 08                	push   $0x8
40ca70:	b8 34 f4 40 00       	mov    $0x40f434,%eax
40ca75:	e8 3d 1c 00 00       	call   0x40e6b7
40ca7a:	8b f1                	mov    %ecx,%esi
40ca7c:	89 75 ec             	mov    %esi,-0x14(%ebp)
40ca7f:	8b 45 08             	mov    0x8(%ebp),%eax
40ca82:	33 ff                	xor    %edi,%edi
40ca84:	89 3e                	mov    %edi,(%esi)
40ca86:	89 7e 04             	mov    %edi,0x4(%esi)
40ca89:	89 7e 08             	mov    %edi,0x8(%esi)
40ca8c:	8b 58 04             	mov    0x4(%eax),%ebx
40ca8f:	2b 18                	sub    (%eax),%ebx
40ca91:	d1 fb                	sar    $1,%ebx
40ca93:	74 31                	je     0x40cac6
40ca95:	81 fb ff ff ff 7f    	cmp    $0x7fffffff,%ebx
40ca9b:	77 44                	ja     0x40cae1
40ca9d:	53                   	push   %ebx
40ca9e:	e8 23 98 ff ff       	call   0x4062c6
40caa3:	8b c8                	mov    %eax,%ecx
40caa5:	89 7d fc             	mov    %edi,-0x4(%ebp)
40caa8:	ff 75 ec             	push   -0x14(%ebp)
40caab:	89 0e                	mov    %ecx,(%esi)
40caad:	89 4e 04             	mov    %ecx,0x4(%esi)
40cab0:	8d 04 59             	lea    (%ecx,%ebx,2),%eax
40cab3:	89 46 08             	mov    %eax,0x8(%esi)
40cab6:	8b 45 08             	mov    0x8(%ebp),%eax
40cab9:	ff 70 04             	push   0x4(%eax)
40cabc:	ff 30                	push   (%eax)
40cabe:	e8 86 02 00 00       	call   0x40cd49
40cac3:	89 46 04             	mov    %eax,0x4(%esi)
40cac6:	8b c6                	mov    %esi,%eax
40cac8:	e8 4f 1b 00 00       	call   0x40e61c
40cacd:	c2 04 00             	ret    $0x4
40cad0:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40cad3:	e8 3f 94 ff ff       	call   0x405f17
40cad8:	33 ff                	xor    %edi,%edi
40cada:	57                   	push   %edi
40cadb:	57                   	push   %edi
40cadc:	e8 35 1b 00 00       	call   0x40e616
40cae1:	e8 64 a2 ff ff       	call   0x406d4a
40cae6:	cc                   	int3
40cae7:	8b 51 04             	mov    0x4(%ecx),%edx
40caea:	56                   	push   %esi
40caeb:	8b 71 08             	mov    0x8(%ecx),%esi
40caee:	8b c6                	mov    %esi,%eax
40caf0:	2b c2                	sub    %edx,%eax
40caf2:	c1 f8 02             	sar    $0x2,%eax
40caf5:	83 f8 01             	cmp    $0x1,%eax
40caf8:	73 3b                	jae    0x40cb35
40cafa:	2b 11                	sub    (%ecx),%edx
40cafc:	53                   	push   %ebx
40cafd:	57                   	push   %edi
40cafe:	bf ff ff ff 3f       	mov    $0x3fffffff,%edi
40cb03:	c1 fa 02             	sar    $0x2,%edx
40cb06:	8b c7                	mov    %edi,%eax
40cb08:	2b c2                	sub    %edx,%eax
40cb0a:	83 f8 01             	cmp    $0x1,%eax
40cb0d:	72 2a                	jb     0x40cb39
40cb0f:	2b 31                	sub    (%ecx),%esi
40cb11:	8d 5a 01             	lea    0x1(%edx),%ebx
40cb14:	c1 fe 02             	sar    $0x2,%esi
40cb17:	8b c6                	mov    %esi,%eax
40cb19:	d1 e8                	shr    $1,%eax
40cb1b:	2b f8                	sub    %eax,%edi
40cb1d:	03 c6                	add    %esi,%eax
40cb1f:	3b fe                	cmp    %esi,%edi
40cb21:	1b d2                	sbb    %edx,%edx
40cb23:	f7 d2                	not    %edx
40cb25:	23 d0                	and    %eax,%edx
40cb27:	3b d3                	cmp    %ebx,%edx
40cb29:	73 02                	jae    0x40cb2d
40cb2b:	8b d3                	mov    %ebx,%edx
40cb2d:	52                   	push   %edx
40cb2e:	e8 0c 00 00 00       	call   0x40cb3f
40cb33:	5f                   	pop    %edi
40cb34:	5b                   	pop    %ebx
40cb35:	5e                   	pop    %esi
40cb36:	c2 04 00             	ret    $0x4
40cb39:	e8 0c a2 ff ff       	call   0x406d4a
40cb3e:	cc                   	int3
40cb3f:	8b ff                	mov    %edi,%edi
40cb41:	55                   	push   %ebp
40cb42:	8b ec                	mov    %esp,%ebp
40cb44:	51                   	push   %ecx
40cb45:	53                   	push   %ebx
40cb46:	8b 5d 08             	mov    0x8(%ebp),%ebx
40cb49:	56                   	push   %esi
40cb4a:	33 f6                	xor    %esi,%esi
40cb4c:	57                   	push   %edi
40cb4d:	8b f9                	mov    %ecx,%edi
40cb4f:	85 db                	test   %ebx,%ebx
40cb51:	74 1a                	je     0x40cb6d
40cb53:	81 fb ff ff ff 3f    	cmp    $0x3fffffff,%ebx
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