409789:	55                   	push   %ebp
40978a:	8b ec                	mov    %esp,%ebp
40978c:	8b 55 08             	mov    0x8(%ebp),%edx
40978f:	56                   	push   %esi
409790:	85 d2                	test   %edx,%edx
409792:	74 11                	je     0x4097a5
409794:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409797:	85 c9                	test   %ecx,%ecx
409799:	74 0a                	je     0x4097a5
40979b:	8b 75 10             	mov    0x10(%ebp),%esi
40979e:	85 f6                	test   %esi,%esi
4097a0:	75 17                	jne    0x4097b9
4097a2:	c6 02 00             	movb   $0x0,(%edx)
4097a5:	e8 5d e5 ff ff       	call   0x407d07
4097aa:	6a 16                	push   $0x16
4097ac:	5e                   	pop    %esi
4097ad:	89 30                	mov    %esi,(%eax)
4097af:	e8 7a e4 ff ff       	call   0x407c2e
4097b4:	8b c6                	mov    %esi,%eax
4097b6:	5e                   	pop    %esi
4097b7:	5d                   	pop    %ebp
4097b8:	c3                   	ret
4097b9:	57                   	push   %edi
4097ba:	8b fa                	mov    %edx,%edi
4097bc:	2b f2                	sub    %edx,%esi
4097be:	8a 04 3e             	mov    (%esi,%edi,1),%al
4097c1:	88 07                	mov    %al,(%edi)
4097c3:	47                   	inc    %edi
4097c4:	84 c0                	test   %al,%al
4097c6:	74 05                	je     0x4097cd
4097c8:	83 e9 01             	sub    $0x1,%ecx
4097cb:	75 f1                	jne    0x4097be
4097cd:	5f                   	pop    %edi
4097ce:	85 c9                	test   %ecx,%ecx
4097d0:	75 0b                	jne    0x4097dd
4097d2:	88 0a                	mov    %cl,(%edx)
4097d4:	e8 2e e5 ff ff       	call   0x407d07
4097d9:	6a 22                	push   $0x22
4097db:	eb cf                	jmp    0x4097ac
4097dd:	33 f6                	xor    %esi,%esi
4097df:	eb d3                	jmp    0x4097b4
4097e1:	e8 09 6e 00 00       	call   0x4105ef
4097e6:	85 c0                	test   %eax,%eax
4097e8:	74 08                	je     0x4097f2
4097ea:	6a 16                	push   $0x16
4097ec:	e8 59 6e 00 00       	call   0x41064a
4097f1:	59                   	pop    %ecx
4097f2:	f6 05 58 30 42 00 02 	testb  $0x2,0x423058
4097f9:	74 21                	je     0x40981c
4097fb:	6a 17                	push   $0x17
4097fd:	e8 92 a6 ff ff       	call   0x403e94
409802:	85 c0                	test   %eax,%eax
409804:	74 05                	je     0x40980b
409806:	6a 07                	push   $0x7
409808:	59                   	pop    %ecx
409809:	cd 29                	int    $0x29
40980b:	6a 01                	push   $0x1
40980d:	68 15 00 00 40       	push   $0x40000015
409812:	6a 03                	push   $0x3
409814:	e8 4b e2 ff ff       	call   0x407a64
409819:	83 c4 0c             	add    $0xc,%esp
40981c:	6a 03                	push   $0x3
40981e:	e8 ae ec ff ff       	call   0x4084d1
409823:	cc                   	int3
409824:	8b ff                	mov    %edi,%edi
409826:	55                   	push   %ebp
409827:	8b ec                	mov    %esp,%ebp
409829:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40982d:	74 2d                	je     0x40985c
40982f:	ff 75 08             	push   0x8(%ebp)
409832:	6a 00                	push   $0x0
409834:	ff 35 c4 46 42 00    	push   0x4246c4
40983a:	ff 15 78 b0 41 00    	call   *0x41b078
409840:	85 c0                	test   %eax,%eax
409842:	75 18                	jne    0x40985c
409844:	56                   	push   %esi
409845:	e8 bd e4 ff ff       	call   0x407d07
40984a:	8b f0                	mov    %eax,%esi
40984c:	ff 15 48 b0 41 00    	call   *0x41b048
409852:	50                   	push   %eax
409853:	e8 36 e4 ff ff       	call   0x407c8e
409858:	59                   	pop    %ecx
409859:	89 06                	mov    %eax,(%esi)
40985b:	5e                   	pop    %esi
40985c:	5d                   	pop    %ebp
40985d:	c3                   	ret
40985e:	8b ff                	mov    %edi,%edi
409860:	55                   	push   %ebp
409861:	8b ec                	mov    %esp,%ebp
409863:	56                   	push   %esi
409864:	8b 75 08             	mov    0x8(%ebp),%esi
409867:	83 fe e0             	cmp    $0xffffffe0,%esi
40986a:	77 30                	ja     0x40989c
40986c:	85 f6                	test   %esi,%esi
40986e:	75 17                	jne    0x409887
409870:	46                   	inc    %esi
409871:	eb 14                	jmp    0x409887
409873:	e8 c1 fd ff ff       	call   0x409639
409878:	85 c0                	test   %eax,%eax
40987a:	74 20                	je     0x40989c
40987c:	56                   	push   %esi
40987d:	e8 98 f9 ff ff       	call   0x40921a
409882:	59                   	pop    %ecx
409883:	85 c0                	test   %eax,%eax
409885:	74 15                	je     0x40989c
409887:	56                   	push   %esi
409888:	6a 00                	push   $0x0
40988a:	ff 35 c4 46 42 00    	push   0x4246c4
409890:	ff 15 74 b0 41 00    	call   *0x41b074
409896:	85 c0                	test   %eax,%eax
409898:	74 d9                	je     0x409873
40989a:	eb 0d                	jmp    0x4098a9
40989c:	e8 66 e4 ff ff       	call   0x407d07
4098a1:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
4098a7:	33 c0                	xor    %eax,%eax
4098a9:	5e                   	pop    %esi
4098aa:	5d                   	pop    %ebp
4098ab:	c3                   	ret
4098ac:	8b ff                	mov    %edi,%edi
4098ae:	55                   	push   %ebp
4098af:	8b ec                	mov    %esp,%ebp
4098b1:	56                   	push   %esi
4098b2:	8b 75 08             	mov    0x8(%ebp),%esi
4098b5:	85 f6                	test   %esi,%esi
4098b7:	74 0c                	je     0x4098c5
4098b9:	6a e0                	push   $0xffffffe0
4098bb:	33 d2                	xor    %edx,%edx
4098bd:	58                   	pop    %eax
4098be:	f7 f6                	div    %esi
4098c0:	3b 45 0c             	cmp    0xc(%ebp),%eax
4098c3:	72 34                	jb     0x4098f9
4098c5:	0f af 75 0c          	imul   0xc(%ebp),%esi
4098c9:	85 f6                	test   %esi,%esi
4098cb:	75 17                	jne    0x4098e4
4098cd:	46                   	inc    %esi
4098ce:	eb 14                	jmp    0x4098e4
4098d0:	e8 64 fd ff ff       	call   0x409639
4098d5:	85 c0                	test   %eax,%eax
4098d7:	74 20                	je     0x4098f9
4098d9:	56                   	push   %esi
4098da:	e8 3b f9 ff ff       	call   0x40921a
4098df:	59                   	pop    %ecx
4098e0:	85 c0                	test   %eax,%eax
4098e2:	74 15                	je     0x4098f9
4098e4:	56                   	push   %esi
4098e5:	6a 08                	push   $0x8
4098e7:	ff 35 c4 46 42 00    	push   0x4246c4
4098ed:	ff 15 74 b0 41 00    	call   *0x41b074
4098f3:	85 c0                	test   %eax,%eax
4098f5:	74 d9                	je     0x4098d0
4098f7:	eb 0d                	jmp    0x409906
4098f9:	e8 09 e4 ff ff       	call   0x407d07
4098fe:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
409904:	33 c0                	xor    %eax,%eax
409906:	5e                   	pop    %esi
409907:	5d                   	pop    %ebp
409908:	c3                   	ret
409909:	8b ff                	mov    %edi,%edi
40990b:	55                   	push   %ebp
40990c:	8b ec                	mov    %esp,%ebp
40990e:	8b 45 08             	mov    0x8(%ebp),%eax
409911:	a8 04                	test   $0x4,%al
409913:	74 04                	je     0x409919
409915:	b0 01                	mov    $0x1,%al
409917:	5d                   	pop    %ebp
409918:	c3                   	ret
409919:	a8 01                	test   $0x1,%al
40991b:	74 1b                	je     0x409938
40991d:	83 e0 02             	and    $0x2,%eax
409920:	74 09                	je     0x40992b
409922:	81 7d 0c 00 00 00 80 	cmpl   $0x80000000,0xc(%ebp)
409929:	77 ea                	ja     0x409915
40992b:	85 c0                	test   %eax,%eax
40992d:	75 09                	jne    0x409938
40992f:	81 7d 0c ff ff ff 7f 	cmpl   $0x7fffffff,0xc(%ebp)
409936:	77 dd                	ja     0x409915
409938:	32 c0                	xor    %al,%al
40993a:	5d                   	pop    %ebp
40993b:	c3                   	ret
40993c:	8b ff                	mov    %edi,%edi
40993e:	55                   	push   %ebp
40993f:	8b ec                	mov    %esp,%ebp
409941:	83 ec 28             	sub    $0x28,%esp
409944:	8d 4d 0c             	lea    0xc(%ebp),%ecx
409947:	53                   	push   %ebx
409948:	57                   	push   %edi
409949:	e8 4f 09 00 00       	call   0x40a29d
40994e:	84 c0                	test   %al,%al
409950:	74 21                	je     0x409973
409952:	8b 7d 14             	mov    0x14(%ebp),%edi
409955:	85 ff                	test   %edi,%edi
409957:	74 30                	je     0x409989
409959:	83 ff 02             	cmp    $0x2,%edi
40995c:	7c 05                	jl     0x409963
40995e:	83 ff 24             	cmp    $0x24,%edi
409961:	7e 26                	jle    0x409989
409963:	e8 9f e3 ff ff       	call   0x407d07
409968:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40996e:	e8 bb e2 ff ff       	call   0x407c2e
409973:	33 db                	xor    %ebx,%ebx
409975:	8b 55 10             	mov    0x10(%ebp),%edx
409978:	85 d2                	test   %edx,%edx
40997a:	74 05                	je     0x409981
40997c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40997f:	89 0a                	mov    %ecx,(%edx)
409981:	5f                   	pop    %edi
409982:	8b c3                	mov    %ebx,%eax
409984:	5b                   	pop    %ebx
409985:	8b e5                	mov    %ebp,%esp
409987:	5d                   	pop    %ebp
409988:	c3                   	ret
409989:	56                   	push   %esi
40998a:	ff 75 08             	push   0x8(%ebp)
40998d:	8d 4d d8             	lea    -0x28(%ebp),%ecx
409990:	e8 1c bd ff ff       	call   0x4056b1
409995:	8b 45 0c             	mov    0xc(%ebp),%eax
409998:	33 f6                	xor    %esi,%esi
40999a:	89 75 f4             	mov    %esi,-0xc(%ebp)
40999d:	89 45 e8             	mov    %eax,-0x18(%ebp)
4099a0:	eb 03                	jmp    0x4099a5
4099a2:	8b 45 0c             	mov    0xc(%ebp),%eax
4099a5:	8a 18                	mov    (%eax),%bl
4099a7:	40                   	inc    %eax
4099a8:	89 45 0c             	mov    %eax,0xc(%ebp)
4099ab:	8d 45 dc             	lea    -0x24(%ebp),%eax
4099ae:	50                   	push   %eax
4099af:	0f b6 c3             	movzbl %bl,%eax
4099b2:	6a 08                	push   $0x8
4099b4:	50                   	push   %eax
4099b5:	88 5d fc             	mov    %bl,-0x4(%ebp)
4099b8:	e8 25 09 00 00       	call   0x40a2e2
4099bd:	83 c4 0c             	add    $0xc,%esp
4099c0:	85 c0                	test   %eax,%eax
4099c2:	75 de                	jne    0x4099a2
4099c4:	38 45 18             	cmp    %al,0x18(%ebp)
4099c7:	0f 95 c0             	setne  %al
4099ca:	89 45 f8             	mov    %eax,-0x8(%ebp)
4099cd:	80 fb 2d             	cmp    $0x2d,%bl
4099d0:	75 08                	jne    0x4099da
4099d2:	83 c8 02             	or     $0x2,%eax
4099d5:	89 45 f8             	mov    %eax,-0x8(%ebp)
4099d8:	eb 05                	jmp    0x4099df
4099da:	80 fb 2b             	cmp    $0x2b,%bl
4099dd:	75 0e                	jne    0x4099ed
4099df:	8b 75 0c             	mov    0xc(%ebp),%esi
4099e2:	8a 1e                	mov    (%esi),%bl
4099e4:	46                   	inc    %esi
4099e5:	88 5d fc             	mov    %bl,-0x4(%ebp)
4099e8:	89 75 0c             	mov    %esi,0xc(%ebp)
4099eb:	eb 03                	jmp    0x4099f0
4099ed:	8b 75 0c             	mov    0xc(%ebp),%esi
4099f0:	85 ff                	test   %edi,%edi
4099f2:	74 05                	je     0x4099f9
4099f4:	83 ff 10             	cmp    $0x10,%edi
4099f7:	75 78                	jne    0x409a71
4099f9:	8a c3                	mov    %bl,%al
4099fb:	2c 30                	sub    $0x30,%al
4099fd:	3c 09                	cmp    $0x9,%al
4099ff:	77 08                	ja     0x409a09
409a01:	0f be c3             	movsbl %bl,%eax
409a04:	83 c0 d0             	add    $0xffffffd0,%eax
409a07:	eb 23                	jmp    0x409a2c
409a09:	8a c3                	mov    %bl,%al
409a0b:	2c 61                	sub    $0x61,%al
409a0d:	3c 19                	cmp    $0x19,%al
409a0f:	77 08                	ja     0x409a19
409a11:	0f be c3             	movsbl %bl,%eax
409a14:	83 c0 a9             	add    $0xffffffa9,%eax
409a17:	eb 13                	jmp    0x409a2c
409a19:	8a c3                	mov    %bl,%al
409a1b:	2c 41                	sub    $0x41,%al
409a1d:	3c 19                	cmp    $0x19,%al
409a1f:	77 08                	ja     0x409a29
409a21:	0f be c3             	movsbl %bl,%eax
409a24:	83 c0 c9             	add    $0xffffffc9,%eax
409a27:	eb 03                	jmp    0x409a2c
409a29:	83 c8 ff             	or     $0xffffffff,%eax
409a2c:	85 c0                	test   %eax,%eax
409a2e:	74 09                	je     0x409a39
409a30:	85 ff                	test   %edi,%edi
409a32:	75 3d                	jne    0x409a71
409a34:	6a 0a                	push   $0xa
409a36:	5f                   	pop    %edi
409a37:	eb 38                	jmp    0x409a71
409a39:	8a 06                	mov    (%esi),%al
409a3b:	46                   	inc    %esi
409a3c:	88 45 f0             	mov    %al,-0x10(%ebp)
409a3f:	89 75 0c             	mov    %esi,0xc(%ebp)
409a42:	3c 78                	cmp    $0x78,%al
409a44:	74 1b                	je     0x409a61
409a46:	3c 58                	cmp    $0x58,%al
409a48:	74 17                	je     0x409a61
409a4a:	85 ff                	test   %edi,%edi
409a4c:	75 03                	jne    0x409a51
409a4e:	6a 08                	push   $0x8
409a50:	5f                   	pop    %edi
409a51:	ff 75 f0             	push   -0x10(%ebp)
409a54:	8d 4d 0c             	lea    0xc(%ebp),%ecx
409a57:	e8 ed 07 00 00       	call   0x40a249
409a5c:	8b 75 0c             	mov    0xc(%ebp),%esi
409a5f:	eb 10                	jmp    0x409a71
409a61:	85 ff                	test   %edi,%edi
409a63:	75 03                	jne    0x409a68
409a65:	6a 10                	push   $0x10
409a67:	5f                   	pop    %edi
409a68:	8a 1e                	mov    (%esi),%bl
409a6a:	46                   	inc    %esi
409a6b:	88 5d fc             	mov    %bl,-0x4(%ebp)
409a6e:	89 75 0c             	mov    %esi,0xc(%ebp)
409a71:	33 d2                	xor    %edx,%edx
409a73:	83 c8 ff             	or     $0xffffffff,%eax
409a76:	f7 f7                	div    %edi
409a78:	89 55 ec             	mov    %edx,-0x14(%ebp)
409a7b:	8b 55 f8             	mov    -0x8(%ebp),%edx
409a7e:	89 45 f0             	mov    %eax,-0x10(%ebp)
409a81:	8d 4b d0             	lea    -0x30(%ebx),%ecx
409a84:	80 f9 09             	cmp    $0x9,%cl
409a87:	77 08                	ja     0x409a91
409a89:	0f be cb             	movsbl %bl,%ecx
409a8c:	83 c1 d0             	add    $0xffffffd0,%ecx
409a8f:	eb 23                	jmp    0x409ab4
409a91:	8a c3                	mov    %bl,%al
409a93:	2c 61                	sub    $0x61,%al
409a95:	3c 19                	cmp    $0x19,%al
409a97:	77 08                	ja     0x409aa1
409a99:	0f be cb             	movsbl %bl,%ecx
409a9c:	83 c1 a9             	add    $0xffffffa9,%ecx
409a9f:	eb 13                	jmp    0x409ab4
409aa1:	8a c3                	mov    %bl,%al
409aa3:	2c 41                	sub    $0x41,%al
409aa5:	3c 19                	cmp    $0x19,%al
409aa7:	77 08                	ja     0x409ab1
409aa9:	0f be cb             	movsbl %bl,%ecx
409aac:	83 c1 c9             	add    $0xffffffc9,%ecx
409aaf:	eb 03                	jmp    0x409ab4
409ab1:	83 c9 ff             	or     $0xffffffff,%ecx
409ab4:	83 f9 ff             	cmp    $0xffffffff,%ecx
409ab7:	74 30                	je     0x409ae9
409ab9:	3b cf                	cmp    %edi,%ecx
409abb:	73 2c                	jae    0x409ae9
409abd:	8b 45 f4             	mov    -0xc(%ebp),%eax
409ac0:	83 ca 08             	or     $0x8,%edx
409ac3:	8b 5d f0             	mov    -0x10(%ebp),%ebx
409ac6:	3b c3                	cmp    %ebx,%eax
409ac8:	72 0c                	jb     0x409ad6
409aca:	75 05                	jne    0x409ad1
409acc:	3b 4d ec             	cmp    -0x14(%ebp),%ecx
409acf:	76 05                	jbe    0x409ad6
409ad1:	83 ca 04             	or     $0x4,%edx
409ad4:	eb 08                	jmp    0x409ade