40a613:	6a 01                	push   $0x1
40a615:	e8 d6 be ff ff       	call   0x4064f0
40a61a:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a61e:	72 02                	jb     0x40a622
40a620:	8b 36                	mov    (%esi),%esi
40a622:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a625:	50                   	push   %eax
40a626:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a629:	50                   	push   %eax
40a62a:	51                   	push   %ecx
40a62b:	ff 75 c8             	push   -0x38(%ebp)
40a62e:	8b ce                	mov    %esi,%ecx
40a630:	6a 06                	push   $0x6
40a632:	5a                   	pop    %edx
40a633:	e8 5f db ff ff       	call   0x408197
40a638:	85 c0                	test   %eax,%eax
40a63a:	74 0a                	je     0x40a646
40a63c:	68 e4 3e 40 00       	push   $0x403ee4
40a641:	e9 8f 00 00 00       	jmp    0x40a6d5
40a646:	8b 55 d0             	mov    -0x30(%ebp),%edx
40a649:	8b 42 0c             	mov    0xc(%edx),%eax
40a64c:	83 f8 03             	cmp    $0x3,%eax
40a64f:	74 0e                	je     0x40a65f
40a651:	85 c0                	test   %eax,%eax
40a653:	74 61                	je     0x40a6b6
40a655:	68 e4 3e 40 00       	push   $0x403ee4
40a65a:	e9 0f fd ff ff       	jmp    0x40a36e
40a65f:	85 c0                	test   %eax,%eax
40a661:	74 53                	je     0x40a6b6
40a663:	8b 42 04             	mov    0x4(%edx),%eax
40a666:	8b 0a                	mov    (%edx),%ecx
40a668:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a66b:	33 c0                	xor    %eax,%eax
40a66d:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a670:	c7 45 e8 07 00 00 00 	movl   $0x7,-0x18(%ebp)
40a677:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a67a:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
40a67e:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40a681:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40a685:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a688:	e8 6e 37 00 00       	call   0x40ddfb
40a68d:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40a691:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a694:	73 03                	jae    0x40a699
40a696:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a699:	50                   	push   %eax
40a69a:	57                   	push   %edi
40a69b:	68 24 3f 40 00       	push   $0x403f24
40a6a0:	53                   	push   %ebx
40a6a1:	e8 a2 dc ff ff       	call   0x408348
40a6a6:	83 c4 10             	add    $0x10,%esp
40a6a9:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40a6ac:	33 c0                	xor    %eax,%eax
40a6ae:	50                   	push   %eax
40a6af:	6a 01                	push   $0x1
40a6b1:	e8 3a be ff ff       	call   0x4064f0
40a6b6:	8d 4d b0             	lea    -0x50(%ebp),%ecx
40a6b9:	e8 59 b8 ff ff       	call   0x405f17
40a6be:	e8 6d 3f 00 00       	call   0x40e630
40a6c3:	c2 08 00             	ret    $0x8
40a6c6:	68 6c 3c 40 00       	push   $0x403c6c
40a6cb:	e9 9e fc ff ff       	jmp    0x40a36e
40a6d0:	68 6c 3c 40 00       	push   $0x403c6c
40a6d5:	6a 0e                	push   $0xe
40a6d7:	50                   	push   %eax
40a6d8:	e8 38 cf ff ff       	call   0x407615
40a6dd:	cc                   	int3
40a6de:	6a 14                	push   $0x14
40a6e0:	b8 f1 f0 40 00       	mov    $0x40f0f1,%eax
40a6e5:	e8 64 3f 00 00       	call   0x40e64e
40a6ea:	8b f9                	mov    %ecx,%edi
40a6ec:	33 f6                	xor    %esi,%esi
40a6ee:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40a6f1:	89 75 e8             	mov    %esi,-0x18(%ebp)
40a6f4:	89 75 ec             	mov    %esi,-0x14(%ebp)
40a6f7:	8d 4f 18             	lea    0x18(%edi),%ecx
40a6fa:	89 75 fc             	mov    %esi,-0x4(%ebp)
40a6fd:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
40a701:	72 02                	jb     0x40a705
40a703:	8b 09                	mov    (%ecx),%ecx
40a705:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a708:	50                   	push   %eax
40a709:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40a70c:	50                   	push   %eax
40a70d:	51                   	push   %ecx
40a70e:	56                   	push   %esi
40a70f:	6a 05                	push   $0x5
40a711:	5a                   	pop    %edx
40a712:	e8 80 da ff ff       	call   0x408197
40a717:	85 c0                	test   %eax,%eax
40a719:	75 70                	jne    0x40a78b
40a71b:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a71e:	81 78 0c 84 00 00 00 	cmpl   $0x84,0xc(%eax)
40a725:	75 59                	jne    0x40a780
40a727:	8b 58 08             	mov    0x8(%eax),%ebx
40a72a:	8b 08                	mov    (%eax),%ecx
40a72c:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a72f:	85 db                	test   %ebx,%ebx
40a731:	74 3f                	je     0x40a772
40a733:	68 58 3f 40 00       	push   $0x403f58
40a738:	57                   	push   %edi
40a739:	e8 0a dc ff ff       	call   0x408348
40a73e:	59                   	pop    %ecx
40a73f:	59                   	pop    %ecx
40a740:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a743:	85 db                	test   %ebx,%ebx
40a745:	74 2b                	je     0x40a772
40a747:	ff 34 b1             	push   (%ecx,%esi,4)
40a74a:	68 7c 3f 40 00       	push   $0x403f7c
40a74f:	57                   	push   %edi
40a750:	e8 f3 db ff ff       	call   0x408348
40a755:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a758:	83 c4 0c             	add    $0xc,%esp
40a75b:	8b cf                	mov    %edi,%ecx
40a75d:	68 8c 3f 40 00       	push   $0x403f8c
40a762:	ff 34 b0             	push   (%eax,%esi,4)
40a765:	e8 29 fb ff ff       	call   0x40a293
40a76a:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a76d:	46                   	inc    %esi
40a76e:	3b f3                	cmp    %ebx,%esi
40a770:	72 d5                	jb     0x40a747
40a772:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a775:	e8 9d b7 ff ff       	call   0x405f17
40a77a:	e8 9d 3e 00 00       	call   0x40e61c
40a77f:	c3                   	ret
40a780:	68 50 2e 40 00       	push   $0x402e50
40a785:	6a 0e                	push   $0xe
40a787:	6a 0d                	push   $0xd
40a789:	eb 08                	jmp    0x40a793
40a78b:	68 50 2e 40 00       	push   $0x402e50
40a790:	6a 0e                	push   $0xe
40a792:	50                   	push   %eax
40a793:	e8 7d ce ff ff       	call   0x407615
40a798:	cc                   	int3
40a799:	cc                   	int3
40a79a:	cc                   	int3
40a79b:	cc                   	int3
40a79c:	cc                   	int3
40a79d:	cc                   	int3
40a79e:	cc                   	int3
40a79f:	cc                   	int3
40a7a0:	8b ff                	mov    %edi,%edi
40a7a2:	55                   	push   %ebp
40a7a3:	8b ec                	mov    %esp,%ebp
40a7a5:	83 e4 f8             	and    $0xfffffff8,%esp
40a7a8:	51                   	push   %ecx
40a7a9:	53                   	push   %ebx
40a7aa:	56                   	push   %esi
40a7ab:	8b f1                	mov    %ecx,%esi
40a7ad:	57                   	push   %edi
40a7ae:	8d 46 18             	lea    0x18(%esi),%eax
40a7b1:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40a7b5:	72 02                	jb     0x40a7b9
40a7b7:	8b 00                	mov    (%eax),%eax
40a7b9:	50                   	push   %eax
40a7ba:	68 94 3f 40 00       	push   $0x403f94
40a7bf:	56                   	push   %esi
40a7c0:	e8 83 db ff ff       	call   0x408348
40a7c5:	83 c4 0c             	add    $0xc,%esp
40a7c8:	8b ce                	mov    %esi,%ecx
40a7ca:	68 48 3a 40 00       	push   $0x403a48
40a7cf:	6a 00                	push   $0x0
40a7d1:	e8 bd fa ff ff       	call   0x40a293
40a7d6:	8b 7e 08             	mov    0x8(%esi),%edi
40a7d9:	6a 18                	push   $0x18
40a7db:	5a                   	pop    %edx
40a7dc:	8b 4f 14             	mov    0x14(%edi),%ecx
40a7df:	2b 4f 10             	sub    0x10(%edi),%ecx
40a7e2:	8d 41 d0             	lea    -0x30(%ecx),%eax
40a7e5:	3b c2                	cmp    %edx,%eax
40a7e7:	73 09                	jae    0x40a7f2
40a7e9:	8b ce                	mov    %esi,%ecx
40a7eb:	e8 ee fe ff ff       	call   0x40a6de
40a7f0:	eb 52                	jmp    0x40a844
40a7f2:	6a 02                	push   $0x2
40a7f4:	5b                   	pop    %ebx
40a7f5:	8b c1                	mov    %ecx,%eax
40a7f7:	6a 18                	push   $0x18
40a7f9:	99                   	cltd
40a7fa:	59                   	pop    %ecx
40a7fb:	f7 f9                	idiv   %ecx
40a7fd:	3b c3                	cmp    %ebx,%eax
40a7ff:	7e 43                	jle    0x40a844
40a801:	53                   	push   %ebx
40a802:	8b cf                	mov    %edi,%ecx
40a804:	e8 47 c2 ff ff       	call   0x406a50
40a809:	50                   	push   %eax
40a80a:	68 7c 3f 40 00       	push   $0x403f7c
40a80f:	56                   	push   %esi
40a810:	e8 33 db ff ff       	call   0x408348
40a815:	83 c4 0c             	add    $0xc,%esp
40a818:	68 8c 3f 40 00       	push   $0x403f8c
40a81d:	51                   	push   %ecx
40a81e:	8b 4e 08             	mov    0x8(%esi),%ecx
40a821:	53                   	push   %ebx
40a822:	e8 29 c2 ff ff       	call   0x406a50
40a827:	59                   	pop    %ecx
40a828:	50                   	push   %eax
40a829:	8b ce                	mov    %esi,%ecx
40a82b:	e8 63 fa ff ff       	call   0x40a293
40a830:	8b 7e 08             	mov    0x8(%esi),%edi
40a833:	43                   	inc    %ebx
40a834:	6a 18                	push   $0x18
40a836:	59                   	pop    %ecx
40a837:	8b 47 14             	mov    0x14(%edi),%eax
40a83a:	2b 47 10             	sub    0x10(%edi),%eax
40a83d:	99                   	cltd
40a83e:	f7 f9                	idiv   %ecx
40a840:	3b d8                	cmp    %eax,%ebx
40a842:	7c bd                	jl     0x40a801
40a844:	5f                   	pop    %edi
40a845:	5e                   	pop    %esi
40a846:	5b                   	pop    %ebx
40a847:	8b e5                	mov    %ebp,%esp
40a849:	5d                   	pop    %ebp
40a84a:	c3                   	ret
40a84b:	cc                   	int3
40a84c:	cc                   	int3
40a84d:	cc                   	int3
40a84e:	cc                   	int3
40a84f:	cc                   	int3
40a850:	6a 2d                	push   $0x2d
40a852:	e8 e5 bc ff ff       	call   0x40653c
40a857:	c3                   	ret
40a858:	cc                   	int3
40a859:	cc                   	int3
40a85a:	cc                   	int3
40a85b:	cc                   	int3
40a85c:	cc                   	int3
40a85d:	cc                   	int3
40a85e:	cc                   	int3
40a85f:	cc                   	int3
40a860:	8b ff                	mov    %edi,%edi
40a862:	56                   	push   %esi
40a863:	8b f1                	mov    %ecx,%esi
40a865:	6a 02                	push   $0x2
40a867:	6a 02                	push   $0x2
40a869:	8b 4e 08             	mov    0x8(%esi),%ecx
40a86c:	e8 50 c3 ff ff       	call   0x406bc1
40a871:	8b 4e 08             	mov    0x8(%esi),%ecx
40a874:	6a 00                	push   $0x0
40a876:	e8 15 c2 ff ff       	call   0x406a90
40a87b:	8b 4e 08             	mov    0x8(%esi),%ecx
40a87e:	6a 01                	push   $0x1
40a880:	e8 cb c1 ff ff       	call   0x406a50
40a885:	50                   	push   %eax
40a886:	8d 4e 18             	lea    0x18(%esi),%ecx
40a889:	e8 13 bc ff ff       	call   0x4064a1
40a88e:	5e                   	pop    %esi
40a88f:	c3                   	ret
40a890:	83 c1 18             	add    $0x18,%ecx
40a893:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
40a897:	72 02                	jb     0x40a89b
40a899:	8b 09                	mov    (%ecx),%ecx
40a89b:	6a 00                	push   $0x0
40a89d:	51                   	push   %ecx
40a89e:	ff 15 20 20 41 00    	call   *0x412020
40a8a4:	85 c0                	test   %eax,%eax
40a8a6:	75 10                	jne    0x40a8b8
40a8a8:	ff 15 70 20 41 00    	call   *0x412070
40a8ae:	6a 0b                	push   $0xb
40a8b0:	5a                   	pop    %edx
40a8b1:	8b c8                	mov    %eax,%ecx
40a8b3:	e9 2b cd ff ff       	jmp    0x4075e3
40a8b8:	c3                   	ret
40a8b9:	cc                   	int3
40a8ba:	cc                   	int3
40a8bb:	cc                   	int3
40a8bc:	cc                   	int3
40a8bd:	cc                   	int3
40a8be:	cc                   	int3
40a8bf:	cc                   	int3
40a8c0:	6a 2e                	push   $0x2e
40a8c2:	e8 75 bc ff ff       	call   0x40653c
40a8c7:	c3                   	ret
40a8c8:	6a 1c                	push   $0x1c
40a8ca:	b8 1c f1 40 00       	mov    $0x40f11c,%eax
40a8cf:	e8 7a 3d 00 00       	call   0x40e64e
40a8d4:	8b d9                	mov    %ecx,%ebx
40a8d6:	33 c0                	xor    %eax,%eax
40a8d8:	89 45 d8             	mov    %eax,-0x28(%ebp)
40a8db:	89 45 dc             	mov    %eax,-0x24(%ebp)
40a8de:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a8e1:	8d 73 18             	lea    0x18(%ebx),%esi
40a8e4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a8e7:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a8eb:	72 04                	jb     0x40a8f1
40a8ed:	8b 0e                	mov    (%esi),%ecx
40a8ef:	eb 02                	jmp    0x40a8f3
40a8f1:	8b ce                	mov    %esi,%ecx
40a8f3:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a8f6:	33 d2                	xor    %edx,%edx
40a8f8:	50                   	push   %eax
40a8f9:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a8fc:	50                   	push   %eax
40a8fd:	51                   	push   %ecx
40a8fe:	ff 75 08             	push   0x8(%ebp)
40a901:	e8 91 d8 ff ff       	call   0x408197
40a906:	85 c0                	test   %eax,%eax
40a908:	75 7f                	jne    0x40a989
40a90a:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a90d:	83 78 0c 02          	cmpl   $0x2,0xc(%eax)
40a911:	75 51                	jne    0x40a964
40a913:	83 38 01             	cmpl   $0x1,(%eax)
40a916:	75 4c                	jne    0x40a964
40a918:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40a91c:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
40a920:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40a924:	ff 75 08             	push   0x8(%ebp)
40a927:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40a92a:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40a92e:	6a 25                	push   $0x25
40a930:	50                   	push   %eax
40a931:	e8 9e 30 00 00       	call   0x40d9d4
40a936:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40a939:	56                   	push   %esi
40a93a:	68 c0 3f 40 00       	push   $0x403fc0
40a93f:	53                   	push   %ebx
40a940:	e8 03 da ff ff       	call   0x408348
40a945:	83 c4 18             	add    $0x18,%esp
40a948:	85 f6                	test   %esi,%esi
40a94a:	74 08                	je     0x40a954
40a94c:	56                   	push   %esi
40a94d:	ff 15 e4 21 41 00    	call   *0x4121e4
40a953:	59                   	pop    %ecx
40a954:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a957:	e8 bb b5 ff ff       	call   0x405f17
40a95c:	e8 bb 3c 00 00       	call   0x40e61c
40a961:	c2 04 00             	ret    $0x4
40a964:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a968:	72 02                	jb     0x40a96c
40a96a:	8b 36                	mov    (%esi),%esi
40a96c:	6a 00                	push   $0x0
40a96e:	ff 75 08             	push   0x8(%ebp)
40a971:	56                   	push   %esi
40a972:	ff 15 1c 20 41 00    	call   *0x41201c
40a978:	85 c0                	test   %eax,%eax
40a97a:	75 d8                	jne    0x40a954
40a97c:	ff 75 08             	push   0x8(%ebp)
40a97f:	6a 10                	push   $0x10
40a981:	ff 15 70 20 41 00    	call   *0x412070
40a987:	eb 07                	jmp    0x40a990
40a989:	68 6c 3c 40 00       	push   $0x403c6c
40a98e:	6a 0e                	push   $0xe
40a990:	50                   	push   %eax
40a991:	e8 7f cc ff ff       	call   0x407615
40a996:	cc                   	int3
40a997:	6a 20                	push   $0x20
40a999:	b8 47 f1 40 00       	mov    $0x40f147,%eax
40a99e:	e8 ab 3c 00 00       	call   0x40e64e