40bb70:	33 d2                	xor    %edx,%edx
40bb72:	8b c7                	mov    %edi,%eax
40bb74:	25 00 00 02 00       	and    $0x20000,%eax
40bb79:	0b c2                	or     %edx,%eax
40bb7b:	74 19                	je     0x40bb96
40bb7d:	83 7e cc 0a          	cmpl   $0xa,-0x34(%esi)
40bb81:	0f 85 56 ff ff ff    	jne    0x40badd
40bb87:	33 c0                	xor    %eax,%eax
40bb89:	40                   	inc    %eax
40bb8a:	39 45 f8             	cmp    %eax,-0x8(%ebp)
40bb8d:	0f 84 4a ff ff ff    	je     0x40badd
40bb93:	89 45 f8             	mov    %eax,-0x8(%ebp)
40bb96:	0b da                	or     %edx,%ebx
40bb98:	74 13                	je     0x40bbad
40bb9a:	8b 45 f0             	mov    -0x10(%ebp),%eax
40bb9d:	83 38 ff             	cmpl   $0xffffffff,(%eax)
40bba0:	0f 85 37 ff ff ff    	jne    0x40badd
40bba6:	8b 55 fc             	mov    -0x4(%ebp),%edx
40bba9:	89 10                	mov    %edx,(%eax)
40bbab:	33 d2                	xor    %edx,%edx
40bbad:	bb 00 00 06 00       	mov    $0x60000,%ebx
40bbb2:	8b c7                	mov    %edi,%eax
40bbb4:	23 c3                	and    %ebx,%eax
40bbb6:	3b c3                	cmp    %ebx,%eax
40bbb8:	0f 84 1f ff ff ff    	je     0x40badd
40bbbe:	8b 46 cc             	mov    -0x34(%esi),%eax
40bbc1:	48                   	dec    %eax
40bbc2:	83 f8 09             	cmp    $0x9,%eax
40bbc5:	0f 87 12 ff ff ff    	ja     0x40badd
40bbcb:	ff 24 85 62 bd 40 00 	jmp    *0x40bd62(,%eax,4)
40bbd2:	8b df                	mov    %edi,%ebx
40bbd4:	81 e3 00 00 01 00    	and    $0x10000,%ebx
40bbda:	8b c3                	mov    %ebx,%eax
40bbdc:	0b c2                	or     %edx,%eax
40bbde:	74 29                	je     0x40bc09
40bbe0:	8b c7                	mov    %edi,%eax
40bbe2:	83 e0 01             	and    $0x1,%eax
40bbe5:	0b c2                	or     %edx,%eax
40bbe7:	0f 85 f0 fe ff ff    	jne    0x40badd
40bbed:	39 56 f0             	cmp    %edx,-0x10(%esi)
40bbf0:	0f 85 e7 fe ff ff    	jne    0x40badd
40bbf6:	39 46 f4             	cmp    %eax,-0xc(%esi)
40bbf9:	74 0a                	je     0x40bc05
40bbfb:	83 7e f4 02          	cmpl   $0x2,-0xc(%esi)
40bbff:	0f 82 d8 fe ff ff    	jb     0x40badd
40bc05:	33 c9                	xor    %ecx,%ecx
40bc07:	eb 2f                	jmp    0x40bc38
40bc09:	83 7e f0 00          	cmpl   $0x0,-0x10(%esi)
40bc0d:	0f 84 ca fe ff ff    	je     0x40badd
40bc13:	8b d7                	mov    %edi,%edx
40bc15:	33 c9                	xor    %ecx,%ecx
40bc17:	83 e2 01             	and    $0x1,%edx
40bc1a:	8b c2                	mov    %edx,%eax
40bc1c:	0b c1                	or     %ecx,%eax
40bc1e:	74 18                	je     0x40bc38
40bc20:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40bc23:	8b 4e f0             	mov    -0x10(%esi),%ecx
40bc26:	8b 09                	mov    (%ecx),%ecx
40bc28:	e8 3d ce ff ff       	call   0x408a6a
40bc2d:	85 c0                	test   %eax,%eax
40bc2f:	0f 84 a8 fe ff ff    	je     0x40badd
40bc35:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40bc38:	8b c7                	mov    %edi,%eax
40bc3a:	83 e0 02             	and    $0x2,%eax
40bc3d:	83 c8 00             	or     $0x0,%eax
40bc40:	74 0a                	je     0x40bc4c
40bc42:	83 7e ec 00          	cmpl   $0x0,-0x14(%esi)
40bc46:	0f 84 91 fe ff ff    	je     0x40badd
40bc4c:	0b d1                	or     %ecx,%edx
40bc4e:	0f 85 cf 00 00 00    	jne    0x40bd23
40bc54:	83 7e dc 01          	cmpl   $0x1,-0x24(%esi)
40bc58:	0f 85 7f fe ff ff    	jne    0x40badd
40bc5e:	83 e7 20             	and    $0x20,%edi
40bc61:	0b fa                	or     %edx,%edi
40bc63:	0f 85 74 fe ff ff    	jne    0x40badd
40bc69:	0b da                	or     %edx,%ebx
40bc6b:	0f 85 b4 00 00 00    	jne    0x40bd25
40bc71:	83 7e f4 02          	cmpl   $0x2,-0xc(%esi)
40bc75:	0f 82 62 fe ff ff    	jb     0x40badd
40bc7b:	e9 a5 00 00 00       	jmp    0x40bd25
40bc80:	8b c7                	mov    %edi,%eax
40bc82:	83 e0 02             	and    $0x2,%eax
40bc85:	0b c2                	or     %edx,%eax
40bc87:	0f 85 b3 00 00 00    	jne    0x40bd40
40bc8d:	8b c7                	mov    %edi,%eax
40bc8f:	25 40 00 01 00       	and    $0x10040,%eax
40bc94:	0b c2                	or     %edx,%eax
40bc96:	0f 85 41 fe ff ff    	jne    0x40badd
40bc9c:	8b c7                	mov    %edi,%eax
40bc9e:	25 80 00 00 00       	and    $0x80,%eax
40bca3:	0b c2                	or     %edx,%eax
40bca5:	0f 85 32 fe ff ff    	jne    0x40badd
40bcab:	8b 4e f0             	mov    -0x10(%esi),%ecx
40bcae:	85 c9                	test   %ecx,%ecx
40bcb0:	0f 84 27 fe ff ff    	je     0x40badd
40bcb6:	8b c7                	mov    %edi,%eax
40bcb8:	83 e0 01             	and    $0x1,%eax
40bcbb:	0b c2                	or     %edx,%eax
40bcbd:	74 11                	je     0x40bcd0
40bcbf:	8b 09                	mov    (%ecx),%ecx
40bcc1:	e8 a4 cd ff ff       	call   0x408a6a
40bcc6:	85 c0                	test   %eax,%eax
40bcc8:	0f 84 0f fe ff ff    	je     0x40badd
40bcce:	eb 55                	jmp    0x40bd25
40bcd0:	83 7e dc 01          	cmpl   $0x1,-0x24(%esi)
40bcd4:	0f 87 03 fe ff ff    	ja     0x40badd
40bcda:	83 e7 20             	and    $0x20,%edi
40bcdd:	0b fa                	or     %edx,%edi
40bcdf:	0f 85 f8 fd ff ff    	jne    0x40badd
40bce5:	eb 3e                	jmp    0x40bd25
40bce7:	39 56 f8             	cmp    %edx,-0x8(%esi)
40bcea:	0f 84 ed fd ff ff    	je     0x40badd
40bcf0:	39 56 fc             	cmp    %edx,-0x4(%esi)
40bcf3:	75 30                	jne    0x40bd25
40bcf5:	8d 46 c4             	lea    -0x3c(%esi),%eax
40bcf8:	89 46 fc             	mov    %eax,-0x4(%esi)
40bcfb:	eb 28                	jmp    0x40bd25
40bcfd:	8b c7                	mov    %edi,%eax
40bcff:	83 e0 0f             	and    $0xf,%eax
40bd02:	0b c2                	or     %edx,%eax
40bd04:	0f 85 d3 fd ff ff    	jne    0x40badd
40bd0a:	8b c7                	mov    %edi,%eax
40bd0c:	25 f0 ff 00 00       	and    $0xfff0,%eax
40bd11:	0b c2                	or     %edx,%eax
40bd13:	0f 85 c4 fd ff ff    	jne    0x40badd
40bd19:	81 e7 ff ff ed ff    	and    $0xffedffff,%edi
40bd1f:	0b f9                	or     %ecx,%edi
40bd21:	eb bc                	jmp    0x40bcdf
40bd23:	33 d2                	xor    %edx,%edx
40bd25:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40bd28:	41                   	inc    %ecx
40bd29:	89 56 e0             	mov    %edx,-0x20(%esi)
40bd2c:	83 c6 50             	add    $0x50,%esi
40bd2f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40bd32:	83 f9 0b             	cmp    $0xb,%ecx
40bd35:	0f 82 c4 fd ff ff    	jb     0x40baff
40bd3b:	33 c0                	xor    %eax,%eax
40bd3d:	40                   	inc    %eax
40bd3e:	eb 1b                	jmp    0x40bd5b
40bd40:	6a 78                	push   $0x78
40bd42:	eb 0f                	jmp    0x40bd53
40bd44:	ff 15 48 20 41 00    	call   *0x412048
40bd4a:	85 c0                	test   %eax,%eax
40bd4c:	75 0b                	jne    0x40bd59
40bd4e:	68 2b 04 00 00       	push   $0x42b
40bd53:	ff 15 74 20 41 00    	call   *0x412074
40bd59:	33 c0                	xor    %eax,%eax
40bd5b:	5f                   	pop    %edi
40bd5c:	5e                   	pop    %esi
40bd5d:	5b                   	pop    %ebx
40bd5e:	c9                   	leave
40bd5f:	c2 04 00             	ret    $0x4
40bd62:	d2 bb 40 00 80 bc    	sarb   %cl,-0x437fffc0(%ebx)
40bd68:	40                   	inc    %eax
40bd69:	00 80 bc 40 00 40    	add    %al,0x400040bc(%eax)
40bd6f:	bd 40 00 40 bd       	mov    $0xbd400040,%ebp
40bd74:	40                   	inc    %eax
40bd75:	00 40 bd             	add    %al,-0x43(%eax)
40bd78:	40                   	inc    %eax
40bd79:	00 80 bc 40 00 80    	add    %al,-0x7fffbf44(%eax)
40bd7f:	bc 40 00 e7 bc       	mov    $0xbce70040,%esp
40bd84:	40                   	inc    %eax
40bd85:	00 fd                	add    %bh,%ch
40bd87:	bc 40 00 8b ff       	mov    $0xff8b0040,%esp
40bd8c:	55                   	push   %ebp
40bd8d:	8b ec                	mov    %esp,%ebp
40bd8f:	83 ec 40             	sub    $0x40,%esp
40bd92:	d9 ee                	fldz
40bd94:	83 65 d0 00          	andl   $0x0,-0x30(%ebp)
40bd98:	53                   	push   %ebx
40bd99:	56                   	push   %esi
40bd9a:	d9 5d e4             	fstps  -0x1c(%ebp)
40bd9d:	d9 ee                	fldz
40bd9f:	8b da                	mov    %edx,%ebx
40bda1:	33 d2                	xor    %edx,%edx
40bda3:	8b f1                	mov    %ecx,%esi
40bda5:	57                   	push   %edi
40bda6:	52                   	push   %edx
40bda7:	dd 5d c4             	fstpl  -0x3c(%ebp)
40bdaa:	89 55 e0             	mov    %edx,-0x20(%ebp)
40bdad:	ff 15 74 20 41 00    	call   *0x412074
40bdb3:	8b 45 08             	mov    0x8(%ebp),%eax
40bdb6:	85 c0                	test   %eax,%eax
40bdb8:	74 7a                	je     0x40be34
40bdba:	8b 50 0c             	mov    0xc(%eax),%edx
40bdbd:	8b 40 08             	mov    0x8(%eax),%eax
40bdc0:	89 55 e8             	mov    %edx,-0x18(%ebp)
40bdc3:	89 45 f4             	mov    %eax,-0xc(%ebp)
40bdc6:	85 d2                	test   %edx,%edx
40bdc8:	74 6a                	je     0x40be34
40bdca:	85 c0                	test   %eax,%eax
40bdcc:	74 66                	je     0x40be34
40bdce:	8b 42 14             	mov    0x14(%edx),%eax
40bdd1:	8b 4a 2c             	mov    0x2c(%edx),%ecx
40bdd4:	8b 7a 10             	mov    0x10(%edx),%edi
40bdd7:	89 45 d8             	mov    %eax,-0x28(%ebp)
40bdda:	8b 42 30             	mov    0x30(%edx),%eax
40bddd:	89 45 f0             	mov    %eax,-0x10(%ebp)
40bde0:	8b 42 28             	mov    0x28(%edx),%eax
40bde3:	89 45 d8             	mov    %eax,-0x28(%ebp)
40bde6:	8b 42 08             	mov    0x8(%edx),%eax
40bde9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40bdec:	89 45 ec             	mov    %eax,-0x14(%ebp)
40bdef:	83 f8 0a             	cmp    $0xa,%eax
40bdf2:	74 31                	je     0x40be25
40bdf4:	85 db                	test   %ebx,%ebx
40bdf6:	75 2d                	jne    0x40be25
40bdf8:	8b c7                	mov    %edi,%eax
40bdfa:	83 e0 10             	and    $0x10,%eax
40bdfd:	0b c3                	or     %ebx,%eax
40bdff:	75 21                	jne    0x40be22
40be01:	85 f6                	test   %esi,%esi
40be03:	0f 84 95 04 00 00    	je     0x40c29e
40be09:	56                   	push   %esi
40be0a:	ff 15 d4 20 41 00    	call   *0x4120d4
40be10:	85 c0                	test   %eax,%eax
40be12:	0f 84 86 04 00 00    	je     0x40c29e
40be18:	b9 eb 15 00 00       	mov    $0x15eb,%ecx
40be1d:	e9 66 04 00 00       	jmp    0x40c288
40be22:	8b 45 ec             	mov    -0x14(%ebp),%eax
40be25:	85 f6                	test   %esi,%esi
40be27:	75 2b                	jne    0x40be54
40be29:	8b c7                	mov    %edi,%eax
40be2b:	25 00 00 04 00       	and    $0x40000,%eax
40be30:	0b c6                	or     %esi,%eax
40be32:	75 2d                	jne    0x40be61
40be34:	ff 15 48 20 41 00    	call   *0x412048
40be3a:	85 c0                	test   %eax,%eax
40be3c:	75 08                	jne    0x40be46
40be3e:	6a 57                	push   $0x57
40be40:	ff 15 74 20 41 00    	call   *0x412074
40be46:	e8 a9 d9 ff ff       	call   0x4097f4
40be4b:	33 c0                	xor    %eax,%eax
40be4d:	5f                   	pop    %edi
40be4e:	5e                   	pop    %esi
40be4f:	5b                   	pop    %ebx
40be50:	c9                   	leave
40be51:	c2 04 00             	ret    $0x4
40be54:	83 7a 24 00          	cmpl   $0x0,0x24(%edx)
40be58:	74 0d                	je     0x40be67
40be5a:	83 f8 09             	cmp    $0x9,%eax
40be5d:	74 08                	je     0x40be67
40be5f:	eb 03                	jmp    0x40be64
40be61:	8b 45 ec             	mov    -0x14(%ebp),%eax
40be64:	8b 72 24             	mov    0x24(%edx),%esi
40be67:	48                   	dec    %eax
40be68:	83 f8 09             	cmp    $0x9,%eax
40be6b:	77 c7                	ja     0x40be34
40be6d:	ff 24 85 d6 c2 40 00 	jmp    *0x40c2d6(,%eax,4)
40be74:	85 db                	test   %ebx,%ebx
40be76:	74 43                	je     0x40bebb
40be78:	8b c7                	mov    %edi,%eax
40be7a:	83 e0 42             	and    $0x42,%eax
40be7d:	83 c8 00             	or     $0x0,%eax
40be80:	74 39                	je     0x40bebb
40be82:	6a 00                	push   $0x0
40be84:	6a 00                	push   $0x0
40be86:	6a 0a                	push   $0xa
40be88:	8b d3                	mov    %ebx,%edx
40be8a:	59                   	pop    %ecx
40be8b:	e8 13 d7 ff ff       	call   0x4095a3
40be90:	85 c0                	test   %eax,%eax
40be92:	75 0e                	jne    0x40bea2
40be94:	ff 15 48 20 41 00    	call   *0x412048
40be9a:	85 c0                	test   %eax,%eax
40be9c:	75 a8                	jne    0x40be46
40be9e:	6a 08                	push   $0x8
40bea0:	eb 9e                	jmp    0x40be40
40bea2:	51                   	push   %ecx
40bea3:	ba 60 18 40 00       	mov    $0x401860,%edx
40bea8:	8b c8                	mov    %eax,%ecx
40beaa:	e8 33 e1 ff ff       	call   0x409fe2
40beaf:	8b d8                	mov    %eax,%ebx
40beb1:	ff 15 48 20 41 00    	call   *0x412048
40beb7:	85 c0                	test   %eax,%eax
40beb9:	75 8b                	jne    0x40be46
40bebb:	8b c7                	mov    %edi,%eax
40bebd:	83 e0 02             	and    $0x2,%eax
40bec0:	83 c8 00             	or     $0x0,%eax
40bec3:	74 54                	je     0x40bf19
40bec5:	85 db                	test   %ebx,%ebx
40bec7:	0f 84 5d 02 00 00    	je     0x40c12a
40becd:	8b 55 d8             	mov    -0x28(%ebp),%edx
40bed0:	8b cb                	mov    %ebx,%ecx
40bed2:	6a 01                	push   $0x1
40bed4:	e8 0f df ff ff       	call   0x409de8
40bed9:	85 c0                	test   %eax,%eax
40bedb:	75 3c                	jne    0x40bf19
40bedd:	85 f6                	test   %esi,%esi
40bedf:	74 2a                	je     0x40bf0b
40bee1:	56                   	push   %esi
40bee2:	ff 15 d4 20 41 00    	call   *0x4120d4
40bee8:	85 c0                	test   %eax,%eax
40beea:	74 1f                	je     0x40bf0b
40beec:	ff 75 f4             	push   -0xc(%ebp)
40beef:	b9 e1 15 00 00       	mov    $0x15e1,%ecx
40bef4:	56                   	push   %esi
40bef5:	53                   	push   %ebx
40bef6:	e8 56 db ff ff       	call   0x409a51
40befb:	50                   	push   %eax
40befc:	6a 03                	push   $0x3
40befe:	e8 68 d8 ff ff       	call   0x40976b
40bf03:	83 c4 14             	add    $0x14,%esp
40bf06:	e9 ad 03 00 00       	jmp    0x40c2b8
40bf0b:	ff 75 f4             	push   -0xc(%ebp)
40bf0e:	b9 ec 15 00 00       	mov    $0x15ec,%ecx
40bf13:	53                   	push   %ebx
40bf14:	e9 73 03 00 00       	jmp    0x40c28c
40bf19:	85 db                	test   %ebx,%ebx
40bf1b:	0f 84 09 02 00 00    	je     0x40c12a
40bf21:	8b c7                	mov    %edi,%eax
40bf23:	25 80 00 00 00       	and    $0x80,%eax
40bf28:	83 c8 00             	or     $0x0,%eax
40bf2b:	74 2e                	je     0x40bf5b
40bf2d:	53                   	push   %ebx
40bf2e:	ff 15 d4 20 41 00    	call   *0x4120d4
40bf34:	85 c0                	test   %eax,%eax
40bf36:	75 23                	jne    0x40bf5b
40bf38:	85 f6                	test   %esi,%esi
40bf3a:	74 15                	je     0x40bf51
40bf3c:	56                   	push   %esi
40bf3d:	ff 15 d4 20 41 00    	call   *0x4120d4
40bf43:	85 c0                	test   %eax,%eax
40bf45:	74 0a                	je     0x40bf51
40bf47:	b9 ee 15 00 00       	mov    $0x15ee,%ecx
40bf4c:	e9 37 03 00 00       	jmp    0x40c288
40bf51:	b9 ef 15 00 00       	mov    $0x15ef,%ecx
40bf56:	e9 23 02 00 00       	jmp    0x40c17e
40bf5b:	8b c7                	mov    %edi,%eax
40bf5d:	83 e0 01             	and    $0x1,%eax
40bf60:	83 c8 00             	or     $0x0,%eax
40bf63:	74 45                	je     0x40bfaa
40bf65:	8b 75 e8             	mov    -0x18(%ebp),%esi
40bf68:	8b 46 10             	mov    0x10(%esi),%eax
40bf6b:	8b 75 f8             	mov    -0x8(%ebp),%esi
40bf6e:	25 00 40 00 00       	and    $0x4000,%eax
40bf73:	83 c8 00             	or     $0x0,%eax
40bf76:	74 1a                	je     0x40bf92
40bf78:	8b 0e                	mov    (%esi),%ecx
40bf7a:	ba 00 00 02 00       	mov    $0x20000,%edx
40bf7f:	6a 00                	push   $0x0
40bf81:	6a 01                	push   $0x1
40bf83:	53                   	push   %ebx
40bf84:	e8 98 c9 ff ff       	call   0x408921
40bf89:	83 f8 ff             	cmp    $0xffffffff,%eax
40bf8c:	0f 85 98 01 00 00    	jne    0x40c12a
40bf92:	51                   	push   %ecx
40bf93:	8b 0e                	mov    (%esi),%ecx
40bf95:	8b d3                	mov    %ebx,%edx
40bf97:	e8 63 cb ff ff       	call   0x408aff