406df7:	8b 44 24 0c          	mov    0xc(%esp),%eax
406dfb:	8d 54 24 10          	lea    0x10(%esp),%edx
406dff:	52                   	push   %edx
406e00:	8b 54 24 08          	mov    0x8(%esp),%edx
406e04:	50                   	push   %eax
406e05:	6a 00                	push   $0x0
406e07:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
406e0b:	8b 4c 24 14          	mov    0x14(%esp),%ecx
406e0f:	6a 00                	push   $0x0
406e11:	51                   	push   %ecx
406e12:	52                   	push   %edx
406e13:	ff 15 b4 33 47 00    	call   *0x4733b4
406e19:	c3                   	ret
406e1a:	cc                   	int3
406e1b:	cc                   	int3
406e1c:	cc                   	int3
406e1d:	cc                   	int3
406e1e:	cc                   	int3
406e1f:	cc                   	int3
406e20:	8b 54 24 0c          	mov    0xc(%esp),%edx
406e24:	85 d2                	test   %edx,%edx
406e26:	74 33                	je     0x406e5b
406e28:	8b c2                	mov    %edx,%eax
406e2a:	56                   	push   %esi
406e2b:	8d 70 02             	lea    0x2(%eax),%esi
406e2e:	8b ff                	mov    %edi,%edi
406e30:	66 8b 08             	mov    (%eax),%cx
406e33:	83 c0 02             	add    $0x2,%eax
406e36:	66 85 c9             	test   %cx,%cx
406e39:	75 f5                	jne    0x406e30
406e3b:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
406e3f:	2b c6                	sub    %esi,%eax
406e41:	d1 f8                	sar    $1,%eax
406e43:	8d 44 00 02          	lea    0x2(%eax,%eax,1),%eax
406e47:	50                   	push   %eax
406e48:	52                   	push   %edx
406e49:	8b 54 24 10          	mov    0x10(%esp),%edx
406e4d:	6a 01                	push   $0x1
406e4f:	6a 00                	push   $0x0
406e51:	51                   	push   %ecx
406e52:	52                   	push   %edx
406e53:	ff 15 b8 33 47 00    	call   *0x4733b8
406e59:	5e                   	pop    %esi
406e5a:	c3                   	ret
406e5b:	8b 44 24 08          	mov    0x8(%esp),%eax
406e5f:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406e63:	50                   	push   %eax
406e64:	51                   	push   %ecx
406e65:	ff 15 b0 33 47 00    	call   *0x4733b0
406e6b:	c3                   	ret
406e6c:	cc                   	int3
406e6d:	cc                   	int3
406e6e:	cc                   	int3
406e6f:	cc                   	int3
406e70:	81 ec 08 02 00 00    	sub    $0x208,%esp
406e76:	53                   	push   %ebx
406e77:	56                   	push   %esi
406e78:	57                   	push   %edi
406e79:	8b bc 24 1c 02 00 00 	mov    0x21c(%esp),%edi
406e80:	57                   	push   %edi
406e81:	68 d4 c9 45 00       	push   $0x45c9d4
406e86:	8d 44 24 14          	lea    0x14(%esp),%eax
406e8a:	68 04 01 00 00       	push   $0x104
406e8f:	50                   	push   %eax
406e90:	e8 ca 97 02 00       	call   0x43065f
406e95:	8d 44 24 1c          	lea    0x1c(%esp),%eax
406e99:	83 c4 10             	add    $0x10,%esp
406e9c:	8d 50 02             	lea    0x2(%eax),%edx
406e9f:	90                   	nop
406ea0:	66 8b 08             	mov    (%eax),%cx
406ea3:	83 c0 02             	add    $0x2,%eax
406ea6:	66 85 c9             	test   %cx,%cx
406ea9:	75 f5                	jne    0x406ea0
406eab:	8b b4 24 20 02 00 00 	mov    0x220(%esp),%esi
406eb2:	2b c2                	sub    %edx,%eax
406eb4:	d1 f8                	sar    $1,%eax
406eb6:	6a 00                	push   $0x0
406eb8:	b9 04 01 00 00       	mov    $0x104,%ecx
406ebd:	2b c8                	sub    %eax,%ecx
406ebf:	51                   	push   %ecx
406ec0:	8d 54 44 14          	lea    0x14(%esp,%eax,2),%edx
406ec4:	52                   	push   %edx
406ec5:	56                   	push   %esi
406ec6:	e8 95 ee ff ff       	call   0x405d60
406ecb:	8b 9c 24 28 02 00 00 	mov    0x228(%esp),%ebx
406ed2:	83 c4 10             	add    $0x10,%esp
406ed5:	85 c0                	test   %eax,%eax
406ed7:	74 12                	je     0x406eeb
406ed9:	8d 44 24 0c          	lea    0xc(%esp),%eax
406edd:	53                   	push   %ebx
406ede:	50                   	push   %eax
406edf:	e8 bc f0 ff ff       	call   0x405fa0
406ee4:	83 c4 08             	add    $0x8,%esp
406ee7:	85 c0                	test   %eax,%eax
406ee9:	75 64                	jne    0x406f4f
406eeb:	57                   	push   %edi
406eec:	68 d4 c9 45 00       	push   $0x45c9d4
406ef1:	8d 4c 24 14          	lea    0x14(%esp),%ecx
406ef5:	68 04 01 00 00       	push   $0x104
406efa:	51                   	push   %ecx
406efb:	e8 5f 97 02 00       	call   0x43065f
406f00:	8d 44 24 1c          	lea    0x1c(%esp),%eax
406f04:	83 c4 10             	add    $0x10,%esp
406f07:	8d 50 02             	lea    0x2(%eax),%edx
406f0a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
406f10:	66 8b 08             	mov    (%eax),%cx
406f13:	83 c0 02             	add    $0x2,%eax
406f16:	66 85 c9             	test   %cx,%cx
406f19:	75 f5                	jne    0x406f10
406f1b:	2b c2                	sub    %edx,%eax
406f1d:	d1 f8                	sar    $1,%eax
406f1f:	6a 01                	push   $0x1
406f21:	ba 04 01 00 00       	mov    $0x104,%edx
406f26:	2b d0                	sub    %eax,%edx
406f28:	52                   	push   %edx
406f29:	8d 44 44 14          	lea    0x14(%esp,%eax,2),%eax
406f2d:	50                   	push   %eax
406f2e:	56                   	push   %esi
406f2f:	e8 2c ee ff ff       	call   0x405d60
406f34:	83 c4 10             	add    $0x10,%esp
406f37:	85 c0                	test   %eax,%eax
406f39:	74 12                	je     0x406f4d
406f3b:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
406f3f:	53                   	push   %ebx
406f40:	51                   	push   %ecx
406f41:	e8 5a f0 ff ff       	call   0x405fa0
406f46:	83 c4 08             	add    $0x8,%esp
406f49:	85 c0                	test   %eax,%eax
406f4b:	75 02                	jne    0x406f4f
406f4d:	33 c0                	xor    %eax,%eax
406f4f:	5f                   	pop    %edi
406f50:	5e                   	pop    %esi
406f51:	5b                   	pop    %ebx
406f52:	81 c4 08 02 00 00    	add    $0x208,%esp
406f58:	c3                   	ret
406f59:	cc                   	int3
406f5a:	cc                   	int3
406f5b:	cc                   	int3
406f5c:	cc                   	int3
406f5d:	cc                   	int3
406f5e:	cc                   	int3
406f5f:	cc                   	int3
406f60:	8b 44 24 04          	mov    0x4(%esp),%eax
406f64:	85 c0                	test   %eax,%eax
406f66:	75 01                	jne    0x406f69
406f68:	c3                   	ret
406f69:	56                   	push   %esi
406f6a:	8b 70 0c             	mov    0xc(%eax),%esi
406f6d:	85 f6                	test   %esi,%esi
406f6f:	74 2a                	je     0x406f9b
406f71:	8b 46 04             	mov    0x4(%esi),%eax
406f74:	68 e8 be 45 00       	push   $0x45bee8
406f79:	50                   	push   %eax
406f7a:	e8 18 c6 02 00       	call   0x433597
406f7f:	83 c4 08             	add    $0x8,%esp
406f82:	85 c0                	test   %eax,%eax
406f84:	74 0a                	je     0x406f90
406f86:	8b 36                	mov    (%esi),%esi
406f88:	85 f6                	test   %esi,%esi
406f8a:	75 e5                	jne    0x406f71
406f8c:	33 c0                	xor    %eax,%eax
406f8e:	5e                   	pop    %esi
406f8f:	c3                   	ret
406f90:	85 f6                	test   %esi,%esi
406f92:	74 07                	je     0x406f9b
406f94:	8b 76 08             	mov    0x8(%esi),%esi
406f97:	85 f6                	test   %esi,%esi
406f99:	75 04                	jne    0x406f9f
406f9b:	33 c0                	xor    %eax,%eax
406f9d:	5e                   	pop    %esi
406f9e:	c3                   	ret
406f9f:	56                   	push   %esi
406fa0:	e8 80 9b 02 00       	call   0x430b25
406fa5:	83 c4 04             	add    $0x4,%esp
406fa8:	c1 e8 04             	shr    $0x4,%eax
406fab:	83 e0 01             	and    $0x1,%eax
406fae:	5e                   	pop    %esi
406faf:	c3                   	ret
406fb0:	81 ec 10 04 00 00    	sub    $0x410,%esp
406fb6:	53                   	push   %ebx
406fb7:	8b 9c 24 1c 04 00 00 	mov    0x41c(%esp),%ebx
406fbe:	68 04 01 00 00       	push   $0x104
406fc3:	8d 44 24 08          	lea    0x8(%esp),%eax
406fc7:	50                   	push   %eax
406fc8:	53                   	push   %ebx
406fc9:	e8 d2 ab ff ff       	call   0x401ba0
406fce:	83 c4 0c             	add    $0xc,%esp
406fd1:	85 c0                	test   %eax,%eax
406fd3:	74 0a                	je     0x406fdf
406fd5:	33 c0                	xor    %eax,%eax
406fd7:	5b                   	pop    %ebx
406fd8:	81 c4 10 04 00 00    	add    $0x410,%esp
406fde:	c3                   	ret
406fdf:	56                   	push   %esi
406fe0:	8d 4c 24 08          	lea    0x8(%esp),%ecx
406fe4:	57                   	push   %edi
406fe5:	51                   	push   %ecx
406fe6:	e8 75 b6 ff ff       	call   0x402660
406feb:	8b b4 24 24 04 00 00 	mov    0x424(%esp),%esi
406ff2:	8d 54 24 10          	lea    0x10(%esp),%edx
406ff6:	56                   	push   %esi
406ff7:	52                   	push   %edx
406ff8:	e8 a3 ef ff ff       	call   0x405fa0
406ffd:	8b f8                	mov    %eax,%edi
406fff:	83 c4 0c             	add    $0xc,%esp
407002:	85 ff                	test   %edi,%edi
407004:	74 0d                	je     0x407013
407006:	57                   	push   %edi
407007:	e8 54 ff ff ff       	call   0x406f60
40700c:	83 c4 04             	add    $0x4,%esp
40700f:	85 c0                	test   %eax,%eax
407011:	74 2d                	je     0x407040
407013:	68 04 01 00 00       	push   $0x104
407018:	8d 84 24 18 02 00 00 	lea    0x218(%esp),%eax
40701f:	50                   	push   %eax
407020:	53                   	push   %ebx
407021:	e8 5a ab ff ff       	call   0x401b80
407026:	8d 8c 24 20 02 00 00 	lea    0x220(%esp),%ecx
40702d:	51                   	push   %ecx
40702e:	8d 54 24 1c          	lea    0x1c(%esp),%edx
407032:	52                   	push   %edx
407033:	56                   	push   %esi
407034:	e8 37 fe ff ff       	call   0x406e70
407039:	83 c4 18             	add    $0x18,%esp
40703c:	85 c0                	test   %eax,%eax
40703e:	75 02                	jne    0x407042
407040:	8b c7                	mov    %edi,%eax
407042:	5f                   	pop    %edi
407043:	5e                   	pop    %esi
407044:	5b                   	pop    %ebx
407045:	81 c4 10 04 00 00    	add    $0x410,%esp
40704b:	c3                   	ret
40704c:	cc                   	int3
40704d:	cc                   	int3
40704e:	cc                   	int3
40704f:	cc                   	int3
407050:	51                   	push   %ecx
407051:	8b 44 24 08          	mov    0x8(%esp),%eax
407055:	55                   	push   %ebp
407056:	56                   	push   %esi
407057:	57                   	push   %edi
407058:	50                   	push   %eax
407059:	e8 3a 12 04 00       	call   0x448298
40705e:	8b e8                	mov    %eax,%ebp
407060:	55                   	push   %ebp
407061:	e8 fa b5 ff ff       	call   0x402660
407066:	8b 4c 24 20          	mov    0x20(%esp),%ecx
40706a:	51                   	push   %ecx
40706b:	e8 50 b6 ff ff       	call   0x4026c0
407070:	50                   	push   %eax
407071:	e8 22 12 04 00       	call   0x448298
407076:	8b f0                	mov    %eax,%esi
407078:	56                   	push   %esi
407079:	89 74 24 20          	mov    %esi,0x20(%esp)
40707d:	e8 de b5 ff ff       	call   0x402660
407082:	56                   	push   %esi
407083:	55                   	push   %ebp
407084:	e8 da 9c 02 00       	call   0x430d63
407089:	8b f8                	mov    %eax,%edi
40708b:	83 c4 1c             	add    $0x1c,%esp
40708e:	85 ff                	test   %edi,%edi
407090:	0f 84 a0 00 00 00    	je     0x407136
407096:	53                   	push   %ebx
407097:	8b 5c 24 20          	mov    0x20(%esp),%ebx
40709b:	eb 03                	jmp    0x4070a0
40709d:	8d 49 00             	lea    0x0(%ecx),%ecx
4070a0:	8b c6                	mov    %esi,%eax
4070a2:	8d 50 02             	lea    0x2(%eax),%edx
4070a5:	66 8b 08             	mov    (%eax),%cx
4070a8:	83 c0 02             	add    $0x2,%eax
4070ab:	66 85 c9             	test   %cx,%cx
4070ae:	75 f5                	jne    0x4070a5
4070b0:	2b c2                	sub    %edx,%eax
4070b2:	d1 f8                	sar    $1,%eax
4070b4:	0f b7 04 47          	movzwl (%edi,%eax,2),%eax
4070b8:	66 3b c3             	cmp    %bx,%ax
4070bb:	74 05                	je     0x4070c2
4070bd:	66 85 c0             	test   %ax,%ax
4070c0:	75 17                	jne    0x4070d9
4070c2:	3b fd                	cmp    %ebp,%edi
4070c4:	74 28                	je     0x4070ee
4070c6:	0f b7 47 fe          	movzwl -0x2(%edi),%eax
4070ca:	66 3b c3             	cmp    %bx,%ax
4070cd:	74 1f                	je     0x4070ee
4070cf:	83 f8 5c             	cmp    $0x5c,%eax
4070d2:	74 1a                	je     0x4070ee
4070d4:	83 f8 2f             	cmp    $0x2f,%eax
4070d7:	74 15                	je     0x4070ee
4070d9:	56                   	push   %esi
4070da:	83 c7 02             	add    $0x2,%edi
4070dd:	57                   	push   %edi
4070de:	e8 80 9c 02 00       	call   0x430d63
4070e3:	8b f8                	mov    %eax,%edi
4070e5:	83 c4 08             	add    $0x8,%esp
4070e8:	85 ff                	test   %edi,%edi
4070ea:	75 b4                	jne    0x4070a0
4070ec:	eb 47                	jmp    0x407135
4070ee:	53                   	push   %ebx
4070ef:	55                   	push   %ebp
4070f0:	8b f5                	mov    %ebp,%esi
4070f2:	e8 c4 9d 02 00       	call   0x430ebb
4070f7:	83 c4 08             	add    $0x8,%esp
4070fa:	85 c0                	test   %eax,%eax
4070fc:	74 28                	je     0x407126
4070fe:	8b ff                	mov    %edi,%edi
407100:	53                   	push   %ebx
407101:	56                   	push   %esi
407102:	e8 b4 9d 02 00       	call   0x430ebb
407107:	83 c4 08             	add    $0x8,%esp
40710a:	3b c7                	cmp    %edi,%eax
40710c:	73 18                	jae    0x407126
40710e:	53                   	push   %ebx
40710f:	56                   	push   %esi
407110:	e8 a6 9d 02 00       	call   0x430ebb
407115:	8d 70 02             	lea    0x2(%eax),%esi
407118:	53                   	push   %ebx
407119:	56                   	push   %esi
40711a:	e8 9c 9d 02 00       	call   0x430ebb
40711f:	83 c4 10             	add    $0x10,%esp
407122:	85 c0                	test   %eax,%eax
407124:	75 da                	jne    0x407100
407126:	8b 54 24 18          	mov    0x18(%esp),%edx
40712a:	2b f5                	sub    %ebp,%esi
40712c:	d1 fe                	sar    $1,%esi
40712e:	8d 3c 72             	lea    (%edx,%esi,2),%edi
407131:	8b 74 24 10          	mov    0x10(%esp),%esi
407135:	5b                   	pop    %ebx
407136:	56                   	push   %esi
407137:	e8 61 98 02 00       	call   0x43099d
40713c:	55                   	push   %ebp
40713d:	e8 5b 98 02 00       	call   0x43099d
407142:	83 c4 08             	add    $0x8,%esp
407145:	8b c7                	mov    %edi,%eax
407147:	5f                   	pop    %edi
407148:	5e                   	pop    %esi
407149:	5d                   	pop    %ebp
40714a:	59                   	pop    %ecx
40714b:	c3                   	ret
40714c:	cc                   	int3
40714d:	cc                   	int3
40714e:	cc                   	int3
40714f:	cc                   	int3
407150:	8b 44 24 0c          	mov    0xc(%esp),%eax
407154:	8b 4c 24 08          	mov    0x8(%esp),%ecx
407158:	8b 54 24 04          	mov    0x4(%esp),%edx
40715c:	50                   	push   %eax
40715d:	51                   	push   %ecx
40715e:	52                   	push   %edx
40715f:	e8 ec fe ff ff       	call   0x407050
407164:	83 c4 0c             	add    $0xc,%esp