40b913:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40b916:	51                   	push   %ecx
40b917:	53                   	push   %ebx
40b918:	50                   	push   %eax
40b919:	8b 30                	mov    (%eax),%esi
40b91b:	8b 4e 1c             	mov    0x1c(%esi),%ecx
40b91e:	ff 15 10 22 41 00    	call   *0x412210
40b924:	ff 56 1c             	call   *0x1c(%esi)
40b927:	85 c0                	test   %eax,%eax
40b929:	79 0c                	jns    0x40b937
40b92b:	68 50 2e 40 00       	push   $0x402e50
40b930:	6a 0f                	push   $0xf
40b932:	e9 23 03 00 00       	jmp    0x40bc5a
40b937:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40b93a:	8d 45 e0             	lea    -0x20(%ebp),%eax
40b93d:	50                   	push   %eax
40b93e:	ba 58 42 40 00       	mov    $0x404258,%edx
40b943:	c7 45 cc 04 00 00 00 	movl   $0x4,-0x34(%ebp)
40b94a:	e8 f7 c2 ff ff       	call   0x407c46
40b94f:	85 c0                	test   %eax,%eax
40b951:	79 07                	jns    0x40b95a
40b953:	68 c0 2e 40 00       	push   $0x402ec0
40b958:	eb d6                	jmp    0x40b930
40b95a:	8b 45 e0             	mov    -0x20(%ebp),%eax
40b95d:	33 f6                	xor    %esi,%esi
40b95f:	89 45 c0             	mov    %eax,-0x40(%ebp)
40b962:	8d 45 c0             	lea    -0x40(%ebp),%eax
40b965:	50                   	push   %eax
40b966:	56                   	push   %esi
40b967:	53                   	push   %ebx
40b968:	6a 02                	push   $0x2
40b96a:	ff 75 08             	push   0x8(%ebp)
40b96d:	ff 15 14 20 41 00    	call   *0x412014
40b973:	85 c0                	test   %eax,%eax
40b975:	75 0a                	jne    0x40b981
40b977:	68 c0 2e 40 00       	push   $0x402ec0
40b97c:	e9 d1 02 00 00       	jmp    0x40bc52
40b981:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40b984:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b987:	50                   	push   %eax
40b988:	ba 68 42 40 00       	mov    $0x404268,%edx
40b98d:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
40b994:	e8 ad c2 ff ff       	call   0x407c46
40b999:	85 c0                	test   %eax,%eax
40b99b:	79 07                	jns    0x40b9a4
40b99d:	68 08 2f 40 00       	push   $0x402f08
40b9a2:	eb 8c                	jmp    0x40b930
40b9a4:	83 f8 01             	cmp    $0x1,%eax
40b9a7:	74 51                	je     0x40b9fa
40b9a9:	39 75 e8             	cmp    %esi,-0x18(%ebp)
40b9ac:	74 4c                	je     0x40b9fa
40b9ae:	ff 75 e8             	push   -0x18(%ebp)
40b9b1:	ff 15 04 40 41 00    	call   *0x414004
40b9b7:	85 c0                	test   %eax,%eax
40b9b9:	74 3f                	je     0x40b9fa
40b9bb:	6a ff                	push   $0xffffffff
40b9bd:	68 80 24 40 00       	push   $0x402480
40b9c2:	6a ff                	push   $0xffffffff
40b9c4:	ff 75 e8             	push   -0x18(%ebp)
40b9c7:	6a 01                	push   $0x1
40b9c9:	6a 7f                	push   $0x7f
40b9cb:	ff 15 f4 20 41 00    	call   *0x4120f4
40b9d1:	83 f8 02             	cmp    $0x2,%eax
40b9d4:	74 24                	je     0x40b9fa
40b9d6:	6a ff                	push   $0xffffffff
40b9d8:	68 8c 24 40 00       	push   $0x40248c
40b9dd:	6a ff                	push   $0xffffffff
40b9df:	ff 75 e8             	push   -0x18(%ebp)
40b9e2:	6a 01                	push   $0x1
40b9e4:	6a 7f                	push   $0x7f
40b9e6:	ff 15 f4 20 41 00    	call   *0x4120f4
40b9ec:	83 f8 02             	cmp    $0x2,%eax
40b9ef:	0f 85 6b 02 00 00    	jne    0x40bc60
40b9f5:	89 75 c0             	mov    %esi,-0x40(%ebp)
40b9f8:	eb 07                	jmp    0x40ba01
40b9fa:	c7 45 c0 01 00 00 00 	movl   $0x1,-0x40(%ebp)
40ba01:	8d 45 c0             	lea    -0x40(%ebp),%eax
40ba04:	50                   	push   %eax
40ba05:	56                   	push   %esi
40ba06:	53                   	push   %ebx
40ba07:	6a 03                	push   $0x3
40ba09:	ff 75 08             	push   0x8(%ebp)
40ba0c:	ff 15 14 20 41 00    	call   *0x412014
40ba12:	85 c0                	test   %eax,%eax
40ba14:	75 0a                	jne    0x40ba20
40ba16:	68 08 2f 40 00       	push   $0x402f08
40ba1b:	e9 32 02 00 00       	jmp    0x40bc52
40ba20:	8b 4f 08             	mov    0x8(%edi),%ecx
40ba23:	8d 45 d8             	lea    -0x28(%ebp),%eax
40ba26:	68 f0 40 40 00       	push   $0x4040f0
40ba2b:	68 3c 2c 40 00       	push   $0x402c3c
40ba30:	50                   	push   %eax
40ba31:	8b 71 08             	mov    0x8(%ecx),%esi
40ba34:	e8 4e 99 ff ff       	call   0x405387
40ba39:	39 30                	cmp    %esi,(%eax)
40ba3b:	74 23                	je     0x40ba60
40ba3d:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40ba41:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40ba44:	85 c0                	test   %eax,%eax
40ba46:	74 10                	je     0x40ba58
40ba48:	8b 08                	mov    (%eax),%ecx
40ba4a:	50                   	push   %eax
40ba4b:	8b 71 08             	mov    0x8(%ecx),%esi
40ba4e:	8b ce                	mov    %esi,%ecx
40ba50:	ff 15 10 22 41 00    	call   *0x412210
40ba56:	ff d6                	call   *%esi
40ba58:	33 f6                	xor    %esi,%esi
40ba5a:	56                   	push   %esi
40ba5b:	e9 c4 01 00 00       	jmp    0x40bc24
40ba60:	8b 4f 08             	mov    0x8(%edi),%ecx
40ba63:	33 c0                	xor    %eax,%eax
40ba65:	88 45 f3             	mov    %al,-0xd(%ebp)
40ba68:	8d 45 f3             	lea    -0xd(%ebp),%eax
40ba6b:	50                   	push   %eax
40ba6c:	68 7c 24 40 00       	push   $0x40247c
40ba71:	68 c4 40 40 00       	push   $0x4040c4
40ba76:	68 50 2f 40 00       	push   $0x402f50
40ba7b:	e8 ca ae ff ff       	call   0x40694a
40ba80:	ff 75 ec             	push   -0x14(%ebp)
40ba83:	8b f0                	mov    %eax,%esi
40ba85:	ff 15 0c 40 41 00    	call   *0x41400c
40ba8b:	56                   	push   %esi
40ba8c:	ff 15 08 40 41 00    	call   *0x414008
40ba92:	80 7d f3 00          	cmpb   $0x0,-0xd(%ebp)
40ba96:	89 45 ec             	mov    %eax,-0x14(%ebp)
40ba99:	75 51                	jne    0x40baec
40ba9b:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40ba9e:	8d 45 ec             	lea    -0x14(%ebp),%eax
40baa1:	be 50 2f 40 00       	mov    $0x402f50,%esi
40baa6:	50                   	push   %eax
40baa7:	8b d6                	mov    %esi,%edx
40baa9:	e8 98 c1 ff ff       	call   0x407c46
40baae:	85 c0                	test   %eax,%eax
40bab0:	79 06                	jns    0x40bab8
40bab2:	56                   	push   %esi
40bab3:	e9 78 fe ff ff       	jmp    0x40b930
40bab8:	0f 85 48 01 00 00    	jne    0x40bc06
40babe:	8b 45 ec             	mov    -0x14(%ebp),%eax
40bac1:	85 c0                	test   %eax,%eax
40bac3:	0f 84 d6 00 00 00    	je     0x40bb9f
40bac9:	50                   	push   %eax
40baca:	ff 15 04 40 41 00    	call   *0x414004
40bad0:	85 c0                	test   %eax,%eax
40bad2:	0f 84 c4 00 00 00    	je     0x40bb9c
40bad8:	8d 47 48             	lea    0x48(%edi),%eax
40badb:	50                   	push   %eax
40badc:	ff 75 ec             	push   -0x14(%ebp)
40badf:	ff 75 e0             	push   -0x20(%ebp)
40bae2:	e8 2d 0d 00 00       	call   0x40c814
40bae7:	e9 b0 00 00 00       	jmp    0x40bb9c
40baec:	80 7f 54 00          	cmpb   $0x0,0x54(%edi)
40baf0:	0f 85 a9 00 00 00    	jne    0x40bb9f
40baf6:	85 c0                	test   %eax,%eax
40baf8:	0f 84 a1 00 00 00    	je     0x40bb9f
40bafe:	50                   	push   %eax
40baff:	ff 15 04 40 41 00    	call   *0x414004
40bb05:	85 c0                	test   %eax,%eax
40bb07:	0f 84 8f 00 00 00    	je     0x40bb9c
40bb0d:	8b 4f 08             	mov    0x8(%edi),%ecx
40bb10:	8d 45 f3             	lea    -0xd(%ebp),%eax
40bb13:	50                   	push   %eax
40bb14:	68 88 2c 40 00       	push   $0x402c88
40bb19:	68 e8 40 40 00       	push   $0x4040e8
40bb1e:	68 cc 40 40 00       	push   $0x4040cc
40bb23:	e8 22 ae ff ff       	call   0x40694a
40bb28:	8b f0                	mov    %eax,%esi
40bb2a:	89 75 d8             	mov    %esi,-0x28(%ebp)
40bb2d:	85 f6                	test   %esi,%esi
40bb2f:	74 58                	je     0x40bb89
40bb31:	68 88 2c 40 00       	push   $0x402c88
40bb36:	56                   	push   %esi
40bb37:	ff 15 a0 21 41 00    	call   *0x4121a0
40bb3d:	59                   	pop    %ecx
40bb3e:	59                   	pop    %ecx
40bb3f:	85 c0                	test   %eax,%eax
40bb41:	74 46                	je     0x40bb89
40bb43:	8b ce                	mov    %esi,%ecx
40bb45:	33 f6                	xor    %esi,%esi
40bb47:	8d 51 02             	lea    0x2(%ecx),%edx
40bb4a:	66 8b 01             	mov    (%ecx),%ax
40bb4d:	83 c1 02             	add    $0x2,%ecx
40bb50:	66 3b c6             	cmp    %si,%ax
40bb53:	75 f5                	jne    0x40bb4a
40bb55:	8d 77 48             	lea    0x48(%edi),%esi
40bb58:	2b ca                	sub    %edx,%ecx
40bb5a:	ff 76 04             	push   0x4(%esi)
40bb5d:	d1 f9                	sar    $1,%ecx
40bb5f:	8d 45 d0             	lea    -0x30(%ebp),%eax
40bb62:	ff 36                	push   (%esi)
40bb64:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40bb67:	8b ce                	mov    %esi,%ecx
40bb69:	50                   	push   %eax
40bb6a:	e8 35 be ff ff       	call   0x4079a4
40bb6f:	8b 45 dc             	mov    -0x24(%ebp),%eax
40bb72:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40bb75:	40                   	inc    %eax
40bb76:	ff 75 d0             	push   -0x30(%ebp)
40bb79:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40bb7c:	50                   	push   %eax
40bb7d:	51                   	push   %ecx
40bb7e:	ff 36                	push   (%esi)
40bb80:	8b ce                	mov    %esi,%ecx
40bb82:	e8 c7 10 00 00       	call   0x40cc4e
40bb87:	eb 0f                	jmp    0x40bb98
40bb89:	8d 47 48             	lea    0x48(%edi),%eax
40bb8c:	50                   	push   %eax
40bb8d:	ff 75 ec             	push   -0x14(%ebp)
40bb90:	ff 75 e0             	push   -0x20(%ebp)
40bb93:	e8 7c 0c 00 00       	call   0x40c814
40bb98:	c6 47 54 01          	movb   $0x1,0x54(%edi)
40bb9c:	8b 45 ec             	mov    -0x14(%ebp),%eax
40bb9f:	6a 04                	push   $0x4
40bba1:	5e                   	pop    %esi
40bba2:	89 45 c0             	mov    %eax,-0x40(%ebp)
40bba5:	8d 45 c0             	lea    -0x40(%ebp),%eax
40bba8:	50                   	push   %eax
40bba9:	33 c0                	xor    %eax,%eax
40bbab:	89 75 cc             	mov    %esi,-0x34(%ebp)
40bbae:	50                   	push   %eax
40bbaf:	53                   	push   %ebx
40bbb0:	56                   	push   %esi
40bbb1:	ff 75 08             	push   0x8(%ebp)
40bbb4:	ff 15 14 20 41 00    	call   *0x412014
40bbba:	85 c0                	test   %eax,%eax
40bbbc:	75 0a                	jne    0x40bbc8
40bbbe:	68 50 2f 40 00       	push   $0x402f50
40bbc3:	e9 8a 00 00 00       	jmp    0x40bc52
40bbc8:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40bbcc:	89 75 cc             	mov    %esi,-0x34(%ebp)
40bbcf:	74 12                	je     0x40bbe3
40bbd1:	ff 75 ec             	push   -0x14(%ebp)
40bbd4:	ff 15 04 40 41 00    	call   *0x414004
40bbda:	85 c0                	test   %eax,%eax
40bbdc:	74 05                	je     0x40bbe3
40bbde:	8b 47 48             	mov    0x48(%edi),%eax
40bbe1:	eb 02                	jmp    0x40bbe5
40bbe3:	33 c0                	xor    %eax,%eax
40bbe5:	89 45 c0             	mov    %eax,-0x40(%ebp)
40bbe8:	8d 45 c0             	lea    -0x40(%ebp),%eax
40bbeb:	50                   	push   %eax
40bbec:	33 c0                	xor    %eax,%eax
40bbee:	50                   	push   %eax
40bbef:	53                   	push   %ebx
40bbf0:	6a 05                	push   $0x5
40bbf2:	ff 75 08             	push   0x8(%ebp)
40bbf5:	ff 15 14 20 41 00    	call   *0x412014
40bbfb:	85 c0                	test   %eax,%eax
40bbfd:	75 07                	jne    0x40bc06
40bbff:	68 cc 40 40 00       	push   $0x4040cc
40bc04:	eb 4c                	jmp    0x40bc52
40bc06:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
40bc0a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40bc0d:	85 c0                	test   %eax,%eax
40bc0f:	74 10                	je     0x40bc21
40bc11:	8b 08                	mov    (%eax),%ecx
40bc13:	50                   	push   %eax
40bc14:	8b 71 08             	mov    0x8(%ecx),%esi
40bc17:	8b ce                	mov    %esi,%ecx
40bc19:	ff 15 10 22 41 00    	call   *0x412210
40bc1f:	ff d6                	call   *%esi
40bc21:	33 c0                	xor    %eax,%eax
40bc23:	50                   	push   %eax
40bc24:	ff 15 0c 40 41 00    	call   *0x41400c
40bc2a:	ff 75 ec             	push   -0x14(%ebp)
40bc2d:	ff 15 0c 40 41 00    	call   *0x41400c
40bc33:	ff 75 e8             	push   -0x18(%ebp)
40bc36:	ff 15 0c 40 41 00    	call   *0x41400c
40bc3c:	ff 75 e0             	push   -0x20(%ebp)
40bc3f:	ff 15 0c 40 41 00    	call   *0x41400c
40bc45:	e8 d2 29 00 00       	call   0x40e61c
40bc4a:	c2 0c 00             	ret    $0xc
40bc4d:	68 50 2e 40 00       	push   $0x402e50
40bc52:	6a 0f                	push   $0xf
40bc54:	ff 15 70 20 41 00    	call   *0x412070
40bc5a:	50                   	push   %eax
40bc5b:	e8 b5 b9 ff ff       	call   0x407615
40bc60:	68 7c 42 40 00       	push   $0x40427c
40bc65:	ff 75 e8             	push   -0x18(%ebp)
40bc68:	6a 15                	push   $0x15
40bc6a:	6a 57                	push   $0x57
40bc6c:	e8 a4 b9 ff ff       	call   0x407615
40bc71:	cc                   	int3
40bc72:	6a 38                	push   $0x38
40bc74:	b8 81 f3 40 00       	mov    $0x40f381,%eax
40bc79:	e8 d0 29 00 00       	call   0x40e64e
40bc7e:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40bc81:	33 db                	xor    %ebx,%ebx
40bc83:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40bc86:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40bc89:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40bc8c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40bc8f:	8d 45 f0             	lea    -0x10(%ebp),%eax
40bc92:	50                   	push   %eax
40bc93:	ba 50 2e 40 00       	mov    $0x402e50,%edx
40bc98:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40bc9c:	e8 c2 be ff ff       	call   0x407b63
40bca1:	8b f8                	mov    %eax,%edi
40bca3:	85 ff                	test   %edi,%edi
40bca5:	74 13                	je     0x40bcba
40bca7:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40bcab:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40bcae:	85 c9                	test   %ecx,%ecx
40bcb0:	74 3e                	je     0x40bcf0
40bcb2:	8b 01                	mov    (%ecx),%eax
40bcb4:	51                   	push   %ecx
40bcb5:	8b 70 08             	mov    0x8(%eax),%esi
40bcb8:	eb 2c                	jmp    0x40bce6
40bcba:	8b 45 f0             	mov    -0x10(%ebp),%eax
40bcbd:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40bcc0:	51                   	push   %ecx
40bcc1:	68 1c 26 40 00       	push   $0x40261c
40bcc6:	50                   	push   %eax
40bcc7:	8b 30                	mov    (%eax),%esi
40bcc9:	8b 0e                	mov    (%esi),%ecx
40bccb:	ff 15 10 22 41 00    	call   *0x412210
40bcd1:	ff 16                	call   *(%esi)
40bcd3:	8b f8                	mov    %eax,%edi
40bcd5:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40bcd9:	8b 45 f0             	mov    -0x10(%ebp),%eax
40bcdc:	85 c0                	test   %eax,%eax
40bcde:	74 10                	je     0x40bcf0
40bce0:	8b 08                	mov    (%eax),%ecx
40bce2:	50                   	push   %eax
40bce3:	8b 71 08             	mov    0x8(%ecx),%esi
40bce6:	8b ce                	mov    %esi,%ecx
40bce8:	ff 15 10 22 41 00    	call   *0x412210
40bcee:	ff d6                	call   *%esi
40bcf0:	88 5d fc             	mov    %bl,-0x4(%ebp)
40bcf3:	83 ff 01             	cmp    $0x1,%edi
40bcf6:	75 26                	jne    0x40bd1e
40bcf8:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%ebp)
40bcff:	8b 45 e8             	mov    -0x18(%ebp),%eax
40bd02:	85 c0                	test   %eax,%eax
40bd04:	74 10                	je     0x40bd16
40bd06:	8b 08                	mov    (%eax),%ecx
40bd08:	50                   	push   %eax
40bd09:	8b 71 08             	mov    0x8(%ecx),%esi
40bd0c:	8b ce                	mov    %esi,%ecx
40bd0e:	ff 15 10 22 41 00    	call   *0x412210
40bd14:	ff d6                	call   *%esi
40bd16:	e8 01 29 00 00       	call   0x40e61c
40bd1b:	c2 08 00             	ret    $0x8
40bd1e:	85 ff                	test   %edi,%edi
40bd20:	0f 88 95 01 00 00    	js     0x40bebb
40bd26:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40bd29:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40bd2c:	89 5d c0             	mov    %ebx,-0x40(%ebp)
40bd2f:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40bd32:	8d 45 f0             	lea    -0x10(%ebp),%eax
40bd35:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)