40974b:	3b 51 0c             	cmp    0xc(%ecx),%edx
40974e:	76 05                	jbe    0x409755
409750:	8b 01                	mov    (%ecx),%eax
409752:	52                   	push   %edx
409753:	ff 10                	call   *(%eax)
409755:	ff 45 e0             	incl   -0x20(%ebp)
409758:	8d 46 ff             	lea    -0x1(%esi),%eax
40975b:	85 f6                	test   %esi,%esi
40975d:	0f 44 c6             	cmove  %esi,%eax
409760:	8b f0                	mov    %eax,%esi
409762:	89 45 d0             	mov    %eax,-0x30(%ebp)
409765:	8b 4f 0c             	mov    0xc(%edi),%ecx
409768:	0f b6 45 f1          	movzbl -0xf(%ebp),%eax
40976c:	c1 e9 03             	shr    $0x3,%ecx
40976f:	80 e1 01             	and    $0x1,%cl
409772:	c7 45 e8 23 00 00 00 	movl   $0x23,-0x18(%ebp)
409779:	c6 45 f0 25          	movb   $0x25,-0x10(%ebp)
40977d:	0f 45 45 e8          	cmovne -0x18(%ebp),%eax
409781:	84 c9                	test   %cl,%cl
409783:	88 45 f1             	mov    %al,-0xf(%ebp)
409786:	8d 4d f2             	lea    -0xe(%ebp),%ecx
409789:	8d 45 f1             	lea    -0xf(%ebp),%eax
40978c:	0f 45 c1             	cmovne %ecx,%eax
40978f:	83 7f 08 03          	cmpl   $0x3,0x8(%edi)
409793:	75 06                	jne    0x40979b
409795:	83 65 d0 00          	andl   $0x0,-0x30(%ebp)
409799:	eb 12                	jmp    0x4097ad
40979b:	83 7f 08 01          	cmpl   $0x1,0x8(%edi)
40979f:	75 04                	jne    0x4097a5
4097a1:	c6 00 2d             	movb   $0x2d,(%eax)
4097a4:	40                   	inc    %eax
4097a5:	85 f6                	test   %esi,%esi
4097a7:	74 04                	je     0x4097ad
4097a9:	c6 00 2a             	movb   $0x2a,(%eax)
4097ac:	40                   	inc    %eax
4097ad:	83 7f 10 00          	cmpl   $0x0,0x10(%edi)
4097b1:	8b 55 e0             	mov    -0x20(%ebp),%edx
4097b4:	7c 08                	jl     0x4097be
4097b6:	66 c7 00 2e 2a       	movw   $0x2a2e,(%eax)
4097bb:	83 c0 02             	add    $0x2,%eax
4097be:	8a 4d ef             	mov    -0x11(%ebp),%cl
4097c1:	c6 00 4c             	movb   $0x4c,(%eax)
4097c4:	88 48 01             	mov    %cl,0x1(%eax)
4097c7:	c6 40 02 00          	movb   $0x0,0x2(%eax)
4097cb:	8a 47 04             	mov    0x4(%edi),%al
4097ce:	88 45 ef             	mov    %al,-0x11(%ebp)
4097d1:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4097d4:	8b 41 04             	mov    0x4(%ecx),%eax
4097d7:	8b 70 0c             	mov    0xc(%eax),%esi
4097da:	8b ce                	mov    %esi,%ecx
4097dc:	2b ca                	sub    %edx,%ecx
4097de:	75 24                	jne    0x409804
4097e0:	8d 7a 01             	lea    0x1(%edx),%edi
4097e3:	8b c8                	mov    %eax,%ecx
4097e5:	89 7d e8             	mov    %edi,-0x18(%ebp)
4097e8:	3b fe                	cmp    %esi,%edi
4097ea:	8b 7d c4             	mov    -0x3c(%ebp),%edi
4097ed:	76 10                	jbe    0x4097ff
4097ef:	8b 01                	mov    (%ecx),%eax
4097f1:	ff 75 e8             	push   -0x18(%ebp)
4097f4:	ff 10                	call   *(%eax)
4097f6:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4097f9:	8b 55 e0             	mov    -0x20(%ebp),%edx
4097fc:	8b 41 04             	mov    0x4(%ecx),%eax
4097ff:	8b 48 0c             	mov    0xc(%eax),%ecx
409802:	2b ca                	sub    %edx,%ecx
409804:	f2 0f 10 45 08       	movsd  0x8(%ebp),%xmm0
409809:	8b 70 04             	mov    0x4(%eax),%esi
40980c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40980f:	51                   	push   %ecx
409810:	51                   	push   %ecx
409811:	f2 0f 11 04 24       	movsd  %xmm0,(%esp)
409816:	03 f2                	add    %edx,%esi
409818:	ff 77 10             	push   0x10(%edi)
40981b:	ff 75 d0             	push   -0x30(%ebp)
40981e:	50                   	push   %eax
40981f:	51                   	push   %ecx
409820:	56                   	push   %esi
409821:	e8 4d e4 ff ff       	call   0x407c73
409826:	8b 4d dc             	mov    -0x24(%ebp),%ecx
409829:	8b d0                	mov    %eax,%edx
40982b:	83 c4 1c             	add    $0x1c,%esp
40982e:	89 55 d4             	mov    %edx,-0x2c(%ebp)
409831:	8b 41 04             	mov    0x4(%ecx),%eax
409834:	89 45 e8             	mov    %eax,-0x18(%ebp)
409837:	8b 48 0c             	mov    0xc(%eax),%ecx
40983a:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40983d:	8b 4d dc             	mov    -0x24(%ebp),%ecx
409840:	85 d2                	test   %edx,%edx
409842:	78 26                	js     0x40986a
409844:	8b 45 e0             	mov    -0x20(%ebp),%eax
409847:	03 c2                	add    %edx,%eax
409849:	89 45 c8             	mov    %eax,-0x38(%ebp)
40984c:	8b 45 cc             	mov    -0x34(%ebp),%eax
40984f:	39 45 c8             	cmp    %eax,-0x38(%ebp)
409852:	72 37                	jb     0x40988b
409854:	8b 75 c8             	mov    -0x38(%ebp),%esi
409857:	8b 55 e0             	mov    -0x20(%ebp),%edx
40985a:	46                   	inc    %esi
40985b:	3b f0                	cmp    %eax,%esi
40985d:	0f 86 71 ff ff ff    	jbe    0x4097d4
409863:	8b 4d e8             	mov    -0x18(%ebp),%ecx
409866:	8b 01                	mov    (%ecx),%eax
409868:	eb 16                	jmp    0x409880
40986a:	8b 50 0c             	mov    0xc(%eax),%edx
40986d:	8d 72 01             	lea    0x1(%edx),%esi
409870:	3b f2                	cmp    %edx,%esi
409872:	8b 55 e0             	mov    -0x20(%ebp),%edx
409875:	0f 86 59 ff ff ff    	jbe    0x4097d4
40987b:	8b 00                	mov    (%eax),%eax
40987d:	8b 4d e8             	mov    -0x18(%ebp),%ecx
409880:	56                   	push   %esi
409881:	ff 10                	call   *(%eax)
409883:	8b 55 e0             	mov    -0x20(%ebp),%edx
409886:	e9 46 ff ff ff       	jmp    0x4097d1
40988b:	8b 45 d8             	mov    -0x28(%ebp),%eax
40988e:	84 c0                	test   %al,%al
409890:	74 2b                	je     0x4098bd
409892:	83 7f 08 02          	cmpl   $0x2,0x8(%edi)
409896:	74 06                	je     0x40989e
409898:	83 7f 08 00          	cmpl   $0x0,0x8(%edi)
40989c:	75 05                	jne    0x4098a3
40989e:	80 3e 20             	cmpb   $0x20,(%esi)
4098a1:	74 04                	je     0x4098a7
4098a3:	32 c0                	xor    %al,%al
4098a5:	eb 09                	jmp    0x4098b0
4098a7:	8a 4d ef             	mov    -0x11(%ebp),%cl
4098aa:	88 4d e7             	mov    %cl,-0x19(%ebp)
4098ad:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4098b0:	8a 55 e7             	mov    -0x19(%ebp),%dl
4098b3:	88 56 ff             	mov    %dl,-0x1(%esi)
4098b6:	8b 55 d4             	mov    -0x2c(%ebp),%edx
4098b9:	42                   	inc    %edx
4098ba:	89 55 d4             	mov    %edx,-0x2c(%ebp)
4098bd:	83 7f 08 03          	cmpl   $0x3,0x8(%edi)
4098c1:	75 44                	jne    0x409907
4098c3:	8b 0f                	mov    (%edi),%ecx
4098c5:	89 4d cc             	mov    %ecx,-0x34(%ebp)
4098c8:	3b ca                	cmp    %edx,%ecx
4098ca:	76 38                	jbe    0x409904
4098cc:	51                   	push   %ecx
4098cd:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4098d0:	e8 27 85 01 00       	call   0x421dfc
4098d5:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
4098d8:	8b f0                	mov    %eax,%esi
4098da:	8b 45 cc             	mov    -0x34(%ebp),%eax
4098dd:	2b c1                	sub    %ecx,%eax
4098df:	51                   	push   %ecx
4098e0:	d1 e8                	shr    $1,%eax
4098e2:	03 c6                	add    %esi,%eax
4098e4:	56                   	push   %esi
4098e5:	50                   	push   %eax
4098e6:	e8 f5 9f 03 00       	call   0x4438e0
4098eb:	8a 45 ef             	mov    -0x11(%ebp),%al
4098ee:	66 98                	cbtw
4098f0:	0f b7 c0             	movzwl %ax,%eax
4098f3:	50                   	push   %eax
4098f4:	ff 75 d4             	push   -0x2c(%ebp)
4098f7:	ff 37                	push   (%edi)
4098f9:	56                   	push   %esi
4098fa:	e8 4a 75 01 00       	call   0x420e49
4098ff:	83 c4 1c             	add    $0x1c,%esp
409902:	eb 2e                	jmp    0x409932
409904:	8b 4d dc             	mov    -0x24(%ebp),%ecx
409907:	66 83 7f 04 20       	cmpw   $0x20,0x4(%edi)
40990c:	75 04                	jne    0x409912
40990e:	84 c0                	test   %al,%al
409910:	74 1a                	je     0x40992c
409912:	80 3e 20             	cmpb   $0x20,(%esi)
409915:	75 0e                	jne    0x409925
409917:	8a 4d ef             	mov    -0x11(%ebp),%cl
40991a:	88 0e                	mov    %cl,(%esi)
40991c:	46                   	inc    %esi
40991d:	80 3e 20             	cmpb   $0x20,(%esi)
409920:	74 f8                	je     0x40991a
409922:	8b 4d dc             	mov    -0x24(%ebp),%ecx
409925:	84 c0                	test   %al,%al
409927:	74 03                	je     0x40992c
409929:	88 46 ff             	mov    %al,-0x1(%esi)
40992c:	52                   	push   %edx
40992d:	e8 ca 84 01 00       	call   0x421dfc
409932:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409935:	5f                   	pop    %edi
409936:	33 cd                	xor    %ebp,%ecx
409938:	5e                   	pop    %esi
409939:	e8 c4 60 03 00       	call   0x43fa02
40993e:	c9                   	leave
40993f:	c2 0c 00             	ret    $0xc
409942:	68 d0 65 49 00       	push   $0x4965d0
409947:	ff 75 e8             	push   -0x18(%ebp)
40994a:	e8 bf 8d 01 00       	call   0x42270e
40994f:	cc                   	int3
409950:	55                   	push   %ebp
409951:	8b ec                	mov    %esp,%ebp
409953:	83 ec 1c             	sub    $0x1c,%esp
409956:	8b 45 08             	mov    0x8(%ebp),%eax
409959:	8b 55 18             	mov    0x18(%ebp),%edx
40995c:	56                   	push   %esi
40995d:	57                   	push   %edi
40995e:	33 ff                	xor    %edi,%edi
409960:	89 4d f8             	mov    %ecx,-0x8(%ebp)
409963:	89 7d fc             	mov    %edi,-0x4(%ebp)
409966:	8b f7                	mov    %edi,%esi
409968:	85 c0                	test   %eax,%eax
40996a:	79 0c                	jns    0x409978
40996c:	46                   	inc    %esi
40996d:	c6 45 fc 2d          	movb   $0x2d,-0x4(%ebp)
409971:	f7 d8                	neg    %eax
409973:	89 45 08             	mov    %eax,0x8(%ebp)
409976:	eb 1c                	jmp    0x409994
409978:	f6 c2 01             	test   $0x1,%dl
40997b:	74 17                	je     0x409994
40997d:	8b c2                	mov    %edx,%eax
40997f:	d1 e8                	shr    $1,%eax
409981:	24 01                	and    $0x1,%al
409983:	f6 d8                	neg    %al
409985:	1a c0                	sbb    %al,%al
409987:	33 f6                	xor    %esi,%esi
409989:	24 0b                	and    $0xb,%al
40998b:	04 20                	add    $0x20,%al
40998d:	46                   	inc    %esi
40998e:	88 45 fc             	mov    %al,-0x4(%ebp)
409991:	8b 45 08             	mov    0x8(%ebp),%eax
409994:	0f be 4d 20          	movsbl 0x20(%ebp),%ecx
409998:	83 f9 64             	cmp    $0x64,%ecx
40999b:	0f 8f 94 00 00 00    	jg     0x409a35
4099a1:	74 62                	je     0x409a05
4099a3:	85 c9                	test   %ecx,%ecx
4099a5:	74 5e                	je     0x409a05
4099a7:	83 f9 42             	cmp    $0x42,%ecx
4099aa:	74 12                	je     0x4099be
4099ac:	83 f9 58             	cmp    $0x58,%ecx
4099af:	0f 84 97 00 00 00    	je     0x409a4c
4099b5:	83 f9 62             	cmp    $0x62,%ecx
4099b8:	0f 85 9d 01 00 00    	jne    0x409b5b
4099be:	c1 ea 03             	shr    $0x3,%edx
4099c1:	8b c8                	mov    %eax,%ecx
4099c3:	f6 c2 01             	test   $0x1,%dl
4099c6:	74 0f                	je     0x4099d7
4099c8:	8a 45 20             	mov    0x20(%ebp),%al
4099cb:	c6 44 35 fc 30       	movb   $0x30,-0x4(%ebp,%esi,1)
4099d0:	88 44 35 fd          	mov    %al,-0x3(%ebp,%esi,1)
4099d4:	83 c6 02             	add    $0x2,%esi
4099d7:	47                   	inc    %edi
4099d8:	d1 e9                	shr    $1,%ecx
4099da:	75 fb                	jne    0x4099d7
4099dc:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4099df:	8d 45 fc             	lea    -0x4(%ebp),%eax
4099e2:	56                   	push   %esi
4099e3:	50                   	push   %eax
4099e4:	8d 45 0c             	lea    0xc(%ebp),%eax
4099e7:	50                   	push   %eax
4099e8:	57                   	push   %edi
4099e9:	e8 c0 ea ff ff       	call   0x4084ae
4099ee:	8b 55 08             	mov    0x8(%ebp),%edx
4099f1:	8a ca                	mov    %dl,%cl
4099f3:	80 e1 01             	and    $0x1,%cl
4099f6:	80 c1 30             	add    $0x30,%cl
4099f9:	88 08                	mov    %cl,(%eax)
4099fb:	48                   	dec    %eax
4099fc:	d1 ea                	shr    $1,%edx
4099fe:	75 f1                	jne    0x4099f1
409a00:	e9 50 01 00 00       	jmp    0x409b55
409a05:	50                   	push   %eax
409a06:	e8 7e 61 01 00       	call   0x41fb89
409a0b:	59                   	pop    %ecx
409a0c:	56                   	push   %esi
409a0d:	8d 4d fc             	lea    -0x4(%ebp),%ecx
409a10:	51                   	push   %ecx
409a11:	8d 4d 0c             	lea    0xc(%ebp),%ecx
409a14:	51                   	push   %ecx
409a15:	8b 4d f8             	mov    -0x8(%ebp),%ecx
409a18:	50                   	push   %eax
409a19:	e8 90 ea ff ff       	call   0x4084ae
409a1e:	ff 75 08             	push   0x8(%ebp)
409a21:	8b 55 08             	mov    0x8(%ebp),%edx
409a24:	40                   	inc    %eax
409a25:	57                   	push   %edi
409a26:	52                   	push   %edx
409a27:	50                   	push   %eax
409a28:	e8 bd df ff ff       	call   0x4079ea
409a2d:	83 c4 10             	add    $0x10,%esp
409a30:	e9 20 01 00 00       	jmp    0x409b55
409a35:	83 e9 6e             	sub    $0x6e,%ecx
409a38:	0f 84 ab 00 00 00    	je     0x409ae9
409a3e:	83 e9 01             	sub    $0x1,%ecx
409a41:	74 67                	je     0x409aaa
409a43:	83 e9 09             	sub    $0x9,%ecx
409a46:	0f 85 0f 01 00 00    	jne    0x409b5b
409a4c:	c1 ea 03             	shr    $0x3,%edx
409a4f:	f6 c2 01             	test   $0x1,%dl
409a52:	74 0f                	je     0x409a63
409a54:	8a 4d 20             	mov    0x20(%ebp),%cl
409a57:	c6 44 35 fc 30       	movb   $0x30,-0x4(%ebp,%esi,1)
409a5c:	88 4c 35 fd          	mov    %cl,-0x3(%ebp,%esi,1)
409a60:	83 c6 02             	add    $0x2,%esi
409a63:	c1 e8 04             	shr    $0x4,%eax
409a66:	47                   	inc    %edi
409a67:	85 c0                	test   %eax,%eax
409a69:	75 f8                	jne    0x409a63
409a6b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
409a6e:	8d 45 fc             	lea    -0x4(%ebp),%eax
409a71:	56                   	push   %esi
409a72:	50                   	push   %eax
409a73:	8d 45 0c             	lea    0xc(%ebp),%eax
409a76:	50                   	push   %eax
409a77:	57                   	push   %edi
409a78:	e8 31 ea ff ff       	call   0x4084ae
409a7d:	80 7d 20 78          	cmpb   $0x78,0x20(%ebp)
409a81:	8b c8                	mov    %eax,%ecx
409a83:	8b 55 08             	mov    0x8(%ebp),%edx
409a86:	be 90 65 49 00       	mov    $0x496590,%esi
409a8b:	b8 a4 65 49 00       	mov    $0x4965a4,%eax
409a90:	0f 45 f0             	cmovne %eax,%esi
409a93:	8b c2                	mov    %edx,%eax
409a95:	c1 ea 04             	shr    $0x4,%edx
409a98:	83 e0 0f             	and    $0xf,%eax
409a9b:	8a 04 30             	mov    (%eax,%esi,1),%al
409a9e:	88 01                	mov    %al,(%ecx)
409aa0:	49                   	dec    %ecx
409aa1:	85 d2                	test   %edx,%edx
409aa3:	75 ee                	jne    0x409a93
409aa5:	e9 ab 00 00 00       	jmp    0x409b55
409aaa:	c1 ea 03             	shr    $0x3,%edx
409aad:	f6 c2 01             	test   $0x1,%dl
409ab0:	74 06                	je     0x409ab8
409ab2:	c6 44 35 fc 30       	movb   $0x30,-0x4(%ebp,%esi,1)
409ab7:	46                   	inc    %esi
409ab8:	c1 e8 03             	shr    $0x3,%eax
409abb:	47                   	inc    %edi
409abc:	85 c0                	test   %eax,%eax
409abe:	75 f8                	jne    0x409ab8
409ac0:	8b 4d f8             	mov    -0x8(%ebp),%ecx
409ac3:	8d 45 fc             	lea    -0x4(%ebp),%eax
409ac6:	56                   	push   %esi
409ac7:	50                   	push   %eax
409ac8:	8d 45 0c             	lea    0xc(%ebp),%eax
409acb:	50                   	push   %eax
409acc:	57                   	push   %edi
409acd:	e8 dc e9 ff ff       	call   0x4084ae
409ad2:	8b 55 08             	mov    0x8(%ebp),%edx
409ad5:	8a ca                	mov    %dl,%cl
409ad7:	c1 ea 03             	shr    $0x3,%edx
409ada:	80 e1 07             	and    $0x7,%cl
409add:	80 c1 30             	add    $0x30,%cl
409ae0:	88 08                	mov    %cl,(%eax)
409ae2:	48                   	dec    %eax
409ae3:	85 d2                	test   %edx,%edx
409ae5:	75 ee                	jne    0x409ad5
409ae7:	eb 6c                	jmp    0x409b55