4095e1:	ff 75 bc             	push   -0x44(%ebp)
4095e4:	8d 04 48             	lea    (%eax,%ecx,2),%eax
4095e7:	50                   	push   %eax
4095e8:	e8 93 58 01 00       	call   0x41ee80
4095ed:	01 5f 04             	add    %ebx,0x4(%edi)
4095f0:	8b 4f 04             	mov    0x4(%edi),%ecx
4095f3:	8b 07                	mov    (%edi),%eax
4095f5:	83 c4 0c             	add    $0xc,%esp
4095f8:	33 d2                	xor    %edx,%edx
4095fa:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
4095fe:	8b 55 f0             	mov    -0x10(%ebp),%edx
409601:	ff 4d 0c             	decl   0xc(%ebp)
409604:	8b da                	mov    %edx,%ebx
409606:	89 55 f4             	mov    %edx,-0xc(%ebp)
409609:	e9 42 fe ff ff       	jmp    0x409450
40960e:	6a ff                	push   $0xffffffff
409610:	6a 00                	push   $0x0
409612:	8d 4d cc             	lea    -0x34(%ebp),%ecx
409615:	e8 71 1b 00 00       	call   0x40b18b
40961a:	8b 5d d0             	mov    -0x30(%ebp),%ebx
40961d:	e9 24 ff ff ff       	jmp    0x409546
409622:	50                   	push   %eax
409623:	e8 ce d4 ff ff       	call   0x406af6
409628:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40962b:	8b 45 cc             	mov    -0x34(%ebp),%eax
40962e:	85 c0                	test   %eax,%eax
409630:	74 09                	je     0x40963b
409632:	50                   	push   %eax
409633:	e8 26 5f 01 00       	call   0x41f55e
409638:	83 c4 04             	add    $0x4,%esp
40963b:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40963e:	33 c9                	xor    %ecx,%ecx
409640:	ba 02 00 00 00       	mov    $0x2,%edx
409645:	f7 e2                	mul    %edx
409647:	0f 90 c1             	seto   %cl
40964a:	f7 d9                	neg    %ecx
40964c:	0b c8                	or     %eax,%ecx
40964e:	51                   	push   %ecx
40964f:	e8 96 5e 01 00       	call   0x41f4ea
409654:	83 c4 04             	add    $0x4,%esp
409657:	33 c9                	xor    %ecx,%ecx
409659:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
40965d:	89 45 cc             	mov    %eax,-0x34(%ebp)
409660:	e9 b7 fe ff ff       	jmp    0x40951c
409665:	83 f9 ff             	cmp    $0xffffffff,%ecx
409668:	75 0a                	jne    0x409674
40966a:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40966e:	0f 85 6e 8f 06 00    	jne    0x4725e2
409674:	8b 46 28             	mov    0x28(%esi),%eax
409677:	2b c3                	sub    %ebx,%eax
409679:	50                   	push   %eax
40967a:	53                   	push   %ebx
40967b:	56                   	push   %esi
40967c:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40967f:	e8 65 d3 ff ff       	call   0x4069e9
409684:	8d 45 cc             	lea    -0x34(%ebp),%eax
409687:	50                   	push   %eax
409688:	8b cf                	mov    %edi,%ecx
40968a:	e8 7e ba ff ff       	call   0x40510d
40968f:	8d 4d cc             	lea    -0x34(%ebp),%ecx
409692:	e8 a0 34 00 00       	call   0x40cb37
409697:	8d 4d bc             	lea    -0x44(%ebp),%ecx
40969a:	e8 98 34 00 00       	call   0x40cb37
40969f:	8b 45 e8             	mov    -0x18(%ebp),%eax
4096a2:	5f                   	pop    %edi
4096a3:	5e                   	pop    %esi
4096a4:	5b                   	pop    %ebx
4096a5:	8b e5                	mov    %ebp,%esp
4096a7:	5d                   	pop    %ebp
4096a8:	c2 0c 00             	ret    $0xc
4096ab:	8b 45 f4             	mov    -0xc(%ebp),%eax
4096ae:	8b d9                	mov    %ecx,%ebx
4096b0:	2b d8                	sub    %eax,%ebx
4096b2:	e9 4b fe ff ff       	jmp    0x409502
4096b7:	cc                   	int3
4096b8:	cc                   	int3
4096b9:	cc                   	int3
4096ba:	cc                   	int3
4096bb:	cc                   	int3
4096bc:	cc                   	int3
4096bd:	cc                   	int3
4096be:	cc                   	int3
4096bf:	cc                   	int3
4096c0:	55                   	push   %ebp
4096c1:	8b ec                	mov    %esp,%ebp
4096c3:	83 e4 f8             	and    $0xfffffff8,%esp
4096c6:	81 ec ac 00 00 00    	sub    $0xac,%esp
4096cc:	53                   	push   %ebx
4096cd:	56                   	push   %esi
4096ce:	89 4c 24 10          	mov    %ecx,0x10(%esp)
4096d2:	57                   	push   %edi
4096d3:	8d 4c 24 70          	lea    0x70(%esp),%ecx
4096d7:	e8 cb 8f ff ff       	call   0x4026a7
4096dc:	8b 7d 08             	mov    0x8(%ebp),%edi
4096df:	8b 47 04             	mov    0x4(%edi),%eax
4096e2:	8b 30                	mov    (%eax),%esi
4096e4:	8b ce                	mov    %esi,%ecx
4096e6:	e8 81 fc ff ff       	call   0x40936c
4096eb:	8b 47 04             	mov    0x4(%edi),%eax
4096ee:	8b 5e 08             	mov    0x8(%esi),%ebx
4096f1:	8b 70 04             	mov    0x4(%eax),%esi
4096f4:	8b ce                	mov    %esi,%ecx
4096f6:	e8 71 fc ff ff       	call   0x40936c
4096fb:	8b 46 08             	mov    0x8(%esi),%eax
4096fe:	8d 4c 24 28          	lea    0x28(%esp),%ecx
409702:	89 44 24 38          	mov    %eax,0x38(%esp)
409706:	33 f6                	xor    %esi,%esi
409708:	c7 44 24 0c 01 00 00 	movl   $0x1,0xc(%esp)
40970f:	00
409710:	e8 e2 40 00 00       	call   0x40d7f7
409715:	83 7f 08 03          	cmpl   $0x3,0x8(%edi)
409719:	72 1e                	jb     0x409739
40971b:	8b 47 04             	mov    0x4(%edi),%eax
40971e:	8b 48 08             	mov    0x8(%eax),%ecx
409721:	e8 60 3b 00 00       	call   0x40d286
409726:	8b f0                	mov    %eax,%esi
409728:	85 f6                	test   %esi,%esi
40972a:	0f 88 e3 03 00 00    	js     0x409b13
409730:	83 fe 04             	cmp    $0x4,%esi
409733:	0f 8f da 03 00 00    	jg     0x409b13
409739:	83 7f 08 04          	cmpl   $0x4,0x8(%edi)
40973d:	0f 83 63 2e 07 00    	jae    0x47c5a6
409743:	8b 44 24 0c          	mov    0xc(%esp),%eax
409747:	83 f8 01             	cmp    $0x1,%eax
40974a:	0f 8c ca 03 00 00    	jl     0x409b1a
409750:	ff 74 24 38          	push   0x38(%esp)
409754:	48                   	dec    %eax
409755:	8d 4c 24 74          	lea    0x74(%esp),%ecx
409759:	89 44 24 10          	mov    %eax,0x10(%esp)
40975d:	e8 19 d7 ff ff       	call   0x406e7b
409762:	8b f8                	mov    %eax,%edi
409764:	85 ff                	test   %edi,%edi
409766:	0f 85 4a 2e 07 00    	jne    0x47c5b6
40976c:	53                   	push   %ebx
40976d:	8d 4c 24 74          	lea    0x74(%esp),%ecx
409771:	e8 e8 d6 ff ff       	call   0x406e5e
409776:	85 f6                	test   %esi,%esi
409778:	0f 84 7a 2e 07 00    	je     0x47c5f8
40977e:	83 fe 01             	cmp    $0x1,%esi
409781:	0f 84 b8 2e 07 00    	je     0x47c63f
409787:	83 fe 02             	cmp    $0x2,%esi
40978a:	0f 84 6b 2f 07 00    	je     0x47c6fb
409790:	83 fe 03             	cmp    $0x3,%esi
409793:	0f 85 a2 30 07 00    	jne    0x47c83b
409799:	8b 5c 24 34          	mov    0x34(%esp),%ebx
40979d:	33 c0                	xor    %eax,%eax
40979f:	c7 44 24 18 04 dc 49 	movl   $0x49dc04,0x18(%esp)
4097a6:	00
4097a7:	89 7c 24 1c          	mov    %edi,0x1c(%esp)
4097ab:	89 44 24 20          	mov    %eax,0x20(%esp)
4097af:	89 44 24 3c          	mov    %eax,0x3c(%esp)
4097b3:	89 44 24 24          	mov    %eax,0x24(%esp)
4097b7:	8b 54 24 0c          	mov    0xc(%esp),%edx
4097bb:	8b b4 24 98 00 00 00 	mov    0x98(%esp),%esi
4097c2:	eb 0c                	jmp    0x4097d0
4097c4:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
4097cb:	eb 03                	jmp    0x4097d0
4097cd:	8d 49 00             	lea    0x0(%ecx),%ecx
4097d0:	8b 8c 24 94 00 00 00 	mov    0x94(%esp),%ecx
4097d7:	85 c9                	test   %ecx,%ecx
4097d9:	0f 84 d0 02 00 00    	je     0x409aaf
4097df:	80 bc 24 80 00 00 00 	cmpb   $0x0,0x80(%esp)
4097e6:	00
4097e7:	0f 84 c2 02 00 00    	je     0x409aaf
4097ed:	83 fa ff             	cmp    $0xffffffff,%edx
4097f0:	0f 84 b9 02 00 00    	je     0x409aaf
4097f6:	3b d6                	cmp    %esi,%edx
4097f8:	0f 8f b1 02 00 00    	jg     0x409aaf
4097fe:	ff b4 24 a0 00 00 00 	push   0xa0(%esp)
409805:	8b 84 24 ac 00 00 00 	mov    0xac(%esp),%eax
40980c:	ff b4 24 a0 00 00 00 	push   0xa0(%esp)
409813:	0b 84 24 b8 00 00 00 	or     0xb8(%esp),%eax
40981a:	50                   	push   %eax
40981b:	52                   	push   %edx
40981c:	56                   	push   %esi
40981d:	ff b4 24 84 00 00 00 	push   0x84(%esp)
409824:	e8 37 03 00 00       	call   0x409b60
409829:	83 c4 18             	add    $0x18,%esp
40982c:	89 84 24 a4 00 00 00 	mov    %eax,0xa4(%esp)
409833:	85 c0                	test   %eax,%eax
409835:	0f 8e 66 02 00 00    	jle    0x409aa1
40983b:	8b 8c 24 9c 00 00 00 	mov    0x9c(%esp),%ecx
409842:	8b b4 24 98 00 00 00 	mov    0x98(%esp),%esi
409849:	8b 51 04             	mov    0x4(%ecx),%edx
40984c:	c7 84 24 a8 00 00 00 	movl   $0x0,0xa8(%esp)
409853:	00 00 00 00
409857:	8b 39                	mov    (%ecx),%edi
409859:	3b 79 04             	cmp    0x4(%ecx),%edi
40985c:	0f 84 21 2f 07 00    	je     0x47c783
409862:	89 54 24 0c          	mov    %edx,0xc(%esp)
409866:	8b c8                	mov    %eax,%ecx
409868:	89 4c 24 38          	mov    %ecx,0x38(%esp)
40986c:	85 c9                	test   %ecx,%ecx
40986e:	0f 84 3b 02 00 00    	je     0x409aaf
409874:	83 f9 02             	cmp    $0x2,%ecx
409877:	0f 8d 1a 02 00 00    	jge    0x409a97
40987d:	33 ff                	xor    %edi,%edi
40987f:	3b f9                	cmp    %ecx,%edi
409881:	0f 83 49 ff ff ff    	jae    0x4097d0
409887:	8b 74 24 20          	mov    0x20(%esp),%esi
40988b:	8d 0c fd 00 00 00 00 	lea    0x0(,%edi,8),%ecx
409892:	89 4c 24 58          	mov    %ecx,0x58(%esp)
409896:	3b f8                	cmp    %eax,%edi
409898:	0f 8d 42 2f 07 00    	jge    0x47c7e0
40989e:	8b 44 24 70          	mov    0x70(%esp),%eax
4098a2:	89 44 24 40          	mov    %eax,0x40(%esp)
4098a6:	85 ff                	test   %edi,%edi
4098a8:	0f 88 80 02 00 00    	js     0x409b2e
4098ae:	8b 84 24 9c 00 00 00 	mov    0x9c(%esp),%eax
4098b5:	03 c1                	add    %ecx,%eax
4098b7:	8b 0d dc bd 4b 00    	mov    0x4bbddc,%ecx
4098bd:	8b 70 04             	mov    0x4(%eax),%esi
4098c0:	2b 30                	sub    (%eax),%esi
4098c2:	89 44 24 6c          	mov    %eax,0x6c(%esp)
4098c6:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
4098cd:	50                   	push   %eax
4098ce:	81 f9 34 af 40 00    	cmp    $0x40af34,%ecx
4098d4:	0f 85 1c 2f 07 00    	jne    0x47c7f6
4098da:	e8 7d a0 01 00       	call   0x42395c
4098df:	8b c8                	mov    %eax,%ecx
4098e1:	89 4c 24 48          	mov    %ecx,0x48(%esp)
4098e5:	83 c4 04             	add    $0x4,%esp
4098e8:	85 c9                	test   %ecx,%ecx
4098ea:	0f 84 34 02 00 00    	je     0x409b24
4098f0:	8b 54 24 40          	mov    0x40(%esp),%edx
4098f4:	8d 04 36             	lea    (%esi,%esi,1),%eax
4098f7:	50                   	push   %eax
4098f8:	8b 44 24 70          	mov    0x70(%esp),%eax
4098fc:	8b 00                	mov    (%eax),%eax
4098fe:	8d 04 42             	lea    (%edx,%eax,2),%eax
409901:	50                   	push   %eax
409902:	51                   	push   %ecx
409903:	e8 78 55 01 00       	call   0x41ee80
409908:	8b 44 24 50          	mov    0x50(%esp),%eax
40990c:	33 c9                	xor    %ecx,%ecx
40990e:	83 c4 0c             	add    $0xc,%esp
409911:	66 89 0c 70          	mov    %cx,(%eax,%esi,2)
409915:	89 44 24 10          	mov    %eax,0x10(%esp)
409919:	85 f6                	test   %esi,%esi
40991b:	0f 84 eb 2e 07 00    	je     0x47c80c
409921:	83 fe ff             	cmp    $0xffffffff,%esi
409924:	0f 84 e2 2e 07 00    	je     0x47c80c
40992a:	85 c0                	test   %eax,%eax
40992c:	0f 84 da 2e 07 00    	je     0x47c80c
409932:	8b 03                	mov    (%ebx),%eax
409934:	83 f8 01             	cmp    $0x1,%eax
409937:	0f 8e b1 01 00 00    	jle    0x409aee
40993d:	48                   	dec    %eax
40993e:	6a 04                	push   $0x4
409940:	89 03                	mov    %eax,(%ebx)
409942:	e8 a3 5b 01 00       	call   0x41f4ea
409947:	8b d8                	mov    %eax,%ebx
409949:	83 c4 04             	add    $0x4,%esp
40994c:	85 db                	test   %ebx,%ebx
40994e:	0f 84 e4 01 00 00    	je     0x409b38
409954:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
40995a:	8d 46 01             	lea    0x1(%esi),%eax
40995d:	89 5c 24 34          	mov    %ebx,0x34(%esp)
409961:	85 c0                	test   %eax,%eax
409963:	0f 84 d6 01 00 00    	je     0x409b3f
409969:	83 c0 07             	add    $0x7,%eax
40996c:	83 e0 f8             	and    $0xfffffff8,%eax
40996f:	33 c9                	xor    %ecx,%ecx
409971:	89 44 24 30          	mov    %eax,0x30(%esp)
409975:	ba 02 00 00 00       	mov    $0x2,%edx
40997a:	f7 e2                	mul    %edx
40997c:	0f 90 c1             	seto   %cl
40997f:	f7 d9                	neg    %ecx
409981:	0b c8                	or     %eax,%ecx
409983:	51                   	push   %ecx
409984:	e8 61 5b 01 00       	call   0x41f4ea
409989:	83 c4 04             	add    $0x4,%esp
40998c:	89 44 24 28          	mov    %eax,0x28(%esp)
409990:	89 74 24 2c          	mov    %esi,0x2c(%esp)
409994:	03 f6                	add    %esi,%esi
409996:	56                   	push   %esi
409997:	ff 74 24 14          	push   0x14(%esp)
40999b:	50                   	push   %eax
40999c:	e8 df 54 01 00       	call   0x41ee80
4099a1:	8b 44 24 34          	mov    0x34(%esp),%eax
4099a5:	83 c4 0c             	add    $0xc,%esp
4099a8:	33 c9                	xor    %ecx,%ecx
4099aa:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
4099ae:	a1 0c b8 4b 00       	mov    0x4bb80c,%eax
4099b3:	ff 74 24 10          	push   0x10(%esp)
4099b7:	3d 3d af 40 00       	cmp    $0x40af3d,%eax
4099bc:	0f 85 87 01 00 00    	jne    0x409b49
4099c2:	e8 d6 82 01 00       	call   0x421c9d
4099c7:	8b 74 24 24          	mov    0x24(%esp),%esi
4099cb:	83 c4 04             	add    $0x4,%esp
4099ce:	8b 44 24 3c          	mov    0x3c(%esp),%eax
4099d2:	3b f0                	cmp    %eax,%esi
4099d4:	74 5a                	je     0x409a30
4099d6:	6a 10                	push   $0x10
4099d8:	e8 0d 5b 01 00       	call   0x41f4ea
4099dd:	83 c4 04             	add    $0x4,%esp
4099e0:	85 c0                	test   %eax,%eax
4099e2:	0f 84 68 01 00 00    	je     0x409b50
4099e8:	8b 4c 24 28          	mov    0x28(%esp),%ecx
4099ec:	89 08                	mov    %ecx,(%eax)
4099ee:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
4099f2:	89 48 04             	mov    %ecx,0x4(%eax)
4099f5:	8b 4c 24 30          	mov    0x30(%esp),%ecx
4099f9:	89 48 08             	mov    %ecx,0x8(%eax)
4099fc:	89 58 0c             	mov    %ebx,0xc(%eax)
4099ff:	ff 03                	incl   (%ebx)
409a01:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
409a05:	46                   	inc    %esi
409a06:	89 44 b1 fc          	mov    %eax,-0x4(%ecx,%esi,4)
409a0a:	8b 4c 24 58          	mov    0x58(%esp),%ecx
409a0e:	47                   	inc    %edi
409a0f:	83 c1 08             	add    $0x8,%ecx
409a12:	89 74 24 20          	mov    %esi,0x20(%esp)
409a16:	89 4c 24 58          	mov    %ecx,0x58(%esp)
409a1a:	3b 7c 24 38          	cmp    0x38(%esp),%edi
409a1e:	0f 83 93 fd ff ff    	jae    0x4097b7
409a24:	8b 84 24 a4 00 00 00 	mov    0xa4(%esp),%eax
409a2b:	e9 66 fe ff ff       	jmp    0x409896
409a30:	03 c0                	add    %eax,%eax
409a32:	89 44 24 3c          	mov    %eax,0x3c(%esp)
409a36:	83 f8 08             	cmp    $0x8,%eax
409a39:	0f 82 c6 00 00 00    	jb     0x409b05
409a3f:	33 c9                	xor    %ecx,%ecx
409a41:	89 44 24 24          	mov    %eax,0x24(%esp)
409a45:	ba 04 00 00 00       	mov    $0x4,%edx
409a4a:	f7 e2                	mul    %edx
409a4c:	0f 90 c1             	seto   %cl
409a4f:	f7 d9                	neg    %ecx
409a51:	0b c8                	or     %eax,%ecx
409a53:	51                   	push   %ecx
409a54:	e8 91 5a 01 00       	call   0x41f4ea
409a59:	8b 54 24 20          	mov    0x20(%esp),%edx
409a5d:	83 c4 04             	add    $0x4,%esp
409a60:	89 44 24 40          	mov    %eax,0x40(%esp)
409a64:	85 d2                	test   %edx,%edx
409a66:	74 26                	je     0x409a8e
409a68:	85 f6                	test   %esi,%esi
409a6a:	74 22                	je     0x409a8e
409a6c:	8d 0c b5 00 00 00 00 	lea    0x0(,%esi,4),%ecx
409a73:	51                   	push   %ecx
409a74:	52                   	push   %edx
409a75:	50                   	push   %eax
409a76:	e8 05 54 01 00       	call   0x41ee80
409a7b:	83 c4 0c             	add    $0xc,%esp
409a7e:	ff 74 24 1c          	push   0x1c(%esp)
409a82:	e8 d7 5a 01 00       	call   0x41f55e
409a87:	8b 44 24 44          	mov    0x44(%esp),%eax
409a8b:	83 c4 04             	add    $0x4,%esp
409a8e:	89 44 24 1c          	mov    %eax,0x1c(%esp)
409a92:	e9 3f ff ff ff       	jmp    0x4099d6