40ab62:	cc                   	int3
40ab63:	cc                   	int3
40ab64:	cc                   	int3
40ab65:	cc                   	int3
40ab66:	cc                   	int3
40ab67:	cc                   	int3
40ab68:	cc                   	int3
40ab69:	cc                   	int3
40ab6a:	cc                   	int3
40ab6b:	cc                   	int3
40ab6c:	cc                   	int3
40ab6d:	cc                   	int3
40ab6e:	cc                   	int3
40ab6f:	cc                   	int3
40ab70:	8b ff                	mov    %edi,%edi
40ab72:	55                   	push   %ebp
40ab73:	8b ec                	mov    %esp,%ebp
40ab75:	8b 45 08             	mov    0x8(%ebp),%eax
40ab78:	8b 08                	mov    (%eax),%ecx
40ab7a:	8b 40 04             	mov    0x4(%eax),%eax
40ab7d:	2b c1                	sub    %ecx,%eax
40ab7f:	d1 f8                	sar    $1,%eax
40ab81:	74 0d                	je     0x40ab90
40ab83:	03 c0                	add    %eax,%eax
40ab85:	74 09                	je     0x40ab90
40ab87:	c6 01 00             	movb   $0x0,(%ecx)
40ab8a:	41                   	inc    %ecx
40ab8b:	83 e8 01             	sub    $0x1,%eax
40ab8e:	75 f7                	jne    0x40ab87
40ab90:	5d                   	pop    %ebp
40ab91:	c2 04 00             	ret    $0x4
40ab94:	8b ff                	mov    %edi,%edi
40ab96:	56                   	push   %esi
40ab97:	57                   	push   %edi
40ab98:	8b f9                	mov    %ecx,%edi
40ab9a:	8d 77 48             	lea    0x48(%edi),%esi
40ab9d:	c7 07 bc 15 40 00    	movl   $0x4015bc,(%edi)
40aba3:	56                   	push   %esi
40aba4:	e8 c7 ff ff ff       	call   0x40ab70
40aba9:	8b ce                	mov    %esi,%ecx
40abab:	e8 67 b3 ff ff       	call   0x405f17
40abb0:	6a 00                	push   $0x0
40abb2:	6a 01                	push   $0x1
40abb4:	8d 4f 30             	lea    0x30(%edi),%ecx
40abb7:	e8 34 b9 ff ff       	call   0x4064f0
40abbc:	6a 00                	push   $0x0
40abbe:	6a 01                	push   $0x1
40abc0:	8d 4f 18             	lea    0x18(%edi),%ecx
40abc3:	e8 28 b9 ff ff       	call   0x4064f0
40abc8:	8b cf                	mov    %edi,%ecx
40abca:	5f                   	pop    %edi
40abcb:	5e                   	pop    %esi
40abcc:	e9 c1 a9 ff ff       	jmp    0x405592
40abd1:	cc                   	int3
40abd2:	cc                   	int3
40abd3:	cc                   	int3
40abd4:	cc                   	int3
40abd5:	cc                   	int3
40abd6:	cc                   	int3
40abd7:	cc                   	int3
40abd8:	cc                   	int3
40abd9:	cc                   	int3
40abda:	cc                   	int3
40abdb:	cc                   	int3
40abdc:	cc                   	int3
40abdd:	cc                   	int3
40abde:	cc                   	int3
40abdf:	cc                   	int3
40abe0:	8b ff                	mov    %edi,%edi
40abe2:	56                   	push   %esi
40abe3:	6a 2f                	push   $0x2f
40abe5:	8b f1                	mov    %ecx,%esi
40abe7:	e8 50 b9 ff ff       	call   0x40653c
40abec:	6a 30                	push   $0x30
40abee:	8b ce                	mov    %esi,%ecx
40abf0:	e8 47 b9 ff ff       	call   0x40653c
40abf5:	5e                   	pop    %esi
40abf6:	c3                   	ret
40abf7:	cc                   	int3
40abf8:	cc                   	int3
40abf9:	cc                   	int3
40abfa:	cc                   	int3
40abfb:	cc                   	int3
40abfc:	cc                   	int3
40abfd:	cc                   	int3
40abfe:	cc                   	int3
40abff:	cc                   	int3
40ac00:	8b ff                	mov    %edi,%edi
40ac02:	55                   	push   %ebp
40ac03:	8b ec                	mov    %esp,%ebp
40ac05:	51                   	push   %ecx
40ac06:	51                   	push   %ecx
40ac07:	53                   	push   %ebx
40ac08:	56                   	push   %esi
40ac09:	57                   	push   %edi
40ac0a:	8b f9                	mov    %ecx,%edi
40ac0c:	68 30 10 41 00       	push   $0x411030
40ac11:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac14:	e8 77 be ff ff       	call   0x406a90
40ac19:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac1c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ac1f:	68 b0 41 40 00       	push   $0x4041b0
40ac24:	bb 30 40 40 00       	mov    $0x404030,%ebx
40ac29:	53                   	push   %ebx
40ac2a:	8b 71 08             	mov    0x8(%ecx),%esi
40ac2d:	50                   	push   %eax
40ac2e:	e8 54 a7 ff ff       	call   0x405387
40ac33:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac36:	39 30                	cmp    %esi,(%eax)
40ac38:	74 31                	je     0x40ac6b
40ac3a:	68 10 10 41 00       	push   $0x411010
40ac3f:	e8 4c be ff ff       	call   0x406a90
40ac44:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac47:	6a 01                	push   $0x1
40ac49:	6a 01                	push   $0x1
40ac4b:	e8 71 bf ff ff       	call   0x406bc1
40ac50:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac53:	8d 45 ff             	lea    -0x1(%ebp),%eax
40ac56:	50                   	push   %eax
40ac57:	68 7c 24 40 00       	push   $0x40247c
40ac5c:	68 b0 41 40 00       	push   $0x4041b0
40ac61:	53                   	push   %ebx
40ac62:	e8 e3 bc ff ff       	call   0x40694a
40ac67:	6a 30                	push   $0x30
40ac69:	eb 15                	jmp    0x40ac80
40ac6b:	6a 02                	push   $0x2
40ac6d:	6a 02                	push   $0x2
40ac6f:	e8 4d bf ff ff       	call   0x406bc1
40ac74:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac77:	6a 01                	push   $0x1
40ac79:	e8 d2 bd ff ff       	call   0x406a50
40ac7e:	6a 18                	push   $0x18
40ac80:	59                   	pop    %ecx
40ac81:	50                   	push   %eax
40ac82:	03 cf                	add    %edi,%ecx
40ac84:	e8 18 b8 ff ff       	call   0x4064a1
40ac89:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac8c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ac8f:	68 cc 3f 40 00       	push   $0x403fcc
40ac94:	68 c0 2e 40 00       	push   $0x402ec0
40ac99:	50                   	push   %eax
40ac9a:	8b 71 08             	mov    0x8(%ecx),%esi
40ac9d:	e8 e5 a6 ff ff       	call   0x405387
40aca2:	39 30                	cmp    %esi,(%eax)
40aca4:	0f 85 ae 00 00 00    	jne    0x40ad58
40acaa:	8b 4f 08             	mov    0x8(%edi),%ecx
40acad:	8d 45 f8             	lea    -0x8(%ebp),%eax
40acb0:	68 40 40 40 00       	push   $0x404040
40acb5:	53                   	push   %ebx
40acb6:	50                   	push   %eax
40acb7:	8b 71 08             	mov    0x8(%ecx),%esi
40acba:	e8 c8 a6 ff ff       	call   0x405387
40acbf:	39 30                	cmp    %esi,(%eax)
40acc1:	0f 85 91 00 00 00    	jne    0x40ad58
40acc7:	8b 4f 08             	mov    0x8(%edi),%ecx
40acca:	8d 45 f8             	lea    -0x8(%ebp),%eax
40accd:	68 d4 3f 40 00       	push   $0x403fd4
40acd2:	68 08 2f 40 00       	push   $0x402f08
40acd7:	50                   	push   %eax
40acd8:	8b 71 08             	mov    0x8(%ecx),%esi
40acdb:	e8 a7 a6 ff ff       	call   0x405387
40ace0:	39 30                	cmp    %esi,(%eax)
40ace2:	75 79                	jne    0x40ad5d
40ace4:	8b 4f 08             	mov    0x8(%edi),%ecx
40ace7:	8d 45 f8             	lea    -0x8(%ebp),%eax
40acea:	68 fc 3f 40 00       	push   $0x403ffc
40acef:	68 dc 3f 40 00       	push   $0x403fdc
40acf4:	50                   	push   %eax
40acf5:	8b 71 08             	mov    0x8(%ecx),%esi
40acf8:	e8 8a a6 ff ff       	call   0x405387
40acfd:	39 30                	cmp    %esi,(%eax)
40acff:	75 5c                	jne    0x40ad5d
40ad01:	8b 4f 08             	mov    0x8(%edi),%ecx
40ad04:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ad07:	68 28 40 40 00       	push   $0x404028
40ad0c:	68 04 40 40 00       	push   $0x404004
40ad11:	50                   	push   %eax
40ad12:	8b 71 08             	mov    0x8(%ecx),%esi
40ad15:	e8 6d a6 ff ff       	call   0x405387
40ad1a:	39 30                	cmp    %esi,(%eax)
40ad1c:	75 3f                	jne    0x40ad5d
40ad1e:	8b 4f 08             	mov    0x8(%edi),%ecx
40ad21:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ad24:	68 c4 40 40 00       	push   $0x4040c4
40ad29:	68 50 2f 40 00       	push   $0x402f50
40ad2e:	50                   	push   %eax
40ad2f:	8b 71 08             	mov    0x8(%ecx),%esi
40ad32:	e8 50 a6 ff ff       	call   0x405387
40ad37:	39 30                	cmp    %esi,(%eax)
40ad39:	75 22                	jne    0x40ad5d
40ad3b:	8b 4f 08             	mov    0x8(%edi),%ecx
40ad3e:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ad41:	68 e8 40 40 00       	push   $0x4040e8
40ad46:	68 cc 40 40 00       	push   $0x4040cc
40ad4b:	50                   	push   %eax
40ad4c:	8b 71 08             	mov    0x8(%ecx),%esi
40ad4f:	e8 33 a6 ff ff       	call   0x405387
40ad54:	39 30                	cmp    %esi,(%eax)
40ad56:	75 05                	jne    0x40ad5d
40ad58:	5f                   	pop    %edi
40ad59:	5e                   	pop    %esi
40ad5a:	5b                   	pop    %ebx
40ad5b:	c9                   	leave
40ad5c:	c3                   	ret
40ad5d:	6a 21                	push   $0x21
40ad5f:	5a                   	pop    %edx
40ad60:	6a 57                	push   $0x57
40ad62:	59                   	pop    %ecx
40ad63:	e8 7b c8 ff ff       	call   0x4075e3
40ad68:	cc                   	int3
40ad69:	6a 18                	push   $0x18
40ad6b:	b8 82 f1 40 00       	mov    $0x40f182,%eax
40ad70:	e8 d9 38 00 00       	call   0x40e64e
40ad75:	33 db                	xor    %ebx,%ebx
40ad77:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40ad7a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40ad7d:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40ad80:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40ad83:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40ad86:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ad89:	8d 55 dc             	lea    -0x24(%ebp),%edx
40ad8c:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40ad90:	e8 25 28 00 00       	call   0x40d5ba
40ad95:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40ad98:	8d 55 e8             	lea    -0x18(%ebp),%edx
40ad9b:	e8 d4 cc ff ff       	call   0x407a74
40ada0:	85 c0                	test   %eax,%eax
40ada2:	0f 88 52 01 00 00    	js     0x40aefa
40ada8:	0f 85 48 01 00 00    	jne    0x40aef6
40adae:	8b 75 e8             	mov    -0x18(%ebp),%esi
40adb1:	ff 75 0c             	push   0xc(%ebp)
40adb4:	56                   	push   %esi
40adb5:	8b 06                	mov    (%esi),%eax
40adb7:	8b b8 b4 00 00 00    	mov    0xb4(%eax),%edi
40adbd:	8b cf                	mov    %edi,%ecx
40adbf:	ff 15 10 22 41 00    	call   *0x412210
40adc5:	ff d7                	call   *%edi
40adc7:	85 c0                	test   %eax,%eax
40adc9:	0f 88 36 01 00 00    	js     0x40af05
40adcf:	0f 85 21 01 00 00    	jne    0x40aef6
40add5:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40add8:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40addb:	8b 45 0c             	mov    0xc(%ebp),%eax
40adde:	8d 55 ec             	lea    -0x14(%ebp),%edx
40ade1:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40ade5:	52                   	push   %edx
40ade6:	8b 00                	mov    (%eax),%eax
40ade8:	50                   	push   %eax
40ade9:	8b 08                	mov    (%eax),%ecx
40adeb:	8b 79 1c             	mov    0x1c(%ecx),%edi
40adee:	8b cf                	mov    %edi,%ecx
40adf0:	ff 15 10 22 41 00    	call   *0x412210
40adf6:	ff d7                	call   *%edi
40adf8:	85 c0                	test   %eax,%eax
40adfa:	79 07                	jns    0x40ae03
40adfc:	6a 03                	push   $0x3
40adfe:	e9 04 01 00 00       	jmp    0x40af07
40ae03:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ae06:	b9 b4 41 40 00       	mov    $0x4041b4,%ecx
40ae0b:	66 8b 10             	mov    (%eax),%dx
40ae0e:	66 3b 11             	cmp    (%ecx),%dx
40ae11:	75 1e                	jne    0x40ae31
40ae13:	66 85 d2             	test   %dx,%dx
40ae16:	74 15                	je     0x40ae2d
40ae18:	66 8b 50 02          	mov    0x2(%eax),%dx
40ae1c:	66 3b 51 02          	cmp    0x2(%ecx),%dx
40ae20:	75 0f                	jne    0x40ae31
40ae22:	83 c0 04             	add    $0x4,%eax
40ae25:	83 c1 04             	add    $0x4,%ecx
40ae28:	66 85 d2             	test   %dx,%dx
40ae2b:	75 de                	jne    0x40ae0b
40ae2d:	8b c3                	mov    %ebx,%eax
40ae2f:	eb 05                	jmp    0x40ae36
40ae31:	1b c0                	sbb    %eax,%eax
40ae33:	83 c8 01             	or     $0x1,%eax
40ae36:	85 c0                	test   %eax,%eax
40ae38:	0f 85 ae 00 00 00    	jne    0x40aeec
40ae3e:	8b 45 0c             	mov    0xc(%ebp),%eax
40ae41:	8d 55 f0             	lea    -0x10(%ebp),%edx
40ae44:	52                   	push   %edx
40ae45:	8b 00                	mov    (%eax),%eax
40ae47:	50                   	push   %eax
40ae48:	8b 08                	mov    (%eax),%ecx
40ae4a:	8b b9 9c 00 00 00    	mov    0x9c(%ecx),%edi
40ae50:	8b cf                	mov    %edi,%ecx
40ae52:	ff 15 10 22 41 00    	call   *0x412210
40ae58:	ff d7                	call   *%edi
40ae5a:	85 c0                	test   %eax,%eax
40ae5c:	78 9e                	js     0x40adfc
40ae5e:	83 f8 01             	cmp    $0x1,%eax
40ae61:	0f 84 85 00 00 00    	je     0x40aeec
40ae67:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40ae6b:	74 7f                	je     0x40aeec
40ae6d:	ff 75 f0             	push   -0x10(%ebp)
40ae70:	ff 15 04 40 41 00    	call   *0x414004
40ae76:	85 c0                	test   %eax,%eax
40ae78:	74 72                	je     0x40aeec
40ae7a:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ae7d:	b9 d0 41 40 00       	mov    $0x4041d0,%ecx
40ae82:	6a 04                	push   $0x4
40ae84:	5f                   	pop    %edi
40ae85:	66 8b 10             	mov    (%eax),%dx
40ae88:	66 3b 11             	cmp    (%ecx),%dx
40ae8b:	75 1a                	jne    0x40aea7
40ae8d:	66 85 d2             	test   %dx,%dx
40ae90:	74 1a                	je     0x40aeac
40ae92:	66 8b 50 02          	mov    0x2(%eax),%dx
40ae96:	66 3b 51 02          	cmp    0x2(%ecx),%dx
40ae9a:	75 0b                	jne    0x40aea7
40ae9c:	03 c7                	add    %edi,%eax
40ae9e:	03 cf                	add    %edi,%ecx
40aea0:	66 85 d2             	test   %dx,%dx
40aea3:	75 e0                	jne    0x40ae85
40aea5:	eb 05                	jmp    0x40aeac
40aea7:	1b db                	sbb    %ebx,%ebx
40aea9:	83 cb 01             	or     $0x1,%ebx
40aeac:	85 db                	test   %ebx,%ebx
40aeae:	75 3c                	jne    0x40aeec
40aeb0:	ff 75 f0             	push   -0x10(%ebp)
40aeb3:	ff 15 0c 40 41 00    	call   *0x41400c
40aeb9:	ff 75 ec             	push   -0x14(%ebp)
40aebc:	ff 15 0c 40 41 00    	call   *0x41400c
40aec2:	39 5d dc             	cmp    %ebx,-0x24(%ebp)
40aec5:	74 0a                	je     0x40aed1
40aec7:	ff 75 dc             	push   -0x24(%ebp)
40aeca:	ff 15 e4 21 41 00    	call   *0x4121e4
40aed0:	59                   	pop    %ecx
40aed1:	89 7d fc             	mov    %edi,-0x4(%ebp)
40aed4:	8b 06                	mov    (%esi),%eax
40aed6:	56                   	push   %esi
40aed7:	8b 70 08             	mov    0x8(%eax),%esi
40aeda:	8b ce                	mov    %esi,%ecx
40aedc:	ff 15 10 22 41 00    	call   *0x412210
40aee2:	ff d6                	call   *%esi
40aee4:	e8 33 37 00 00       	call   0x40e61c
40aee9:	c2 08 00             	ret    $0x8
40aeec:	6a 24                	push   $0x24
40aeee:	5a                   	pop    %edx
40aeef:	b9 57 00 07 80       	mov    $0x80070057,%ecx
40aef4:	eb 14                	jmp    0x40af0a
40aef6:	6a 04                	push   $0x4
40aef8:	eb f4                	jmp    0x40aeee
40aefa:	ff 75 08             	push   0x8(%ebp)
40aefd:	6a 03                	push   $0x3
40aeff:	50                   	push   %eax
40af00:	e8 10 c7 ff ff       	call   0x407615
40af05:	6a 04                	push   $0x4
40af07:	5a                   	pop    %edx
40af08:	8b c8                	mov    %eax,%ecx
40af0a:	e8 d4 c6 ff ff       	call   0x4075e3