4031c1:	c2 04 00             	ret    $0x4
4031c4:	55                   	push   %ebp
4031c5:	8b ec                	mov    %esp,%ebp
4031c7:	8b 55 08             	mov    0x8(%ebp),%edx
4031ca:	8b 42 04             	mov    0x4(%edx),%eax
4031cd:	85 c0                	test   %eax,%eax
4031cf:	74 04                	je     0x4031d5
4031d1:	f0 ff 40 04          	lock incl 0x4(%eax)
4031d5:	8b 02                	mov    (%edx),%eax
4031d7:	89 01                	mov    %eax,(%ecx)
4031d9:	8b 42 04             	mov    0x4(%edx),%eax
4031dc:	89 41 04             	mov    %eax,0x4(%ecx)
4031df:	5d                   	pop    %ebp
4031e0:	c2 04 00             	ret    $0x4
4031e3:	55                   	push   %ebp
4031e4:	8b ec                	mov    %esp,%ebp
4031e6:	8b 55 08             	mov    0x8(%ebp),%edx
4031e9:	8b 42 04             	mov    0x4(%edx),%eax
4031ec:	85 c0                	test   %eax,%eax
4031ee:	74 04                	je     0x4031f4
4031f0:	f0 ff 40 04          	lock incl 0x4(%eax)
4031f4:	8b 02                	mov    (%edx),%eax
4031f6:	89 01                	mov    %eax,(%ecx)
4031f8:	8b 42 04             	mov    0x4(%edx),%eax
4031fb:	89 41 04             	mov    %eax,0x4(%ecx)
4031fe:	5d                   	pop    %ebp
4031ff:	c2 04 00             	ret    $0x4
403202:	55                   	push   %ebp
403203:	8b ec                	mov    %esp,%ebp
403205:	8b 55 08             	mov    0x8(%ebp),%edx
403208:	8b 42 04             	mov    0x4(%edx),%eax
40320b:	85 c0                	test   %eax,%eax
40320d:	74 04                	je     0x403213
40320f:	f0 ff 40 04          	lock incl 0x4(%eax)
403213:	8b 02                	mov    (%edx),%eax
403215:	89 01                	mov    %eax,(%ecx)
403217:	8b 42 04             	mov    0x4(%edx),%eax
40321a:	89 41 04             	mov    %eax,0x4(%ecx)
40321d:	5d                   	pop    %ebp
40321e:	c2 04 00             	ret    $0x4
403221:	55                   	push   %ebp
403222:	8b ec                	mov    %esp,%ebp
403224:	8b 55 08             	mov    0x8(%ebp),%edx
403227:	8b 42 04             	mov    0x4(%edx),%eax
40322a:	85 c0                	test   %eax,%eax
40322c:	74 04                	je     0x403232
40322e:	f0 ff 40 04          	lock incl 0x4(%eax)
403232:	8b 02                	mov    (%edx),%eax
403234:	89 01                	mov    %eax,(%ecx)
403236:	8b 42 04             	mov    0x4(%edx),%eax
403239:	89 41 04             	mov    %eax,0x4(%ecx)
40323c:	5d                   	pop    %ebp
40323d:	c2 04 00             	ret    $0x4
403240:	55                   	push   %ebp
403241:	8b ec                	mov    %esp,%ebp
403243:	8b 55 08             	mov    0x8(%ebp),%edx
403246:	8b 42 04             	mov    0x4(%edx),%eax
403249:	85 c0                	test   %eax,%eax
40324b:	74 04                	je     0x403251
40324d:	f0 ff 40 04          	lock incl 0x4(%eax)
403251:	8b 02                	mov    (%edx),%eax
403253:	89 01                	mov    %eax,(%ecx)
403255:	8b 42 04             	mov    0x4(%edx),%eax
403258:	89 41 04             	mov    %eax,0x4(%ecx)
40325b:	5d                   	pop    %ebp
40325c:	c2 04 00             	ret    $0x4
40325f:	55                   	push   %ebp
403260:	8b ec                	mov    %esp,%ebp
403262:	8b 55 08             	mov    0x8(%ebp),%edx
403265:	8b 42 04             	mov    0x4(%edx),%eax
403268:	85 c0                	test   %eax,%eax
40326a:	74 04                	je     0x403270
40326c:	f0 ff 40 04          	lock incl 0x4(%eax)
403270:	8b 02                	mov    (%edx),%eax
403272:	89 01                	mov    %eax,(%ecx)
403274:	8b 42 04             	mov    0x4(%edx),%eax
403277:	89 41 04             	mov    %eax,0x4(%ecx)
40327a:	5d                   	pop    %ebp
40327b:	c2 04 00             	ret    $0x4
40327e:	55                   	push   %ebp
40327f:	8b ec                	mov    %esp,%ebp
403281:	56                   	push   %esi
403282:	8b 75 10             	mov    0x10(%ebp),%esi
403285:	57                   	push   %edi
403286:	8b 7d 0c             	mov    0xc(%ebp),%edi
403289:	2b 7d 08             	sub    0x8(%ebp),%edi
40328c:	57                   	push   %edi
40328d:	ff 75 08             	push   0x8(%ebp)
403290:	56                   	push   %esi
403291:	e8 4a 06 04 00       	call   0x4438e0
403296:	83 c4 0c             	add    $0xc,%esp
403299:	8d 04 37             	lea    (%edi,%esi,1),%eax
40329c:	5f                   	pop    %edi
40329d:	5e                   	pop    %esi
40329e:	5d                   	pop    %ebp
40329f:	c3                   	ret
4032a0:	55                   	push   %ebp
4032a1:	8b ec                	mov    %esp,%ebp
4032a3:	56                   	push   %esi
4032a4:	8b 75 10             	mov    0x10(%ebp),%esi
4032a7:	57                   	push   %edi
4032a8:	8b 7d 0c             	mov    0xc(%ebp),%edi
4032ab:	2b 7d 08             	sub    0x8(%ebp),%edi
4032ae:	57                   	push   %edi
4032af:	ff 75 08             	push   0x8(%ebp)
4032b2:	56                   	push   %esi
4032b3:	e8 28 06 04 00       	call   0x4438e0
4032b8:	83 c4 0c             	add    $0xc,%esp
4032bb:	8d 04 37             	lea    (%edi,%esi,1),%eax
4032be:	5f                   	pop    %edi
4032bf:	5e                   	pop    %esi
4032c0:	5d                   	pop    %ebp
4032c1:	c3                   	ret
4032c2:	55                   	push   %ebp
4032c3:	8b ec                	mov    %esp,%ebp
4032c5:	56                   	push   %esi
4032c6:	8b 75 10             	mov    0x10(%ebp),%esi
4032c9:	57                   	push   %edi
4032ca:	8b 7d 0c             	mov    0xc(%ebp),%edi
4032cd:	2b 7d 08             	sub    0x8(%ebp),%edi
4032d0:	57                   	push   %edi
4032d1:	ff 75 08             	push   0x8(%ebp)
4032d4:	56                   	push   %esi
4032d5:	e8 06 06 04 00       	call   0x4438e0
4032da:	83 c4 0c             	add    $0xc,%esp
4032dd:	8d 04 37             	lea    (%edi,%esi,1),%eax
4032e0:	5f                   	pop    %edi
4032e1:	5e                   	pop    %esi
4032e2:	5d                   	pop    %ebp
4032e3:	c3                   	ret
4032e4:	55                   	push   %ebp
4032e5:	8b ec                	mov    %esp,%ebp
4032e7:	56                   	push   %esi
4032e8:	8b 75 10             	mov    0x10(%ebp),%esi
4032eb:	57                   	push   %edi
4032ec:	8b 7d 0c             	mov    0xc(%ebp),%edi
4032ef:	2b 7d 08             	sub    0x8(%ebp),%edi
4032f2:	57                   	push   %edi
4032f3:	ff 75 08             	push   0x8(%ebp)
4032f6:	56                   	push   %esi
4032f7:	e8 e4 05 04 00       	call   0x4438e0
4032fc:	83 c4 0c             	add    $0xc,%esp
4032ff:	8d 04 37             	lea    (%edi,%esi,1),%eax
403302:	5f                   	pop    %edi
403303:	5e                   	pop    %esi
403304:	5d                   	pop    %ebp
403305:	c3                   	ret
403306:	55                   	push   %ebp
403307:	8b ec                	mov    %esp,%ebp
403309:	56                   	push   %esi
40330a:	8b 75 10             	mov    0x10(%ebp),%esi
40330d:	57                   	push   %edi
40330e:	8b 7d 0c             	mov    0xc(%ebp),%edi
403311:	2b 7d 08             	sub    0x8(%ebp),%edi
403314:	57                   	push   %edi
403315:	ff 75 08             	push   0x8(%ebp)
403318:	56                   	push   %esi
403319:	e8 c2 05 04 00       	call   0x4438e0
40331e:	83 c4 0c             	add    $0xc,%esp
403321:	8d 04 37             	lea    (%edi,%esi,1),%eax
403324:	5f                   	pop    %edi
403325:	5e                   	pop    %esi
403326:	5d                   	pop    %ebp
403327:	c3                   	ret
403328:	55                   	push   %ebp
403329:	8b ec                	mov    %esp,%ebp
40332b:	56                   	push   %esi
40332c:	8b 75 10             	mov    0x10(%ebp),%esi
40332f:	57                   	push   %edi
403330:	8b 7d 0c             	mov    0xc(%ebp),%edi
403333:	2b 7d 08             	sub    0x8(%ebp),%edi
403336:	57                   	push   %edi
403337:	ff 75 08             	push   0x8(%ebp)
40333a:	56                   	push   %esi
40333b:	e8 a0 05 04 00       	call   0x4438e0
403340:	83 c4 0c             	add    $0xc,%esp
403343:	8d 04 37             	lea    (%edi,%esi,1),%eax
403346:	5f                   	pop    %edi
403347:	5e                   	pop    %esi
403348:	5d                   	pop    %ebp
403349:	c3                   	ret
40334a:	55                   	push   %ebp
40334b:	8b ec                	mov    %esp,%ebp
40334d:	56                   	push   %esi
40334e:	8b 75 10             	mov    0x10(%ebp),%esi
403351:	57                   	push   %edi
403352:	8b 7d 0c             	mov    0xc(%ebp),%edi
403355:	2b 7d 08             	sub    0x8(%ebp),%edi
403358:	57                   	push   %edi
403359:	ff 75 08             	push   0x8(%ebp)
40335c:	56                   	push   %esi
40335d:	e8 7e 05 04 00       	call   0x4438e0
403362:	83 c4 0c             	add    $0xc,%esp
403365:	8d 04 37             	lea    (%edi,%esi,1),%eax
403368:	5f                   	pop    %edi
403369:	5e                   	pop    %esi
40336a:	5d                   	pop    %ebp
40336b:	c3                   	ret
40336c:	55                   	push   %ebp
40336d:	8b ec                	mov    %esp,%ebp
40336f:	56                   	push   %esi
403370:	8b 75 10             	mov    0x10(%ebp),%esi
403373:	57                   	push   %edi
403374:	8b 7d 0c             	mov    0xc(%ebp),%edi
403377:	2b 7d 08             	sub    0x8(%ebp),%edi
40337a:	57                   	push   %edi
40337b:	ff 75 08             	push   0x8(%ebp)
40337e:	56                   	push   %esi
40337f:	e8 5c 05 04 00       	call   0x4438e0
403384:	83 c4 0c             	add    $0xc,%esp
403387:	8d 04 37             	lea    (%edi,%esi,1),%eax
40338a:	5f                   	pop    %edi
40338b:	5e                   	pop    %esi
40338c:	5d                   	pop    %ebp
40338d:	c3                   	ret
40338e:	55                   	push   %ebp
40338f:	8b ec                	mov    %esp,%ebp
403391:	56                   	push   %esi
403392:	8b 75 10             	mov    0x10(%ebp),%esi
403395:	57                   	push   %edi
403396:	8b 7d 0c             	mov    0xc(%ebp),%edi
403399:	2b 7d 08             	sub    0x8(%ebp),%edi
40339c:	57                   	push   %edi
40339d:	ff 75 08             	push   0x8(%ebp)
4033a0:	56                   	push   %esi
4033a1:	e8 3a 05 04 00       	call   0x4438e0
4033a6:	83 c4 0c             	add    $0xc,%esp
4033a9:	8d 04 37             	lea    (%edi,%esi,1),%eax
4033ac:	5f                   	pop    %edi
4033ad:	5e                   	pop    %esi
4033ae:	5d                   	pop    %ebp
4033af:	c3                   	ret
4033b0:	55                   	push   %ebp
4033b1:	8b ec                	mov    %esp,%ebp
4033b3:	56                   	push   %esi
4033b4:	8b 75 10             	mov    0x10(%ebp),%esi
4033b7:	57                   	push   %edi
4033b8:	8b 7d 0c             	mov    0xc(%ebp),%edi
4033bb:	2b 7d 08             	sub    0x8(%ebp),%edi
4033be:	57                   	push   %edi
4033bf:	ff 75 08             	push   0x8(%ebp)
4033c2:	56                   	push   %esi
4033c3:	e8 18 05 04 00       	call   0x4438e0
4033c8:	83 c4 0c             	add    $0xc,%esp
4033cb:	8d 04 37             	lea    (%edi,%esi,1),%eax
4033ce:	5f                   	pop    %edi
4033cf:	5e                   	pop    %esi
4033d0:	5d                   	pop    %ebp
4033d1:	c3                   	ret
4033d2:	55                   	push   %ebp
4033d3:	8b ec                	mov    %esp,%ebp
4033d5:	53                   	push   %ebx
4033d6:	56                   	push   %esi
4033d7:	8b 75 10             	mov    0x10(%ebp),%esi
4033da:	33 db                	xor    %ebx,%ebx
4033dc:	57                   	push   %edi
4033dd:	8b 7d 0c             	mov    0xc(%ebp),%edi
4033e0:	33 c0                	xor    %eax,%eax
4033e2:	2b f7                	sub    %edi,%esi
4033e4:	46                   	inc    %esi
4033e5:	d1 ee                	shr    $1,%esi
4033e7:	3b 7d 10             	cmp    0x10(%ebp),%edi
4033ea:	0f 47 f0             	cmova  %eax,%esi
4033ed:	85 f6                	test   %esi,%esi
4033ef:	74 14                	je     0x403405
4033f1:	0f b7 07             	movzwl (%edi),%eax
4033f4:	8b 4d 14             	mov    0x14(%ebp),%ecx
4033f7:	50                   	push   %eax
4033f8:	e8 d1 f2 01 00       	call   0x4226ce
4033fd:	43                   	inc    %ebx
4033fe:	8d 7f 02             	lea    0x2(%edi),%edi
403401:	3b de                	cmp    %esi,%ebx
403403:	75 ec                	jne    0x4033f1
403405:	8b 45 08             	mov    0x8(%ebp),%eax
403408:	8b 4d 14             	mov    0x14(%ebp),%ecx
40340b:	5f                   	pop    %edi
40340c:	5e                   	pop    %esi
40340d:	89 08                	mov    %ecx,(%eax)
40340f:	5b                   	pop    %ebx
403410:	5d                   	pop    %ebp
403411:	c3                   	ret
403412:	55                   	push   %ebp
403413:	8b ec                	mov    %esp,%ebp
403415:	8b 4d 20             	mov    0x20(%ebp),%ecx
403418:	83 ec 10             	sub    $0x10,%esp
40341b:	8b 55 1c             	mov    0x1c(%ebp),%edx
40341e:	8b 45 10             	mov    0x10(%ebp),%eax
403421:	56                   	push   %esi
403422:	8b 75 0c             	mov    0xc(%ebp),%esi
403425:	3b 75 14             	cmp    0x14(%ebp),%esi
403428:	75 05                	jne    0x40342f
40342a:	3b 45 18             	cmp    0x18(%ebp),%eax
40342d:	74 4f                	je     0x40347e
40342f:	89 45 fc             	mov    %eax,-0x4(%ebp)
403432:	8d 45 f8             	lea    -0x8(%ebp),%eax
403435:	89 4d f4             	mov    %ecx,-0xc(%ebp)
403438:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40343b:	50                   	push   %eax
40343c:	89 75 f8             	mov    %esi,-0x8(%ebp)
40343f:	89 55 f0             	mov    %edx,-0x10(%ebp)
403442:	e8 50 c2 00 00       	call   0x40f697
403447:	8b 4d 20             	mov    0x20(%ebp),%ecx
40344a:	8b 55 1c             	mov    0x1c(%ebp),%edx
40344d:	83 f9 1f             	cmp    $0x1f,%ecx
403450:	73 03                	jae    0x403455
403452:	41                   	inc    %ecx
403453:	eb 08                	jmp    0x40345d
403455:	33 c9                	xor    %ecx,%ecx
403457:	83 c2 04             	add    $0x4,%edx
40345a:	89 55 1c             	mov    %edx,0x1c(%ebp)
40345d:	8b 45 10             	mov    0x10(%ebp),%eax
403460:	8b 75 0c             	mov    0xc(%ebp),%esi
403463:	89 4d 20             	mov    %ecx,0x20(%ebp)
403466:	83 f8 1f             	cmp    $0x1f,%eax
403469:	73 06                	jae    0x403471
40346b:	40                   	inc    %eax
40346c:	89 45 10             	mov    %eax,0x10(%ebp)
40346f:	eb b4                	jmp    0x403425
403471:	33 c0                	xor    %eax,%eax
403473:	83 c6 04             	add    $0x4,%esi
403476:	89 45 10             	mov    %eax,0x10(%ebp)
403479:	89 75 0c             	mov    %esi,0xc(%ebp)
40347c:	eb a7                	jmp    0x403425
40347e:	8b 45 08             	mov    0x8(%ebp),%eax
403481:	5e                   	pop    %esi
403482:	89 10                	mov    %edx,(%eax)
403484:	89 48 04             	mov    %ecx,0x4(%eax)
403487:	c9                   	leave
403488:	c3                   	ret
403489:	55                   	push   %ebp
40348a:	8b ec                	mov    %esp,%ebp
40348c:	51                   	push   %ecx
40348d:	8d 45 10             	lea    0x10(%ebp),%eax
403490:	50                   	push   %eax
403491:	8d 45 08             	lea    0x8(%ebp),%eax
403494:	50                   	push   %eax
403495:	8d 45 ff             	lea    -0x1(%ebp),%eax
403498:	50                   	push   %eax
403499:	e8 03 16 00 00       	call   0x404aa1
40349e:	ff 75 10             	push   0x10(%ebp)
4034a1:	ff 75 0c             	push   0xc(%ebp)
4034a4:	ff 75 08             	push   0x8(%ebp)
4034a7:	e8 5a fe ff ff       	call   0x403306
4034ac:	83 c4 18             	add    $0x18,%esp
4034af:	c9                   	leave
4034b0:	c3                   	ret
4034b1:	55                   	push   %ebp
4034b2:	8b ec                	mov    %esp,%ebp
4034b4:	51                   	push   %ecx
4034b5:	8d 45 10             	lea    0x10(%ebp),%eax